From 04e2c792f0ce9cc4d2d9fdacaf31c1593eef7e05 Mon Sep 17 00:00:00 2001 From: Eli Arbel Date: Sun, 9 Feb 2025 12:41:50 +0200 Subject: [PATCH 01/29] Handle ScheduleBlock and pulse gates loading --- qiskit/qpy/binary_io/circuits.py | 32 +- qiskit/qpy/binary_io/schedules.py | 202 ++------ qiskit/qpy/interface.py | 20 +- qiskit/qpy/type_keys.py | 2 +- test/python/qpy/test_block_load_from_qpy.py | 521 -------------------- 5 files changed, 73 insertions(+), 704 deletions(-) delete mode 100644 test/python/qpy/test_block_load_from_qpy.py diff --git a/qiskit/qpy/binary_io/circuits.py b/qiskit/qpy/binary_io/circuits.py index 174acceb59e4..8fda99e56bb3 100644 --- a/qiskit/qpy/binary_io/circuits.py +++ b/qiskit/qpy/binary_io/circuits.py @@ -639,8 +639,7 @@ def _read_custom_operations(file_obj, version, vectors): def _read_calibrations(file_obj, version, vectors, metadata_deserializer): - calibrations = {} - + # TODO: document the purpose of this function header = formats.CALIBRATION._make( struct.unpack(formats.CALIBRATION_PACK, file_obj.read(formats.CALIBRATION_SIZE)) ) @@ -648,22 +647,21 @@ def _read_calibrations(file_obj, version, vectors, metadata_deserializer): defheader = formats.CALIBRATION_DEF._make( struct.unpack(formats.CALIBRATION_DEF_PACK, file_obj.read(formats.CALIBRATION_DEF_SIZE)) ) - name = file_obj.read(defheader.name_size).decode(common.ENCODE) - qubits = tuple( - struct.unpack("!q", file_obj.read(struct.calcsize("!q")))[0] - for _ in range(defheader.num_qubits) - ) - params = tuple( - value.read_value(file_obj, version, vectors) for _ in range(defheader.num_params) + name = file_obj.read(defheader.name_size).decode(common.ENCODE) # TODO: this is where the name of the gate comes from. Emit a warning here + warnings.warn( + category=exceptions.QPYLoadingDeprecatedFeatureWarning, + message="Support for loading dulse gates has been removed in Qiskit 2.0. " + f"If `{name}` is in the circuit, it will be left as a custom instruction without definition." + ) - schedule = schedules.read_schedule_block(file_obj, version, metadata_deserializer) - if name not in calibrations: - calibrations[name] = {(qubits, params): schedule} - else: - calibrations[name][(qubits, params)] = schedule + for _ in range(defheader.num_qubits): # qubits info + struct.unpack("!q", file_obj.read(struct.calcsize("!q")))[0] + + for _ in range(defheader.num_params): # read params info + value.read_value(file_obj, version, vectors) - return calibrations + schedules.read_schedule_block(file_obj, version, metadata_deserializer) def _dumps_register(register, index_map): @@ -1451,9 +1449,9 @@ def read_circuit(file_obj, version, metadata_deserializer=None, use_symengine=Fa standalone_var_indices, ) - # Read calibrations + # Read calibrations, but don't use them since pulse gates are not supported as of Qiskit 2.0 if version >= 5: - circ._calibrations_prop = _read_calibrations( + _read_calibrations( file_obj, version, vectors, metadata_deserializer ) diff --git a/qiskit/qpy/binary_io/schedules.py b/qiskit/qpy/binary_io/schedules.py index 4afddb29992a..cad8eb8ddb75 100644 --- a/qiskit/qpy/binary_io/schedules.py +++ b/qiskit/qpy/binary_io/schedules.py @@ -32,15 +32,13 @@ def _read_channel(file_obj, version): - type_key = common.read_type_key(file_obj) - index = value.read_value(file_obj, version, {}) - - channel_cls = type_keys.ScheduleChannel.retrieve(type_key) - - return channel_cls(index) + # TODO: document purpose + common.read_type_key(file_obj) # read type_key + value.read_value(file_obj, version, {}) # read index def _read_waveform(file_obj, version): + # TODO: document purpose header = formats.WAVEFORM._make( struct.unpack( formats.WAVEFORM_PACK, @@ -48,15 +46,8 @@ def _read_waveform(file_obj, version): ) ) samples_raw = file_obj.read(header.data_size) - samples = common.data_from_binary(samples_raw, np.load) - name = value.read_value(file_obj, version, {}) - - return library.Waveform( - samples=samples, - name=name, - epsilon=header.epsilon, - limit_amplitude=header.amp_limited, - ) + common.data_from_binary(samples_raw, np.load) # read samples + value.read_value(file_obj, version, {}) # read name def _loads_obj(type_key, binary_data, version, vectors): @@ -78,25 +69,26 @@ def _loads_obj(type_key, binary_data, version, vectors): def _read_kernel(file_obj, version): + # TODO: document params = common.read_mapping( file_obj=file_obj, deserializer=_loads_obj, version=version, vectors={}, ) - name = value.read_value(file_obj, version, {}) - return Kernel(name=name, **params) + value.read_value(file_obj, version, {}) # read name def _read_discriminator(file_obj, version): - params = common.read_mapping( + # TODO: docucment + # read params + common.read_mapping( file_obj=file_obj, deserializer=_loads_obj, version=version, vectors={}, ) - name = value.read_value(file_obj, version, {}) - return Discriminator(name=name, **params) + value.read_value(file_obj, version, {}) # read name def _loads_symbolic_expr(expr_bytes, use_symengine=False): @@ -114,6 +106,7 @@ def _loads_symbolic_expr(expr_bytes, use_symengine=False): def _read_symbolic_pulse(file_obj, version): + # TODO: document purpose make = formats.SYMBOLIC_PULSE._make pack = formats.SYMBOLIC_PULSE_PACK size = formats.SYMBOLIC_PULSE_SIZE @@ -125,10 +118,11 @@ def _read_symbolic_pulse(file_obj, version): ) ) pulse_type = file_obj.read(header.type_size).decode(common.ENCODE) - envelope = _loads_symbolic_expr(file_obj.read(header.envelope_size)) - constraints = _loads_symbolic_expr(file_obj.read(header.constraints_size)) - valid_amp_conditions = _loads_symbolic_expr(file_obj.read(header.valid_amp_conditions_size)) - parameters = common.read_mapping( + _loads_symbolic_expr(file_obj.read(header.envelope_size)) # read envelope + _loads_symbolic_expr(file_obj.read(header.constraints_size)) # read constraints + _loads_symbolic_expr(file_obj.read(header.valid_amp_conditions_size)) # read valid amp conditions + # read parameters + common.read_mapping( file_obj, deserializer=value.loads_value, version=version, @@ -146,50 +140,19 @@ def _read_symbolic_pulse(file_obj, version): class_name = "SymbolicPulse" # Default class name, if not in the library if pulse_type in legacy_library_pulses: - parameters["angle"] = np.angle(parameters["amp"]) - parameters["amp"] = np.abs(parameters["amp"]) - _amp, _angle = sym.symbols("amp, angle") - envelope = envelope.subs(_amp, _amp * sym.exp(sym.I * _angle)) - - warnings.warn( - f"Library pulses with complex amp are no longer supported. " - f"{pulse_type} with complex amp was converted to (amp,angle) representation.", - UserWarning, - ) class_name = "ScalableSymbolicPulse" - duration = value.read_value(file_obj, version, {}) - name = value.read_value(file_obj, version, {}) - - if class_name == "SymbolicPulse": - 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, - ) - elif class_name == "ScalableSymbolicPulse": - return library.ScalableSymbolicPulse( - pulse_type=pulse_type, - duration=duration, - amp=parameters["amp"], - angle=parameters["angle"], - parameters=parameters, - name=name, - limit_amplitude=header.amp_limited, - envelope=envelope, - constraints=constraints, - valid_amp_conditions=valid_amp_conditions, - ) + value.read_value(file_obj, version, {}) # read duration + value.read_value(file_obj, version, {}) # read name + + if class_name == "SymbolicPulse" or class_name == "ScalableSymbolicPulse": + return None else: raise NotImplementedError(f"Unknown class '{class_name}'") def _read_symbolic_pulse_v6(file_obj, version, use_symengine): + # TODO: document purpose make = formats.SYMBOLIC_PULSE_V2._make pack = formats.SYMBOLIC_PULSE_PACK_V2 size = formats.SYMBOLIC_PULSE_SIZE_V2 @@ -201,83 +164,43 @@ def _read_symbolic_pulse_v6(file_obj, version, use_symengine): ) ) class_name = file_obj.read(header.class_name_size).decode(common.ENCODE) - pulse_type = file_obj.read(header.type_size).decode(common.ENCODE) - envelope = _loads_symbolic_expr(file_obj.read(header.envelope_size), use_symengine) - constraints = _loads_symbolic_expr(file_obj.read(header.constraints_size), use_symengine) - valid_amp_conditions = _loads_symbolic_expr( + file_obj.read(header.type_size).decode(common.ENCODE) # read pulse type + _loads_symbolic_expr(file_obj.read(header.envelope_size), use_symengine) # read envelope + _loads_symbolic_expr(file_obj.read(header.constraints_size), use_symengine) # read constraints + _loads_symbolic_expr( file_obj.read(header.valid_amp_conditions_size), use_symengine - ) - parameters = common.read_mapping( + ) # read valid_amp_conditions + # read parameters + common.read_mapping( file_obj, deserializer=value.loads_value, version=version, vectors={}, ) - duration = value.read_value(file_obj, version, {}) - name = value.read_value(file_obj, version, {}) - - if class_name == "SymbolicPulse": - 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, - ) - elif class_name == "ScalableSymbolicPulse": - # Between Qiskit 0.40 and 0.46, the (amp, angle) representation was present, - # but complex amp was still allowed. In Qiskit 1.0 and beyond complex amp - # is no longer supported and so the amp needs to be checked and converted. - # Once QPY version is bumped, a new reader function can be introduced without - # this check. - if isinstance(parameters["amp"], complex): - parameters["angle"] = np.angle(parameters["amp"]) - parameters["amp"] = np.abs(parameters["amp"]) - warnings.warn( - f"ScalableSymbolicPulse with complex amp are no longer supported. " - f"{pulse_type} with complex amp was converted to (amp,angle) representation.", - UserWarning, - ) + value.read_value(file_obj, version, {}) # read duration + value.read_value(file_obj, version, {}) # read name - return library.ScalableSymbolicPulse( - pulse_type=pulse_type, - duration=duration, - amp=parameters["amp"], - angle=parameters["angle"], - parameters=parameters, - name=name, - limit_amplitude=header.amp_limited, - envelope=envelope, - constraints=constraints, - valid_amp_conditions=valid_amp_conditions, - ) + if class_name == "SymbolicPulse" or class_name == "ScalableSymbolicPulse": + return None else: raise NotImplementedError(f"Unknown class '{class_name}'") def _read_alignment_context(file_obj, version): - type_key = common.read_type_key(file_obj) + # TODO: document purpose + common.read_type_key(file_obj) - context_params = common.read_sequence( + common.read_sequence( file_obj, deserializer=value.loads_value, version=version, vectors={}, ) - context_cls = type_keys.ScheduleAlignment.retrieve(type_key) - instance = object.__new__(context_cls) - instance._context_params = tuple(context_params) - return instance - - -# pylint: disable=too-many-return-statements def _loads_operand(type_key, data_bytes, version, use_symengine): + # TODO: document purpose ADD NONE TO ALL THE DUMMY READERS if type_key == type_keys.ScheduleOperand.WAVEFORM: return common.data_from_binary(data_bytes, _read_waveform, version=version) if type_key == type_keys.ScheduleOperand.SYMBOLIC_PULSE: @@ -308,22 +231,18 @@ def _loads_operand(type_key, data_bytes, version, use_symengine): def _read_element(file_obj, version, metadata_deserializer, use_symengine): + # TODO: document purpose of the function type_key = common.read_type_key(file_obj) if type_key == type_keys.Program.SCHEDULE_BLOCK: - return read_schedule_block(file_obj, version, metadata_deserializer, use_symengine) + read_schedule_block(file_obj, version, metadata_deserializer, use_symengine) - operands = common.read_sequence( + # read operands + common.read_sequence( file_obj, deserializer=_loads_operand, version=version, use_symengine=use_symengine ) - name = value.read_value(file_obj, version, {}) - - instance = object.__new__(type_keys.ScheduleInstruction.retrieve(type_key)) - instance._operands = tuple(operands) - instance._name = name - instance._hash = None - - return instance + # read name + value.read_value(file_obj, version, {}) def _loads_reference_item(type_key, data_bytes, metadata_deserializer, version): @@ -332,7 +251,7 @@ def _loads_reference_item(type_key, data_bytes, metadata_deserializer, version): if type_key == type_keys.Program.SCHEDULE_BLOCK: return common.data_from_binary( data_bytes, - deserializer=read_schedule_block, + deserializer=read_schedule_block, # TODO: where is this function used? version=version, metadata_deserializer=metadata_deserializer, ) @@ -344,6 +263,7 @@ def _loads_reference_item(type_key, data_bytes, metadata_deserializer, version): ) +# TODO: all the _write and dump functions below should be removed def _write_channel(file_obj, data, version): type_key = type_keys.ScheduleChannel.assign(data) common.write_type_key(file_obj, type_key) @@ -513,6 +433,7 @@ def _dumps_reference_item(schedule, metadata_serializer, version): @ignore_pulse_deprecation_warnings def read_schedule_block(file_obj, version, metadata_deserializer=None, use_symengine=False): + # TODO: document the purpose of this function """Read a single ScheduleBlock from the file like object. Args: @@ -530,7 +451,7 @@ def read_schedule_block(file_obj, version, metadata_deserializer=None, use_symen platforms. Please check that your target platform is supported by the symengine library before setting this option, as it will be required by qpy to deserialize the payload. Returns: - ScheduleBlock: The schedule block object from the file. + ScheduleBlock: The schedule block object from the file. #TODO: NONE Raises: TypeError: If any of the instructions is invalid data format. @@ -545,37 +466,22 @@ def read_schedule_block(file_obj, version, metadata_deserializer=None, use_symen file_obj.read(formats.SCHEDULE_BLOCK_HEADER_SIZE), ) ) - name = file_obj.read(data.name_size).decode(common.ENCODE) + file_obj.read(data.name_size).decode(common.ENCODE) # read name metadata_raw = file_obj.read(data.metadata_size) - metadata = json.loads(metadata_raw, cls=metadata_deserializer) - context = _read_alignment_context(file_obj, version) + json.loads(metadata_raw, cls=metadata_deserializer) # read metadata + _read_alignment_context(file_obj, version) - block = ScheduleBlock( - name=name, - metadata=metadata, - alignment_context=context, - ) for _ in range(data.num_elements): - block_elm = _read_element(file_obj, version, metadata_deserializer, use_symengine) - block.append(block_elm, inplace=True) + _read_element(file_obj, version, metadata_deserializer, use_symengine) # Load references if version >= 7: - flat_key_refdict = common.read_mapping( + common.read_mapping( file_obj=file_obj, deserializer=_loads_reference_item, version=version, metadata_deserializer=metadata_deserializer, ) - ref_dict = {} - for key_str, schedule in flat_key_refdict.items(): - if schedule is not None: - composite_key = tuple(key_str.split(instructions.Reference.key_delimiter)) - ref_dict[composite_key] = schedule - if ref_dict: - block.assign_references(ref_dict, inplace=True) - - return block def write_schedule_block( diff --git a/qiskit/qpy/interface.py b/qiskit/qpy/interface.py index cab90eb9407f..e8f32564f2e9 100644 --- a/qiskit/qpy/interface.py +++ b/qiskit/qpy/interface.py @@ -22,16 +22,14 @@ import re from qiskit.circuit import QuantumCircuit -from qiskit.pulse import ScheduleBlock from qiskit.exceptions import QiskitError from qiskit.qpy import formats, common, binary_io, type_keys from qiskit.qpy.exceptions import QPYLoadingDeprecatedFeatureWarning, QpyError from qiskit.version import __version__ -from qiskit.utils.deprecate_pulse import deprecate_pulse_arg # pylint: disable=invalid-name -QPY_SUPPORTED_TYPES = Union[QuantumCircuit, ScheduleBlock] +QPY_SUPPORTED_TYPES = Union[QuantumCircuit] # This version pattern is taken from the pypa packaging project: # https://github.com/pypa/packaging/blob/21.3/packaging/version.py#L223-L254 @@ -74,11 +72,6 @@ VERSION_PATTERN_REGEX = re.compile(VERSION_PATTERN, re.VERBOSE | re.IGNORECASE) -@deprecate_pulse_arg( - "programs", - deprecation_description="Passing `ScheduleBlock` to `programs`", - predicate=lambda p: isinstance(p, ScheduleBlock), -) def dump( programs: Union[List[QPY_SUPPORTED_TYPES], QPY_SUPPORTED_TYPES], file_obj: BinaryIO, @@ -350,15 +343,8 @@ def load( if type_key == type_keys.Program.CIRCUIT: loader = binary_io.read_circuit elif type_key == type_keys.Program.SCHEDULE_BLOCK: - loader = binary_io.read_schedule_block - warnings.warn( - category=QPYLoadingDeprecatedFeatureWarning, - message="Pulse gates deserialization is deprecated as of Qiskit 1.3 and " - "will be removed in Qiskit 2.0. This is part of the deprecation plan for " - "the entire Qiskit Pulse package. Once Pulse is removed, `ScheduleBlock` " - "sections will be ignored when loading QPY files with pulse data.", - ) - + raise QPYLoadingDeprecatedFeatureWarning("Payloads of type `ScheduleBlock` cannot be loaded as of Qiskit 2.0. " + "Use an earlier version if Qiskit if needed.") else: raise TypeError(f"Invalid payload format data kind '{type_key}'.") diff --git a/qiskit/qpy/type_keys.py b/qiskit/qpy/type_keys.py index 60262440d033..01226c73526f 100644 --- a/qiskit/qpy/type_keys.py +++ b/qiskit/qpy/type_keys.py @@ -437,7 +437,7 @@ class Program(TypeKeyBase): def assign(cls, obj): if isinstance(obj, QuantumCircuit): return cls.CIRCUIT - if isinstance(obj, ScheduleBlock): + if isinstance(obj, ScheduleBlock): # TODO: remove this path return cls.SCHEDULE_BLOCK raise exceptions.QpyError( diff --git a/test/python/qpy/test_block_load_from_qpy.py b/test/python/qpy/test_block_load_from_qpy.py deleted file mode 100644 index 6085618e8362..000000000000 --- a/test/python/qpy/test_block_load_from_qpy.py +++ /dev/null @@ -1,521 +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 cases for the schedule block qpy loading and saving.""" - -import io -import unittest -import warnings -from ddt import ddt, data, unpack -import numpy as np -import symengine as sym - -from qiskit.pulse import builder, Schedule -from qiskit.pulse.library import ( - SymbolicPulse, - Gaussian, - GaussianSquare, - Drag, - Constant, - Waveform, -) -from qiskit.pulse.channels import ( - DriveChannel, - ControlChannel, - MeasureChannel, - AcquireChannel, - MemorySlot, - RegisterSlot, -) -from qiskit.pulse.instructions import Play, TimeBlockade -from qiskit.circuit import Parameter, QuantumCircuit, Gate -from qiskit.qpy import dump, load -from qiskit.qpy.exceptions import QPYLoadingDeprecatedFeatureWarning -from qiskit.utils import optionals as _optional -from qiskit.pulse.configuration import Kernel, Discriminator -from test import QiskitTestCase # pylint: disable=wrong-import-order - - -class QpyScheduleTestCase(QiskitTestCase): - """QPY schedule testing platform.""" - - def assert_roundtrip_equal(self, block, use_symengine=False): - """QPY roundtrip equal test.""" - qpy_file = io.BytesIO() - with self.assertWarns(DeprecationWarning): - dump(block, qpy_file, use_symengine=use_symengine) - qpy_file.seek(0) - new_block = load(qpy_file)[0] - - self.assertEqual(block, new_block) - - -@ddt -class TestLoadFromQPY(QpyScheduleTestCase): - """Test loading and saving schedule block to qpy file.""" - - @data( - (Gaussian, DriveChannel, 160, 0.1, 40), - (GaussianSquare, DriveChannel, 800, 0.1, 64, 544), - (Drag, DriveChannel, 160, 0.1, 40, 0.5), - (Constant, DriveChannel, 800, 0.1), - (Constant, ControlChannel, 800, 0.1), - (Constant, MeasureChannel, 800, 0.1), - ) - @unpack - def test_library_pulse_play(self, envelope, channel, *params): - """Test playing standard pulses.""" - with self.assertWarns(DeprecationWarning): - with builder.build() as test_sched: - builder.play( - envelope(*params), - channel(0), - ) - with self.assertWarns(QPYLoadingDeprecatedFeatureWarning): - self.assert_roundtrip_equal(test_sched) - - def test_playing_custom_symbolic_pulse(self): - """Test playing a custom user pulse.""" - # pylint: disable=invalid-name - t, amp, freq = sym.symbols("t, amp, freq") - sym_envelope = 2 * amp * (freq * t - sym.floor(1 / 2 + freq * t)) - - with self.assertWarns(DeprecationWarning): - my_pulse = SymbolicPulse( - pulse_type="Sawtooth", - duration=100, - parameters={"amp": 0.1, "freq": 0.05}, - envelope=sym_envelope, - name="pulse1", - ) - with builder.build() as test_sched: - builder.play(my_pulse, DriveChannel(0)) - with self.assertWarns(QPYLoadingDeprecatedFeatureWarning): - self.assert_roundtrip_equal(test_sched) - - def test_symbolic_amplitude_limit(self): - """Test applying amplitude limit to symbolic pulse.""" - with self.assertWarns(DeprecationWarning): - with builder.build() as test_sched: - builder.play( - Gaussian(160, 20, 40, limit_amplitude=False), - DriveChannel(0), - ) - with self.assertWarns(QPYLoadingDeprecatedFeatureWarning): - self.assert_roundtrip_equal(test_sched) - - def test_waveform_amplitude_limit(self): - """Test applying amplitude limit to waveform.""" - with self.assertWarns(DeprecationWarning): - with builder.build() as test_sched: - builder.play( - Waveform([1, 2, 3, 4, 5], limit_amplitude=False), - DriveChannel(0), - ) - with self.assertWarns(QPYLoadingDeprecatedFeatureWarning): - self.assert_roundtrip_equal(test_sched) - - def test_playing_waveform(self): - """Test playing waveform.""" - # pylint: disable=invalid-name - t = np.linspace(0, 1, 100) - waveform = 0.1 * np.sin(2 * np.pi * t) - with self.assertWarns(DeprecationWarning): - with builder.build() as test_sched: - builder.play(waveform, DriveChannel(0)) - with self.assertWarns(QPYLoadingDeprecatedFeatureWarning): - self.assert_roundtrip_equal(test_sched) - - def test_phases(self): - """Test phase.""" - with self.assertWarns(DeprecationWarning): - with builder.build() as test_sched: - builder.shift_phase(0.1, DriveChannel(0)) - builder.set_phase(0.4, DriveChannel(1)) - with self.assertWarns(QPYLoadingDeprecatedFeatureWarning): - self.assert_roundtrip_equal(test_sched) - - def test_frequencies(self): - """Test frequency.""" - with self.assertWarns(DeprecationWarning): - with builder.build() as test_sched: - builder.shift_frequency(10e6, DriveChannel(0)) - builder.set_frequency(5e9, DriveChannel(1)) - with self.assertWarns(QPYLoadingDeprecatedFeatureWarning): - self.assert_roundtrip_equal(test_sched) - - def test_delay(self): - """Test delay.""" - with self.assertWarns(DeprecationWarning): - with builder.build() as test_sched: - builder.delay(100, DriveChannel(0)) - with self.assertWarns(QPYLoadingDeprecatedFeatureWarning): - self.assert_roundtrip_equal(test_sched) - - def test_barrier(self): - """Test barrier.""" - with self.assertWarns(DeprecationWarning): - with builder.build() as test_sched: - builder.barrier(DriveChannel(0), DriveChannel(1), ControlChannel(2)) - with self.assertWarns(QPYLoadingDeprecatedFeatureWarning): - self.assert_roundtrip_equal(test_sched) - - def test_time_blockade(self): - """Test time blockade.""" - with self.assertWarns(DeprecationWarning): - with builder.build() as test_sched: - builder.append_instruction(TimeBlockade(10, DriveChannel(0))) - with self.assertWarns(QPYLoadingDeprecatedFeatureWarning): - self.assert_roundtrip_equal(test_sched) - - def test_measure(self): - """Test measurement.""" - with self.assertWarns(DeprecationWarning): - with builder.build() as test_sched: - builder.acquire(100, AcquireChannel(0), MemorySlot(0)) - builder.acquire(100, AcquireChannel(1), RegisterSlot(1)) - with self.assertWarns(QPYLoadingDeprecatedFeatureWarning): - self.assert_roundtrip_equal(test_sched) - - @data( - (0, Parameter("dur"), 0.1, 40), - (Parameter("ch1"), 160, 0.1, 40), - (Parameter("ch1"), Parameter("dur"), Parameter("amp"), Parameter("sigma")), - (0, 160, Parameter("amp") * np.exp(1j * Parameter("phase")), 40), - ) - @unpack - def test_parameterized(self, channel, *params): - """Test playing parameterized pulse.""" - with self.assertWarns(DeprecationWarning): - with builder.build() as test_sched: - builder.play(Gaussian(*params), DriveChannel(channel)) - with self.assertWarns(QPYLoadingDeprecatedFeatureWarning): - self.assert_roundtrip_equal(test_sched) - - def test_nested_blocks(self): - """Test nested blocks with different alignment contexts.""" - with self.assertWarns(DeprecationWarning): - with builder.build() as test_sched: - with builder.align_equispaced(duration=1200): - with builder.align_left(): - builder.delay(100, DriveChannel(0)) - builder.delay(200, DriveChannel(1)) - with builder.align_right(): - builder.delay(100, DriveChannel(0)) - builder.delay(200, DriveChannel(1)) - with builder.align_sequential(): - builder.delay(100, DriveChannel(0)) - builder.delay(200, DriveChannel(1)) - with self.assertWarns(QPYLoadingDeprecatedFeatureWarning): - self.assert_roundtrip_equal(test_sched) - - def test_called_schedule(self): - """Test referenced pulse Schedule object. - - Referenced object is naively converted into ScheduleBlock with TimeBlockade instructions. - Thus referenced Schedule is still QPY compatible. - """ - with self.assertWarns(DeprecationWarning): - refsched = Schedule() - refsched.insert(20, Play(Constant(100, 0.1), DriveChannel(0))) - refsched.insert(50, Play(Constant(100, 0.1), DriveChannel(1))) - - with builder.build() as test_sched: - builder.call(refsched, name="test_ref") - with self.assertWarns(QPYLoadingDeprecatedFeatureWarning): - self.assert_roundtrip_equal(test_sched) - - def test_unassigned_reference(self): - """Test schedule with unassigned reference.""" - with self.assertWarns(DeprecationWarning): - with builder.build() as test_sched: - builder.reference("custom1", "q0") - builder.reference("custom1", "q1") - - with warnings.catch_warnings(): - warnings.simplefilter(action="ignore", category=DeprecationWarning) - with self.assertWarns(QPYLoadingDeprecatedFeatureWarning): - self.assert_roundtrip_equal(test_sched) - - def test_partly_assigned_reference(self): - """Test schedule with partly assigned reference.""" - with self.assertWarns(DeprecationWarning): - with builder.build() as test_sched: - builder.reference("custom1", "q0") - builder.reference("custom1", "q1") - - with builder.build() as sub_q0: - builder.delay(Parameter("duration"), DriveChannel(0)) - - test_sched.assign_references( - {("custom1", "q0"): sub_q0}, - inplace=True, - ) - - with warnings.catch_warnings(): - warnings.simplefilter(action="ignore", category=DeprecationWarning) - with self.assertWarns(QPYLoadingDeprecatedFeatureWarning): - self.assert_roundtrip_equal(test_sched) - - def test_nested_assigned_reference(self): - """Test schedule with assigned reference for nested schedule.""" - with self.assertWarns(DeprecationWarning): - with builder.build() as test_sched: - with builder.align_left(): - builder.reference("custom1", "q0") - builder.reference("custom1", "q1") - - with builder.build() as sub_q0: - builder.delay(Parameter("duration"), DriveChannel(0)) - - with builder.build() as sub_q1: - builder.delay(Parameter("duration"), DriveChannel(1)) - - test_sched.assign_references( - {("custom1", "q0"): sub_q0, ("custom1", "q1"): sub_q1}, - inplace=True, - ) - - with self.assertWarns(QPYLoadingDeprecatedFeatureWarning): - self.assert_roundtrip_equal(test_sched) - - def test_bell_schedule(self): - """Test complex schedule to create a Bell state.""" - with self.assertWarns(DeprecationWarning): - with builder.build() as test_sched: - with builder.align_sequential(): - # H - builder.shift_phase(-1.57, DriveChannel(0)) - builder.play(Drag(160, 0.05, 40, 1.3), DriveChannel(0)) - builder.shift_phase(-1.57, DriveChannel(0)) - # ECR - with builder.align_left(): - builder.play(GaussianSquare(800, 0.05, 64, 544), DriveChannel(1)) - builder.play(GaussianSquare(800, 0.22, 64, 544, 2), ControlChannel(0)) - builder.play(Drag(160, 0.1, 40, 1.5), DriveChannel(0)) - with builder.align_left(): - builder.play(GaussianSquare(800, -0.05, 64, 544), DriveChannel(1)) - builder.play(GaussianSquare(800, -0.22, 64, 544, 2), ControlChannel(0)) - builder.play(Drag(160, 0.1, 40, 1.5), DriveChannel(0)) - # Measure - with builder.align_left(): - builder.play(GaussianSquare(8000, 0.2, 64, 7744), MeasureChannel(0)) - builder.acquire(8000, AcquireChannel(0), MemorySlot(0)) - - with self.assertWarns(QPYLoadingDeprecatedFeatureWarning): - self.assert_roundtrip_equal(test_sched) - - @unittest.skipUnless(_optional.HAS_SYMENGINE, "Symengine required for this test") - def test_bell_schedule_use_symengine(self): - """Test complex schedule to create a Bell state.""" - with self.assertWarns(DeprecationWarning): - with builder.build() as test_sched: - with builder.align_sequential(): - # H - builder.shift_phase(-1.57, DriveChannel(0)) - builder.play(Drag(160, 0.05, 40, 1.3), DriveChannel(0)) - builder.shift_phase(-1.57, DriveChannel(0)) - # ECR - with builder.align_left(): - builder.play(GaussianSquare(800, 0.05, 64, 544), DriveChannel(1)) - builder.play(GaussianSquare(800, 0.22, 64, 544, 2), ControlChannel(0)) - builder.play(Drag(160, 0.1, 40, 1.5), DriveChannel(0)) - with builder.align_left(): - builder.play(GaussianSquare(800, -0.05, 64, 544), DriveChannel(1)) - builder.play(GaussianSquare(800, -0.22, 64, 544, 2), ControlChannel(0)) - builder.play(Drag(160, 0.1, 40, 1.5), DriveChannel(0)) - # Measure - with builder.align_left(): - builder.play(GaussianSquare(8000, 0.2, 64, 7744), MeasureChannel(0)) - builder.acquire(8000, AcquireChannel(0), MemorySlot(0)) - - with self.assertWarns(QPYLoadingDeprecatedFeatureWarning): - self.assert_roundtrip_equal(test_sched, True) - - def test_with_acquire_instruction_with_kernel(self): - """Test a schedblk with acquire instruction with kernel.""" - kernel = Kernel( - name="my_kernel", kernel={"real": np.ones(10), "imag": np.zeros(10)}, bias=[0, 0] - ) - with self.assertWarns(DeprecationWarning): - with builder.build() as test_sched: - builder.acquire(100, AcquireChannel(0), MemorySlot(0), kernel=kernel) - - with self.assertWarns(QPYLoadingDeprecatedFeatureWarning): - self.assert_roundtrip_equal(test_sched) - - def test_with_acquire_instruction_with_discriminator(self): - """Test a schedblk with acquire instruction with a discriminator.""" - discriminator = Discriminator( - name="my_discriminator", discriminator_type="linear", params=[1, 0] - ) - with self.assertWarns(DeprecationWarning): - with builder.build() as test_sched: - builder.acquire(100, AcquireChannel(0), MemorySlot(0), discriminator=discriminator) - - with self.assertWarns(QPYLoadingDeprecatedFeatureWarning): - self.assert_roundtrip_equal(test_sched) - - -class TestPulseGate(QpyScheduleTestCase): - """Test loading and saving pulse gate attached circuit to qpy file.""" - - def test_1q_gate(self): - """Test for single qubit pulse gate.""" - mygate = Gate("mygate", 1, []) - - with self.assertWarns(DeprecationWarning): - with builder.build() as caldef: - builder.play(Constant(100, 0.1), DriveChannel(0)) - - qc = QuantumCircuit(2) - qc.append(mygate, [0]) - with self.assertWarns(DeprecationWarning): - qc.add_calibration(mygate, (0,), caldef) - - self.assert_roundtrip_equal(qc) - - def test_2q_gate(self): - """Test for two qubit pulse gate.""" - mygate = Gate("mygate", 2, []) - - with self.assertWarns(DeprecationWarning): - with builder.build() as caldef: - builder.play(Constant(100, 0.1), ControlChannel(0)) - - qc = QuantumCircuit(2) - qc.append(mygate, [0, 1]) - with self.assertWarns(DeprecationWarning): - qc.add_calibration(mygate, (0, 1), caldef) - - self.assert_roundtrip_equal(qc) - - def test_parameterized_gate(self): - """Test for parameterized pulse gate.""" - amp = Parameter("amp") - angle = Parameter("angle") - mygate = Gate("mygate", 2, [amp, angle]) - - with self.assertWarns(DeprecationWarning): - with builder.build() as caldef: - builder.play(Constant(100, amp * np.exp(1j * angle)), ControlChannel(0)) - - qc = QuantumCircuit(2) - qc.append(mygate, [0, 1]) - with self.assertWarns(DeprecationWarning): - qc.add_calibration(mygate, (0, 1), caldef) - - self.assert_roundtrip_equal(qc) - - def test_override(self): - """Test for overriding standard gate with pulse gate.""" - amp = Parameter("amp") - - with self.assertWarns(DeprecationWarning): - with builder.build() as caldef: - builder.play(Constant(100, amp), ControlChannel(0)) - - qc = QuantumCircuit(2) - qc.rx(amp, 0) - with self.assertWarns(DeprecationWarning): - qc.add_calibration("rx", (0,), caldef, [amp]) - - self.assert_roundtrip_equal(qc) - - def test_multiple_calibrations(self): - """Test for circuit with multiple pulse gates.""" - amp1 = Parameter("amp1") - amp2 = Parameter("amp2") - mygate = Gate("mygate", 1, [amp2]) - - with self.assertWarns(DeprecationWarning): - with builder.build() as caldef1: - builder.play(Constant(100, amp1), DriveChannel(0)) - - with builder.build() as caldef2: - builder.play(Constant(100, amp2), DriveChannel(1)) - - qc = QuantumCircuit(2) - qc.rx(amp1, 0) - qc.append(mygate, [1]) - with self.assertWarns(DeprecationWarning): - qc.add_calibration("rx", (0,), caldef1, [amp1]) - qc.add_calibration(mygate, (1,), caldef2) - - self.assert_roundtrip_equal(qc) - - def test_with_acquire_instruction_with_kernel(self): - """Test a pulse gate with acquire instruction with kernel.""" - kernel = Kernel( - name="my_kernel", kernel={"real": np.zeros(10), "imag": np.zeros(10)}, bias=[0, 0] - ) - - with self.assertWarns(DeprecationWarning): - with builder.build() as sched: - builder.acquire(10, AcquireChannel(0), MemorySlot(0), kernel=kernel) - - qc = QuantumCircuit(1, 1) - qc.measure(0, 0) - with self.assertWarns(DeprecationWarning): - qc.add_calibration("measure", (0,), sched) - - self.assert_roundtrip_equal(qc) - - def test_with_acquire_instruction_with_discriminator(self): - """Test a pulse gate with acquire instruction with discriminator.""" - discriminator = Discriminator("my_discriminator") - - with self.assertWarns(DeprecationWarning): - with builder.build() as sched: - builder.acquire(10, AcquireChannel(0), MemorySlot(0), discriminator=discriminator) - - qc = QuantumCircuit(1, 1) - qc.measure(0, 0) - with self.assertWarns(DeprecationWarning): - qc.add_calibration("measure", (0,), sched) - - self.assert_roundtrip_equal(qc) - - -class TestSymengineLoadFromQPY(QiskitTestCase): - """Test use of symengine in qpy set of methods.""" - - def setUp(self): - super().setUp() - - # pylint: disable=invalid-name - t, amp, freq = sym.symbols("t, amp, freq") - sym_envelope = 2 * amp * (freq * t - sym.floor(1 / 2 + freq * t)) - - with self.assertWarns(DeprecationWarning): - my_pulse = SymbolicPulse( - pulse_type="Sawtooth", - duration=100, - parameters={"amp": 0.1, "freq": 0.05}, - envelope=sym_envelope, - name="pulse1", - ) - with builder.build() as test_sched: - builder.play(my_pulse, DriveChannel(0)) - - self.test_sched = test_sched - - @unittest.skipIf(not _optional.HAS_SYMENGINE, "Install symengine to run this test.") - def test_symengine_full_path(self): - """Test use_symengine option for circuit with parameter expressions.""" - qpy_file = io.BytesIO() - with self.assertWarns(DeprecationWarning): - dump(self.test_sched, qpy_file, use_symengine=True) - qpy_file.seek(0) - with self.assertWarns(QPYLoadingDeprecatedFeatureWarning): - new_sched = load(qpy_file)[0] - self.assertEqual(self.test_sched, new_sched) From 39d12b4f8c6b50f8285aee28158efb9fe2401ae3 Mon Sep 17 00:00:00 2001 From: Eli Arbel Date: Sun, 9 Feb 2025 17:08:43 +0200 Subject: [PATCH 02/29] Add documentation and remove redundant code --- qiskit/qpy/__init__.py | 44 ++- qiskit/qpy/binary_io/__init__.py | 1 - qiskit/qpy/binary_io/circuits.py | 62 +--- qiskit/qpy/binary_io/schedules.py | 325 +++--------------- qiskit/qpy/interface.py | 37 +- qiskit/qpy/type_keys.py | 235 +------------ .../remove-pulse-qpy-07a96673c8f10e38.yaml | 11 + .../circuit/test_circuit_load_from_qpy.py | 40 +-- test/python/qpy/test_circuit_load_from_qpy.py | 4 +- 9 files changed, 127 insertions(+), 632 deletions(-) create mode 100644 releasenotes/notes/remove-pulse-qpy-07a96673c8f10e38.yaml diff --git a/qiskit/qpy/__init__.py b/qiskit/qpy/__init__.py index 60922f3d3ec2..2b3716136bb2 100644 --- a/qiskit/qpy/__init__.py +++ b/qiskit/qpy/__init__.py @@ -18,12 +18,11 @@ .. currentmodule:: qiskit.qpy QPY is a binary serialization format for :class:`~.QuantumCircuit` and -:class:`~.ScheduleBlock` objects that is designed to be cross-platform, -Python version agnostic, and backwards compatible moving forward. QPY should -be used if you need a mechanism to save or copy between systems a -:class:`~.QuantumCircuit` or :class:`~.ScheduleBlock` that preserves the full -Qiskit object structure (except for custom attributes defined outside of -Qiskit code). This differs from other serialization formats like +objects that is designed to be cross-platform, Python version agnostic, +and backwards compatible moving forward. QPY should be used if you need +a mechanism to save or copy between systems a :class:`~.QuantumCircuit` +that preserves the full Qiskit object structure (except for custom attributes +defined outside of Qiskit code). This differs from other serialization formats like `OpenQASM `__ (2.0 or 3.0) which has a different abstraction model and can result in a loss of information contained in the original circuit (or is unable to represent some aspects of the @@ -170,6 +169,12 @@ def open(*args): it to QPY setting ``use_symengine=False``. The resulting file can then be loaded by any later version of Qiskit. + With the removal of Pulse in Qiskit 2.0, QPY does not support loading ``ScheduleBlock` programs + or pulse gates. If such payloads are being loaded, QPY will issue a warning and + return partial circuits. In the case of a ``ScheduleBlock`` payload, a circuit with only a name + and metadata will be loaded. It the case of pulse gates, the circuit will contain custom + instructions without calibration data attached, hence leaving them undefined. + QPY format version history -------------------------- @@ -902,7 +907,7 @@ def open(*args): --------- Version 7 adds support for :class:`.~Reference` instruction and serialization of -a :class:`.~ScheduleBlock` program while keeping its reference to subroutines:: +a ``ScheduleBlock`` program while keeping its reference to subroutines:: from qiskit import pulse from qiskit import qpy @@ -974,12 +979,12 @@ def open(*args): Version 5 --------- -Version 5 changes from :ref:`qpy_version_4` by adding support for :class:`.~ScheduleBlock` +Version 5 changes from :ref:`qpy_version_4` by adding support for ``ScheduleBlock`` and changing two payloads the INSTRUCTION metadata payload and the CUSTOM_INSTRUCTION block. These now have new fields to better account for :class:`~.ControlledGate` objects in a circuit. In addition, new payload MAP_ITEM is defined to implement the :ref:`qpy_mapping` block. -With the support of :class:`.~ScheduleBlock`, now :class:`~.QuantumCircuit` can be +With the support of ``ScheduleBlock``, now :class:`~.QuantumCircuit` can be serialized together with :attr:`~.QuantumCircuit.calibrations`, or `Pulse Gates `_. In QPY version 5 and above, :ref:`qpy_circuit_calibrations` payload is @@ -996,7 +1001,7 @@ def open(*args): immediately follows the file header block to represent the program type stored in the file. - When ``type==c``, :class:`~.QuantumCircuit` payload follows -- When ``type==s``, :class:`~.ScheduleBlock` payload follows +- When ``type==s``, ``ScheduleBlock`` payload follows .. note:: @@ -1009,12 +1014,10 @@ def open(*args): SCHEDULE_BLOCK ~~~~~~~~~~~~~~ -:class:`~.ScheduleBlock` is first supported in QPY Version 5. This allows +``ScheduleBlock`` is first supported in QPY Version 5. This allows users to save pulse programs in the QPY binary format as follows: -.. plot:: - :include-source: - :nofigs: +.. code-block:: python from qiskit import pulse, qpy @@ -1027,13 +1030,6 @@ def open(*args): with open('schedule.qpy', 'rb') as fd: new_schedule = qpy.load(fd)[0] -.. plot:: - :nofigs: - - # This block is hidden from readers. It's cleanup code. - from pathlib import Path - Path("schedule.qpy").unlink() - Note that circuit and schedule block are serialized and deserialized through the same QPY interface. Input data type is implicitly analyzed and no extra option is required to save the schedule block. @@ -1043,7 +1039,7 @@ def open(*args): SCHEDULE_BLOCK_HEADER ~~~~~~~~~~~~~~~~~~~~~ -:class:`~.ScheduleBlock` block starts with the following header: +``ScheduleBlock`` block starts with the following header: .. code-block:: c @@ -1243,8 +1239,8 @@ def open(*args): and ``num_params`` length of INSTRUCTION_PARAM payload for parameters associated to the custom instruction. The ``type`` indicates the class of pulse program which is either, in principle, -:class:`~.ScheduleBlock` or :class:`~.Schedule`. As of QPY Version 5, -only :class:`~.ScheduleBlock` payload is supported. +``ScheduleBlock`` or :class:`~.Schedule`. As of QPY Version 5, +only ``ScheduleBlock`` payload is supported. Finally, :ref:`qpy_schedule_block` payload is packed for each CALIBRATION_DEF entry. .. _qpy_instruction_v5: diff --git a/qiskit/qpy/binary_io/__init__.py b/qiskit/qpy/binary_io/__init__.py index a5948b7d3f1b..46f0bd0473b7 100644 --- a/qiskit/qpy/binary_io/__init__.py +++ b/qiskit/qpy/binary_io/__init__.py @@ -31,6 +31,5 @@ _read_instruction, ) from .schedules import ( - write_schedule_block, read_schedule_block, ) diff --git a/qiskit/qpy/binary_io/circuits.py b/qiskit/qpy/binary_io/circuits.py index 8fda99e56bb3..92e6e7d55c14 100644 --- a/qiskit/qpy/binary_io/circuits.py +++ b/qiskit/qpy/binary_io/circuits.py @@ -647,18 +647,19 @@ def _read_calibrations(file_obj, version, vectors, metadata_deserializer): defheader = formats.CALIBRATION_DEF._make( struct.unpack(formats.CALIBRATION_DEF_PACK, file_obj.read(formats.CALIBRATION_DEF_SIZE)) ) - name = file_obj.read(defheader.name_size).decode(common.ENCODE) # TODO: this is where the name of the gate comes from. Emit a warning here - warnings.warn( - category=exceptions.QPYLoadingDeprecatedFeatureWarning, - message="Support for loading dulse gates has been removed in Qiskit 2.0. " - f"If `{name}` is in the circuit, it will be left as a custom instruction without definition." - - ) + name = file_obj.read(defheader.name_size).decode(common.ENCODE) + if name: + warnings.warn( + category=exceptions.QPYLoadingDeprecatedFeatureWarning, + message="Support for loading dulse gates has been removed in Qiskit 2.0. " + f"If `{name}` is in the circuit, it will be left as a custom instruction" + " without definition.", + ) - for _ in range(defheader.num_qubits): # qubits info - struct.unpack("!q", file_obj.read(struct.calcsize("!q")))[0] + for _ in range(defheader.num_qubits): # read qubits info + file_obj.read(struct.calcsize("!q")) - for _ in range(defheader.num_params): # read params info + for _ in range(defheader.num_params): # read params info value.read_value(file_obj, version, vectors) schedules.read_schedule_block(file_obj, version, metadata_deserializer) @@ -992,34 +993,6 @@ def _write_custom_operation( return new_custom_instruction -def _write_calibrations(file_obj, calibrations, metadata_serializer, version): - flatten_dict = {} - for gate, caldef in calibrations.items(): - for (qubits, params), schedule in caldef.items(): - key = (gate, qubits, params) - flatten_dict[key] = schedule - header = struct.pack(formats.CALIBRATION_PACK, len(flatten_dict)) - file_obj.write(header) - for (name, qubits, params), schedule in flatten_dict.items(): - # In principle ScheduleBlock and Schedule can be supported. - # As of version 5 only ScheduleBlock is supported. - name_bytes = name.encode(common.ENCODE) - defheader = struct.pack( - formats.CALIBRATION_DEF_PACK, - len(name_bytes), - len(qubits), - len(params), - type_keys.Program.assign(schedule), - ) - file_obj.write(defheader) - file_obj.write(name_bytes) - for qubit in qubits: - file_obj.write(struct.pack("!q", qubit)) - for param in params: - value.write_value(file_obj, param, version=version) - schedules.write_schedule_block(file_obj, schedule, metadata_serializer, version=version) - - def _write_registers(file_obj, in_circ_regs, full_bits): bitmap = {bit: index for index, bit in enumerate(full_bits)} @@ -1320,8 +1293,11 @@ def write_circuit( file_obj.write(instruction_buffer.getvalue()) instruction_buffer.close() - # Write calibrations - _write_calibrations(file_obj, circuit._calibrations_prop, metadata_serializer, version=version) + # Pulse has been removed in Qiskit 2.0. As long as we keep QPY at version 13, + # we need to write an empty calibrations header since read_circuit expects it + header = struct.pack(formats.CALIBRATION_PACK, 0) + file_obj.write(header) + _write_layout(file_obj, circuit) @@ -1449,11 +1425,9 @@ def read_circuit(file_obj, version, metadata_deserializer=None, use_symengine=Fa standalone_var_indices, ) - # Read calibrations, but don't use them since pulse gates are not supported as of Qiskit 2.0 + # Consume calibrations, but don't use them since pulse gates are not supported as of Qiskit 2.0 if version >= 5: - _read_calibrations( - file_obj, version, vectors, metadata_deserializer - ) + _read_calibrations(file_obj, version, vectors, metadata_deserializer) for vec_name, (vector, initialized_params) in vectors.items(): if len(initialized_params) != len(vector): diff --git a/qiskit/qpy/binary_io/schedules.py b/qiskit/qpy/binary_io/schedules.py index cad8eb8ddb75..f9f43e45139e 100644 --- a/qiskit/qpy/binary_io/schedules.py +++ b/qiskit/qpy/binary_io/schedules.py @@ -10,35 +10,35 @@ # copyright notice, and modified files need to carry a notice indicating # that they have been altered from the originals. -"""Read and write schedule and schedule instructions.""" +"""Read schedule and schedule instructions. + +This module is kep post pulse-removal to allow reading legacy +payloads containing pulse gates without breaking the load flow. +The purpose of the `_read` and `_load` methods below is just to advance +the file handle while consuming pulse data.""" +from curses import meta import json import struct import zlib -import warnings from io import BytesIO import numpy as np import symengine as sym +from qiskit.circuit.quantumcircuit import QuantumCircuit from qiskit.exceptions import QiskitError -from qiskit.pulse import library, channels, instructions -from qiskit.pulse.schedule import ScheduleBlock from qiskit.qpy import formats, common, type_keys from qiskit.qpy.binary_io import value from qiskit.qpy.exceptions import QpyError -from qiskit.pulse.configuration import Kernel, Discriminator -from qiskit.utils.deprecate_pulse import ignore_pulse_deprecation_warnings -def _read_channel(file_obj, version): - # TODO: document purpose - common.read_type_key(file_obj) # read type_key - value.read_value(file_obj, version, {}) # read index +def _read_channel(file_obj, version) -> None: + common.read_type_key(file_obj) # read type_key + value.read_value(file_obj, version, {}) # read index -def _read_waveform(file_obj, version): - # TODO: document purpose +def _read_waveform(file_obj, version) -> None: header = formats.WAVEFORM._make( struct.unpack( formats.WAVEFORM_PACK, @@ -46,8 +46,8 @@ def _read_waveform(file_obj, version): ) ) samples_raw = file_obj.read(header.data_size) - common.data_from_binary(samples_raw, np.load) # read samples - value.read_value(file_obj, version, {}) # read name + common.data_from_binary(samples_raw, np.load) # read samples + value.read_value(file_obj, version, {}) # read name def _loads_obj(type_key, binary_data, version, vectors): @@ -68,19 +68,17 @@ def _loads_obj(type_key, binary_data, version, vectors): return value.loads_value(type_key, binary_data, version, vectors) -def _read_kernel(file_obj, version): - # TODO: document - params = common.read_mapping( +def _read_kernel(file_obj, version) -> None: + common.read_mapping( file_obj=file_obj, deserializer=_loads_obj, version=version, vectors={}, ) - value.read_value(file_obj, version, {}) # read name + value.read_value(file_obj, version, {}) # read name -def _read_discriminator(file_obj, version): - # TODO: docucment +def _read_discriminator(file_obj, version) -> None: # read params common.read_mapping( file_obj=file_obj, @@ -88,7 +86,7 @@ def _read_discriminator(file_obj, version): version=version, vectors={}, ) - value.read_value(file_obj, version, {}) # read name + value.read_value(file_obj, version, {}) # read name def _loads_symbolic_expr(expr_bytes, use_symengine=False): @@ -105,8 +103,7 @@ def _loads_symbolic_expr(expr_bytes, use_symengine=False): return sym.sympify(expr) -def _read_symbolic_pulse(file_obj, version): - # TODO: document purpose +def _read_symbolic_pulse(file_obj, version) -> None: make = formats.SYMBOLIC_PULSE._make pack = formats.SYMBOLIC_PULSE_PACK size = formats.SYMBOLIC_PULSE_SIZE @@ -118,9 +115,11 @@ def _read_symbolic_pulse(file_obj, version): ) ) pulse_type = file_obj.read(header.type_size).decode(common.ENCODE) - _loads_symbolic_expr(file_obj.read(header.envelope_size)) # read envelope - _loads_symbolic_expr(file_obj.read(header.constraints_size)) # read constraints - _loads_symbolic_expr(file_obj.read(header.valid_amp_conditions_size)) # read valid amp conditions + _loads_symbolic_expr(file_obj.read(header.envelope_size)) # read envelope + _loads_symbolic_expr(file_obj.read(header.constraints_size)) # read constraints + _loads_symbolic_expr( + file_obj.read(header.valid_amp_conditions_size) + ) # read valid amp conditions # read parameters common.read_mapping( file_obj, @@ -142,16 +141,14 @@ def _read_symbolic_pulse(file_obj, version): if pulse_type in legacy_library_pulses: class_name = "ScalableSymbolicPulse" - value.read_value(file_obj, version, {}) # read duration - value.read_value(file_obj, version, {}) # read name + value.read_value(file_obj, version, {}) # read duration + value.read_value(file_obj, version, {}) # read name - if class_name == "SymbolicPulse" or class_name == "ScalableSymbolicPulse": - return None - else: + if class_name not in ("SymbolicPulse", "ScalableSymbolicPulse"): raise NotImplementedError(f"Unknown class '{class_name}'") -def _read_symbolic_pulse_v6(file_obj, version, use_symengine): +def _read_symbolic_pulse_v6(file_obj, version, use_symengine) -> None: # TODO: document purpose make = formats.SYMBOLIC_PULSE_V2._make pack = formats.SYMBOLIC_PULSE_PACK_V2 @@ -164,12 +161,12 @@ def _read_symbolic_pulse_v6(file_obj, version, use_symengine): ) ) class_name = file_obj.read(header.class_name_size).decode(common.ENCODE) - file_obj.read(header.type_size).decode(common.ENCODE) # read pulse type - _loads_symbolic_expr(file_obj.read(header.envelope_size), use_symengine) # read envelope - _loads_symbolic_expr(file_obj.read(header.constraints_size), use_symengine) # read constraints + file_obj.read(header.type_size).decode(common.ENCODE) # read pulse type + _loads_symbolic_expr(file_obj.read(header.envelope_size), use_symengine) # read envelope + _loads_symbolic_expr(file_obj.read(header.constraints_size), use_symengine) # read constraints _loads_symbolic_expr( file_obj.read(header.valid_amp_conditions_size), use_symengine - ) # read valid_amp_conditions + ) # read valid_amp_conditions # read parameters common.read_mapping( file_obj, @@ -178,17 +175,14 @@ def _read_symbolic_pulse_v6(file_obj, version, use_symengine): vectors={}, ) - value.read_value(file_obj, version, {}) # read duration - value.read_value(file_obj, version, {}) # read name + value.read_value(file_obj, version, {}) # read duration + value.read_value(file_obj, version, {}) # read name - if class_name == "SymbolicPulse" or class_name == "ScalableSymbolicPulse": - return None - else: + if class_name not in ("SymbolicPulse", "ScalableSymbolicPulse"): raise NotImplementedError(f"Unknown class '{class_name}'") -def _read_alignment_context(file_obj, version): - # TODO: document purpose +def _read_alignment_context(file_obj, version) -> None: common.read_type_key(file_obj) common.read_sequence( @@ -199,6 +193,7 @@ def _read_alignment_context(file_obj, version): ) +# pylint: disable=too-many-return-statements def _loads_operand(type_key, data_bytes, version, use_symengine): # TODO: document purpose ADD NONE TO ALL THE DUMMY READERS if type_key == type_keys.ScheduleOperand.WAVEFORM: @@ -230,8 +225,7 @@ def _loads_operand(type_key, data_bytes, version, use_symengine): return value.loads_value(type_key, data_bytes, version, {}) -def _read_element(file_obj, version, metadata_deserializer, use_symengine): - # TODO: document purpose of the function +def _read_element(file_obj, version, metadata_deserializer, use_symengine) -> None: type_key = common.read_type_key(file_obj) if type_key == type_keys.Program.SCHEDULE_BLOCK: @@ -245,13 +239,13 @@ def _read_element(file_obj, version, metadata_deserializer, use_symengine): value.read_value(file_obj, version, {}) -def _loads_reference_item(type_key, data_bytes, metadata_deserializer, version): +def _loads_reference_item(type_key, data_bytes, metadata_deserializer, version) -> None: if type_key == type_keys.Value.NULL: return None if type_key == type_keys.Program.SCHEDULE_BLOCK: return common.data_from_binary( data_bytes, - deserializer=read_schedule_block, # TODO: where is this function used? + deserializer=read_schedule_block, version=version, metadata_deserializer=metadata_deserializer, ) @@ -263,178 +257,8 @@ def _loads_reference_item(type_key, data_bytes, metadata_deserializer, version): ) -# TODO: all the _write and dump functions below should be removed -def _write_channel(file_obj, data, version): - type_key = type_keys.ScheduleChannel.assign(data) - common.write_type_key(file_obj, type_key) - value.write_value(file_obj, data.index, version=version) - - -def _write_waveform(file_obj, data, version): - samples_bytes = common.data_to_binary(data.samples, np.save) - - header = struct.pack( - formats.WAVEFORM_PACK, - data.epsilon, - len(samples_bytes), - data._limit_amplitude, - ) - file_obj.write(header) - file_obj.write(samples_bytes) - value.write_value(file_obj, data.name, version=version) - - -def _dumps_obj(obj, version): - """Wraps `value.dumps_value` to serialize dictionary and list objects - which are not supported by `value.dumps_value`. - """ - if isinstance(obj, dict): - with BytesIO() as container: - common.write_mapping( - file_obj=container, mapping=obj, serializer=_dumps_obj, version=version - ) - binary_data = container.getvalue() - return b"D", binary_data - elif isinstance(obj, list): - with BytesIO() as container: - common.write_sequence( - file_obj=container, sequence=obj, serializer=_dumps_obj, version=version - ) - binary_data = container.getvalue() - return b"l", binary_data - else: - return value.dumps_value(obj, version=version) - - -def _write_kernel(file_obj, data, version): - name = data.name - params = data.params - common.write_mapping(file_obj=file_obj, mapping=params, serializer=_dumps_obj, version=version) - value.write_value(file_obj, name, version=version) - - -def _write_discriminator(file_obj, data, version): - name = data.name - params = data.params - common.write_mapping(file_obj=file_obj, mapping=params, serializer=_dumps_obj, version=version) - value.write_value(file_obj, name, version=version) - - -def _dumps_symbolic_expr(expr, use_symengine): - if expr is None: - return b"" - if use_symengine: - expr_bytes = expr.__reduce__()[1][0] - else: - from sympy import srepr, sympify - - expr_bytes = srepr(sympify(expr)).encode(common.ENCODE) - return zlib.compress(expr_bytes) - - -def _write_symbolic_pulse(file_obj, data, use_symengine, version): - class_name_bytes = data.__class__.__name__.encode(common.ENCODE) - pulse_type_bytes = data.pulse_type.encode(common.ENCODE) - envelope_bytes = _dumps_symbolic_expr(data.envelope, use_symengine) - constraints_bytes = _dumps_symbolic_expr(data.constraints, use_symengine) - valid_amp_conditions_bytes = _dumps_symbolic_expr(data.valid_amp_conditions, use_symengine) - - header_bytes = struct.pack( - formats.SYMBOLIC_PULSE_PACK_V2, - len(class_name_bytes), - len(pulse_type_bytes), - len(envelope_bytes), - len(constraints_bytes), - len(valid_amp_conditions_bytes), - data._limit_amplitude, - ) - file_obj.write(header_bytes) - file_obj.write(class_name_bytes) - file_obj.write(pulse_type_bytes) - file_obj.write(envelope_bytes) - file_obj.write(constraints_bytes) - file_obj.write(valid_amp_conditions_bytes) - common.write_mapping( - file_obj, - mapping=data._params, - serializer=value.dumps_value, - version=version, - ) - value.write_value(file_obj, data.duration, version=version) - value.write_value(file_obj, data.name, version=version) - - -def _write_alignment_context(file_obj, context, version): - type_key = type_keys.ScheduleAlignment.assign(context) - common.write_type_key(file_obj, type_key) - common.write_sequence( - file_obj, sequence=context._context_params, serializer=value.dumps_value, version=version - ) - - -def _dumps_operand(operand, use_symengine, version): - if isinstance(operand, library.Waveform): - type_key = type_keys.ScheduleOperand.WAVEFORM - data_bytes = common.data_to_binary(operand, _write_waveform, version=version) - elif isinstance(operand, library.SymbolicPulse): - type_key = type_keys.ScheduleOperand.SYMBOLIC_PULSE - data_bytes = common.data_to_binary( - operand, _write_symbolic_pulse, use_symengine=use_symengine, version=version - ) - elif isinstance(operand, channels.Channel): - type_key = type_keys.ScheduleOperand.CHANNEL - data_bytes = common.data_to_binary(operand, _write_channel, version=version) - elif isinstance(operand, str): - type_key = type_keys.ScheduleOperand.OPERAND_STR - data_bytes = operand.encode(common.ENCODE) - elif isinstance(operand, Kernel): - type_key = type_keys.ScheduleOperand.KERNEL - data_bytes = common.data_to_binary(operand, _write_kernel, version=version) - elif isinstance(operand, Discriminator): - type_key = type_keys.ScheduleOperand.DISCRIMINATOR - data_bytes = common.data_to_binary(operand, _write_discriminator, version=version) - else: - type_key, data_bytes = value.dumps_value(operand, version=version) - - return type_key, data_bytes - - -def _write_element(file_obj, element, metadata_serializer, use_symengine, version): - if isinstance(element, ScheduleBlock): - common.write_type_key(file_obj, type_keys.Program.SCHEDULE_BLOCK) - write_schedule_block(file_obj, element, metadata_serializer, use_symengine, version=version) - else: - type_key = type_keys.ScheduleInstruction.assign(element) - common.write_type_key(file_obj, type_key) - common.write_sequence( - file_obj, - sequence=element.operands, - serializer=_dumps_operand, - use_symengine=use_symengine, - version=version, - ) - value.write_value(file_obj, element.name, version=version) - - -def _dumps_reference_item(schedule, metadata_serializer, version): - if schedule is None: - type_key = type_keys.Value.NULL - data_bytes = b"" - else: - type_key = type_keys.Program.SCHEDULE_BLOCK - data_bytes = common.data_to_binary( - obj=schedule, - serializer=write_schedule_block, - metadata_serializer=metadata_serializer, - version=version, - ) - return type_key, data_bytes - - -@ignore_pulse_deprecation_warnings def read_schedule_block(file_obj, version, metadata_deserializer=None, use_symengine=False): - # TODO: document the purpose of this function - """Read a single ScheduleBlock from the file like object. + """Consume a single ScheduleBlock from the file like object. Args: file_obj (File): A file like object that contains the QPY binary data. @@ -451,7 +275,9 @@ def read_schedule_block(file_obj, version, metadata_deserializer=None, use_symen platforms. Please check that your target platform is supported by the symengine library before setting this option, as it will be required by qpy to deserialize the payload. Returns: - ScheduleBlock: The schedule block object from the file. #TODO: NONE + QuantumCircuit: Returns a dummy QuantumCircuit object, containing just name and metadata. + This function exists just to allow reading legacy payloads containing pulse information + without breaking the entire load flow. Raises: TypeError: If any of the instructions is invalid data format. @@ -466,9 +292,9 @@ def read_schedule_block(file_obj, version, metadata_deserializer=None, use_symen file_obj.read(formats.SCHEDULE_BLOCK_HEADER_SIZE), ) ) - file_obj.read(data.name_size).decode(common.ENCODE) # read name + name = file_obj.read(data.name_size).decode(common.ENCODE) metadata_raw = file_obj.read(data.metadata_size) - json.loads(metadata_raw, cls=metadata_deserializer) # read metadata + metadata = json.loads(metadata_raw, cls=metadata_deserializer) # read metadata _read_alignment_context(file_obj, version) for _ in range(data.num_elements): @@ -483,59 +309,4 @@ def read_schedule_block(file_obj, version, metadata_deserializer=None, use_symen metadata_deserializer=metadata_deserializer, ) - -def write_schedule_block( - file_obj, block, metadata_serializer=None, use_symengine=False, version=common.QPY_VERSION -): - """Write a single ScheduleBlock object in the file like object. - - Args: - file_obj (File): The file like object to write the circuit data in. - block (ScheduleBlock): A schedule block data to write. - metadata_serializer (JSONEncoder): An optional JSONEncoder class that - will be passed the :attr:`.ScheduleBlock.metadata` dictionary for - ``block`` and will be used as the ``cls`` kwarg - on the ``json.dump()`` call to JSON serialize that dictionary. - use_symengine (bool): If True, symbolic objects will be serialized using symengine's - native mechanism. This is a faster serialization alternative, but not supported in all - platforms. Please check that your target platform is supported by the symengine library - before setting this option, as it will be required by qpy to deserialize the payload. - version (int): The QPY format version to use for serializing this circuit block - Raises: - TypeError: If any of the instructions is invalid data format. - """ - metadata = json.dumps(block.metadata, separators=(",", ":"), cls=metadata_serializer).encode( - common.ENCODE - ) - block_name = block.name.encode(common.ENCODE) - - # Write schedule block header - header_raw = formats.SCHEDULE_BLOCK_HEADER( - name_size=len(block_name), - metadata_size=len(metadata), - num_elements=len(block), - ) - header = struct.pack(formats.SCHEDULE_BLOCK_HEADER_PACK, *header_raw) - file_obj.write(header) - file_obj.write(block_name) - file_obj.write(metadata) - - _write_alignment_context(file_obj, block.alignment_context, version=version) - for block_elm in block._blocks: - # Do not call block.blocks. This implicitly assigns references to instruction. - # This breaks original reference structure. - _write_element(file_obj, block_elm, metadata_serializer, use_symengine, version=version) - - # Write references - flat_key_refdict = {} - for ref_keys, schedule in block._reference_manager.items(): - # Do not call block.reference. This returns the reference of most outer program by design. - key_str = instructions.Reference.key_delimiter.join(ref_keys) - flat_key_refdict[key_str] = schedule - common.write_mapping( - file_obj=file_obj, - mapping=flat_key_refdict, - serializer=_dumps_reference_item, - metadata_serializer=metadata_serializer, - version=version, - ) + return QuantumCircuit(name=name, metadata=metadata) diff --git a/qiskit/qpy/interface.py b/qiskit/qpy/interface.py index e8f32564f2e9..0958fdd8cad9 100644 --- a/qiskit/qpy/interface.py +++ b/qiskit/qpy/interface.py @@ -120,9 +120,7 @@ def dump( Args: programs: QPY supported object(s) to store in the specified file like object. - QPY supports :class:`.QuantumCircuit` and :class:`.ScheduleBlock`. - Different data types must be separately serialized. - Support for :class:`.ScheduleBlock` is deprecated since Qiskit 1.3.0. + QPY supports :class:`.QuantumCircuit`. file_obj: The file like object to write the QPY data too metadata_serializer: An optional JSONEncoder class that will be passed the ``.metadata`` attribute for each program in ``programs`` and will be @@ -149,7 +147,7 @@ def dump( .. note:: - If serializing a :class:`.QuantumCircuit` or :class:`.ScheduleBlock` that contain + If serializing a :class:`.QuantumCircuit` that contains :class:`.ParameterExpression` objects with ``version`` set low with the intent to load the payload using a historical release of Qiskit, it is safest to set the ``use_symengine`` flag to ``False``. Versions of Qiskit prior to 1.2.4 cannot load @@ -180,9 +178,6 @@ def dump( if issubclass(program_type, QuantumCircuit): type_key = type_keys.Program.CIRCUIT writer = binary_io.write_circuit - elif program_type is ScheduleBlock: - type_key = type_keys.Program.SCHEDULE_BLOCK - writer = binary_io.write_schedule_block else: raise TypeError(f"'{program_type}' is not supported data type.") @@ -211,10 +206,7 @@ def dump( file_obj.write(header) common.write_type_key(file_obj, type_key) - pulse_gates = False for program in programs: - if type_key == type_keys.Program.CIRCUIT and program._calibrations_prop: - pulse_gates = True writer( file_obj, program, @@ -223,13 +215,6 @@ def dump( version=version, ) - if pulse_gates: - warnings.warn( - category=DeprecationWarning, - message="Pulse gates serialization is deprecated as of Qiskit 1.3. " - "It will be removed in Qiskit 2.0.", - ) - def load( file_obj: BinaryIO, @@ -238,8 +223,7 @@ def load( """Load a QPY binary file This function is used to load a serialized QPY Qiskit program file and create - :class:`~qiskit.circuit.QuantumCircuit` objects or - :class:`~qiskit.pulse.schedule.ScheduleBlock` objects from its contents. + :class:`~qiskit.circuit.QuantumCircuit` objects from its contents. For example: .. code-block:: python @@ -260,12 +244,11 @@ def load( circuits = qpy.load(fd) which will read the contents of the qpy and return a list of - :class:`~qiskit.circuit.QuantumCircuit` objects or - :class:`~qiskit.pulse.schedule.ScheduleBlock` objects from the file. + :class:`~qiskit.circuit.QuantumCircuit` objects from the file. Args: file_obj: A file like object that contains the QPY binary - data for a circuit or pulse schedule. + data for a circuit. metadata_deserializer: An optional JSONDecoder class that will be used for the ``cls`` kwarg on the internal ``json.load`` call used to deserialize the JSON payload used for @@ -343,8 +326,14 @@ def load( if type_key == type_keys.Program.CIRCUIT: loader = binary_io.read_circuit elif type_key == type_keys.Program.SCHEDULE_BLOCK: - raise QPYLoadingDeprecatedFeatureWarning("Payloads of type `ScheduleBlock` cannot be loaded as of Qiskit 2.0. " - "Use an earlier version if Qiskit if needed.") + loader = binary_io.read_schedule_block + warnings.warn( + category=QPYLoadingDeprecatedFeatureWarning, + message="Payloads of type `ScheduleBlock` cannot be loaded as of Qiskit 2.0. " + "An empty circuit (possibly with serialized metadata) will be loaded. " + "Use an earlier version of Qiskit if you want to load a `ScheduleBlock`" + " payload.", + ) else: raise TypeError(f"Invalid payload format data kind '{type_key}'.") diff --git a/qiskit/qpy/type_keys.py b/qiskit/qpy/type_keys.py index 01226c73526f..b4dc6c4cd465 100644 --- a/qiskit/qpy/type_keys.py +++ b/qiskit/qpy/type_keys.py @@ -37,36 +37,6 @@ from qiskit.circuit.parameter import Parameter from qiskit.circuit.parameterexpression import ParameterExpression from qiskit.circuit.parametervector import ParameterVectorElement -from qiskit.pulse.channels import ( - Channel, - DriveChannel, - MeasureChannel, - ControlChannel, - AcquireChannel, - MemorySlot, - RegisterSlot, -) -from qiskit.pulse.configuration import Discriminator, Kernel -from qiskit.pulse.instructions import ( - Acquire, - Play, - Delay, - SetFrequency, - ShiftFrequency, - SetPhase, - ShiftPhase, - RelativeBarrier, - TimeBlockade, - Reference, -) -from qiskit.pulse.library import Waveform, SymbolicPulse -from qiskit.pulse.schedule import ScheduleBlock -from qiskit.pulse.transforms.alignments import ( - AlignLeft, - AlignRight, - AlignSequential, - AlignEquispaced, -) from qiskit.qpy import exceptions @@ -168,7 +138,7 @@ class Condition(IntEnum): class Container(TypeKeyBase): - """Typle key enum for container-like object.""" + """Type key enum for container-like object.""" RANGE = b"r" TUPLE = b"t" @@ -220,125 +190,13 @@ def retrieve(cls, type_key): raise NotImplementedError -class ScheduleAlignment(TypeKeyBase): - """Type key enum for schedule block alignment context object.""" - - LEFT = b"l" - RIGHT = b"r" - SEQUENTIAL = b"s" - EQUISPACED = b"e" - - # AlignFunc is not serializable due to the callable in context parameter - - @classmethod - def assign(cls, obj): - if isinstance(obj, AlignLeft): - return cls.LEFT - if isinstance(obj, AlignRight): - return cls.RIGHT - if isinstance(obj, AlignSequential): - return cls.SEQUENTIAL - if isinstance(obj, AlignEquispaced): - return cls.EQUISPACED - - raise exceptions.QpyError( - f"Object type '{type(obj)}' is not supported in {cls.__name__} namespace." - ) - - @classmethod - def retrieve(cls, type_key): - if type_key == cls.LEFT: - return AlignLeft - if type_key == cls.RIGHT: - return AlignRight - if type_key == cls.SEQUENTIAL: - return AlignSequential - if type_key == cls.EQUISPACED: - return AlignEquispaced - - raise exceptions.QpyError( - f"A class corresponding to type key '{type_key}' is not found in {cls.__name__} namespace." - ) - - -class ScheduleInstruction(TypeKeyBase): - """Type key enum for schedule instruction object.""" - - ACQUIRE = b"a" - PLAY = b"p" - DELAY = b"d" - SET_FREQUENCY = b"f" - SHIFT_FREQUENCY = b"g" - SET_PHASE = b"q" - SHIFT_PHASE = b"r" - BARRIER = b"b" - TIME_BLOCKADE = b"t" - REFERENCE = b"y" - - # 's' is reserved by ScheduleBlock, i.e. block can be nested as an element. - # Call instruction is not supported by QPY. - # This instruction has been excluded from ScheduleBlock instructions with - # qiskit-terra/#8005 and new instruction Reference will be added instead. - # Call is only applied to Schedule which is not supported by QPY. - # Also snapshot is not suppored because of its limited usecase. - - @classmethod - def assign(cls, obj): - if isinstance(obj, Acquire): - return cls.ACQUIRE - if isinstance(obj, Play): - return cls.PLAY - if isinstance(obj, Delay): - return cls.DELAY - if isinstance(obj, SetFrequency): - return cls.SET_FREQUENCY - if isinstance(obj, ShiftFrequency): - return cls.SHIFT_FREQUENCY - if isinstance(obj, SetPhase): - return cls.SET_PHASE - if isinstance(obj, ShiftPhase): - return cls.SHIFT_PHASE - if isinstance(obj, RelativeBarrier): - return cls.BARRIER - if isinstance(obj, TimeBlockade): - return cls.TIME_BLOCKADE - if isinstance(obj, Reference): - return cls.REFERENCE - - raise exceptions.QpyError( - f"Object type '{type(obj)}' is not supported in {cls.__name__} namespace." - ) - - @classmethod - def retrieve(cls, type_key): - if type_key == cls.ACQUIRE: - return Acquire - if type_key == cls.PLAY: - return Play - if type_key == cls.DELAY: - return Delay - if type_key == cls.SET_FREQUENCY: - return SetFrequency - if type_key == cls.SHIFT_FREQUENCY: - return ShiftFrequency - if type_key == cls.SET_PHASE: - return SetPhase - if type_key == cls.SHIFT_PHASE: - return ShiftPhase - if type_key == cls.BARRIER: - return RelativeBarrier - if type_key == cls.TIME_BLOCKADE: - return TimeBlockade - if type_key == cls.REFERENCE: - return Reference - - raise exceptions.QpyError( - f"A class corresponding to type key '{type_key}' is not found in {cls.__name__} namespace." - ) - - class ScheduleOperand(TypeKeyBase): - """Type key enum for schedule instruction operand object.""" + """Type key enum for schedule instruction operand object. + + Note: This class is kept post pulse-removal to allow reading of + legacy payloads containing pulse gates without breaking the entire + load flow. + """ WAVEFORM = b"w" SYMBOLIC_PULSE = b"s" @@ -353,92 +211,27 @@ class ScheduleOperand(TypeKeyBase): OPERAND_STR = b"o" @classmethod - def assign(cls, obj): - if isinstance(obj, Waveform): - return cls.WAVEFORM - if isinstance(obj, SymbolicPulse): - return cls.SYMBOLIC_PULSE - if isinstance(obj, Channel): - return cls.CHANNEL - if isinstance(obj, str): - return cls.OPERAND_STR - if isinstance(obj, Kernel): - return cls.KERNEL - if isinstance(obj, Discriminator): - return cls.DISCRIMINATOR - - raise exceptions.QpyError( - f"Object type '{type(obj)}' is not supported in {cls.__name__} namespace." - ) - - @classmethod - def retrieve(cls, type_key): + def assign(cls, _): raise NotImplementedError - -class ScheduleChannel(TypeKeyBase): - """Type key enum for schedule channel object.""" - - DRIVE = b"d" - CONTROL = b"c" - MEASURE = b"m" - ACQURE = b"a" - MEM_SLOT = b"e" - REG_SLOT = b"r" - - # SnapShot channel is not defined because of its limited usecase. - @classmethod - def assign(cls, obj): - if isinstance(obj, DriveChannel): - return cls.DRIVE - if isinstance(obj, ControlChannel): - return cls.CONTROL - if isinstance(obj, MeasureChannel): - return cls.MEASURE - if isinstance(obj, AcquireChannel): - return cls.ACQURE - if isinstance(obj, MemorySlot): - return cls.MEM_SLOT - if isinstance(obj, RegisterSlot): - return cls.REG_SLOT - - raise exceptions.QpyError( - f"Object type '{type(obj)}' is not supported in {cls.__name__} namespace." - ) - - @classmethod - def retrieve(cls, type_key): - if type_key == cls.DRIVE: - return DriveChannel - if type_key == cls.CONTROL: - return ControlChannel - if type_key == cls.MEASURE: - return MeasureChannel - if type_key == cls.ACQURE: - return AcquireChannel - if type_key == cls.MEM_SLOT: - return MemorySlot - if type_key == cls.REG_SLOT: - return RegisterSlot - - raise exceptions.QpyError( - f"A class corresponding to type key '{type_key}' is not found in {cls.__name__} namespace." - ) + def retrieve(cls, _): + raise NotImplementedError class Program(TypeKeyBase): - """Typle key enum for program that QPY supports.""" + """Type key enum for program that QPY supports.""" CIRCUIT = b"q" + # This is left for backward compatibility, for identifying payloads of type `ScheduleBlock` + # and raising accordingly. `ScheduleBlock` support has been removed in Qiskit 2.0 as part + # of the pulse package removal in that version. SCHEDULE_BLOCK = b"s" @classmethod def assign(cls, obj): if isinstance(obj, QuantumCircuit): return cls.CIRCUIT - if isinstance(obj, ScheduleBlock): # TODO: remove this path - return cls.SCHEDULE_BLOCK raise exceptions.QpyError( f"Object type '{type(obj)}' is not supported in {cls.__name__} namespace." diff --git a/releasenotes/notes/remove-pulse-qpy-07a96673c8f10e38.yaml b/releasenotes/notes/remove-pulse-qpy-07a96673c8f10e38.yaml new file mode 100644 index 000000000000..499ab1b21a0c --- /dev/null +++ b/releasenotes/notes/remove-pulse-qpy-07a96673c8f10e38.yaml @@ -0,0 +1,11 @@ +--- +upgrade_qpy: + - | + With the removal of Pulse in Qiskit 2.0, support for serializing ``ScheduleBlock` programs + via the :func:`qiskit.qpy.dump` function has been removed. Furthermore, in order to keep + backward compatibility, users can still load payloads containing pulse data (i.e. either + `ScheduleBlock`s or containing pulse gates) using the :func:`qiskit.qpy.load` function. + However, pulse data is ignore, resulting with potentially partially specified circuits. + In particular, loading a ``ScheduleBlock`` payload will result with a circuit having only + a name and metadata. Loading a :class:`~QuantumCircuit` payload with pulse gates will + result with a circuit containing undefined custom instructions. diff --git a/test/python/circuit/test_circuit_load_from_qpy.py b/test/python/circuit/test_circuit_load_from_qpy.py index 962dd22ac79b..926fbf06d01b 100644 --- a/test/python/circuit/test_circuit_load_from_qpy.py +++ b/test/python/circuit/test_circuit_load_from_qpy.py @@ -21,7 +21,7 @@ import ddt import numpy as np -from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister, pulse +from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister from qiskit.circuit import CASE_DEFAULT, IfElseOp, WhileLoopOp, SwitchCaseOp from qiskit.circuit.classical import expr, types from qiskit.circuit.classicalregister import Clbit @@ -331,44 +331,6 @@ def test_bound_parameter(self): self.assertEqual(qc, new_circ) self.assertDeprecatedBitProperties(qc, new_circ) - def test_bound_calibration_parameter(self): - """Test a circuit with a bound calibration parameter is correctly serialized. - - In particular, this test ensures that parameters on a circuit - instruction are consistent with the circuit's calibrations dictionary - after serialization. - """ - amp = Parameter("amp") - - with self.assertWarns(DeprecationWarning): - with pulse.builder.build() as sched: - pulse.builder.play(pulse.Constant(100, amp), pulse.DriveChannel(0)) - - gate = Gate("custom", 1, [amp]) - - qc = QuantumCircuit(1) - qc.append(gate, (0,)) - with self.assertWarns(DeprecationWarning): - qc.add_calibration(gate, (0,), sched) - qc.assign_parameters({amp: 1 / 3}, inplace=True) - - qpy_file = io.BytesIO() - with self.assertWarns(DeprecationWarning): - # qpy.dump warns for deprecations of pulse gate serialization - dump(qc, qpy_file) - qpy_file.seek(0) - new_circ = load(qpy_file)[0] - self.assertEqual(qc, new_circ) - instruction = new_circ.data[0] - cal_key = ( - tuple(new_circ.find_bit(q).index for q in instruction.qubits), - tuple(instruction.operation.params), - ) - # Make sure that looking for a calibration based on the instruction's - # parameters succeeds - with self.assertWarns(DeprecationWarning): - self.assertIn(cal_key, new_circ.calibrations[gate.name]) - def test_parameter_expression(self): """Test a circuit with a parameter expression.""" theta = Parameter("theta") diff --git a/test/python/qpy/test_circuit_load_from_qpy.py b/test/python/qpy/test_circuit_load_from_qpy.py index c95e54857759..a2d83d755f85 100644 --- a/test/python/qpy/test_circuit_load_from_qpy.py +++ b/test/python/qpy/test_circuit_load_from_qpy.py @@ -10,7 +10,7 @@ # copyright notice, and modified files need to carry a notice indicating # that they have been altered from the originals. -"""Test cases for the schedule block qpy loading and saving.""" +"""Test cases for circuit qpy loading and saving.""" import io import struct @@ -30,7 +30,7 @@ class QpyCircuitTestCase(QiskitTestCase): - """QPY schedule testing platform.""" + """QPY circuit testing platform.""" def assert_roundtrip_equal(self, circuit, version=None, use_symengine=None): """QPY roundtrip equal test.""" From ddb4f5683a26b5a9c7cd5009b263bff4f8a0f7d3 Mon Sep 17 00:00:00 2001 From: Eli Arbel Date: Sun, 9 Feb 2025 18:10:34 +0200 Subject: [PATCH 03/29] Limit QPY version when generating circuits for compatibility test Fix some doc issues --- qiskit/qpy/__init__.py | 2 +- qiskit/qpy/binary_io/schedules.py | 1 - releasenotes/notes/remove-pulse-qpy-07a96673c8f10e38.yaml | 6 +++--- test/qpy_compat/test_qpy.py | 7 ++++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/qiskit/qpy/__init__.py b/qiskit/qpy/__init__.py index 2b3716136bb2..c5fa51191dc3 100644 --- a/qiskit/qpy/__init__.py +++ b/qiskit/qpy/__init__.py @@ -169,7 +169,7 @@ def open(*args): it to QPY setting ``use_symengine=False``. The resulting file can then be loaded by any later version of Qiskit. - With the removal of Pulse in Qiskit 2.0, QPY does not support loading ``ScheduleBlock` programs + With the removal of Pulse in Qiskit 2.0, QPY does not support loading ``ScheduleBlock`` programs or pulse gates. If such payloads are being loaded, QPY will issue a warning and return partial circuits. In the case of a ``ScheduleBlock`` payload, a circuit with only a name and metadata will be loaded. It the case of pulse gates, the circuit will contain custom diff --git a/qiskit/qpy/binary_io/schedules.py b/qiskit/qpy/binary_io/schedules.py index f9f43e45139e..ddfdbad42b03 100644 --- a/qiskit/qpy/binary_io/schedules.py +++ b/qiskit/qpy/binary_io/schedules.py @@ -16,7 +16,6 @@ payloads containing pulse gates without breaking the load flow. The purpose of the `_read` and `_load` methods below is just to advance the file handle while consuming pulse data.""" -from curses import meta import json import struct import zlib diff --git a/releasenotes/notes/remove-pulse-qpy-07a96673c8f10e38.yaml b/releasenotes/notes/remove-pulse-qpy-07a96673c8f10e38.yaml index 499ab1b21a0c..09e6c651420e 100644 --- a/releasenotes/notes/remove-pulse-qpy-07a96673c8f10e38.yaml +++ b/releasenotes/notes/remove-pulse-qpy-07a96673c8f10e38.yaml @@ -1,11 +1,11 @@ --- upgrade_qpy: - | - With the removal of Pulse in Qiskit 2.0, support for serializing ``ScheduleBlock` programs + With the removal of Pulse in Qiskit 2.0, support for serializing ``ScheduleBlock`` programs via the :func:`qiskit.qpy.dump` function has been removed. Furthermore, in order to keep backward compatibility, users can still load payloads containing pulse data (i.e. either - `ScheduleBlock`s or containing pulse gates) using the :func:`qiskit.qpy.load` function. + ``ScheduleBlock`` s or containing pulse gates) using the :func:`qiskit.qpy.load` function. However, pulse data is ignore, resulting with potentially partially specified circuits. In particular, loading a ``ScheduleBlock`` payload will result with a circuit having only - a name and metadata. Loading a :class:`~QuantumCircuit` payload with pulse gates will + a name and metadata. Loading a :class:`~.QuantumCircuit` payload with pulse gates will result with a circuit containing undefined custom instructions. diff --git a/test/qpy_compat/test_qpy.py b/test/qpy_compat/test_qpy.py index cc70cccf7d4d..221bb4a7e6af 100755 --- a/test/qpy_compat/test_qpy.py +++ b/test/qpy_compat/test_qpy.py @@ -848,18 +848,19 @@ def generate_circuits(version_parts): ] if version_parts >= (0, 19, 2): output_circuits["control_flow.qpy"] = generate_control_flow_circuits() - if version_parts >= (0, 21, 0): + if version_parts >= (0, 21, 0) and version_parts < (2, 0, 0): output_circuits["schedule_blocks.qpy"] = generate_schedule_blocks() output_circuits["pulse_gates.qpy"] = generate_calibrated_circuits() - if version_parts >= (0, 24, 0): + if version_parts >= (0, 24, 0) and version_parts < (2, 0, 0): output_circuits["referenced_schedule_blocks.qpy"] = generate_referenced_schedule() + if version_parts >= (0, 24, 0): output_circuits["control_flow_switch.qpy"] = generate_control_flow_switch_circuits() if version_parts >= (0, 24, 1): output_circuits["open_controlled_gates.qpy"] = generate_open_controlled_gates() output_circuits["controlled_gates.qpy"] = generate_controlled_gates() if version_parts >= (0, 24, 2): output_circuits["layout.qpy"] = generate_layout_circuits() - if version_parts >= (0, 25, 0): + if version_parts >= (0, 25, 0) and version_parts < (2, 0, 0): output_circuits["acquire_inst_with_kernel_and_disc.qpy"] = ( generate_acquire_instruction_with_kernel_and_discriminator() ) From b121665314fbc187f8c873815fc38fee631a50f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elena=20Pe=C3=B1a=20Tapia?= Date: Mon, 10 Feb 2025 13:55:44 +0100 Subject: [PATCH 04/29] Remove FakeBackend, FakeQasmBackend, FakePulseBackend, subclasses, any tests that checked V1 functionality, mitigators (independent removal). Update rest of unit tests to use GenericBackendV2 --- qiskit/compiler/transpiler.py | 28 +- qiskit/providers/fake_provider/__init__.py | 37 - .../fake_provider/backends_v1/__init__.py | 22 - .../backends_v1/fake_127q_pulse/__init__.py | 18 - .../fake_127q_pulse/conf_washington.json | 1 - .../fake_127q_pulse/defs_washington.json | 1 - .../fake_127q_pulse/fake_127q_pulse_v1.py | 37 - .../fake_127q_pulse/props_washington.json | 1 - .../backends_v1/fake_20q/__init__.py | 18 - .../backends_v1/fake_20q/conf_singapore.json | 1 - .../backends_v1/fake_20q/fake_20q.py | 43 - .../backends_v1/fake_20q/props_singapore.json | 1 - .../backends_v1/fake_27q_pulse/__init__.py | 18 - .../fake_27q_pulse/conf_hanoi.json | 1 - .../fake_27q_pulse/defs_hanoi.json | 1 - .../fake_27q_pulse/fake_27q_pulse_v1.py | 50 - .../fake_27q_pulse/props_hanoi.json | 1 - .../backends_v1/fake_5q/__init__.py | 18 - .../backends_v1/fake_5q/conf_yorktown.json | 1 - .../backends_v1/fake_5q/fake_5q_v1.py | 41 - .../backends_v1/fake_5q/props_yorktown.json | 1 - .../backends_v1/fake_7q_pulse/__init__.py | 18 - .../fake_7q_pulse/conf_nairobi.json | 1 - .../fake_7q_pulse/defs_nairobi.json | 1 - .../fake_7q_pulse/fake_7q_pulse_v1.py | 44 - .../fake_7q_pulse/props_nairobi.json | 1 - qiskit/providers/fake_provider/fake_1q.py | 91 -- .../providers/fake_provider/fake_backend.py | 165 --- .../fake_provider/fake_openpulse_2q.py | 391 -------- .../fake_provider/fake_openpulse_3q.py | 340 ------- .../fake_provider/fake_pulse_backend.py | 49 - .../fake_provider/fake_qasm_backend.py | 77 -- .../fake_provider/generic_backend_v2.py | 9 +- qiskit/result/__init__.py | 13 - qiskit/result/mitigation/__init__.py | 13 - .../mitigation/base_readout_mitigator.py | 79 -- .../correlated_readout_mitigator.py | 277 ----- .../mitigation/local_readout_mitigator.py | 328 ------ qiskit/result/mitigation/utils.py | 217 ---- .../transpiler/passes/layout/dense_layout.py | 29 +- qiskit/transpiler/passes/layout/vf2_layout.py | 11 +- .../passes/layout/vf2_post_layout.py | 19 +- qiskit/transpiler/passes/layout/vf2_utils.py | 26 +- qiskit/transpiler/passmanager_config.py | 14 - .../preset_passmanagers/builtin_plugins.py | 19 - .../transpiler/preset_passmanagers/common.py | 6 +- .../generate_preset_pass_manager.py | 53 +- test/benchmarks/mapping_passes.py | 3 - test/benchmarks/transpiler_levels.py | 6 +- test/benchmarks/transpiler_qualitative.py | 6 +- test/python/circuit/test_parameters.py | 27 +- test/python/circuit/test_scheduled_circuit.py | 347 +++---- test/python/compiler/test_compiler.py | 17 + test/python/compiler/test_transpiler.py | 156 +-- .../primitives/test_backend_estimator.py | 56 +- .../primitives/test_backend_estimator_v2.py | 445 +-------- .../python/primitives/test_backend_sampler.py | 48 +- .../primitives/test_backend_sampler_v2.py | 731 +------------- test/python/providers/faulty_backends.py | 106 -- .../providers/test_backendconfiguration.py | 212 ---- .../providers/test_backendproperties.py | 134 --- test/python/providers/test_backendstatus.py | 47 - test/python/providers/test_fake_backends.py | 712 +------------ test/python/providers/test_faulty_backend.py | 172 ---- test/python/providers/test_pulse_defaults.py | 73 -- test/python/pulse/test_block.py | 21 - test/python/pulse/test_builder.py | 942 ------------------ .../pulse/test_instruction_schedule_map.py | 636 ------------ test/python/pulse/test_macros.py | 256 ----- test/python/pulse/test_schedule.py | 558 ----------- test/python/pulse/test_transforms.py | 202 ---- test/python/result/test_mitigators.py | 498 --------- test/python/transpiler/test_1q.py | 38 +- .../transpiler/test_instruction_durations.py | 22 - .../transpiler/test_passmanager_config.py | 52 +- .../transpiler/test_preset_passmanagers.py | 37 +- test/python/transpiler/test_target.py | 69 +- test/python/transpiler/test_vf2_layout.py | 68 +- .../python/transpiler/test_vf2_post_layout.py | 241 +---- .../references/20_plot_circuit_layout.png | Bin 23584 -> 64071 bytes .../references/20bit_quantum_computer.png | Bin 16769 -> 60056 bytes .../references/5_plot_circuit_layout.png | Bin 8613 -> 18311 bytes .../references/5bit_quantum_computer.png | Bin 8745 -> 17661 bytes .../references/7_plot_circuit_layout.png | Bin 8520 -> 25394 bytes .../references/7bit_quantum_computer.png | Bin 8483 -> 25652 bytes test/python/visualization/test_gate_map.py | 38 +- .../randomized/test_transpiler_equivalence.py | 33 +- test/utils/base.py | 8 - 88 files changed, 312 insertions(+), 9336 deletions(-) delete mode 100644 qiskit/providers/fake_provider/backends_v1/__init__.py delete mode 100644 qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/__init__.py delete mode 100644 qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/conf_washington.json delete mode 100644 qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/defs_washington.json delete mode 100644 qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/fake_127q_pulse_v1.py delete mode 100644 qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/props_washington.json delete mode 100644 qiskit/providers/fake_provider/backends_v1/fake_20q/__init__.py delete mode 100644 qiskit/providers/fake_provider/backends_v1/fake_20q/conf_singapore.json delete mode 100644 qiskit/providers/fake_provider/backends_v1/fake_20q/fake_20q.py delete mode 100644 qiskit/providers/fake_provider/backends_v1/fake_20q/props_singapore.json delete mode 100644 qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/__init__.py delete mode 100644 qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/conf_hanoi.json delete mode 100644 qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/defs_hanoi.json delete mode 100644 qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/fake_27q_pulse_v1.py delete mode 100644 qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/props_hanoi.json delete mode 100644 qiskit/providers/fake_provider/backends_v1/fake_5q/__init__.py delete mode 100644 qiskit/providers/fake_provider/backends_v1/fake_5q/conf_yorktown.json delete mode 100644 qiskit/providers/fake_provider/backends_v1/fake_5q/fake_5q_v1.py delete mode 100644 qiskit/providers/fake_provider/backends_v1/fake_5q/props_yorktown.json delete mode 100644 qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/__init__.py delete mode 100644 qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/conf_nairobi.json delete mode 100644 qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/defs_nairobi.json delete mode 100644 qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/fake_7q_pulse_v1.py delete mode 100644 qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/props_nairobi.json delete mode 100644 qiskit/providers/fake_provider/fake_1q.py delete mode 100644 qiskit/providers/fake_provider/fake_backend.py delete mode 100644 qiskit/providers/fake_provider/fake_openpulse_2q.py delete mode 100644 qiskit/providers/fake_provider/fake_openpulse_3q.py delete mode 100644 qiskit/providers/fake_provider/fake_pulse_backend.py delete mode 100644 qiskit/providers/fake_provider/fake_qasm_backend.py delete mode 100644 qiskit/result/mitigation/__init__.py delete mode 100644 qiskit/result/mitigation/base_readout_mitigator.py delete mode 100644 qiskit/result/mitigation/correlated_readout_mitigator.py delete mode 100644 qiskit/result/mitigation/local_readout_mitigator.py delete mode 100644 qiskit/result/mitigation/utils.py delete mode 100644 test/python/providers/faulty_backends.py delete mode 100644 test/python/providers/test_backendconfiguration.py delete mode 100644 test/python/providers/test_backendproperties.py delete mode 100644 test/python/providers/test_backendstatus.py delete mode 100644 test/python/providers/test_faulty_backend.py delete mode 100644 test/python/providers/test_pulse_defaults.py delete mode 100644 test/python/pulse/test_builder.py delete mode 100644 test/python/pulse/test_instruction_schedule_map.py delete mode 100644 test/python/pulse/test_macros.py delete mode 100644 test/python/result/test_mitigators.py diff --git a/qiskit/compiler/transpiler.py b/qiskit/compiler/transpiler.py index 4d705481ce71..1e7b6157042c 100644 --- a/qiskit/compiler/transpiler.py +++ b/qiskit/compiler/transpiler.py @@ -23,7 +23,6 @@ from qiskit.dagcircuit import DAGCircuit from qiskit.providers.backend import Backend from qiskit.providers.backend_compat import BackendV2Converter -from qiskit.providers.models.backendproperties import BackendProperties from qiskit.pulse import Schedule, InstructionScheduleMap from qiskit.transpiler import Layout, CouplingMap, PropertySet from qiskit.transpiler.basepasses import BasePass @@ -58,14 +57,6 @@ "with defined timing constraints with " "`Target.from_configuration(..., timing_constraints=...)`", ) -@deprecate_arg( - name="backend_properties", - since="1.3", - package_name="Qiskit", - removal_timeline="in Qiskit 2.0", - additional_msg="The `target` parameter should be used instead. You can build a `Target` instance " - "with defined properties with Target.from_configuration(..., backend_properties=...)", -) @deprecate_pulse_arg("inst_map", predicate=lambda inst_map: inst_map is not None) def transpile( # pylint: disable=too-many-return-statements circuits: _CircuitT, @@ -73,7 +64,6 @@ def transpile( # pylint: disable=too-many-return-statements basis_gates: Optional[List[str]] = None, inst_map: Optional[List[InstructionScheduleMap]] = None, coupling_map: Optional[Union[CouplingMap, List[List[int]]]] = None, - backend_properties: Optional[BackendProperties] = None, initial_layout: Optional[Union[Layout, Dict, List]] = None, layout_method: Optional[str] = None, routing_method: Optional[str] = None, @@ -105,7 +95,7 @@ def transpile( # pylint: disable=too-many-return-statements The prioritization of transpilation target constraints works as follows: if a ``target`` input is provided, it will take priority over any ``backend`` input or loose constraints - (``basis_gates``, ``inst_map``, ``coupling_map``, ``backend_properties``, ``instruction_durations``, + (``basis_gates``, ``inst_map``, ``coupling_map``, ``instruction_durations``, ``dt`` or ``timing_constraints``). If a ``backend`` is provided together with any loose constraint from the list above, the loose constraint will take priority over the corresponding backend constraint. This behavior is independent of whether the ``backend`` instance is of type @@ -123,7 +113,6 @@ def transpile( # pylint: disable=too-many-return-statements **inst_map** target inst_map inst_map **dt** target dt dt **timing_constraints** target timing_constraints timing_constraints - **backend_properties** target backend_properties backend_properties ============================ ========= ======================== ======================= Args: @@ -148,10 +137,6 @@ def transpile( # pylint: disable=too-many-return-statements #. List, must be given as an adjacency matrix, where each entry specifies all directed two-qubit interactions supported by backend, e.g: ``[[0, 1], [0, 3], [1, 2], [1, 5], [2, 5], [4, 1], [5, 3]]`` - - backend_properties: properties returned by a backend, including information on gate - errors, readout errors, qubit coherence times, etc. Find a backend - that provides this information with: ``backend.properties()`` initial_layout: Initial position of virtual qubits on physical qubits. If this layout makes the circuit compatible with the coupling_map constraints, it will be used. The final layout is not guaranteed to be the same, @@ -216,7 +201,7 @@ def transpile( # pylint: disable=too-many-return-statements If unit is omitted, the default is 'dt', which is a sample time depending on backend. If the time unit is 'dt', the duration must be an integer. dt: Backend sample time (resolution) in seconds. - If ``None`` (default), ``backend.configuration().dt`` is used. + If ``None`` (default), ``backend.dt`` is used. approximation_degree (float): heuristic dial used for circuit approximation (1.0=no approximation, 0.0=maximal approximation) timing_constraints: An optional control hardware restriction on instruction time resolution. @@ -394,7 +379,7 @@ def callback_func(**kwargs): # Edge cases require using the old model (loose constraints) instead of building a target, # but we don't populate the passmanager config with loose constraints unless it's one of # the known edge cases to control the execution path. - # Filter instruction_durations, timing_constraints, backend_properties and inst_map deprecation + # Filter instruction_durations, timing_constraints and inst_map deprecation with warnings.catch_warnings(): warnings.filterwarnings( "ignore", @@ -414,12 +399,6 @@ def callback_func(**kwargs): message=".*``instruction_durations`` is deprecated as of Qiskit 1.3.*", module="qiskit", ) - warnings.filterwarnings( - "ignore", - category=DeprecationWarning, - message=".*``backend_properties`` is deprecated as of Qiskit 1.3.*", - module="qiskit", - ) pm = generate_preset_pass_manager( optimization_level, target=target, @@ -427,7 +406,6 @@ def callback_func(**kwargs): basis_gates=basis_gates, coupling_map=coupling_map, instruction_durations=instruction_durations, - backend_properties=backend_properties, timing_constraints=timing_constraints, inst_map=inst_map, initial_layout=initial_layout, diff --git a/qiskit/providers/fake_provider/__init__.py b/qiskit/providers/fake_provider/__init__.py index a119f8b77e99..a067c2649cc4 100644 --- a/qiskit/providers/fake_provider/__init__.py +++ b/qiskit/providers/fake_provider/__init__.py @@ -65,42 +65,5 @@ GenericBackendV2 -V1 Fake Backends (Legacy interface) -=================================== - -.. autosummary:: - :toctree: ../stubs/ - - FakeOpenPulse2Q - FakeOpenPulse3Q - Fake1Q - Fake5QV1 - Fake20QV1 - Fake7QPulseV1 - Fake27QPulseV1 - Fake127QPulseV1 - -Fake Backend Base Classes -========================= - -The V1 fake backends are based on a set of base classes: - -.. currentmodule:: qiskit.providers.fake_provider -.. autoclass:: FakeBackend -.. autoclass:: FakeQasmBackend -.. autoclass:: FakePulseBackend """ - -# Base classes for fake backends -from .fake_backend import FakeBackend -from .fake_qasm_backend import FakeQasmBackend -from .fake_pulse_backend import FakePulseBackend - -# Special fake backends for special testing purposes -from .fake_openpulse_2q import FakeOpenPulse2Q -from .fake_openpulse_3q import FakeOpenPulse3Q -from .fake_1q import Fake1Q - -# Generic fake backends -from .backends_v1 import Fake5QV1, Fake20QV1, Fake7QPulseV1, Fake27QPulseV1, Fake127QPulseV1 from .generic_backend_v2 import GenericBackendV2 diff --git a/qiskit/providers/fake_provider/backends_v1/__init__.py b/qiskit/providers/fake_provider/backends_v1/__init__.py deleted file mode 100644 index aa4c28f52628..000000000000 --- a/qiskit/providers/fake_provider/backends_v1/__init__.py +++ /dev/null @@ -1,22 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2023. -# -# 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 :class:`.BackendV1` backends for testing purposes -""" - -from .fake_5q import Fake5QV1 -from .fake_20q import Fake20QV1 -from .fake_7q_pulse import Fake7QPulseV1 -from .fake_27q_pulse import Fake27QPulseV1 -from .fake_127q_pulse import Fake127QPulseV1 diff --git a/qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/__init__.py b/qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/__init__.py deleted file mode 100644 index 196a6a9f9165..000000000000 --- a/qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/__init__.py +++ /dev/null @@ -1,18 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2023. -# -# 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. - - -""" -A 127 qubit fake :class:`.BackendV1` with pulse capabilities. -""" - -from .fake_127q_pulse_v1 import Fake127QPulseV1 diff --git a/qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/conf_washington.json b/qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/conf_washington.json deleted file mode 100644 index 697f719d72c5..000000000000 --- a/qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/conf_washington.json +++ /dev/null @@ -1 +0,0 @@ -{"backend_name": "ibm_washington", "backend_version": "1.1.0", "n_qubits": 127, "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], [27], [28], [29], [30], [31], [32], [33], [34], [35], [36], [37], [38], [39], [40], [41], [42], [43], [44], [45], [46], [47], [48], [49], [50], [51], [52], [53], [54], [55], [56], [57], [58], [59], [60], [61], [62], [63], [64], [65], [66], [67], [68], [69], [70], [71], [72], [73], [74], [75], [76], [77], [78], [79], [80], [81], [82], [83], [84], [85], [86], [87], [88], [89], [90], [91], [92], [93], [94], [95], [96], [97], [98], [99], [100], [101], [102], [103], [104], [105], [106], [107], [108], [109], [110], [111], [112], [113], [114], [115], [116], [117], [118], [119], [120], [121], [122], [123], [124], [125], [126]]}, {"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], [27], [28], [29], [30], [31], [32], [33], [34], [35], [36], [37], [38], [39], [40], [41], [42], [43], [44], [45], [46], [47], [48], [49], [50], [51], [52], [53], [54], [55], [56], [57], [58], [59], [60], [61], [62], [63], [64], [65], [66], [67], [68], [69], [70], [71], [72], [73], [74], [75], [76], [77], [78], [79], [80], [81], [82], [83], [84], [85], [86], [87], [88], [89], [90], [91], [92], [93], [94], [95], [96], [97], [98], [99], [100], [101], [102], [103], [104], [105], [106], [107], [108], [109], [110], [111], [112], [113], [114], [115], [116], [117], [118], [119], [120], [121], [122], [123], [124], [125], [126]]}, {"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], [27], [28], [29], [30], [31], [32], [33], [34], [35], [36], [37], [38], [39], [40], [41], [42], [43], [44], [45], [46], [47], [48], [49], [50], [51], [52], [53], [54], [55], [56], [57], [58], [59], [60], [61], [62], [63], [64], [65], [66], [67], [68], [69], [70], [71], [72], [73], [74], [75], [76], [77], [78], [79], [80], [81], [82], [83], [84], [85], [86], [87], [88], [89], [90], [91], [92], [93], [94], [95], [96], [97], [98], [99], [100], [101], [102], [103], [104], [105], [106], [107], [108], [109], [110], [111], [112], [113], [114], [115], [116], [117], [118], [119], [120], [121], [122], [123], [124], [125], [126]]}, {"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], [27], [28], [29], [30], [31], [32], [33], [34], [35], [36], [37], [38], [39], [40], [41], [42], [43], [44], [45], [46], [47], [48], [49], [50], [51], [52], [53], [54], [55], [56], [57], [58], [59], [60], [61], [62], [63], [64], [65], [66], [67], [68], [69], [70], [71], [72], [73], [74], [75], [76], [77], [78], [79], [80], [81], [82], [83], [84], [85], [86], [87], [88], [89], [90], [91], [92], [93], [94], [95], [96], [97], [98], [99], [100], [101], [102], [103], [104], [105], [106], [107], [108], [109], [110], [111], [112], [113], [114], [115], [116], [117], [118], [119], [120], [121], [122], [123], [124], [125], [126]]}, {"name": "cx", "parameters": [], "qasm_def": "gate cx q0, q1 { CX q0, q1; }", "coupling_map": [[0, 1], [0, 14], [1, 0], [1, 2], [2, 1], [2, 3], [3, 2], [3, 4], [4, 3], [4, 5], [4, 15], [5, 4], [5, 6], [6, 5], [6, 7], [7, 6], [7, 8], [8, 7], [8, 16], [9, 10], [10, 9], [10, 11], [11, 10], [11, 12], [12, 11], [12, 13], [12, 17], [13, 12], [14, 0], [14, 18], [15, 4], [15, 22], [16, 8], [16, 26], [17, 12], [17, 30], [18, 14], [18, 19], [19, 18], [19, 20], [20, 19], [20, 21], [20, 33], [21, 20], [21, 22], [22, 15], [22, 21], [22, 23], [23, 22], [23, 24], [24, 23], [24, 25], [24, 34], [25, 24], [25, 26], [26, 16], [26, 25], [26, 27], [27, 26], [27, 28], [28, 27], [28, 29], [28, 35], [29, 28], [29, 30], [30, 17], [30, 29], [30, 31], [31, 30], [31, 32], [32, 31], [32, 36], [33, 20], [33, 39], [34, 24], [34, 43], [35, 28], [35, 47], [36, 32], [36, 51], [37, 38], [37, 52], [38, 37], [38, 39], [39, 33], [39, 38], [39, 40], [40, 39], [40, 41], [41, 40], [41, 42], [41, 53], [42, 41], [42, 43], [43, 34], [43, 42], [43, 44], [44, 43], [44, 45], [45, 44], [45, 46], [45, 54], [46, 45], [46, 47], [47, 35], [47, 46], [47, 48], [48, 47], [48, 49], [49, 48], [49, 50], [49, 55], [50, 49], [50, 51], [51, 36], [51, 50], [52, 37], [52, 56], [53, 41], [53, 60], [54, 45], [54, 64], [55, 49], [55, 68], [56, 52], [56, 57], [57, 56], [57, 58], [58, 57], [58, 59], [58, 71], [59, 58], [59, 60], [60, 53], [60, 59], [60, 61], [61, 60], [61, 62], [62, 61], [62, 63], [62, 72], [63, 62], [63, 64], [64, 54], [64, 63], [64, 65], [65, 64], [65, 66], [66, 65], [66, 67], [66, 73], [67, 66], [67, 68], [68, 55], [68, 67], [68, 69], [69, 68], [69, 70], [70, 69], [70, 74], [71, 58], [71, 77], [72, 62], [72, 81], [73, 66], [73, 85], [74, 70], [74, 89], [75, 76], [75, 90], [76, 75], [76, 77], [77, 71], [77, 76], [77, 78], [78, 77], [78, 79], [79, 78], [79, 80], [79, 91], [80, 79], [80, 81], [81, 72], [81, 80], [81, 82], [82, 81], [82, 83], [83, 82], [83, 84], [83, 92], [84, 83], [84, 85], [85, 73], [85, 84], [85, 86], [86, 85], [86, 87], [87, 86], [87, 88], [87, 93], [88, 87], [88, 89], [89, 74], [89, 88], [90, 75], [90, 94], [91, 79], [91, 98], [92, 83], [92, 102], [93, 87], [93, 106], [94, 90], [94, 95], [95, 94], [95, 96], [96, 95], [96, 97], [96, 109], [97, 96], [97, 98], [98, 91], [98, 97], [98, 99], [99, 98], [99, 100], [100, 99], [100, 101], [100, 110], [101, 100], [101, 102], [102, 92], [102, 101], [102, 103], [103, 102], [103, 104], [104, 103], [104, 105], [104, 111], [105, 104], [105, 106], [106, 93], [106, 105], [106, 107], [107, 106], [107, 108], [108, 107], [108, 112], [109, 96], [110, 100], [110, 118], [111, 104], [111, 122], [112, 108], [112, 126], [113, 114], [114, 113], [114, 115], [115, 114], [115, 116], [116, 115], [116, 117], [117, 116], [117, 118], [118, 110], [118, 117], [118, 119], [119, 118], [119, 120], [120, 119], [120, 121], [121, 120], [121, 122], [122, 111], [122, 121], [122, 123], [123, 122], [123, 124], [124, 123], [124, 125], [125, 124], [125, 126], [126, 112], [126, 125]]}, {"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], [0, 14], [1, 0], [1, 2], [2, 1], [2, 3], [3, 2], [3, 4], [4, 3], [4, 5], [4, 15], [5, 4], [5, 6], [6, 5], [6, 7], [7, 6], [7, 8], [8, 7], [8, 16], [9, 10], [10, 9], [10, 11], [11, 10], [11, 12], [12, 11], [12, 13], [12, 17], [13, 12], [14, 0], [14, 18], [15, 4], [15, 22], [16, 8], [16, 26], [17, 12], [17, 30], [18, 14], [18, 19], [19, 18], [19, 20], [20, 19], [20, 21], [20, 33], [21, 20], [21, 22], [22, 15], [22, 21], [22, 23], [23, 22], [23, 24], [24, 23], [24, 25], [24, 34], [25, 24], [25, 26], [26, 16], [26, 25], [26, 27], [27, 26], [27, 28], [28, 27], [28, 29], [28, 35], [29, 28], [29, 30], [30, 17], [30, 29], [30, 31], [31, 30], [31, 32], [32, 31], [32, 36], [33, 20], [33, 39], [34, 24], [34, 43], [35, 28], [35, 47], [36, 32], [36, 51], [37, 38], [37, 52], [38, 37], [38, 39], [39, 33], [39, 38], [39, 40], [40, 39], [40, 41], [41, 40], [41, 42], [41, 53], [42, 41], [42, 43], [43, 34], [43, 42], [43, 44], [44, 43], [44, 45], [45, 44], [45, 46], [45, 54], [46, 45], [46, 47], [47, 35], [47, 46], [47, 48], [48, 47], [48, 49], [49, 48], [49, 50], [49, 55], [50, 49], [50, 51], [51, 36], [51, 50], [52, 37], [52, 56], [53, 41], [53, 60], [54, 45], [54, 64], [55, 49], [55, 68], [56, 52], [56, 57], [57, 56], [57, 58], [58, 57], [58, 59], [58, 71], [59, 58], [59, 60], [60, 53], [60, 59], [60, 61], [61, 60], [61, 62], [62, 61], [62, 63], [62, 72], [63, 62], [63, 64], [64, 54], [64, 63], [64, 65], [65, 64], [65, 66], [66, 65], [66, 67], [66, 73], [67, 66], [67, 68], [68, 55], [68, 67], [68, 69], [69, 68], [69, 70], [70, 69], [70, 74], [71, 58], [71, 77], [72, 62], [72, 81], [73, 66], [73, 85], [74, 70], [74, 89], [75, 76], [75, 90], [76, 75], [76, 77], [77, 71], [77, 76], [77, 78], [78, 77], [78, 79], [79, 78], [79, 80], [79, 91], [80, 79], [80, 81], [81, 72], [81, 80], [81, 82], [82, 81], [82, 83], [83, 82], [83, 84], [83, 92], [84, 83], [84, 85], [85, 73], [85, 84], [85, 86], [86, 85], [86, 87], [87, 86], [87, 88], [87, 93], [88, 87], [88, 89], [89, 74], [89, 88], [90, 75], [90, 94], [91, 79], [91, 98], [92, 83], [92, 102], [93, 87], [93, 106], [94, 90], [94, 95], [95, 94], [95, 96], [96, 95], [96, 97], [96, 109], [97, 96], [97, 98], [98, 91], [98, 97], [98, 99], [99, 98], [99, 100], [100, 99], [100, 101], [100, 110], [101, 100], [101, 102], [102, 92], [102, 101], [102, 103], [103, 102], [103, 104], [104, 103], [104, 105], [104, 111], [105, 104], [105, 106], [106, 93], [106, 105], [106, 107], [107, 106], [107, 108], [108, 107], [108, 112], [109, 96], [110, 100], [110, 118], [111, 104], [111, 122], [112, 108], [112, 126], [113, 114], [114, 113], [114, 115], [115, 114], [115, 116], [116, 115], [116, 117], [117, 116], [117, 118], [118, 110], [118, 117], [118, 119], [119, 118], [119, 120], [120, 119], [120, 121], [121, 120], [121, 122], [122, 111], [122, 121], [122, 123], [123, 122], [123, 124], [124, 123], [124, 125], [125, 124], [125, 126], [126, 112], [126, 125]], "dynamic_reprate_enabled": true, "supported_instructions": ["measure", "rz", "shiftf", "delay", "u1", "acquire", "x", "setf", "reset", "u2", "id", "play", "sx", "cx", "u3"], "rep_delay_range": [0.0, 500.0], "default_rep_delay": 150.0, "max_experiments": 300, "sample_name": "family: Eagle, revision: 1", "n_registers": 1, "credits_required": true, "online_date": "2021-09-16T04:00:00+00:00", "description": "127 qubit device", "dt": 0.2222222222222222, "dtm": 0.2222222222222222, "processor_type": {"family": "Eagle", "revision": 1}, "parametric_pulses": ["gaussian", "gaussian_square", "drag", "constant"], "allow_q_object": true, "clops": 850, "measure_esp_enabled": false, "multi_meas_enabled": true, "quantum_volume": 64, "qubit_channel_mapping": [["u0", "u1", "u2", "m0", "d0", "u28"], ["u4", "m1", "u0", "u2", "d1", "u3"], ["u4", "u6", "m2", "d2", "u5", "u3"], ["u8", "u7", "u6", "m3", "d3", "u5"], ["m4", "u7", "u11", "d4", "u10", "u9", "u30", "u8"], ["d5", "u13", "m5", "u11", "u9", "u12"], ["u15", "u13", "m6", "d6", "u14", "u12"], ["u16", "u15", "u17", "u14", "m7", "d7"], ["u16", "u32", "d8", "u17", "m8", "u18"], ["d9", "u19", "u20", "m9"], ["u20", "m10", "d10", "u22", "u19", "u21"], ["u23", "u22", "u24", "m11", "d11", "u21"], ["d12", "u26", "u25", "m12", "u23", "u24", "u34", "u27"], ["u27", "u25", "d13", "m13"], ["u36", "u1", "u29", "m14", "d14", "u28"], ["m15", "d15", "u10", "u30", "u31", "u45"], ["u32", "u18", "m16", "d16", "u55", "u33"], ["u26", "u35", "u65", "m17", "u34", "d17"], ["m18", "u36", "d18", "u29", "u37", "u38"], ["u39", "u37", "m19", "u38", "d19", "u40"], ["m20", "d20", "u72", "u41", "u39", "u42", "u43", "u40"], ["d21", "u44", "u46", "u41", "m21", "u43"], ["d22", "u47", "m22", "u44", "u48", "u46", "u31", "u45"], ["d23", "u47", "u49", "u48", "u50", "m23"], ["u51", "u49", "m24", "d24", "u50", "u52", "u74", "u53"], ["u56", "m25", "u51", "u54", "d25", "u53"], ["u56", "u54", "u57", "d26", "u58", "m26", "u55", "u33"], ["m27", "u57", "u58", "u59", "u60", "d27"], ["d28", "u62", "u61", "u76", "u63", "m28", "u59", "u60"], ["u61", "u66", "d29", "u64", "m29", "u63"], ["m30", "u68", "u35", "u65", "u66", "u64", "d30", "u67"], ["u68", "d31", "u70", "u69", "u67", "m31"], ["d32", "u70", "u69", "u71", "u78", "m32"], ["u72", "m33", "u73", "u42", "u84", "d33"], ["m34", "u75", "u94", "u52", "u74", "d34"], ["u62", "m35", "u77", "u76", "u104", "d35"], ["u79", "d36", "u71", "m36", "u78", "u114"], ["u116", "u80", "m37", "d37", "u82", "u81"], ["u80", "m38", "d38", "u83", "u82", "u85"], ["d39", "u86", "u73", "u83", "u85", "u84", "m39", "u87"], ["d40", "m40", "u86", "u88", "u89", "u87"], ["m41", "u90", "d41", "u92", "u91", "u88", "u118", "u89"], ["u90", "u95", "u92", "u93", "m42", "d42"], ["u97", "u96", "u75", "m43", "d43", "u93", "u95", "u94"], ["u99", "u97", "u96", "d44", "u98", "m44"], ["u100", "m45", "u99", "u101", "u120", "u98", "d45", "u102"], ["d46", "u100", "u102", "u105", "m46", "u103"], ["d47", "u77", "u104", "m47", "u105", "u107", "u103", "u106"], ["u108", "d48", "u107", "u106", "u109", "m48"], ["d49", "u108", "u112", "m49", "u111", "u122", "u110", "u109"], ["u113", "u112", "m50", "d50", "u110", "u115"], ["u113", "u79", "m51", "d51", "u114", "u115"], ["u117", "u116", "d52", "m52", "u124", "u81"], ["m53", "u133", "u91", "u119", "u118", "d53"], ["u143", "u101", "u121", "u120", "m54", "d54"], ["u122", "u111", "u123", "m55", "d55", "u153"], ["d56", "u117", "m56", "u126", "u125", "u124"], ["u126", "u125", "u128", "d57", "m57", "u127"], ["u160", "m58", "u129", "u128", "d58", "u130", "u131", "u127"], ["d59", "u129", "u132", "u134", "u131", "m59"], ["d60", "m60", "u133", "u135", "u132", "u134", "u119", "u136"], ["d61", "m61", "u138", "u135", "u137", "u136"], ["u141", "m62", "u140", "u162", "u138", "u137", "u139", "d62"], ["u141", "u142", "u144", "u139", "m63", "d63"], ["u143", "m64", "d64", "u145", "u142", "u121", "u144", "u146"], ["u148", "u145", "m65", "u147", "u146", "d65"], ["u148", "u147", "u164", "u151", "m66", "u149", "u150", "d66"], ["u152", "u149", "d67", "u154", "u151", "m67"], ["u152", "u155", "m68", "u123", "u156", "u154", "d68", "u153"], ["u155", "u157", "d69", "u158", "u156", "m69"], ["d70", "u166", "u157", "u158", "u159", "m70"], ["u160", "m71", "u161", "d71", "u130", "u172"], ["m72", "u140", "u162", "u182", "d72", "u163"], ["u192", "m73", "u164", "d73", "u150", "u165"], ["m74", "u166", "d74", "u159", "u167", "u202"], ["d75", "u170", "m75", "u204", "u168", "u169"], ["u171", "u170", "m76", "u173", "u168", "d76"], ["u171", "u161", "u175", "d77", "u173", "m77", "u174", "u172"], ["m78", "u175", "u174", "d78", "u176", "u177"], ["u179", "d79", "u206", "u178", "m79", "u176", "u180", "u177"], ["d80", "m80", "u178", "u181", "u183", "u180"], ["m81", "u181", "u183", "u185", "u182", "d81", "u184", "u163"], ["u186", "m82", "u185", "u184", "u187", "d82"], ["u186", "u208", "u188", "u189", "u190", "d83", "m83", "u187"], ["u193", "u191", "m84", "u188", "d84", "u190"], ["u193", "u192", "u195", "d85", "u191", "u194", "m85", "u165"], ["u195", "d86", "u197", "u194", "m86", "u196"], ["u198", "d87", "u200", "m87", "u210", "u197", "u199", "u196"], ["d88", "m88", "u198", "u200", "u203", "u201"], ["m89", "d89", "u203", "u167", "u201", "u202"], ["u205", "u212", "u204", "d90", "m90", "u169"], ["u179", "u206", "d91", "u221", "m91", "u207"], ["u208", "u209", "u189", "d92", "m92", "u231"], ["m93", "d93", "u210", "u199", "u211", "u241"], ["u205", "u213", "u212", "m94", "u214", "d94"], ["d95", "u213", "u216", "u215", "m95", "u214"], ["u218", "u216", "u215", "u219", "u217", "m96", "u248", "d96"], ["u220", "u222", "u219", "u217", "d97", "m97"], ["u220", "u222", "u224", "u223", "u221", "d98", "m98", "u207"], ["m99", "d99", "u224", "u225", "u223", "u226"], ["u225", "u228", "d100", "u249", "m100", "u227", "u226", "u229"], ["m101", "d101", "u230", "u232", "u227", "u229"], ["d102", "u209", "u233", "u234", "u230", "u232", "u231", "m102"], ["u235", "d103", "u236", "u233", "u234", "m103"], ["u235", "u237", "u251", "d104", "u239", "m104", "u236", "u238"], ["u237", "u239", "u240", "m105", "u242", "d105"], ["u243", "m106", "d106", "u211", "u242", "u241", "u240", "u244"], ["m107", "u243", "d107", "u245", "u244", "u246"], ["d108", "u245", "u247", "u253", "m108", "u246"], ["d109", "u218", "m109", "u248"], ["d110", "u228", "u249", "m110", "u250", "u264"], ["u252", "u251", "u273", "m111", "d111", "u238"], ["d112", "m112", "u247", "u253", "u254", "u282"], ["u255", "u256", "d113", "m113"], ["u256", "d114", "m114", "u258", "u255", "u257"], ["u260", "m115", "u259", "u258", "d115", "u257"], ["d116", "u260", "u262", "u259", "m116", "u261"], ["u265", "m117", "u262", "d117", "u261", "u263"], ["u265", "m118", "u266", "u250", "u267", "u263", "u264", "d118"], ["d119", "u269", "m119", "u266", "u267", "u268"], ["d120", "u269", "u271", "m120", "u270", "u268"], ["u274", "u271", "m121", "u272", "u270", "d121"], ["u274", "u252", "d122", "m122", "u273", "u276", "u275", "u272"], ["u278", "d123", "u276", "u275", "u277", "m123"], ["u278", "m124", "d124", "u280", "u279", "u277"], ["u283", "u280", "u279", "d125", "m125", "u281"], ["u283", "d126", "u254", "m126", "u281", "u282"]], "supported_features": ["qobj"], "timing_constraints": {"acquire_alignment": 16, "granularity": 16, "min_length": 64, "pulse_alignment": 16}, "uchannels_enabled": true, "url": "None", "input_allowed": ["job"], "allow_object_storage": true, "pulse_num_channels": 9, "pulse_num_qubits": 3, "live_data": false, "n_uchannels": 284, "u_channel_lo": [[{"q": 1, "scale": [1.0, 0.0]}], [{"q": 14, "scale": [1.0, 0.0]}], [{"q": 0, "scale": [1.0, 0.0]}], [{"q": 2, "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": 4, "scale": [1.0, 0.0]}], [{"q": 3, "scale": [1.0, 0.0]}], [{"q": 5, "scale": [1.0, 0.0]}], [{"q": 15, "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]}], [{"q": 7, "scale": [1.0, 0.0]}], [{"q": 6, "scale": [1.0, 0.0]}], [{"q": 8, "scale": [1.0, 0.0]}], [{"q": 7, "scale": [1.0, 0.0]}], [{"q": 16, "scale": [1.0, 0.0]}], [{"q": 10, "scale": [1.0, 0.0]}], [{"q": 9, "scale": [1.0, 0.0]}], [{"q": 11, "scale": [1.0, 0.0]}], [{"q": 10, "scale": [1.0, 0.0]}], [{"q": 12, "scale": [1.0, 0.0]}], [{"q": 11, "scale": [1.0, 0.0]}], [{"q": 13, "scale": [1.0, 0.0]}], [{"q": 17, "scale": [1.0, 0.0]}], [{"q": 12, "scale": [1.0, 0.0]}], [{"q": 0, "scale": [1.0, 0.0]}], [{"q": 18, "scale": [1.0, 0.0]}], [{"q": 4, "scale": [1.0, 0.0]}], [{"q": 22, "scale": [1.0, 0.0]}], [{"q": 8, "scale": [1.0, 0.0]}], [{"q": 26, "scale": [1.0, 0.0]}], [{"q": 12, "scale": [1.0, 0.0]}], [{"q": 30, "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": 20, "scale": [1.0, 0.0]}], [{"q": 19, "scale": [1.0, 0.0]}], [{"q": 21, "scale": [1.0, 0.0]}], [{"q": 33, "scale": [1.0, 0.0]}], [{"q": 20, "scale": [1.0, 0.0]}], [{"q": 22, "scale": [1.0, 0.0]}], [{"q": 15, "scale": [1.0, 0.0]}], [{"q": 21, "scale": [1.0, 0.0]}], [{"q": 23, "scale": [1.0, 0.0]}], [{"q": 22, "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": 34, "scale": [1.0, 0.0]}], [{"q": 24, "scale": [1.0, 0.0]}], [{"q": 26, "scale": [1.0, 0.0]}], [{"q": 16, "scale": [1.0, 0.0]}], [{"q": 25, "scale": [1.0, 0.0]}], [{"q": 27, "scale": [1.0, 0.0]}], [{"q": 26, "scale": [1.0, 0.0]}], [{"q": 28, "scale": [1.0, 0.0]}], [{"q": 27, "scale": [1.0, 0.0]}], [{"q": 29, "scale": [1.0, 0.0]}], [{"q": 35, "scale": [1.0, 0.0]}], [{"q": 28, "scale": [1.0, 0.0]}], [{"q": 30, "scale": [1.0, 0.0]}], [{"q": 17, "scale": [1.0, 0.0]}], [{"q": 29, "scale": [1.0, 0.0]}], [{"q": 31, "scale": [1.0, 0.0]}], [{"q": 30, "scale": [1.0, 0.0]}], [{"q": 32, "scale": [1.0, 0.0]}], [{"q": 31, "scale": [1.0, 0.0]}], [{"q": 36, "scale": [1.0, 0.0]}], [{"q": 20, "scale": [1.0, 0.0]}], [{"q": 39, "scale": [1.0, 0.0]}], [{"q": 24, "scale": [1.0, 0.0]}], [{"q": 43, "scale": [1.0, 0.0]}], [{"q": 28, "scale": [1.0, 0.0]}], [{"q": 47, "scale": [1.0, 0.0]}], [{"q": 32, "scale": [1.0, 0.0]}], [{"q": 51, "scale": [1.0, 0.0]}], [{"q": 38, "scale": [1.0, 0.0]}], [{"q": 52, "scale": [1.0, 0.0]}], [{"q": 37, "scale": [1.0, 0.0]}], [{"q": 39, "scale": [1.0, 0.0]}], [{"q": 33, "scale": [1.0, 0.0]}], [{"q": 38, "scale": [1.0, 0.0]}], [{"q": 40, "scale": [1.0, 0.0]}], [{"q": 39, "scale": [1.0, 0.0]}], [{"q": 41, "scale": [1.0, 0.0]}], [{"q": 40, "scale": [1.0, 0.0]}], [{"q": 42, "scale": [1.0, 0.0]}], [{"q": 53, "scale": [1.0, 0.0]}], [{"q": 41, "scale": [1.0, 0.0]}], [{"q": 43, "scale": [1.0, 0.0]}], [{"q": 34, "scale": [1.0, 0.0]}], [{"q": 42, "scale": [1.0, 0.0]}], [{"q": 44, "scale": [1.0, 0.0]}], [{"q": 43, "scale": [1.0, 0.0]}], [{"q": 45, "scale": [1.0, 0.0]}], [{"q": 44, "scale": [1.0, 0.0]}], [{"q": 46, "scale": [1.0, 0.0]}], [{"q": 54, "scale": [1.0, 0.0]}], [{"q": 45, "scale": [1.0, 0.0]}], [{"q": 47, "scale": [1.0, 0.0]}], [{"q": 35, "scale": [1.0, 0.0]}], [{"q": 46, "scale": [1.0, 0.0]}], [{"q": 48, "scale": [1.0, 0.0]}], [{"q": 47, "scale": [1.0, 0.0]}], [{"q": 49, "scale": [1.0, 0.0]}], [{"q": 48, "scale": [1.0, 0.0]}], [{"q": 50, "scale": [1.0, 0.0]}], [{"q": 55, "scale": [1.0, 0.0]}], [{"q": 49, "scale": [1.0, 0.0]}], [{"q": 51, "scale": [1.0, 0.0]}], [{"q": 36, "scale": [1.0, 0.0]}], [{"q": 50, "scale": [1.0, 0.0]}], [{"q": 37, "scale": [1.0, 0.0]}], [{"q": 56, "scale": [1.0, 0.0]}], [{"q": 41, "scale": [1.0, 0.0]}], [{"q": 60, "scale": [1.0, 0.0]}], [{"q": 45, "scale": [1.0, 0.0]}], [{"q": 64, "scale": [1.0, 0.0]}], [{"q": 49, "scale": [1.0, 0.0]}], [{"q": 68, "scale": [1.0, 0.0]}], [{"q": 52, "scale": [1.0, 0.0]}], [{"q": 57, "scale": [1.0, 0.0]}], [{"q": 56, "scale": [1.0, 0.0]}], [{"q": 58, "scale": [1.0, 0.0]}], [{"q": 57, "scale": [1.0, 0.0]}], [{"q": 59, "scale": [1.0, 0.0]}], [{"q": 71, "scale": [1.0, 0.0]}], [{"q": 58, "scale": [1.0, 0.0]}], [{"q": 60, "scale": [1.0, 0.0]}], [{"q": 53, "scale": [1.0, 0.0]}], [{"q": 59, "scale": [1.0, 0.0]}], [{"q": 61, "scale": [1.0, 0.0]}], [{"q": 60, "scale": [1.0, 0.0]}], [{"q": 62, "scale": [1.0, 0.0]}], [{"q": 61, "scale": [1.0, 0.0]}], [{"q": 63, "scale": [1.0, 0.0]}], [{"q": 72, "scale": [1.0, 0.0]}], [{"q": 62, "scale": [1.0, 0.0]}], [{"q": 64, "scale": [1.0, 0.0]}], [{"q": 54, "scale": [1.0, 0.0]}], [{"q": 63, "scale": [1.0, 0.0]}], [{"q": 65, "scale": [1.0, 0.0]}], [{"q": 64, "scale": [1.0, 0.0]}], [{"q": 66, "scale": [1.0, 0.0]}], [{"q": 65, "scale": [1.0, 0.0]}], [{"q": 67, "scale": [1.0, 0.0]}], [{"q": 73, "scale": [1.0, 0.0]}], [{"q": 66, "scale": [1.0, 0.0]}], [{"q": 68, "scale": [1.0, 0.0]}], [{"q": 55, "scale": [1.0, 0.0]}], [{"q": 67, "scale": [1.0, 0.0]}], [{"q": 69, "scale": [1.0, 0.0]}], [{"q": 68, "scale": [1.0, 0.0]}], [{"q": 70, "scale": [1.0, 0.0]}], [{"q": 69, "scale": [1.0, 0.0]}], [{"q": 74, "scale": [1.0, 0.0]}], [{"q": 58, "scale": [1.0, 0.0]}], [{"q": 77, "scale": [1.0, 0.0]}], [{"q": 62, "scale": [1.0, 0.0]}], [{"q": 81, "scale": [1.0, 0.0]}], [{"q": 66, "scale": [1.0, 0.0]}], [{"q": 85, "scale": [1.0, 0.0]}], [{"q": 70, "scale": [1.0, 0.0]}], [{"q": 89, "scale": [1.0, 0.0]}], [{"q": 76, "scale": [1.0, 0.0]}], [{"q": 90, "scale": [1.0, 0.0]}], [{"q": 75, "scale": [1.0, 0.0]}], [{"q": 77, "scale": [1.0, 0.0]}], [{"q": 71, "scale": [1.0, 0.0]}], [{"q": 76, "scale": [1.0, 0.0]}], [{"q": 78, "scale": [1.0, 0.0]}], [{"q": 77, "scale": [1.0, 0.0]}], [{"q": 79, "scale": [1.0, 0.0]}], [{"q": 78, "scale": [1.0, 0.0]}], [{"q": 80, "scale": [1.0, 0.0]}], [{"q": 91, "scale": [1.0, 0.0]}], [{"q": 79, "scale": [1.0, 0.0]}], [{"q": 81, "scale": [1.0, 0.0]}], [{"q": 72, "scale": [1.0, 0.0]}], [{"q": 80, "scale": [1.0, 0.0]}], [{"q": 82, "scale": [1.0, 0.0]}], [{"q": 81, "scale": [1.0, 0.0]}], [{"q": 83, "scale": [1.0, 0.0]}], [{"q": 82, "scale": [1.0, 0.0]}], [{"q": 84, "scale": [1.0, 0.0]}], [{"q": 92, "scale": [1.0, 0.0]}], [{"q": 83, "scale": [1.0, 0.0]}], [{"q": 85, "scale": [1.0, 0.0]}], [{"q": 73, "scale": [1.0, 0.0]}], [{"q": 84, "scale": [1.0, 0.0]}], [{"q": 86, "scale": [1.0, 0.0]}], [{"q": 85, "scale": [1.0, 0.0]}], [{"q": 87, "scale": [1.0, 0.0]}], [{"q": 86, "scale": [1.0, 0.0]}], [{"q": 88, "scale": [1.0, 0.0]}], [{"q": 93, "scale": [1.0, 0.0]}], [{"q": 87, "scale": [1.0, 0.0]}], [{"q": 89, "scale": [1.0, 0.0]}], [{"q": 74, "scale": [1.0, 0.0]}], [{"q": 88, "scale": [1.0, 0.0]}], [{"q": 75, "scale": [1.0, 0.0]}], [{"q": 94, "scale": [1.0, 0.0]}], [{"q": 79, "scale": [1.0, 0.0]}], [{"q": 98, "scale": [1.0, 0.0]}], [{"q": 83, "scale": [1.0, 0.0]}], [{"q": 102, "scale": [1.0, 0.0]}], [{"q": 87, "scale": [1.0, 0.0]}], [{"q": 106, "scale": [1.0, 0.0]}], [{"q": 90, "scale": [1.0, 0.0]}], [{"q": 95, "scale": [1.0, 0.0]}], [{"q": 94, "scale": [1.0, 0.0]}], [{"q": 96, "scale": [1.0, 0.0]}], [{"q": 95, "scale": [1.0, 0.0]}], [{"q": 97, "scale": [1.0, 0.0]}], [{"q": 109, "scale": [1.0, 0.0]}], [{"q": 96, "scale": [1.0, 0.0]}], [{"q": 98, "scale": [1.0, 0.0]}], [{"q": 91, "scale": [1.0, 0.0]}], [{"q": 97, "scale": [1.0, 0.0]}], [{"q": 99, "scale": [1.0, 0.0]}], [{"q": 98, "scale": [1.0, 0.0]}], [{"q": 100, "scale": [1.0, 0.0]}], [{"q": 99, "scale": [1.0, 0.0]}], [{"q": 101, "scale": [1.0, 0.0]}], [{"q": 110, "scale": [1.0, 0.0]}], [{"q": 100, "scale": [1.0, 0.0]}], [{"q": 102, "scale": [1.0, 0.0]}], [{"q": 92, "scale": [1.0, 0.0]}], [{"q": 101, "scale": [1.0, 0.0]}], [{"q": 103, "scale": [1.0, 0.0]}], [{"q": 102, "scale": [1.0, 0.0]}], [{"q": 104, "scale": [1.0, 0.0]}], [{"q": 103, "scale": [1.0, 0.0]}], [{"q": 105, "scale": [1.0, 0.0]}], [{"q": 111, "scale": [1.0, 0.0]}], [{"q": 104, "scale": [1.0, 0.0]}], [{"q": 106, "scale": [1.0, 0.0]}], [{"q": 93, "scale": [1.0, 0.0]}], [{"q": 105, "scale": [1.0, 0.0]}], [{"q": 107, "scale": [1.0, 0.0]}], [{"q": 106, "scale": [1.0, 0.0]}], [{"q": 108, "scale": [1.0, 0.0]}], [{"q": 107, "scale": [1.0, 0.0]}], [{"q": 112, "scale": [1.0, 0.0]}], [{"q": 96, "scale": [1.0, 0.0]}], [{"q": 100, "scale": [1.0, 0.0]}], [{"q": 118, "scale": [1.0, 0.0]}], [{"q": 104, "scale": [1.0, 0.0]}], [{"q": 122, "scale": [1.0, 0.0]}], [{"q": 108, "scale": [1.0, 0.0]}], [{"q": 126, "scale": [1.0, 0.0]}], [{"q": 114, "scale": [1.0, 0.0]}], [{"q": 113, "scale": [1.0, 0.0]}], [{"q": 115, "scale": [1.0, 0.0]}], [{"q": 114, "scale": [1.0, 0.0]}], [{"q": 116, "scale": [1.0, 0.0]}], [{"q": 115, "scale": [1.0, 0.0]}], [{"q": 117, "scale": [1.0, 0.0]}], [{"q": 116, "scale": [1.0, 0.0]}], [{"q": 118, "scale": [1.0, 0.0]}], [{"q": 110, "scale": [1.0, 0.0]}], [{"q": 117, "scale": [1.0, 0.0]}], [{"q": 119, "scale": [1.0, 0.0]}], [{"q": 118, "scale": [1.0, 0.0]}], [{"q": 120, "scale": [1.0, 0.0]}], [{"q": 119, "scale": [1.0, 0.0]}], [{"q": 121, "scale": [1.0, 0.0]}], [{"q": 120, "scale": [1.0, 0.0]}], [{"q": 122, "scale": [1.0, 0.0]}], [{"q": 111, "scale": [1.0, 0.0]}], [{"q": 121, "scale": [1.0, 0.0]}], [{"q": 123, "scale": [1.0, 0.0]}], [{"q": 122, "scale": [1.0, 0.0]}], [{"q": 124, "scale": [1.0, 0.0]}], [{"q": 123, "scale": [1.0, 0.0]}], [{"q": 125, "scale": [1.0, 0.0]}], [{"q": 124, "scale": [1.0, 0.0]}], [{"q": 126, "scale": [1.0, 0.0]}], [{"q": 112, "scale": [1.0, 0.0]}], [{"q": 125, "scale": [1.0, 0.0]}]], "meas_levels": [1, 2], "qubit_lo_range": [[4.587824350874885, 5.587824350874885], [4.480901514685951, 5.480901514685951], [4.391702218592115, 5.391702218592115], [4.4444585142828075, 5.4444585142828075], [4.48431489750368, 5.48431489750368], [4.382304939612839, 5.3823049396128395], [4.468632496684476, 5.468632496684476], [4.515141130180365, 5.515141130180365], [4.611107000814732, 5.611107000814732], [4.469961141430453, 5.469961141430453], [4.376236162210333, 5.376236162210334], [4.627258209921372, 5.627258209921372], [4.330399938466667, 5.330399938466667], [4.450285449243983, 5.450285449243983], [4.4952779469569215, 5.4952779469569215], [4.617992551750363, 5.617992551750363], [4.417841896617579, 5.417841896617579], [4.503119694195752, 5.503119694195752], [4.365532095997974, 5.365532095997974], [4.603540605832302, 5.603540605832302], [4.401752355744929, 5.401752355744929], [4.539671730454215, 5.539671730454215], [4.4727650011162305, 5.4727650011162305], [4.533362348492518, 5.533362348492518], [4.267135320989822, 5.267135320989823], [4.37009160939394, 5.37009160939394], [4.499176398427699, 5.499176398427699], [4.576929641593295, 5.576929641593295], [4.6982908314560525, 5.6982908314560525], [4.494033598302923, 5.494033598302923], [4.583412759689636, 5.583412759689636], [4.629462319531657, 5.629462319531657], [4.704146892421287, 5.704146892421287], [4.452689741086457, 5.452689741086457], [4.436810364073245, 5.436810364073245], [4.574211948853692, 5.574211948853692], [4.602037772648568, 5.602037772648568], [4.669912726493731, 5.669912726493731], [4.60591860635811, 5.60591860635811], [4.517721503796682, 5.517721503796682], [4.662743583215261, 5.662743583215261], [4.5930762619292125, 5.5930762619292125], [4.4254247350159295, 5.4254247350159295], [4.5332800992576345, 5.5332800992576345], [4.616093607546647, 5.616093607546647], [4.379817076512298, 5.379817076512298], [4.644953191921095, 5.644953191921095], [4.501218860751744, 5.501218860751744], [4.433996639186529, 5.433996639186529], [4.616377346401518, 5.616377346401518], [4.517681444153948, 5.517681444153948], [4.7087974894294415, 5.7087974894294415], [4.515740608254556, 5.515740608254556], [4.548027704064221, 5.548027704064221], [4.526427678168784, 5.526427678168784], [4.697455254932549, 5.697455254932549], [4.687991750356475, 5.687991750356475], [4.593296222883172, 5.593296222883172], [4.46489582705621, 5.46489582705621], [4.519051421647695, 5.519051421647695], [4.641155962810145, 5.641155962810145], [4.375133856398962, 5.375133856398962], [4.46110957527232, 5.46110957527232], [4.544541513646728, 5.544541513646728], [4.758205194263763, 5.758205194263763], [4.60098928586329, 5.600989285863291], [4.737195247243983, 5.737195247243983], [4.412092379869785, 5.412092379869785], [4.635519196588795, 5.635519196588795], [4.443793362347639, 5.443793362347639], [4.654609713802475, 5.654609713802475], [4.61737756179788, 5.61737756179788], [4.644682424408956, 5.644682424408957], [4.518882135225528, 5.518882135225528], [4.37431877527336, 5.37431877527336], [4.507972184984558, 5.507972184984559], [4.403715871736079, 5.403715871736079], [4.571065916776435, 5.571065916776435], [4.777313452094319, 5.777313452094319], [4.517443628214384, 5.517443628214384], [4.581023026790399, 5.581023026790399], [4.444680717888667, 5.444680717888667], [4.579891410859493, 5.579891410859493], [4.552386435439891, 5.552386435439891], [4.408935748495378, 5.408935748495378], [4.592091999790578, 5.592091999790578], [4.430910284653366, 5.430910284653366], [4.695160700948685, 5.695160700948685], [4.597143114803176, 5.597143114803176], [4.45779764124521, 5.45779764124521], [4.756398741273999, 5.756398741273999], [4.557143169722408, 5.557143169722408], [4.623645578206479, 5.62364557820648], [4.639903178299378, 5.639903178299379], [4.676148306630854, 5.676148306630854], [4.720594257519045, 5.720594257519045], [4.641883422445972, 5.641883422445972], [4.55175144306341, 5.55175144306341], [4.623686027496476, 5.623686027496476], [4.6749719826365626, 5.6749719826365626], [4.5282655137668195, 5.5282655137668195], [4.595164314904394, 5.595164314904394], [4.484550747011607, 5.484550747011607], [4.726854129683186, 5.726854129683186], [4.634909475114922, 5.634909475114922], [4.485044881402859, 5.485044881402859], [4.540239775957792, 5.540239775957792], [4.62150306992114, 5.62150306992114], [4.753516462743983, 5.753516462743983], [4.497392066338402, 5.497392066338402], [4.791579200368684, 5.791579200368684], [4.691230179718275, 5.691230179718276], [4.716078728309004, 5.716078728309004], [4.670132593962133, 5.670132593962133], [4.773695587040669, 5.773695587040669], [4.622112629859396, 5.622112629859396], [4.516868785002357, 5.516868785002357], [4.733669518732525, 5.733669518732525], [4.614385740568254, 5.614385740568254], [4.774339315768484, 5.774339315768484], [4.583501964940935, 5.583501964940935], [4.496218903141436, 5.496218903141436], [4.768635018486352, 5.768635018486352], [4.608097954495628, 5.608097954495629], [4.74407272505404, 5.74407272505404], [4.537262922433084, 5.537262922433084], [4.6649103635824565, 5.664910363582457]], "meas_lo_range": [[6.532582196000001, 7.532582196000001], [6.470907966, 7.470907966], [6.586376109000001, 7.586376109000001], [6.532780735, 7.532780735], [6.467206413, 7.467206413], [6.575791913000001, 7.575791913000001], [6.149490342, 7.149490342000001], [6.529456802, 7.529456802], [6.640570810000001, 7.640570810000001], [6.695625624000001, 7.695625624000001], [6.586392794, 7.586392794000001], [6.157557290000001, 7.157557290000001], [6.636338842000001, 7.636338842000001], [6.527465245, 7.527465245], [6.4874229240000005, 7.4874229240000005], [6.640833522, 7.640833522], [6.2722374720000005, 7.2722374720000005], [6.2549666870000005, 7.2549666870000005], [6.652800212000001, 7.652800212000001], [6.696856589, 7.696856589], [6.161956542, 7.161956542], [6.227848791, 7.227848791], [6.276508491, 7.276508491], [6.688059209, 7.688059209], [6.219309186, 7.219309186], [6.577292457, 7.577292457], [6.52594414, 7.525944140000001], [6.322749552, 7.322749552], [6.589231925, 7.589231925000001], [6.220096703, 7.220096703], [6.523525474, 7.523525474], [6.638137172, 7.638137172], [6.157870016, 7.157870016], [6.3349330450000005, 7.3349330450000005], [6.324045843, 7.324045843], [6.473603248000001, 7.473603248000001], [6.220293821, 7.220293821], [6.274960019000001, 7.274960019000001], [6.585403471, 7.585403471], [6.332049926000001, 7.332049926000001], [6.472905692, 7.472905692], [6.5904199000000006, 7.5904199000000006], [6.533906238, 7.533906238], [6.464964934, 7.464964934], [6.692276221, 7.692276221], [6.146101571, 7.146101571000001], [6.640577046000001, 7.640577046000001], [6.693564348000001, 7.693564348000001], [6.3302114000000005, 7.3302114000000005], [6.581087136000001, 7.581087136000001], [6.5233057940000005, 7.5233057940000005], [6.266999129, 7.266999129], [6.212234832, 7.212234832], [6.153364049, 7.153364049], [6.221228172, 7.221228172000001], [6.631733711000001, 7.631733711000001], [6.481817739, 7.481817739], [6.155410486, 7.155410486], [6.695469182, 7.695469182], [6.326690675, 7.326690675], [6.226779595, 7.226779595000001], [6.643382052000001, 7.643382052000001], [6.327756708000001, 7.327756708000001], [6.469627816, 7.469627816], [6.588634841, 7.588634841], [6.271093394, 7.271093394], [6.467198101, 7.467198101], [6.6882672030000005, 7.6882672030000005], [6.1573386690000005, 7.1573386690000005], [6.222540787000001, 7.222540787000001], [6.2658035530000005, 7.2658035530000005], [6.525998105, 7.525998105], [6.2735541040000005, 7.2735541040000005], [6.527009669000001, 7.527009669000001], [6.513044302000001, 7.513044302000001], [6.270182279, 7.270182279], [6.587495045000001, 7.587495045000001], [6.644889406000001, 7.644889406000001], [6.332954721, 7.332954721], [6.469728935, 7.469728935000001], [6.5909187970000005, 7.5909187970000005], [6.528056673, 7.528056673], [6.639931353000001, 7.639931353000001], [6.690161725, 7.690161725], [6.149558896, 7.149558896], [6.634987731000001, 7.634987731000001], [6.273125565, 7.273125565000001], [6.33324159, 7.33324159], [6.584449039000001, 7.584449039000001], [6.631255778000001, 7.631255778000001], [6.1615699710000005, 7.1615699710000005], [6.688565474000001, 7.688565474000001], [6.330128897000001, 7.330128897000001], [6.464142584, 7.464142584], [6.520725383, 7.520725383], [6.64569147, 7.64569147], [6.325452641, 7.325452641], [6.469138089, 7.469138089], [6.330008064, 7.330008064], [6.158081129, 7.158081129], [6.269754194000001, 7.269754194000001], [6.527164843, 7.527164843], [6.4610111980000005, 7.4610111980000005], [6.220889474000001, 7.220889474000001], [6.530364523, 7.530364523], [6.633458459000001, 7.633458459000001], [6.681903497, 7.681903497], [6.151967496, 7.151967496], [6.263917617000001, 7.263917617000001], [6.206960921, 7.206960921], [6.227165823, 7.227165823000001], [6.596498458, 7.596498458], [6.213592263000001, 7.213592263000001], [6.69227943, 7.69227943], [6.154154182, 7.154154182], [6.325176485, 7.325176485], [6.224434024000001, 7.224434024000001], [6.162186052, 7.162186052], [6.587707621000001, 7.587707621000001], [6.645404221000001, 7.645404221000001], [6.269938413, 7.269938413], [6.686801835000001, 7.686801835000001], [6.145675401, 7.145675401], [6.322100306, 7.322100306], [6.217137807, 7.217137807], [6.2700023090000006, 7.2700023090000006], [6.328344326000001, 7.328344326000001]], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]], "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}^{126}\\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_{62,72}(\\sigma_{62}^{+}\\sigma_{72}^{-}+\\sigma_{62}^{-}\\sigma_{72}^{+}) + J_{67,68}(\\sigma_{67}^{+}\\sigma_{68}^{-}+\\sigma_{67}^{-}\\sigma_{68}^{+}) + J_{44,45}(\\sigma_{44}^{+}\\sigma_{45}^{-}+\\sigma_{44}^{-}\\sigma_{45}^{+}) + J_{99,100}(\\sigma_{99}^{+}\\sigma_{100}^{-}+\\sigma_{99}^{-}\\sigma_{100}^{+}) \\\\ & + J_{108,112}(\\sigma_{108}^{+}\\sigma_{112}^{-}+\\sigma_{108}^{-}\\sigma_{112}^{+}) + J_{40,41}(\\sigma_{40}^{+}\\sigma_{41}^{-}+\\sigma_{40}^{-}\\sigma_{41}^{+}) + J_{0,14}(\\sigma_{0}^{+}\\sigma_{14}^{-}+\\sigma_{0}^{-}\\sigma_{14}^{+}) + J_{17,30}(\\sigma_{17}^{+}\\sigma_{30}^{-}+\\sigma_{17}^{-}\\sigma_{30}^{+}) \\\\ & + J_{100,101}(\\sigma_{100}^{+}\\sigma_{101}^{-}+\\sigma_{100}^{-}\\sigma_{101}^{+}) + J_{91,98}(\\sigma_{91}^{+}\\sigma_{98}^{-}+\\sigma_{91}^{-}\\sigma_{98}^{+}) + J_{100,110}(\\sigma_{100}^{+}\\sigma_{110}^{-}+\\sigma_{100}^{-}\\sigma_{110}^{+}) + J_{75,90}(\\sigma_{75}^{+}\\sigma_{90}^{-}+\\sigma_{75}^{-}\\sigma_{90}^{+}) \\\\ & + J_{41,42}(\\sigma_{41}^{+}\\sigma_{42}^{-}+\\sigma_{41}^{-}\\sigma_{42}^{+}) + J_{96,97}(\\sigma_{96}^{+}\\sigma_{97}^{-}+\\sigma_{96}^{-}\\sigma_{97}^{+}) + J_{18,19}(\\sigma_{18}^{+}\\sigma_{19}^{-}+\\sigma_{18}^{-}\\sigma_{19}^{+}) + J_{55,68}(\\sigma_{55}^{+}\\sigma_{68}^{-}+\\sigma_{55}^{-}\\sigma_{68}^{+}) \\\\ & + J_{9,10}(\\sigma_{9}^{+}\\sigma_{10}^{-}+\\sigma_{9}^{-}\\sigma_{10}^{+}) + J_{49,55}(\\sigma_{49}^{+}\\sigma_{55}^{-}+\\sigma_{49}^{-}\\sigma_{55}^{+}) + J_{106,107}(\\sigma_{106}^{+}\\sigma_{107}^{-}+\\sigma_{106}^{-}\\sigma_{107}^{+}) + J_{47,48}(\\sigma_{47}^{+}\\sigma_{48}^{-}+\\sigma_{47}^{-}\\sigma_{48}^{+}) \\\\ & + J_{42,43}(\\sigma_{42}^{+}\\sigma_{43}^{-}+\\sigma_{42}^{-}\\sigma_{43}^{+}) + J_{107,108}(\\sigma_{107}^{+}\\sigma_{108}^{-}+\\sigma_{107}^{-}\\sigma_{108}^{+}) + J_{73,85}(\\sigma_{73}^{+}\\sigma_{85}^{-}+\\sigma_{73}^{-}\\sigma_{85}^{+}) + J_{38,39}(\\sigma_{38}^{+}\\sigma_{39}^{-}+\\sigma_{38}^{-}\\sigma_{39}^{+}) \\\\ & + J_{20,33}(\\sigma_{20}^{+}\\sigma_{33}^{-}+\\sigma_{20}^{-}\\sigma_{33}^{+}) + J_{103,104}(\\sigma_{103}^{+}\\sigma_{104}^{-}+\\sigma_{103}^{-}\\sigma_{104}^{+}) + J_{48,49}(\\sigma_{48}^{+}\\sigma_{49}^{-}+\\sigma_{48}^{-}\\sigma_{49}^{+}) + J_{80,81}(\\sigma_{80}^{+}\\sigma_{81}^{-}+\\sigma_{80}^{-}\\sigma_{81}^{+}) \\\\ & + J_{75,76}(\\sigma_{75}^{+}\\sigma_{76}^{-}+\\sigma_{75}^{-}\\sigma_{76}^{+}) + J_{66,73}(\\sigma_{66}^{+}\\sigma_{73}^{-}+\\sigma_{66}^{-}\\sigma_{73}^{+}) + J_{85,86}(\\sigma_{85}^{+}\\sigma_{86}^{-}+\\sigma_{85}^{-}\\sigma_{86}^{+}) + J_{110,118}(\\sigma_{110}^{+}\\sigma_{118}^{-}+\\sigma_{110}^{-}\\sigma_{118}^{+}) \\\\ & + J_{81,82}(\\sigma_{81}^{+}\\sigma_{82}^{-}+\\sigma_{81}^{-}\\sigma_{82}^{+}) + J_{16,26}(\\sigma_{16}^{+}\\sigma_{26}^{-}+\\sigma_{16}^{-}\\sigma_{26}^{+}) + J_{90,94}(\\sigma_{90}^{+}\\sigma_{94}^{-}+\\sigma_{90}^{-}\\sigma_{94}^{+}) + J_{118,119}(\\sigma_{118}^{+}\\sigma_{119}^{-}+\\sigma_{118}^{-}\\sigma_{119}^{+}) \\\\ & + J_{12,13}(\\sigma_{12}^{+}\\sigma_{13}^{-}+\\sigma_{12}^{-}\\sigma_{13}^{+}) + J_{77,78}(\\sigma_{77}^{+}\\sigma_{78}^{-}+\\sigma_{77}^{-}\\sigma_{78}^{+}) + J_{22,23}(\\sigma_{22}^{+}\\sigma_{23}^{-}+\\sigma_{22}^{-}\\sigma_{23}^{+}) + J_{49,50}(\\sigma_{49}^{+}\\sigma_{50}^{-}+\\sigma_{49}^{-}\\sigma_{50}^{+}) \\\\ & + J_{104,105}(\\sigma_{104}^{+}\\sigma_{105}^{-}+\\sigma_{104}^{-}\\sigma_{105}^{+}) + J_{114,115}(\\sigma_{114}^{+}\\sigma_{115}^{-}+\\sigma_{114}^{-}\\sigma_{115}^{+}) + J_{45,46}(\\sigma_{45}^{+}\\sigma_{46}^{-}+\\sigma_{45}^{-}\\sigma_{46}^{+}) + J_{50,51}(\\sigma_{50}^{+}\\sigma_{51}^{-}+\\sigma_{50}^{-}\\sigma_{51}^{+}) \\\\ & + J_{105,106}(\\sigma_{105}^{+}\\sigma_{106}^{-}+\\sigma_{105}^{-}\\sigma_{106}^{+}) + J_{72,81}(\\sigma_{72}^{+}\\sigma_{81}^{-}+\\sigma_{72}^{-}\\sigma_{81}^{+}) + J_{82,83}(\\sigma_{82}^{+}\\sigma_{83}^{-}+\\sigma_{82}^{-}\\sigma_{83}^{+}) + J_{46,47}(\\sigma_{46}^{+}\\sigma_{47}^{-}+\\sigma_{46}^{-}\\sigma_{47}^{+}) \\\\ & + J_{23,24}(\\sigma_{23}^{+}\\sigma_{24}^{-}+\\sigma_{23}^{-}\\sigma_{24}^{+}) + J_{78,79}(\\sigma_{78}^{+}\\sigma_{79}^{-}+\\sigma_{78}^{-}\\sigma_{79}^{+}) + J_{83,84}(\\sigma_{83}^{+}\\sigma_{84}^{-}+\\sigma_{83}^{-}\\sigma_{84}^{+}) + J_{115,116}(\\sigma_{115}^{+}\\sigma_{116}^{-}+\\sigma_{115}^{-}\\sigma_{116}^{+}) \\\\ & + J_{19,20}(\\sigma_{19}^{+}\\sigma_{20}^{-}+\\sigma_{19}^{-}\\sigma_{20}^{+}) + J_{24,25}(\\sigma_{24}^{+}\\sigma_{25}^{-}+\\sigma_{24}^{-}\\sigma_{25}^{+}) + J_{79,80}(\\sigma_{79}^{+}\\sigma_{80}^{-}+\\sigma_{79}^{-}\\sigma_{80}^{+}) + J_{56,57}(\\sigma_{56}^{+}\\sigma_{57}^{-}+\\sigma_{56}^{-}\\sigma_{57}^{+}) \\\\ & + J_{93,106}(\\sigma_{93}^{+}\\sigma_{106}^{-}+\\sigma_{93}^{-}\\sigma_{106}^{+}) + J_{116,117}(\\sigma_{116}^{+}\\sigma_{117}^{-}+\\sigma_{116}^{-}\\sigma_{117}^{+}) + J_{20,21}(\\sigma_{20}^{+}\\sigma_{21}^{-}+\\sigma_{20}^{-}\\sigma_{21}^{+}) + J_{12,17}(\\sigma_{12}^{+}\\sigma_{17}^{-}+\\sigma_{12}^{-}\\sigma_{17}^{+}) \\\\ & + J_{41,53}(\\sigma_{41}^{+}\\sigma_{53}^{-}+\\sigma_{41}^{-}\\sigma_{53}^{+}) + J_{57,58}(\\sigma_{57}^{+}\\sigma_{58}^{-}+\\sigma_{57}^{-}\\sigma_{58}^{+}) + J_{87,93}(\\sigma_{87}^{+}\\sigma_{93}^{-}+\\sigma_{87}^{-}\\sigma_{93}^{+}) + J_{30,31}(\\sigma_{30}^{+}\\sigma_{31}^{-}+\\sigma_{30}^{-}\\sigma_{31}^{+}) \\\\ & + J_{25,26}(\\sigma_{25}^{+}\\sigma_{26}^{-}+\\sigma_{25}^{-}\\sigma_{26}^{+}) + J_{79,91}(\\sigma_{79}^{+}\\sigma_{91}^{-}+\\sigma_{79}^{-}\\sigma_{91}^{+}) + J_{26,27}(\\sigma_{26}^{+}\\sigma_{27}^{-}+\\sigma_{26}^{-}\\sigma_{27}^{+}) + J_{21,22}(\\sigma_{21}^{+}\\sigma_{22}^{-}+\\sigma_{21}^{-}\\sigma_{22}^{+}) \\\\ & + J_{58,71}(\\sigma_{58}^{+}\\sigma_{71}^{-}+\\sigma_{58}^{-}\\sigma_{71}^{+}) + J_{86,87}(\\sigma_{86}^{+}\\sigma_{87}^{-}+\\sigma_{86}^{-}\\sigma_{87}^{+}) + J_{4,15}(\\sigma_{4}^{+}\\sigma_{15}^{-}+\\sigma_{4}^{-}\\sigma_{15}^{+}) + J_{31,32}(\\sigma_{31}^{+}\\sigma_{32}^{-}+\\sigma_{31}^{-}\\sigma_{32}^{+}) \\\\ & + J_{113,114}(\\sigma_{113}^{+}\\sigma_{114}^{-}+\\sigma_{113}^{-}\\sigma_{114}^{+}) + J_{104,111}(\\sigma_{104}^{+}\\sigma_{111}^{-}+\\sigma_{104}^{-}\\sigma_{111}^{+}) + J_{123,124}(\\sigma_{123}^{+}\\sigma_{124}^{-}+\\sigma_{123}^{-}\\sigma_{124}^{+}) + J_{27,28}(\\sigma_{27}^{+}\\sigma_{28}^{-}+\\sigma_{27}^{-}\\sigma_{28}^{+}) \\\\ & + J_{34,43}(\\sigma_{34}^{+}\\sigma_{43}^{-}+\\sigma_{34}^{-}\\sigma_{43}^{+}) + J_{119,120}(\\sigma_{119}^{+}\\sigma_{120}^{-}+\\sigma_{119}^{-}\\sigma_{120}^{+}) + J_{64,65}(\\sigma_{64}^{+}\\sigma_{65}^{-}+\\sigma_{64}^{-}\\sigma_{65}^{+}) + J_{54,64}(\\sigma_{54}^{+}\\sigma_{64}^{-}+\\sigma_{54}^{-}\\sigma_{64}^{+}) \\\\ & + J_{32,36}(\\sigma_{32}^{+}\\sigma_{36}^{-}+\\sigma_{32}^{-}\\sigma_{36}^{+}) + J_{60,61}(\\sigma_{60}^{+}\\sigma_{61}^{-}+\\sigma_{60}^{-}\\sigma_{61}^{+}) + J_{5,6}(\\sigma_{5}^{+}\\sigma_{6}^{-}+\\sigma_{5}^{-}\\sigma_{6}^{+}) + J_{14,18}(\\sigma_{14}^{+}\\sigma_{18}^{-}+\\sigma_{14}^{-}\\sigma_{18}^{+}) \\\\ & + J_{87,88}(\\sigma_{87}^{+}\\sigma_{88}^{-}+\\sigma_{87}^{-}\\sigma_{88}^{+}) + J_{97,98}(\\sigma_{97}^{+}\\sigma_{98}^{-}+\\sigma_{97}^{-}\\sigma_{98}^{+}) + J_{1,2}(\\sigma_{1}^{+}\\sigma_{2}^{-}+\\sigma_{1}^{-}\\sigma_{2}^{+}) + J_{112,126}(\\sigma_{112}^{+}\\sigma_{126}^{-}+\\sigma_{112}^{-}\\sigma_{126}^{+}) \\\\ & + J_{28,29}(\\sigma_{28}^{+}\\sigma_{29}^{-}+\\sigma_{28}^{-}\\sigma_{29}^{+}) + J_{45,54}(\\sigma_{45}^{+}\\sigma_{54}^{-}+\\sigma_{45}^{-}\\sigma_{54}^{+}) + J_{36,51}(\\sigma_{36}^{+}\\sigma_{51}^{-}+\\sigma_{36}^{-}\\sigma_{51}^{+}) + J_{88,89}(\\sigma_{88}^{+}\\sigma_{89}^{-}+\\sigma_{88}^{-}\\sigma_{89}^{+}) \\\\ & + J_{120,121}(\\sigma_{120}^{+}\\sigma_{121}^{-}+\\sigma_{120}^{-}\\sigma_{121}^{+}) + J_{15,22}(\\sigma_{15}^{+}\\sigma_{22}^{-}+\\sigma_{15}^{-}\\sigma_{22}^{+}) + J_{24,34}(\\sigma_{24}^{+}\\sigma_{34}^{-}+\\sigma_{24}^{-}\\sigma_{34}^{+}) + J_{84,85}(\\sigma_{84}^{+}\\sigma_{85}^{-}+\\sigma_{84}^{-}\\sigma_{85}^{+}) \\\\ & + J_{29,30}(\\sigma_{29}^{+}\\sigma_{30}^{-}+\\sigma_{29}^{-}\\sigma_{30}^{+}) + J_{61,62}(\\sigma_{61}^{+}\\sigma_{62}^{-}+\\sigma_{61}^{-}\\sigma_{62}^{+}) + J_{70,74}(\\sigma_{70}^{+}\\sigma_{74}^{-}+\\sigma_{70}^{-}\\sigma_{74}^{+}) + J_{121,122}(\\sigma_{121}^{+}\\sigma_{122}^{-}+\\sigma_{121}^{-}\\sigma_{122}^{+}) \\\\ & + J_{2,3}(\\sigma_{2}^{+}\\sigma_{3}^{-}+\\sigma_{2}^{-}\\sigma_{3}^{+}) + J_{122,123}(\\sigma_{122}^{+}\\sigma_{123}^{-}+\\sigma_{122}^{-}\\sigma_{123}^{+}) + J_{117,118}(\\sigma_{117}^{+}\\sigma_{118}^{-}+\\sigma_{117}^{-}\\sigma_{118}^{+}) + J_{62,63}(\\sigma_{62}^{+}\\sigma_{63}^{-}+\\sigma_{62}^{-}\\sigma_{63}^{+}) \\\\ & + J_{94,95}(\\sigma_{94}^{+}\\sigma_{95}^{-}+\\sigma_{94}^{-}\\sigma_{95}^{+}) + J_{37,52}(\\sigma_{37}^{+}\\sigma_{52}^{-}+\\sigma_{37}^{-}\\sigma_{52}^{+}) + J_{3,4}(\\sigma_{3}^{+}\\sigma_{4}^{-}+\\sigma_{3}^{-}\\sigma_{4}^{+}) + J_{58,59}(\\sigma_{58}^{+}\\sigma_{59}^{-}+\\sigma_{58}^{-}\\sigma_{59}^{+}) \\\\ & + J_{33,39}(\\sigma_{33}^{+}\\sigma_{39}^{-}+\\sigma_{33}^{-}\\sigma_{39}^{+}) + J_{95,96}(\\sigma_{95}^{+}\\sigma_{96}^{-}+\\sigma_{95}^{-}\\sigma_{96}^{+}) + J_{68,69}(\\sigma_{68}^{+}\\sigma_{69}^{-}+\\sigma_{68}^{-}\\sigma_{69}^{+}) + J_{63,64}(\\sigma_{63}^{+}\\sigma_{64}^{-}+\\sigma_{63}^{-}\\sigma_{64}^{+}) \\\\ & + J_{71,77}(\\sigma_{71}^{+}\\sigma_{77}^{-}+\\sigma_{71}^{-}\\sigma_{77}^{+}) + J_{111,122}(\\sigma_{111}^{+}\\sigma_{122}^{-}+\\sigma_{111}^{-}\\sigma_{122}^{+}) + J_{4,5}(\\sigma_{4}^{+}\\sigma_{5}^{-}+\\sigma_{4}^{-}\\sigma_{5}^{+}) + J_{59,60}(\\sigma_{59}^{+}\\sigma_{60}^{-}+\\sigma_{59}^{-}\\sigma_{60}^{+}) \\\\ & + J_{96,109}(\\sigma_{96}^{+}\\sigma_{109}^{-}+\\sigma_{96}^{-}\\sigma_{109}^{+}) + J_{124,125}(\\sigma_{124}^{+}\\sigma_{125}^{-}+\\sigma_{124}^{-}\\sigma_{125}^{+}) + J_{69,70}(\\sigma_{69}^{+}\\sigma_{70}^{-}+\\sigma_{69}^{-}\\sigma_{70}^{+}) + J_{35,47}(\\sigma_{35}^{+}\\sigma_{47}^{-}+\\sigma_{35}^{-}\\sigma_{47}^{+}) \\\\ & + J_{101,102}(\\sigma_{101}^{+}\\sigma_{102}^{-}+\\sigma_{101}^{-}\\sigma_{102}^{+}) + J_{0,1}(\\sigma_{0}^{+}\\sigma_{1}^{-}+\\sigma_{0}^{-}\\sigma_{1}^{+}) + J_{65,66}(\\sigma_{65}^{+}\\sigma_{66}^{-}+\\sigma_{65}^{-}\\sigma_{66}^{+}) + J_{10,11}(\\sigma_{10}^{+}\\sigma_{11}^{-}+\\sigma_{10}^{-}\\sigma_{11}^{+}) \\\\ & + J_{37,38}(\\sigma_{37}^{+}\\sigma_{38}^{-}+\\sigma_{37}^{-}\\sigma_{38}^{+}) + J_{28,35}(\\sigma_{28}^{+}\\sigma_{35}^{-}+\\sigma_{28}^{-}\\sigma_{35}^{+}) + J_{102,103}(\\sigma_{102}^{+}\\sigma_{103}^{-}+\\sigma_{102}^{-}\\sigma_{103}^{+}) + J_{92,102}(\\sigma_{92}^{+}\\sigma_{102}^{-}+\\sigma_{92}^{-}\\sigma_{102}^{+}) \\\\ & + J_{6,7}(\\sigma_{6}^{+}\\sigma_{7}^{-}+\\sigma_{6}^{-}\\sigma_{7}^{+}) + J_{98,99}(\\sigma_{98}^{+}\\sigma_{99}^{-}+\\sigma_{98}^{-}\\sigma_{99}^{+}) + J_{43,44}(\\sigma_{43}^{+}\\sigma_{44}^{-}+\\sigma_{43}^{-}\\sigma_{44}^{+}) + J_{52,56}(\\sigma_{52}^{+}\\sigma_{56}^{-}+\\sigma_{52}^{-}\\sigma_{56}^{+}) \\\\ & + J_{125,126}(\\sigma_{125}^{+}\\sigma_{126}^{-}+\\sigma_{125}^{-}\\sigma_{126}^{+}) + J_{39,40}(\\sigma_{39}^{+}\\sigma_{40}^{-}+\\sigma_{39}^{-}\\sigma_{40}^{+}) + J_{8,16}(\\sigma_{8}^{+}\\sigma_{16}^{-}+\\sigma_{8}^{-}\\sigma_{16}^{+}) + J_{11,12}(\\sigma_{11}^{+}\\sigma_{12}^{-}+\\sigma_{11}^{-}\\sigma_{12}^{+}) \\\\ & + J_{66,67}(\\sigma_{66}^{+}\\sigma_{67}^{-}+\\sigma_{66}^{-}\\sigma_{67}^{+}) + J_{76,77}(\\sigma_{76}^{+}\\sigma_{77}^{-}+\\sigma_{76}^{-}\\sigma_{77}^{+}) + J_{83,92}(\\sigma_{83}^{+}\\sigma_{92}^{-}+\\sigma_{83}^{-}\\sigma_{92}^{+}) + J_{74,89}(\\sigma_{74}^{+}\\sigma_{89}^{-}+\\sigma_{74}^{-}\\sigma_{89}^{+}) \\\\ & + J_{7,8}(\\sigma_{7}^{+}\\sigma_{8}^{-}+\\sigma_{7}^{-}\\sigma_{8}^{+}) + J_{53,60}(\\sigma_{53}^{+}\\sigma_{60}^{-}+\\sigma_{53}^{-}\\sigma_{60}^{+}) \\\\ & + \\Omega_{d,0}(U_{0}^{(0,1)}(t)+U_{1}^{(0,14)}(t))\\sigma_{0}^{X} + \\Omega_{d,1}(U_{3}^{(1,2)}(t)+U_{2}^{(1,0)}(t))\\sigma_{1}^{X} \\\\ & + \\Omega_{d,2}(U_{5}^{(2,3)}(t)+U_{4}^{(2,1)}(t))\\sigma_{2}^{X} + \\Omega_{d,3}(U_{7}^{(3,4)}(t)+U_{6}^{(3,2)}(t))\\sigma_{3}^{X} \\\\ & + \\Omega_{d,4}(U_{10}^{(4,15)}(t)+U_{9}^{(4,5)}(t)+U_{8}^{(4,3)}(t))\\sigma_{4}^{X} + \\Omega_{d,5}(U_{12}^{(5,6)}(t)+U_{11}^{(5,4)}(t))\\sigma_{5}^{X} \\\\ & + \\Omega_{d,6}(U_{14}^{(6,7)}(t)+U_{13}^{(6,5)}(t))\\sigma_{6}^{X} + \\Omega_{d,7}(U_{16}^{(7,8)}(t)+U_{15}^{(7,6)}(t))\\sigma_{7}^{X} \\\\ & + \\Omega_{d,8}(U_{18}^{(8,16)}(t)+U_{17}^{(8,7)}(t))\\sigma_{8}^{X} + \\Omega_{d,9}(U_{19}^{(9,10)}(t))\\sigma_{9}^{X} \\\\ & + \\Omega_{d,10}(U_{21}^{(10,11)}(t)+U_{20}^{(10,9)}(t))\\sigma_{10}^{X} + \\Omega_{d,11}(U_{23}^{(11,12)}(t)+U_{22}^{(11,10)}(t))\\sigma_{11}^{X} \\\\ & + \\Omega_{d,12}(U_{26}^{(12,17)}(t)+U_{25}^{(12,13)}(t)+U_{24}^{(12,11)}(t))\\sigma_{12}^{X} + \\Omega_{d,13}(U_{27}^{(13,12)}(t))\\sigma_{13}^{X} \\\\ & + \\Omega_{d,14}(U_{28}^{(14,0)}(t)+U_{29}^{(14,18)}(t))\\sigma_{14}^{X} + \\Omega_{d,15}(U_{31}^{(15,22)}(t)+U_{30}^{(15,4)}(t))\\sigma_{15}^{X} \\\\ & + \\Omega_{d,16}(U_{33}^{(16,26)}(t)+U_{32}^{(16,8)}(t))\\sigma_{16}^{X} + \\Omega_{d,17}(U_{35}^{(17,30)}(t)+U_{34}^{(17,12)}(t))\\sigma_{17}^{X} \\\\ & + \\Omega_{d,18}(U_{36}^{(18,14)}(t)+U_{37}^{(18,19)}(t))\\sigma_{18}^{X} + \\Omega_{d,19}(U_{38}^{(19,18)}(t)+U_{39}^{(19,20)}(t))\\sigma_{19}^{X} \\\\ & + \\Omega_{d,20}(U_{42}^{(20,33)}(t)+U_{41}^{(20,21)}(t)+U_{40}^{(20,19)}(t))\\sigma_{20}^{X} + \\Omega_{d,21}(U_{43}^{(21,20)}(t)+U_{44}^{(21,22)}(t))\\sigma_{21}^{X} \\\\ & + \\Omega_{d,22}(U_{45}^{(22,15)}(t)+U_{47}^{(22,23)}(t)+U_{46}^{(22,21)}(t))\\sigma_{22}^{X} + \\Omega_{d,23}(U_{49}^{(23,24)}(t)+U_{48}^{(23,22)}(t))\\sigma_{23}^{X} \\\\ & + \\Omega_{d,24}(U_{52}^{(24,34)}(t)+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))\\sigma_{25}^{X} \\\\ & + \\Omega_{d,26}(U_{57}^{(26,27)}(t)+U_{55}^{(26,16)}(t)+U_{56}^{(26,25)}(t))\\sigma_{26}^{X} + \\Omega_{d,27}(U_{59}^{(27,28)}(t)+U_{58}^{(27,26)}(t))\\sigma_{27}^{X} \\\\ & + \\Omega_{d,28}(U_{61}^{(28,29)}(t)+U_{60}^{(28,27)}(t)+U_{62}^{(28,35)}(t))\\sigma_{28}^{X} + \\Omega_{d,29}(U_{63}^{(29,28)}(t)+U_{64}^{(29,30)}(t))\\sigma_{29}^{X} \\\\ & + \\Omega_{d,30}(U_{67}^{(30,31)}(t)+U_{66}^{(30,29)}(t)+U_{65}^{(30,17)}(t))\\sigma_{30}^{X} + \\Omega_{d,31}(U_{68}^{(31,30)}(t)+U_{69}^{(31,32)}(t))\\sigma_{31}^{X} \\\\ & + \\Omega_{d,32}(U_{70}^{(32,31)}(t)+U_{71}^{(32,36)}(t))\\sigma_{32}^{X} + \\Omega_{d,33}(U_{73}^{(33,39)}(t)+U_{72}^{(33,20)}(t))\\sigma_{33}^{X} \\\\ & + \\Omega_{d,34}(U_{75}^{(34,43)}(t)+U_{74}^{(34,24)}(t))\\sigma_{34}^{X} + \\Omega_{d,35}(U_{77}^{(35,47)}(t)+U_{76}^{(35,28)}(t))\\sigma_{35}^{X} \\\\ & + \\Omega_{d,36}(U_{79}^{(36,51)}(t)+U_{78}^{(36,32)}(t))\\sigma_{36}^{X} + \\Omega_{d,37}(U_{81}^{(37,52)}(t)+U_{80}^{(37,38)}(t))\\sigma_{37}^{X} \\\\ & + \\Omega_{d,38}(U_{83}^{(38,39)}(t)+U_{82}^{(38,37)}(t))\\sigma_{38}^{X} + \\Omega_{d,39}(U_{86}^{(39,40)}(t)+U_{84}^{(39,33)}(t)+U_{85}^{(39,38)}(t))\\sigma_{39}^{X} \\\\ & + \\Omega_{d,40}(U_{88}^{(40,41)}(t)+U_{87}^{(40,39)}(t))\\sigma_{40}^{X} + \\Omega_{d,41}(U_{90}^{(41,42)}(t)+U_{89}^{(41,40)}(t)+U_{91}^{(41,53)}(t))\\sigma_{41}^{X} \\\\ & + \\Omega_{d,42}(U_{92}^{(42,41)}(t)+U_{93}^{(42,43)}(t))\\sigma_{42}^{X} + \\Omega_{d,43}(U_{96}^{(43,44)}(t)+U_{95}^{(43,42)}(t)+U_{94}^{(43,34)}(t))\\sigma_{43}^{X} \\\\ & + \\Omega_{d,44}(U_{97}^{(44,43)}(t)+U_{98}^{(44,45)}(t))\\sigma_{44}^{X} + \\Omega_{d,45}(U_{99}^{(45,44)}(t)+U_{101}^{(45,54)}(t)+U_{100}^{(45,46)}(t))\\sigma_{45}^{X} \\\\ & + \\Omega_{d,46}(U_{103}^{(46,47)}(t)+U_{102}^{(46,45)}(t))\\sigma_{46}^{X} + \\Omega_{d,47}(U_{106}^{(47,48)}(t)+U_{104}^{(47,35)}(t)+U_{105}^{(47,46)}(t))\\sigma_{47}^{X} \\\\ & + \\Omega_{d,48}(U_{108}^{(48,49)}(t)+U_{107}^{(48,47)}(t))\\sigma_{48}^{X} + \\Omega_{d,49}(U_{110}^{(49,50)}(t)+U_{111}^{(49,55)}(t)+U_{109}^{(49,48)}(t))\\sigma_{49}^{X} \\\\ & + \\Omega_{d,50}(U_{113}^{(50,51)}(t)+U_{112}^{(50,49)}(t))\\sigma_{50}^{X} + \\Omega_{d,51}(U_{115}^{(51,50)}(t)+U_{114}^{(51,36)}(t))\\sigma_{51}^{X} \\\\ & + \\Omega_{d,52}(U_{116}^{(52,37)}(t)+U_{117}^{(52,56)}(t))\\sigma_{52}^{X} + \\Omega_{d,53}(U_{119}^{(53,60)}(t)+U_{118}^{(53,41)}(t))\\sigma_{53}^{X} \\\\ & + \\Omega_{d,54}(U_{120}^{(54,45)}(t)+U_{121}^{(54,64)}(t))\\sigma_{54}^{X} + \\Omega_{d,55}(U_{123}^{(55,68)}(t)+U_{122}^{(55,49)}(t))\\sigma_{55}^{X} \\\\ & + \\Omega_{d,56}(U_{125}^{(56,57)}(t)+U_{124}^{(56,52)}(t))\\sigma_{56}^{X} + \\Omega_{d,57}(U_{126}^{(57,56)}(t)+U_{127}^{(57,58)}(t))\\sigma_{57}^{X} \\\\ & + \\Omega_{d,58}(U_{128}^{(58,57)}(t)+U_{130}^{(58,71)}(t)+U_{129}^{(58,59)}(t))\\sigma_{58}^{X} + \\Omega_{d,59}(U_{132}^{(59,60)}(t)+U_{131}^{(59,58)}(t))\\sigma_{59}^{X} \\\\ & + \\Omega_{d,60}(U_{135}^{(60,61)}(t)+U_{133}^{(60,53)}(t)+U_{134}^{(60,59)}(t))\\sigma_{60}^{X} + \\Omega_{d,61}(U_{137}^{(61,62)}(t)+U_{136}^{(61,60)}(t))\\sigma_{61}^{X} \\\\ & + \\Omega_{d,62}(U_{139}^{(62,63)}(t)+U_{140}^{(62,72)}(t)+U_{138}^{(62,61)}(t))\\sigma_{62}^{X} + \\Omega_{d,63}(U_{142}^{(63,64)}(t)+U_{141}^{(63,62)}(t))\\sigma_{63}^{X} \\\\ & + \\Omega_{d,64}(U_{144}^{(64,63)}(t)+U_{145}^{(64,65)}(t)+U_{143}^{(64,54)}(t))\\sigma_{64}^{X} + \\Omega_{d,65}(U_{146}^{(65,64)}(t)+U_{147}^{(65,66)}(t))\\sigma_{65}^{X} \\\\ & + \\Omega_{d,66}(U_{150}^{(66,73)}(t)+U_{149}^{(66,67)}(t)+U_{148}^{(66,65)}(t))\\sigma_{66}^{X} + \\Omega_{d,67}(U_{151}^{(67,66)}(t)+U_{152}^{(67,68)}(t))\\sigma_{67}^{X} \\\\ & + \\Omega_{d,68}(U_{153}^{(68,55)}(t)+U_{155}^{(68,69)}(t)+U_{154}^{(68,67)}(t))\\sigma_{68}^{X} + \\Omega_{d,69}(U_{157}^{(69,70)}(t)+U_{156}^{(69,68)}(t))\\sigma_{69}^{X} \\\\ & + \\Omega_{d,70}(U_{158}^{(70,69)}(t)+U_{159}^{(70,74)}(t))\\sigma_{70}^{X} + \\Omega_{d,71}(U_{160}^{(71,58)}(t)+U_{161}^{(71,77)}(t))\\sigma_{71}^{X} \\\\ & + \\Omega_{d,72}(U_{163}^{(72,81)}(t)+U_{162}^{(72,62)}(t))\\sigma_{72}^{X} + \\Omega_{d,73}(U_{165}^{(73,85)}(t)+U_{164}^{(73,66)}(t))\\sigma_{73}^{X} \\\\ & + \\Omega_{d,74}(U_{167}^{(74,89)}(t)+U_{166}^{(74,70)}(t))\\sigma_{74}^{X} + \\Omega_{d,75}(U_{169}^{(75,90)}(t)+U_{168}^{(75,76)}(t))\\sigma_{75}^{X} \\\\ & + \\Omega_{d,76}(U_{171}^{(76,77)}(t)+U_{170}^{(76,75)}(t))\\sigma_{76}^{X} + \\Omega_{d,77}(U_{173}^{(77,76)}(t)+U_{172}^{(77,71)}(t)+U_{174}^{(77,78)}(t))\\sigma_{77}^{X} \\\\ & + \\Omega_{d,78}(U_{175}^{(78,77)}(t)+U_{176}^{(78,79)}(t))\\sigma_{78}^{X} + \\Omega_{d,79}(U_{179}^{(79,91)}(t)+U_{178}^{(79,80)}(t)+U_{177}^{(79,78)}(t))\\sigma_{79}^{X} \\\\ & + \\Omega_{d,80}(U_{180}^{(80,79)}(t)+U_{181}^{(80,81)}(t))\\sigma_{80}^{X} + \\Omega_{d,81}(U_{184}^{(81,82)}(t)+U_{183}^{(81,80)}(t)+U_{182}^{(81,72)}(t))\\sigma_{81}^{X} \\\\ & + \\Omega_{d,82}(U_{186}^{(82,83)}(t)+U_{185}^{(82,81)}(t))\\sigma_{82}^{X} + \\Omega_{d,83}(U_{188}^{(83,84)}(t)+U_{187}^{(83,82)}(t)+U_{189}^{(83,92)}(t))\\sigma_{83}^{X} \\\\ & + \\Omega_{d,84}(U_{191}^{(84,85)}(t)+U_{190}^{(84,83)}(t))\\sigma_{84}^{X} + \\Omega_{d,85}(U_{192}^{(85,73)}(t)+U_{193}^{(85,84)}(t)+U_{194}^{(85,86)}(t))\\sigma_{85}^{X} \\\\ & + \\Omega_{d,86}(U_{196}^{(86,87)}(t)+U_{195}^{(86,85)}(t))\\sigma_{86}^{X} + \\Omega_{d,87}(U_{198}^{(87,88)}(t)+U_{197}^{(87,86)}(t)+U_{199}^{(87,93)}(t))\\sigma_{87}^{X} \\\\ & + \\Omega_{d,88}(U_{201}^{(88,89)}(t)+U_{200}^{(88,87)}(t))\\sigma_{88}^{X} + \\Omega_{d,89}(U_{203}^{(89,88)}(t)+U_{202}^{(89,74)}(t))\\sigma_{89}^{X} \\\\ & + \\Omega_{d,90}(U_{205}^{(90,94)}(t)+U_{204}^{(90,75)}(t))\\sigma_{90}^{X} + \\Omega_{d,91}(U_{207}^{(91,98)}(t)+U_{206}^{(91,79)}(t))\\sigma_{91}^{X} \\\\ & + \\Omega_{d,92}(U_{209}^{(92,102)}(t)+U_{208}^{(92,83)}(t))\\sigma_{92}^{X} + \\Omega_{d,93}(U_{211}^{(93,106)}(t)+U_{210}^{(93,87)}(t))\\sigma_{93}^{X} \\\\ & + \\Omega_{d,94}(U_{213}^{(94,95)}(t)+U_{212}^{(94,90)}(t))\\sigma_{94}^{X} + \\Omega_{d,95}(U_{215}^{(95,96)}(t)+U_{214}^{(95,94)}(t))\\sigma_{95}^{X} \\\\ & + \\Omega_{d,96}(U_{217}^{(96,97)}(t)+U_{216}^{(96,95)}(t)+U_{218}^{(96,109)}(t))\\sigma_{96}^{X} + \\Omega_{d,97}(U_{220}^{(97,98)}(t)+U_{219}^{(97,96)}(t))\\sigma_{97}^{X} \\\\ & + \\Omega_{d,98}(U_{221}^{(98,91)}(t)+U_{223}^{(98,99)}(t)+U_{222}^{(98,97)}(t))\\sigma_{98}^{X} + \\Omega_{d,99}(U_{225}^{(99,100)}(t)+U_{224}^{(99,98)}(t))\\sigma_{99}^{X} \\\\ & + \\Omega_{d,100}(U_{227}^{(100,101)}(t)+U_{226}^{(100,99)}(t)+U_{228}^{(100,110)}(t))\\sigma_{100}^{X} + \\Omega_{d,101}(U_{229}^{(101,100)}(t)+U_{230}^{(101,102)}(t))\\sigma_{101}^{X} \\\\ & + \\Omega_{d,102}(U_{233}^{(102,103)}(t)+U_{231}^{(102,92)}(t)+U_{232}^{(102,101)}(t))\\sigma_{102}^{X} + \\Omega_{d,103}(U_{234}^{(103,102)}(t)+U_{235}^{(103,104)}(t))\\sigma_{103}^{X} \\\\ & + \\Omega_{d,104}(U_{236}^{(104,103)}(t)+U_{238}^{(104,111)}(t)+U_{237}^{(104,105)}(t))\\sigma_{104}^{X} + \\Omega_{d,105}(U_{240}^{(105,106)}(t)+U_{239}^{(105,104)}(t))\\sigma_{105}^{X} \\\\ & + \\Omega_{d,106}(U_{241}^{(106,93)}(t)+U_{243}^{(106,107)}(t)+U_{242}^{(106,105)}(t))\\sigma_{106}^{X} + \\Omega_{d,107}(U_{245}^{(107,108)}(t)+U_{244}^{(107,106)}(t))\\sigma_{107}^{X} \\\\ & + \\Omega_{d,108}(U_{246}^{(108,107)}(t)+U_{247}^{(108,112)}(t))\\sigma_{108}^{X} + \\Omega_{d,109}(U_{248}^{(109,96)}(t))\\sigma_{109}^{X} \\\\ & + \\Omega_{d,110}(U_{249}^{(110,100)}(t)+U_{250}^{(110,118)}(t))\\sigma_{110}^{X} + \\Omega_{d,111}(U_{252}^{(111,122)}(t)+U_{251}^{(111,104)}(t))\\sigma_{111}^{X} \\\\ & + \\Omega_{d,112}(U_{253}^{(112,108)}(t)+U_{254}^{(112,126)}(t))\\sigma_{112}^{X} + \\Omega_{d,113}(U_{255}^{(113,114)}(t))\\sigma_{113}^{X} \\\\ & + \\Omega_{d,114}(U_{256}^{(114,113)}(t)+U_{257}^{(114,115)}(t))\\sigma_{114}^{X} + \\Omega_{d,115}(U_{258}^{(115,114)}(t)+U_{259}^{(115,116)}(t))\\sigma_{115}^{X} \\\\ & + \\Omega_{d,116}(U_{261}^{(116,117)}(t)+U_{260}^{(116,115)}(t))\\sigma_{116}^{X} + \\Omega_{d,117}(U_{262}^{(117,116)}(t)+U_{263}^{(117,118)}(t))\\sigma_{117}^{X} \\\\ & + \\Omega_{d,118}(U_{265}^{(118,117)}(t)+U_{264}^{(118,110)}(t)+U_{266}^{(118,119)}(t))\\sigma_{118}^{X} + \\Omega_{d,119}(U_{267}^{(119,118)}(t)+U_{268}^{(119,120)}(t))\\sigma_{119}^{X} \\\\ & + \\Omega_{d,120}(U_{269}^{(120,119)}(t)+U_{270}^{(120,121)}(t))\\sigma_{120}^{X} + \\Omega_{d,121}(U_{271}^{(121,120)}(t)+U_{272}^{(121,122)}(t))\\sigma_{121}^{X} \\\\ & + \\Omega_{d,122}(U_{273}^{(122,111)}(t)+U_{274}^{(122,121)}(t)+U_{275}^{(122,123)}(t))\\sigma_{122}^{X} + \\Omega_{d,123}(U_{276}^{(123,122)}(t)+U_{277}^{(123,124)}(t))\\sigma_{123}^{X} \\\\ & + \\Omega_{d,124}(U_{278}^{(124,123)}(t)+U_{279}^{(124,125)}(t))\\sigma_{124}^{X} + \\Omega_{d,125}(U_{280}^{(125,124)}(t)+U_{281}^{(125,126)}(t))\\sigma_{125}^{X} \\\\ & + \\Omega_{d,126}(U_{283}^{(126,125)}(t)+U_{282}^{(126,112)}(t))\\sigma_{126}^{X} \\\\ \\end{align}", "h_str": ["_SUM[i,0,126,wq{i}/2*(I{i}-Z{i})]", "_SUM[i,0,126,delta{i}/2*O{i}*O{i}]", "_SUM[i,0,126,-delta{i}/2*O{i}]", "_SUM[i,0,126,omegad{i}*X{i}||D{i}]", "jq62q72*Sp62*Sm72", "jq62q72*Sm62*Sp72", "jq67q68*Sp67*Sm68", "jq67q68*Sm67*Sp68", "jq44q45*Sp44*Sm45", "jq44q45*Sm44*Sp45", "jq99q100*Sp99*Sm100", "jq99q100*Sm99*Sp100", "jq108q112*Sp108*Sm112", "jq108q112*Sm108*Sp112", "jq40q41*Sp40*Sm41", "jq40q41*Sm40*Sp41", "jq0q14*Sp0*Sm14", "jq0q14*Sm0*Sp14", "jq17q30*Sp17*Sm30", "jq17q30*Sm17*Sp30", "jq100q101*Sp100*Sm101", "jq100q101*Sm100*Sp101", "jq91q98*Sp91*Sm98", "jq91q98*Sm91*Sp98", "jq100q110*Sp100*Sm110", "jq100q110*Sm100*Sp110", "jq75q90*Sp75*Sm90", "jq75q90*Sm75*Sp90", "jq41q42*Sp41*Sm42", "jq41q42*Sm41*Sp42", "jq96q97*Sp96*Sm97", "jq96q97*Sm96*Sp97", "jq18q19*Sp18*Sm19", "jq18q19*Sm18*Sp19", "jq55q68*Sp55*Sm68", "jq55q68*Sm55*Sp68", "jq9q10*Sp9*Sm10", "jq9q10*Sm9*Sp10", "jq49q55*Sp49*Sm55", "jq49q55*Sm49*Sp55", "jq106q107*Sp106*Sm107", "jq106q107*Sm106*Sp107", "jq47q48*Sp47*Sm48", "jq47q48*Sm47*Sp48", "jq42q43*Sp42*Sm43", "jq42q43*Sm42*Sp43", "jq107q108*Sp107*Sm108", "jq107q108*Sm107*Sp108", "jq73q85*Sp73*Sm85", "jq73q85*Sm73*Sp85", "jq38q39*Sp38*Sm39", "jq38q39*Sm38*Sp39", "jq20q33*Sp20*Sm33", "jq20q33*Sm20*Sp33", "jq103q104*Sp103*Sm104", "jq103q104*Sm103*Sp104", "jq48q49*Sp48*Sm49", "jq48q49*Sm48*Sp49", "jq80q81*Sp80*Sm81", "jq80q81*Sm80*Sp81", "jq75q76*Sp75*Sm76", "jq75q76*Sm75*Sp76", "jq66q73*Sp66*Sm73", "jq66q73*Sm66*Sp73", "jq85q86*Sp85*Sm86", "jq85q86*Sm85*Sp86", "jq110q118*Sp110*Sm118", "jq110q118*Sm110*Sp118", "jq81q82*Sp81*Sm82", "jq81q82*Sm81*Sp82", "jq16q26*Sp16*Sm26", "jq16q26*Sm16*Sp26", "jq90q94*Sp90*Sm94", "jq90q94*Sm90*Sp94", "jq118q119*Sp118*Sm119", "jq118q119*Sm118*Sp119", "jq12q13*Sp12*Sm13", "jq12q13*Sm12*Sp13", "jq77q78*Sp77*Sm78", "jq77q78*Sm77*Sp78", "jq22q23*Sp22*Sm23", "jq22q23*Sm22*Sp23", "jq49q50*Sp49*Sm50", "jq49q50*Sm49*Sp50", "jq104q105*Sp104*Sm105", "jq104q105*Sm104*Sp105", "jq114q115*Sp114*Sm115", "jq114q115*Sm114*Sp115", "jq45q46*Sp45*Sm46", "jq45q46*Sm45*Sp46", "jq50q51*Sp50*Sm51", "jq50q51*Sm50*Sp51", "jq105q106*Sp105*Sm106", "jq105q106*Sm105*Sp106", "jq72q81*Sp72*Sm81", "jq72q81*Sm72*Sp81", "jq82q83*Sp82*Sm83", "jq82q83*Sm82*Sp83", "jq46q47*Sp46*Sm47", "jq46q47*Sm46*Sp47", "jq23q24*Sp23*Sm24", "jq23q24*Sm23*Sp24", "jq78q79*Sp78*Sm79", "jq78q79*Sm78*Sp79", "jq83q84*Sp83*Sm84", "jq83q84*Sm83*Sp84", "jq115q116*Sp115*Sm116", "jq115q116*Sm115*Sp116", "jq19q20*Sp19*Sm20", "jq19q20*Sm19*Sp20", "jq24q25*Sp24*Sm25", "jq24q25*Sm24*Sp25", "jq79q80*Sp79*Sm80", "jq79q80*Sm79*Sp80", "jq56q57*Sp56*Sm57", "jq56q57*Sm56*Sp57", "jq93q106*Sp93*Sm106", "jq93q106*Sm93*Sp106", "jq116q117*Sp116*Sm117", "jq116q117*Sm116*Sp117", "jq20q21*Sp20*Sm21", "jq20q21*Sm20*Sp21", "jq12q17*Sp12*Sm17", "jq12q17*Sm12*Sp17", "jq41q53*Sp41*Sm53", "jq41q53*Sm41*Sp53", "jq57q58*Sp57*Sm58", "jq57q58*Sm57*Sp58", "jq87q93*Sp87*Sm93", "jq87q93*Sm87*Sp93", "jq30q31*Sp30*Sm31", "jq30q31*Sm30*Sp31", "jq25q26*Sp25*Sm26", "jq25q26*Sm25*Sp26", "jq79q91*Sp79*Sm91", "jq79q91*Sm79*Sp91", "jq26q27*Sp26*Sm27", "jq26q27*Sm26*Sp27", "jq21q22*Sp21*Sm22", "jq21q22*Sm21*Sp22", "jq58q71*Sp58*Sm71", "jq58q71*Sm58*Sp71", "jq86q87*Sp86*Sm87", "jq86q87*Sm86*Sp87", "jq4q15*Sp4*Sm15", "jq4q15*Sm4*Sp15", "jq31q32*Sp31*Sm32", "jq31q32*Sm31*Sp32", "jq113q114*Sp113*Sm114", "jq113q114*Sm113*Sp114", "jq104q111*Sp104*Sm111", "jq104q111*Sm104*Sp111", "jq123q124*Sp123*Sm124", "jq123q124*Sm123*Sp124", "jq27q28*Sp27*Sm28", "jq27q28*Sm27*Sp28", "jq34q43*Sp34*Sm43", "jq34q43*Sm34*Sp43", "jq119q120*Sp119*Sm120", "jq119q120*Sm119*Sp120", "jq64q65*Sp64*Sm65", "jq64q65*Sm64*Sp65", "jq54q64*Sp54*Sm64", "jq54q64*Sm54*Sp64", "jq32q36*Sp32*Sm36", "jq32q36*Sm32*Sp36", "jq60q61*Sp60*Sm61", "jq60q61*Sm60*Sp61", "jq5q6*Sp5*Sm6", "jq5q6*Sm5*Sp6", "jq14q18*Sp14*Sm18", "jq14q18*Sm14*Sp18", "jq87q88*Sp87*Sm88", "jq87q88*Sm87*Sp88", "jq97q98*Sp97*Sm98", "jq97q98*Sm97*Sp98", "jq1q2*Sp1*Sm2", "jq1q2*Sm1*Sp2", "jq112q126*Sp112*Sm126", "jq112q126*Sm112*Sp126", "jq28q29*Sp28*Sm29", "jq28q29*Sm28*Sp29", "jq45q54*Sp45*Sm54", "jq45q54*Sm45*Sp54", "jq36q51*Sp36*Sm51", "jq36q51*Sm36*Sp51", "jq88q89*Sp88*Sm89", "jq88q89*Sm88*Sp89", "jq120q121*Sp120*Sm121", "jq120q121*Sm120*Sp121", "jq15q22*Sp15*Sm22", "jq15q22*Sm15*Sp22", "jq24q34*Sp24*Sm34", "jq24q34*Sm24*Sp34", "jq84q85*Sp84*Sm85", "jq84q85*Sm84*Sp85", "jq29q30*Sp29*Sm30", "jq29q30*Sm29*Sp30", "jq61q62*Sp61*Sm62", "jq61q62*Sm61*Sp62", "jq70q74*Sp70*Sm74", "jq70q74*Sm70*Sp74", "jq121q122*Sp121*Sm122", "jq121q122*Sm121*Sp122", "jq2q3*Sp2*Sm3", "jq2q3*Sm2*Sp3", "jq122q123*Sp122*Sm123", "jq122q123*Sm122*Sp123", "jq117q118*Sp117*Sm118", "jq117q118*Sm117*Sp118", "jq62q63*Sp62*Sm63", "jq62q63*Sm62*Sp63", "jq94q95*Sp94*Sm95", "jq94q95*Sm94*Sp95", "jq37q52*Sp37*Sm52", "jq37q52*Sm37*Sp52", "jq3q4*Sp3*Sm4", "jq3q4*Sm3*Sp4", "jq58q59*Sp58*Sm59", "jq58q59*Sm58*Sp59", "jq33q39*Sp33*Sm39", "jq33q39*Sm33*Sp39", "jq95q96*Sp95*Sm96", "jq95q96*Sm95*Sp96", "jq68q69*Sp68*Sm69", "jq68q69*Sm68*Sp69", "jq63q64*Sp63*Sm64", "jq63q64*Sm63*Sp64", "jq71q77*Sp71*Sm77", "jq71q77*Sm71*Sp77", "jq111q122*Sp111*Sm122", "jq111q122*Sm111*Sp122", "jq4q5*Sp4*Sm5", "jq4q5*Sm4*Sp5", "jq59q60*Sp59*Sm60", "jq59q60*Sm59*Sp60", "jq96q109*Sp96*Sm109", "jq96q109*Sm96*Sp109", "jq124q125*Sp124*Sm125", "jq124q125*Sm124*Sp125", "jq69q70*Sp69*Sm70", "jq69q70*Sm69*Sp70", "jq35q47*Sp35*Sm47", "jq35q47*Sm35*Sp47", "jq101q102*Sp101*Sm102", "jq101q102*Sm101*Sp102", "jq0q1*Sp0*Sm1", "jq0q1*Sm0*Sp1", "jq65q66*Sp65*Sm66", "jq65q66*Sm65*Sp66", "jq10q11*Sp10*Sm11", "jq10q11*Sm10*Sp11", "jq37q38*Sp37*Sm38", "jq37q38*Sm37*Sp38", "jq28q35*Sp28*Sm35", "jq28q35*Sm28*Sp35", "jq102q103*Sp102*Sm103", "jq102q103*Sm102*Sp103", "jq92q102*Sp92*Sm102", "jq92q102*Sm92*Sp102", "jq6q7*Sp6*Sm7", "jq6q7*Sm6*Sp7", "jq98q99*Sp98*Sm99", "jq98q99*Sm98*Sp99", "jq43q44*Sp43*Sm44", "jq43q44*Sm43*Sp44", "jq52q56*Sp52*Sm56", "jq52q56*Sm52*Sp56", "jq125q126*Sp125*Sm126", "jq125q126*Sm125*Sp126", "jq39q40*Sp39*Sm40", "jq39q40*Sm39*Sp40", "jq8q16*Sp8*Sm16", "jq8q16*Sm8*Sp16", "jq11q12*Sp11*Sm12", "jq11q12*Sm11*Sp12", "jq66q67*Sp66*Sm67", "jq66q67*Sm66*Sp67", "jq76q77*Sp76*Sm77", "jq76q77*Sm76*Sp77", "jq83q92*Sp83*Sm92", "jq83q92*Sm83*Sp92", "jq74q89*Sp74*Sm89", "jq74q89*Sm74*Sp89", "jq7q8*Sp7*Sm8", "jq7q8*Sm7*Sp8", "jq53q60*Sp53*Sm60", "jq53q60*Sm53*Sp60", "omegad1*X0||U0", "omegad14*X0||U1", "omegad2*X1||U3", "omegad0*X1||U2", "omegad3*X2||U5", "omegad1*X2||U4", "omegad4*X3||U7", "omegad2*X3||U6", "omegad15*X4||U10", "omegad5*X4||U9", "omegad3*X4||U8", "omegad6*X5||U12", "omegad4*X5||U11", "omegad7*X6||U14", "omegad5*X6||U13", "omegad8*X7||U16", "omegad6*X7||U15", "omegad16*X8||U18", "omegad7*X8||U17", "omegad10*X9||U19", "omegad11*X10||U21", "omegad9*X10||U20", "omegad12*X11||U23", "omegad10*X11||U22", "omegad17*X12||U26", "omegad13*X12||U25", "omegad11*X12||U24", "omegad12*X13||U27", "omegad0*X14||U28", "omegad18*X14||U29", "omegad22*X15||U31", "omegad4*X15||U30", "omegad26*X16||U33", "omegad8*X16||U32", "omegad30*X17||U35", "omegad12*X17||U34", "omegad14*X18||U36", "omegad19*X18||U37", "omegad18*X19||U38", "omegad20*X19||U39", "omegad33*X20||U42", "omegad21*X20||U41", "omegad19*X20||U40", "omegad20*X21||U43", "omegad22*X21||U44", "omegad15*X22||U45", "omegad23*X22||U47", "omegad21*X22||U46", "omegad24*X23||U49", "omegad22*X23||U48", "omegad34*X24||U52", "omegad23*X24||U50", "omegad25*X24||U51", "omegad26*X25||U54", "omegad24*X25||U53", "omegad27*X26||U57", "omegad16*X26||U55", "omegad25*X26||U56", "omegad28*X27||U59", "omegad26*X27||U58", "omegad29*X28||U61", "omegad27*X28||U60", "omegad35*X28||U62", "omegad28*X29||U63", "omegad30*X29||U64", "omegad31*X30||U67", "omegad29*X30||U66", "omegad17*X30||U65", "omegad30*X31||U68", "omegad32*X31||U69", "omegad31*X32||U70", "omegad36*X32||U71", "omegad39*X33||U73", "omegad20*X33||U72", "omegad43*X34||U75", "omegad24*X34||U74", "omegad47*X35||U77", "omegad28*X35||U76", "omegad51*X36||U79", "omegad32*X36||U78", "omegad52*X37||U81", "omegad38*X37||U80", "omegad39*X38||U83", "omegad37*X38||U82", "omegad40*X39||U86", "omegad33*X39||U84", "omegad38*X39||U85", "omegad41*X40||U88", "omegad39*X40||U87", "omegad42*X41||U90", "omegad40*X41||U89", "omegad53*X41||U91", "omegad41*X42||U92", "omegad43*X42||U93", "omegad44*X43||U96", "omegad42*X43||U95", "omegad34*X43||U94", "omegad43*X44||U97", "omegad45*X44||U98", "omegad44*X45||U99", "omegad54*X45||U101", "omegad46*X45||U100", "omegad47*X46||U103", "omegad45*X46||U102", "omegad48*X47||U106", "omegad35*X47||U104", "omegad46*X47||U105", "omegad49*X48||U108", "omegad47*X48||U107", "omegad50*X49||U110", "omegad55*X49||U111", "omegad48*X49||U109", "omegad51*X50||U113", "omegad49*X50||U112", "omegad50*X51||U115", "omegad36*X51||U114", "omegad37*X52||U116", "omegad56*X52||U117", "omegad60*X53||U119", "omegad41*X53||U118", "omegad45*X54||U120", "omegad64*X54||U121", "omegad68*X55||U123", "omegad49*X55||U122", "omegad57*X56||U125", "omegad52*X56||U124", "omegad56*X57||U126", "omegad58*X57||U127", "omegad57*X58||U128", "omegad71*X58||U130", "omegad59*X58||U129", "omegad60*X59||U132", "omegad58*X59||U131", "omegad61*X60||U135", "omegad53*X60||U133", "omegad59*X60||U134", "omegad62*X61||U137", "omegad60*X61||U136", "omegad63*X62||U139", "omegad72*X62||U140", "omegad61*X62||U138", "omegad64*X63||U142", "omegad62*X63||U141", "omegad63*X64||U144", "omegad65*X64||U145", "omegad54*X64||U143", "omegad64*X65||U146", "omegad66*X65||U147", "omegad73*X66||U150", "omegad67*X66||U149", "omegad65*X66||U148", "omegad66*X67||U151", "omegad68*X67||U152", "omegad55*X68||U153", "omegad69*X68||U155", "omegad67*X68||U154", "omegad70*X69||U157", "omegad68*X69||U156", "omegad69*X70||U158", "omegad74*X70||U159", "omegad58*X71||U160", "omegad77*X71||U161", "omegad81*X72||U163", "omegad62*X72||U162", "omegad85*X73||U165", "omegad66*X73||U164", "omegad89*X74||U167", "omegad70*X74||U166", "omegad90*X75||U169", "omegad76*X75||U168", "omegad77*X76||U171", "omegad75*X76||U170", "omegad76*X77||U173", "omegad71*X77||U172", "omegad78*X77||U174", "omegad77*X78||U175", "omegad79*X78||U176", "omegad91*X79||U179", "omegad80*X79||U178", "omegad78*X79||U177", "omegad79*X80||U180", "omegad81*X80||U181", "omegad82*X81||U184", "omegad80*X81||U183", "omegad72*X81||U182", "omegad83*X82||U186", "omegad81*X82||U185", "omegad84*X83||U188", "omegad82*X83||U187", "omegad92*X83||U189", "omegad85*X84||U191", "omegad83*X84||U190", "omegad73*X85||U192", "omegad84*X85||U193", "omegad86*X85||U194", "omegad87*X86||U196", "omegad85*X86||U195", "omegad88*X87||U198", "omegad86*X87||U197", "omegad93*X87||U199", "omegad89*X88||U201", "omegad87*X88||U200", "omegad88*X89||U203", "omegad74*X89||U202", "omegad94*X90||U205", "omegad75*X90||U204", "omegad98*X91||U207", "omegad79*X91||U206", "omegad102*X92||U209", "omegad83*X92||U208", "omegad106*X93||U211", "omegad87*X93||U210", "omegad95*X94||U213", "omegad90*X94||U212", "omegad96*X95||U215", "omegad94*X95||U214", "omegad97*X96||U217", "omegad95*X96||U216", "omegad109*X96||U218", "omegad98*X97||U220", "omegad96*X97||U219", "omegad91*X98||U221", "omegad99*X98||U223", "omegad97*X98||U222", "omegad100*X99||U225", "omegad98*X99||U224", "omegad101*X100||U227", "omegad99*X100||U226", "omegad110*X100||U228", "omegad100*X101||U229", "omegad102*X101||U230", "omegad103*X102||U233", "omegad92*X102||U231", "omegad101*X102||U232", "omegad102*X103||U234", "omegad104*X103||U235", "omegad103*X104||U236", "omegad111*X104||U238", "omegad105*X104||U237", "omegad106*X105||U240", "omegad104*X105||U239", "omegad93*X106||U241", "omegad107*X106||U243", "omegad105*X106||U242", "omegad108*X107||U245", "omegad106*X107||U244", "omegad107*X108||U246", "omegad112*X108||U247", "omegad96*X109||U248", "omegad100*X110||U249", "omegad118*X110||U250", "omegad122*X111||U252", "omegad104*X111||U251", "omegad108*X112||U253", "omegad126*X112||U254", "omegad114*X113||U255", "omegad113*X114||U256", "omegad115*X114||U257", "omegad114*X115||U258", "omegad116*X115||U259", "omegad117*X116||U261", "omegad115*X116||U260", "omegad116*X117||U262", "omegad118*X117||U263", "omegad117*X118||U265", "omegad110*X118||U264", "omegad119*X118||U266", "omegad118*X119||U267", "omegad120*X119||U268", "omegad119*X120||U269", "omegad121*X120||U270", "omegad120*X121||U271", "omegad122*X121||U272", "omegad111*X122||U273", "omegad121*X122||U274", "omegad123*X122||U275", "omegad122*X123||U276", "omegad124*X123||U277", "omegad123*X124||U278", "omegad125*X124||U279", "omegad124*X125||U280", "omegad126*X125||U281", "omegad125*X126||U283", "omegad112*X126||U282"], "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, "27": 3, "28": 3, "29": 3, "30": 3, "31": 3, "32": 3, "33": 3, "34": 3, "35": 3, "36": 3, "37": 3, "38": 3, "39": 3, "40": 3, "41": 3, "42": 3, "43": 3, "44": 3, "45": 3, "46": 3, "47": 3, "48": 3, "49": 3, "50": 3, "51": 3, "52": 3, "53": 3, "54": 3, "55": 3, "56": 3, "57": 3, "58": 3, "59": 3, "60": 3, "61": 3, "62": 3, "63": 3, "64": 3, "65": 3, "66": 3, "67": 3, "68": 3, "69": 3, "70": 3, "71": 3, "72": 3, "73": 3, "74": 3, "75": 3, "76": 3, "77": 3, "78": 3, "79": 3, "80": 3, "81": 3, "82": 3, "83": 3, "84": 3, "85": 3, "86": 3, "87": 3, "88": 3, "89": 3, "90": 3, "91": 3, "92": 3, "93": 3, "94": 3, "95": 3, "96": 3, "97": 3, "98": 3, "99": 3, "100": 3, "101": 3, "102": 3, "103": 3, "104": 3, "105": 3, "106": 3, "107": 3, "108": 3, "109": 3, "110": 3, "111": 3, "112": 3, "113": 3, "114": 3, "115": 3, "116": 3, "117": 3, "118": 3, "119": 3, "120": 3, "121": 3, "122": 3, "123": 3, "124": 3, "125": 3, "126": 3}, "vars": {"delta0": -1.934129967779106, "delta1": -1.941636380673146, "delta10": -1.9500667245043048, "delta100": -1.9330202442979494, "delta101": -1.9298671224940702, "delta102": -1.9392868435626855, "delta103": -1.9107603169851044, "delta104": -1.9246747074273391, "delta105": -1.9392052818933303, "delta106": -1.936082589761243, "delta107": -1.9179295033555002, "delta108": -1.9070859535093065, "delta109": -2.041422641609916, "delta11": -1.9272192322960955, "delta110": -1.9034687465200641, "delta111": -1.9201402401340169, "delta112": -1.7505938024044672, "delta113": -1.9236792734319352, "delta114": -1.904835602262457, "delta115": -1.9259865032059391, "delta116": -1.933415602356772, "delta117": -1.908750069465594, "delta118": -1.9274443519406157, "delta119": -1.913918353154183, "delta12": -1.9549067522939634, "delta120": -1.9269740409521456, "delta121": -1.936939409492467, "delta122": -1.9053407975398444, "delta123": -1.9242828499085594, "delta124": -1.8400815886957975, "delta125": -1.9305228927343685, "delta126": -1.916070629714716, "delta13": -1.939986566228252, "delta14": -1.9405992207136422, "delta15": -1.9313022243307019, "delta16": -1.942138403634549, "delta17": -1.9329121719677584, "delta18": -1.9556387984100647, "delta19": -1.933193261826699, "delta2": -1.9503293382336029, "delta20": -1.945596274140682, "delta21": -1.9313800568600679, "delta22": -1.889735205289531, "delta23": -1.9384093906040825, "delta24": -1.9099600918196518, "delta25": -1.9533841026049106, "delta26": -1.9406044337786956, "delta27": -1.928521394899934, "delta28": -1.92124680070493, "delta29": -1.932532540354137, "delta3": -1.7411241287362405, "delta30": -1.929415423462163, "delta31": -1.9261602517913985, "delta32": -1.9109111626780626, "delta33": -1.9438612825646677, "delta34": -1.9429616981292088, "delta35": -1.9302539550469344, "delta36": -1.9222337340659112, "delta37": -1.8989259490474395, "delta38": -1.932296246913192, "delta39": -1.9376238042934337, "delta4": -2.022871015027228, "delta40": -1.923461540583563, "delta41": -1.9336749670031084, "delta42": -1.9439128107139194, "delta43": -1.9359853235275768, "delta44": -1.9322645816937012, "delta45": -1.9445185263925742, "delta46": -1.926288102019633, "delta47": -1.9405539340521838, "delta48": -1.9414975261457685, "delta49": -1.9289818140295392, "delta5": -1.9502403380635067, "delta50": -1.9349321699007294, "delta51": -1.9129700734377748, "delta52": -1.9342878782722026, "delta53": -1.9292455201483785, "delta54": -1.9060122457758801, "delta55": -1.9198873600233355, "delta56": -1.9204170969617895, "delta57": -1.9239627480287298, "delta58": -1.9440922119285748, "delta59": -1.9348457115826605, "delta6": -1.9356097588945314, "delta60": -1.9229685797470681, "delta61": -1.948397932817297, "delta62": -1.9434277508816356, "delta63": -1.9351090295030682, "delta64": -1.9167027815538484, "delta65": -1.9233754111779953, "delta66": -1.850926101182791, "delta67": -1.8885773887202524, "delta68": -1.9131106885239195, "delta69": -1.936959402141429, "delta7": -1.9367354360917577, "delta70": -1.9167797734547836, "delta71": -1.9834750173801579, "delta72": -1.9220172461155767, "delta73": -1.9355131670640582, "delta74": -2.014515032861276, "delta75": -1.9340399106796151, "delta76": -1.9488487700863124, "delta77": -1.9353065701303505, "delta78": -1.9076010008531137, "delta79": -1.9353162329541322, "delta8": -1.9308460678183657, "delta80": -1.93262351894318, "delta81": -1.9452977682926125, "delta82": -1.933843066367179, "delta83": -1.9361521784730462, "delta84": -1.9413402136599822, "delta85": -1.9284914766180967, "delta86": -1.9416261720030266, "delta87": -1.9173911116750713, "delta88": -1.926493775011964, "delta89": -1.9391720784496698, "delta9": -1.9441086200385382, "delta90": -1.9056607141153485, "delta91": -1.9344555064046125, "delta92": -1.924266376872195, "delta93": -1.9210637624871012, "delta94": -1.917837922131241, "delta95": -1.9193618650209643, "delta96": -1.9217752763884959, "delta97": -1.932355638507761, "delta98": -1.8510621154406857, "delta99": -1.9147337563897944, "jq0q1": 0.009776310316519371, "jq0q14": 0.010024773410351275, "jq100q101": 0.00966619434837385, "jq100q110": 0.010126059321280424, "jq101q102": 0.009810458231783264, "jq102q103": 0.009997060802353417, "jq103q104": 0.009982262551911363, "jq104q105": 0.010006119989798163, "jq104q111": 0.009856966450972697, "jq105q106": 0.009642463456729831, "jq106q107": 0.009692783757832384, "jq107q108": 0.009871667463084039, "jq108q112": 0.010404247490601527, "jq10q11": 0.009840126539554505, "jq110q118": 0.010295180565324415, "jq111q122": 0.01052108675195825, "jq112q126": 0.009665912770198655, "jq113q114": 0.010306843421246235, "jq114q115": 0.010502529601242176, "jq115q116": 0.009849256840491696, "jq116q117": 0.010207863838489319, "jq117q118": 0.010176601265982249, "jq118q119": 0.009719709193539086, "jq119q120": 0.009912543188333066, "jq11q12": 0.009148448451276495, "jq120q121": 0.009643173052697674, "jq121q122": 0.012310585925105042, "jq122q123": 0.010964298323289748, "jq123q124": 0.009916623235056182, "jq124q125": 0.009856942326823387, "jq125q126": 0.010095523578753207, "jq12q13": 0.009351077824921323, "jq12q17": 0.00962444945418141, "jq14q18": 0.00968345654275509, "jq15q22": 0.009503510801748176, "jq16q26": 0.009650629215255781, "jq17q30": 0.009823750455532756, "jq18q19": 0.009871593294553282, "jq19q20": 0.009891148741438004, "jq1q2": 0.007152127917811266, "jq20q21": 0.00977593937344866, "jq20q33": 0.009466054098273832, "jq21q22": 0.011162870394710181, "jq22q23": 0.01075828726780499, "jq23q24": 0.00920218446443539, "jq24q25": 0.007868157602148273, "jq24q34": 0.008667355936360414, "jq25q26": 0.009611300691721603, "jq26q27": 0.0091942335787133, "jq27q28": 0.009953283559203259, "jq28q29": 0.009959592678204727, "jq28q35": 0.009832618491892122, "jq29q30": 0.00974418889973495, "jq2q3": 0.007147416171519594, "jq30q31": 0.009842759454032651, "jq31q32": 0.009513875147200333, "jq32q36": 0.010122200808573149, "jq33q39": 0.009664644496843745, "jq34q43": 0.009709971103896002, "jq35q47": 0.00972906498881865, "jq36q51": 0.010051847340955176, "jq37q38": 0.01005081562544994, "jq37q52": 0.009915990644658973, "jq38q39": 0.009587229088943827, "jq39q40": 0.009963721125205799, "jq3q4": 0.009736347804184814, "jq40q41": 0.009965992526310833, "jq41q42": 0.009681554199450734, "jq41q53": 0.010107105720281055, "jq42q43": 0.009788955900692979, "jq43q44": 0.009680734420973346, "jq44q45": 0.009910372885742796, "jq45q46": 0.009734143164039097, "jq45q54": 0.009713576225378063, "jq46q47": 0.009799954606063012, "jq47q48": 0.009669003195866641, "jq48q49": 0.00975058080700969, "jq49q50": 0.009805248411763256, "jq49q55": 0.009966137933749992, "jq4q15": 0.009278452278530204, "jq4q5": 0.004564077787247093, "jq50q51": 0.010066698769648035, "jq52q56": 0.010038398565086154, "jq53q60": 0.010965123380354042, "jq54q64": 0.009906570827784471, "jq55q68": 0.009893986248560598, "jq56q57": 0.009849320695603181, "jq57q58": 0.009784324396745949, "jq58q59": 0.009562570862200578, "jq58q71": 0.008703150456096828, "jq59q60": 0.010072916612583692, "jq5q6": 0.009616306315221243, "jq60q61": 0.009885264562149894, "jq61q62": 0.009519524884124246, "jq62q63": 0.009703381904321101, "jq62q72": 0.00998633363277513, "jq63q64": 0.010215368470985167, "jq64q65": 0.010027279594518297, "jq65q66": 0.009566667388098879, "jq66q67": 0.009805123671981726, "jq66q73": 0.009758114712843156, "jq67q68": 0.009664468835305522, "jq68q69": 0.010043594122132217, "jq69q70": 0.009847833210878386, "jq6q7": 0.009536394776341144, "jq70q74": 0.009267189107147963, "jq71q77": 0.009500141462951592, "jq72q81": 0.010026915479141297, "jq73q85": 0.009658461877397717, "jq74q89": 0.009066024375549125, "jq75q76": 0.009844366897505959, "jq75q90": 0.009900120493111184, "jq76q77": 0.009784174594726502, "jq77q78": 0.010369173141521186, "jq78q79": 0.010209505850332798, "jq79q80": 0.00952641647225042, "jq79q91": 0.010229351695763018, "jq7q8": 0.009695137395806493, "jq80q81": 0.009451784091005071, "jq81q82": 0.009667250896019802, "jq82q83": 0.009088328014781844, "jq83q84": 0.008788735787346548, "jq83q92": 0.009042633515641517, "jq84q85": 0.009411476085469519, "jq85q86": 0.009750394792703525, "jq86q87": 0.010030774452340149, "jq87q88": 0.00990319971309494, "jq87q93": 0.00992555319544362, "jq88q89": 0.009549301298064673, "jq8q16": 0.009907093433980652, "jq90q94": 0.01001108897702865, "jq91q98": 0.009623501572808819, "jq92q102": 0.00974453524502427, "jq93q106": 0.009770807204645064, "jq94q95": 0.010218460292159861, "jq95q96": 0.007888884159502169, "jq96q109": 0.009431439755509747, "jq96q97": 0.0077953973471492355, "jq97q98": 0.00834950914899904, "jq98q99": 0.011860764888355975, "jq99q100": 0.010080119221860584, "jq9q10": 0.009362571273760181, "omegad0": 0.9768672414800653, "omegad1": 0.8886561702390354, "omegad10": 0.775073712656179, "omegad100": 1.022326938858396, "omegad101": 0.9676170993790844, "omegad102": 1.025592391251599, "omegad103": 0.9501201895567156, "omegad104": 1.0955750441006529, "omegad105": 0.9655920662526722, "omegad106": 0.40225244426244466, "omegad107": 0.9636705163590529, "omegad108": 1.060607298072675, "omegad109": 0.6880227837463373, "omegad11": 0.9920998174726446, "omegad110": 1.0127635465429168, "omegad111": 0.9566705279987582, "omegad112": 0.8228027425374727, "omegad113": 1.0000653017148955, "omegad114": 0.826677168015282, "omegad115": 0.9170067089991992, "omegad116": 0.9789078946004742, "omegad117": 0.9813922073887479, "omegad118": 1.0006437648618547, "omegad119": 1.0804932375018654, "omegad12": 0.6602374984662005, "omegad120": 0.9511170805326533, "omegad121": 0.7974897379749518, "omegad122": 0.9115548123900254, "omegad123": 1.0200165198229334, "omegad124": 0.9141059797343505, "omegad125": 0.9893357309515851, "omegad126": 0.9464446023309729, "omegad13": 0.9433436721218105, "omegad14": 0.9533905459105191, "omegad15": 0.9876208043629093, "omegad16": 0.94870784110896, "omegad17": 0.9715814943394402, "omegad18": 0.7599842445940233, "omegad19": 0.9280468070045479, "omegad2": 0.6408216496592768, "omegad20": 0.9029381981458917, "omegad21": 0.9784842786265512, "omegad22": 0.9090410347202668, "omegad23": 0.842261533991017, "omegad24": 0.7804612653043721, "omegad25": 0.4886110348333499, "omegad26": 0.7673542654459918, "omegad27": 0.9712257227859, "omegad28": 1.0202653908271104, "omegad29": 0.9633206390250827, "omegad3": 0.6750302573861593, "omegad30": 0.9515518360663944, "omegad31": 1.0692122979687178, "omegad32": 1.0762591365418128, "omegad33": 0.954231633821649, "omegad34": 0.9164714707257524, "omegad35": 0.997687008088468, "omegad36": 0.9908367639221329, "omegad37": 0.9928958917692583, "omegad38": 0.9884986823804832, "omegad39": 0.9890207478667296, "omegad4": 0.8984766252874474, "omegad40": 0.9119163891745186, "omegad41": 0.8118478697980119, "omegad42": 0.853392025130777, "omegad43": 1.0498869835383549, "omegad44": 0.9911424343838201, "omegad45": 0.9600963861340189, "omegad46": 1.0183667272044747, "omegad47": 0.8326127468445733, "omegad48": 0.953599682016719, "omegad49": 0.9422530256357436, "omegad5": 0.6544571376287455, "omegad50": 0.9881437870473294, "omegad51": 0.9688075564450163, "omegad52": 1.0246554265609793, "omegad53": 0.836721709611665, "omegad54": 1.2499735620342243, "omegad55": 0.989811093394364, "omegad56": 0.9855837376514476, "omegad57": 0.9795970857761254, "omegad58": 0.7999404013419695, "omegad59": 0.9957622009946389, "omegad6": 1.2602968590368258, "omegad60": 1.0060072419254733, "omegad61": 0.7001624480359259, "omegad62": 1.174474019210328, "omegad63": 0.9940453389902301, "omegad64": 1.1427289773818807, "omegad65": 0.9076767791845871, "omegad66": 0.9387841697012445, "omegad67": 0.7015758670225734, "omegad68": 1.0028654638297834, "omegad69": 0.9698658967933069, "omegad7": 0.9656413165651775, "omegad70": 0.9698717346243134, "omegad71": 0.963925240540055, "omegad72": 0.9959036225573227, "omegad73": 0.9788828137672407, "omegad74": 0.7902408376659482, "omegad75": 0.9060040347835902, "omegad76": 0.92201904473613, "omegad77": 0.970187208888584, "omegad78": 0.9606120927753907, "omegad79": 0.9827205911591619, "omegad8": 1.0157491554768943, "omegad80": 0.9461299448623622, "omegad81": 0.9998957847040867, "omegad82": 0.9965761584179907, "omegad83": 0.806699065600687, "omegad84": 1.0107473790191759, "omegad85": 0.5597374879798525, "omegad86": 0.9901495950461957, "omegad87": 0.9974737278106984, "omegad88": 0.772443675274506, "omegad89": 0.9788348534845669, "omegad9": 0.7214947177529646, "omegad90": 0.977714232511102, "omegad91": 0.9433619219830527, "omegad92": 1.0258968815728093, "omegad93": 0.9270380074848706, "omegad94": 1.0594162807867418, "omegad95": 0.9662483316706041, "omegad96": 0.9782298072850774, "omegad97": 0.9946293363866363, "omegad98": 0.9279763949316234, "omegad99": 0.9963624821733635, "wq0": 31.96774320692759, "wq1": 31.295927213583315, "wq10": 30.638295408737736, "wq100": 31.593523996697492, "wq101": 32.01386156107303, "wq102": 31.318856016514356, "wq103": 32.84129307039634, "wq104": 32.26358776773932, "wq105": 31.321960754461248, "wq106": 31.668760504960126, "wq107": 32.17935283960365, "wq108": 33.00881744973906, "wq109": 31.399540405433278, "wq11": 32.21551345069387, "wq110": 33.24797268353362, "wq111": 32.61746119139311, "wq112": 32.77358922680311, "wq113": 32.484901150553156, "wq114": 33.13608902329659, "wq115": 32.183182817651556, "wq116": 31.521916237974715, "wq117": 32.884115422733856, "wq118": 32.13479457737695, "wq119": 33.139651293916174, "wq12": 30.350297921174935, "wq120": 31.940584855135448, "wq121": 31.392169203671184, "wq122": 33.10382280891232, "wq123": 32.09512601532103, "wq124": 32.94948069584076, "wq125": 31.650056382632055, "wq126": 32.452074521952596, "wq13": 31.103560801034696, "wq14": 31.38625700159794, "wq15": 32.157295603412436, "wq16": 30.89971194785977, "wq17": 31.43552815263158, "wq18": 30.571039777185163, "wq19": 32.066491349159925, "wq2": 30.735471506955758, "wq20": 30.798618381049458, "wq21": 31.665191369798244, "wq22": 31.24480399107038, "wq23": 31.62554835375912, "wq24": 29.9527946061801, "wq25": 30.599688044762594, "wq26": 31.41075169459988, "wq27": 31.89928972964351, "wq28": 32.66182457465102, "wq29": 31.378438528418123, "wq3": 31.066949088900742, "wq30": 31.94002436201115, "wq31": 32.229362279812634, "wq32": 32.698619290865736, "wq33": 31.118667412213497, "wq34": 31.018894343876912, "wq35": 31.882213962552612, "wq36": 32.05704876978075, "wq37": 32.48351968250617, "wq38": 32.08143276712415, "wq39": 31.52727402817437, "wq4": 31.317374130351446, "wq40": 32.43847462679382, "wq41": 32.00074193729876, "wq42": 30.947356326670995, "wq43": 31.62503156657498, "wq44": 32.145364185092504, "wq45": 30.660794956866113, "wq46": 32.32669430160534, "wq47": 31.42358486386479, "wq48": 31.001215189010264, "wq49": 32.1471469688965, "wq5": 30.67642666174571, "wq50": 31.527022326015732, "wq51": 32.72783985365698, "wq52": 31.51482769440903, "wq53": 31.717693500411823, "wq54": 31.581976535070915, "wq55": 32.65657449251552, "wq56": 32.597113539608706, "wq57": 32.002123992732834, "wq58": 31.195360512236817, "wq59": 31.535630148475615, "wq6": 31.218838699942925, "wq60": 32.30283560744743, "wq61": 30.631369417059712, "wq62": 31.171570790658997, "wq63": 31.6957891200026, "wq64": 33.03827761873346, "wq65": 32.050460933016716, "wq66": 32.906268228314154, "wq67": 30.863586668706635, "wq68": 32.26741876074543, "wq69": 31.062769816034656, "wq7": 31.511061062581298, "wq70": 32.38736801800888, "wq71": 32.15343150757893, "wq72": 32.324993019151414, "wq73": 31.53456649051515, "wq74": 30.626248111307174, "wq75": 31.46601725145903, "wq76": 30.810955515875463, "wq77": 31.862446860028875, "wq78": 33.158338343580205, "wq79": 31.525528084398452, "wq8": 32.114032410941846, "wq80": 31.925009227370584, "wq81": 31.068345235332277, "wq82": 31.91789907478014, "wq83": 31.745080217349358, "wq84": 30.84375296883479, "wq85": 31.994557635890878, "wq86": 30.981823051554734, "wq87": 32.64215738463758, "wq88": 32.02629472752292, "wq89": 31.150761295441516, "wq9": 31.227186821089308, "wq90": 33.02692733985007, "wq91": 31.774967660303435, "wq92": 32.19281461618261, "wq93": 32.29496413021632, "wq94": 32.52269898800547, "wq95": 32.80196113358979, "wq96": 32.30740637114282, "wq97": 31.741090442579296, "wq98": 32.1930687665672, "wq99": 32.51530792636806}}, "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"}, "acquire100": {"operates": {"qubits": [100]}, "purpose": "acquire", "type": "acquire"}, "acquire101": {"operates": {"qubits": [101]}, "purpose": "acquire", "type": "acquire"}, "acquire102": {"operates": {"qubits": [102]}, "purpose": "acquire", "type": "acquire"}, "acquire103": {"operates": {"qubits": [103]}, "purpose": "acquire", "type": "acquire"}, "acquire104": {"operates": {"qubits": [104]}, "purpose": "acquire", "type": "acquire"}, "acquire105": {"operates": {"qubits": [105]}, "purpose": "acquire", "type": "acquire"}, "acquire106": {"operates": {"qubits": [106]}, "purpose": "acquire", "type": "acquire"}, "acquire107": {"operates": {"qubits": [107]}, "purpose": "acquire", "type": "acquire"}, "acquire108": {"operates": {"qubits": [108]}, "purpose": "acquire", "type": "acquire"}, "acquire109": {"operates": {"qubits": [109]}, "purpose": "acquire", "type": "acquire"}, "acquire11": {"operates": {"qubits": [11]}, "purpose": "acquire", "type": "acquire"}, "acquire110": {"operates": {"qubits": [110]}, "purpose": "acquire", "type": "acquire"}, "acquire111": {"operates": {"qubits": [111]}, "purpose": "acquire", "type": "acquire"}, "acquire112": {"operates": {"qubits": [112]}, "purpose": "acquire", "type": "acquire"}, "acquire113": {"operates": {"qubits": [113]}, "purpose": "acquire", "type": "acquire"}, "acquire114": {"operates": {"qubits": [114]}, "purpose": "acquire", "type": "acquire"}, "acquire115": {"operates": {"qubits": [115]}, "purpose": "acquire", "type": "acquire"}, "acquire116": {"operates": {"qubits": [116]}, "purpose": "acquire", "type": "acquire"}, "acquire117": {"operates": {"qubits": [117]}, "purpose": "acquire", "type": "acquire"}, "acquire118": {"operates": {"qubits": [118]}, "purpose": "acquire", "type": "acquire"}, "acquire119": {"operates": {"qubits": [119]}, "purpose": "acquire", "type": "acquire"}, "acquire12": {"operates": {"qubits": [12]}, "purpose": "acquire", "type": "acquire"}, "acquire120": {"operates": {"qubits": [120]}, "purpose": "acquire", "type": "acquire"}, "acquire121": {"operates": {"qubits": [121]}, "purpose": "acquire", "type": "acquire"}, "acquire122": {"operates": {"qubits": [122]}, "purpose": "acquire", "type": "acquire"}, "acquire123": {"operates": {"qubits": [123]}, "purpose": "acquire", "type": "acquire"}, "acquire124": {"operates": {"qubits": [124]}, "purpose": "acquire", "type": "acquire"}, "acquire125": {"operates": {"qubits": [125]}, "purpose": "acquire", "type": "acquire"}, "acquire126": {"operates": {"qubits": [126]}, "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"}, "acquire27": {"operates": {"qubits": [27]}, "purpose": "acquire", "type": "acquire"}, "acquire28": {"operates": {"qubits": [28]}, "purpose": "acquire", "type": "acquire"}, "acquire29": {"operates": {"qubits": [29]}, "purpose": "acquire", "type": "acquire"}, "acquire3": {"operates": {"qubits": [3]}, "purpose": "acquire", "type": "acquire"}, "acquire30": {"operates": {"qubits": [30]}, "purpose": "acquire", "type": "acquire"}, "acquire31": {"operates": {"qubits": [31]}, "purpose": "acquire", "type": "acquire"}, "acquire32": {"operates": {"qubits": [32]}, "purpose": "acquire", "type": "acquire"}, "acquire33": {"operates": {"qubits": [33]}, "purpose": "acquire", "type": "acquire"}, "acquire34": {"operates": {"qubits": [34]}, "purpose": "acquire", "type": "acquire"}, "acquire35": {"operates": {"qubits": [35]}, "purpose": "acquire", "type": "acquire"}, "acquire36": {"operates": {"qubits": [36]}, "purpose": "acquire", "type": "acquire"}, "acquire37": {"operates": {"qubits": [37]}, "purpose": "acquire", "type": "acquire"}, "acquire38": {"operates": {"qubits": [38]}, "purpose": "acquire", "type": "acquire"}, "acquire39": {"operates": {"qubits": [39]}, "purpose": "acquire", "type": "acquire"}, "acquire4": {"operates": {"qubits": [4]}, "purpose": "acquire", "type": "acquire"}, "acquire40": {"operates": {"qubits": [40]}, "purpose": "acquire", "type": "acquire"}, "acquire41": {"operates": {"qubits": [41]}, "purpose": "acquire", "type": "acquire"}, "acquire42": {"operates": {"qubits": [42]}, "purpose": "acquire", "type": "acquire"}, "acquire43": {"operates": {"qubits": [43]}, "purpose": "acquire", "type": "acquire"}, "acquire44": {"operates": {"qubits": [44]}, "purpose": "acquire", "type": "acquire"}, "acquire45": {"operates": {"qubits": [45]}, "purpose": "acquire", "type": "acquire"}, "acquire46": {"operates": {"qubits": [46]}, "purpose": "acquire", "type": "acquire"}, "acquire47": {"operates": {"qubits": [47]}, "purpose": "acquire", "type": "acquire"}, "acquire48": {"operates": {"qubits": [48]}, "purpose": "acquire", "type": "acquire"}, "acquire49": {"operates": {"qubits": [49]}, "purpose": "acquire", "type": "acquire"}, "acquire5": {"operates": {"qubits": [5]}, "purpose": "acquire", "type": "acquire"}, "acquire50": {"operates": {"qubits": [50]}, "purpose": "acquire", "type": "acquire"}, "acquire51": {"operates": {"qubits": [51]}, "purpose": "acquire", "type": "acquire"}, "acquire52": {"operates": {"qubits": [52]}, "purpose": "acquire", "type": "acquire"}, "acquire53": {"operates": {"qubits": [53]}, "purpose": "acquire", "type": "acquire"}, "acquire54": {"operates": {"qubits": [54]}, "purpose": "acquire", "type": "acquire"}, "acquire55": {"operates": {"qubits": [55]}, "purpose": "acquire", "type": "acquire"}, "acquire56": {"operates": {"qubits": [56]}, "purpose": "acquire", "type": "acquire"}, "acquire57": {"operates": {"qubits": [57]}, "purpose": "acquire", "type": "acquire"}, "acquire58": {"operates": {"qubits": [58]}, "purpose": "acquire", "type": "acquire"}, "acquire59": {"operates": {"qubits": [59]}, "purpose": "acquire", "type": "acquire"}, "acquire6": {"operates": {"qubits": [6]}, "purpose": "acquire", "type": "acquire"}, "acquire60": {"operates": {"qubits": [60]}, "purpose": "acquire", "type": "acquire"}, "acquire61": {"operates": {"qubits": [61]}, "purpose": "acquire", "type": "acquire"}, "acquire62": {"operates": {"qubits": [62]}, "purpose": "acquire", "type": "acquire"}, "acquire63": {"operates": {"qubits": [63]}, "purpose": "acquire", "type": "acquire"}, "acquire64": {"operates": {"qubits": [64]}, "purpose": "acquire", "type": "acquire"}, "acquire65": {"operates": {"qubits": [65]}, "purpose": "acquire", "type": "acquire"}, "acquire66": {"operates": {"qubits": [66]}, "purpose": "acquire", "type": "acquire"}, "acquire67": {"operates": {"qubits": [67]}, "purpose": "acquire", "type": "acquire"}, "acquire68": {"operates": {"qubits": [68]}, "purpose": "acquire", "type": "acquire"}, "acquire69": {"operates": {"qubits": [69]}, "purpose": "acquire", "type": "acquire"}, "acquire7": {"operates": {"qubits": [7]}, "purpose": "acquire", "type": "acquire"}, "acquire70": {"operates": {"qubits": [70]}, "purpose": "acquire", "type": "acquire"}, "acquire71": {"operates": {"qubits": [71]}, "purpose": "acquire", "type": "acquire"}, "acquire72": {"operates": {"qubits": [72]}, "purpose": "acquire", "type": "acquire"}, "acquire73": {"operates": {"qubits": [73]}, "purpose": "acquire", "type": "acquire"}, "acquire74": {"operates": {"qubits": [74]}, "purpose": "acquire", "type": "acquire"}, "acquire75": {"operates": {"qubits": [75]}, "purpose": "acquire", "type": "acquire"}, "acquire76": {"operates": {"qubits": [76]}, "purpose": "acquire", "type": "acquire"}, "acquire77": {"operates": {"qubits": [77]}, "purpose": "acquire", "type": "acquire"}, "acquire78": {"operates": {"qubits": [78]}, "purpose": "acquire", "type": "acquire"}, "acquire79": {"operates": {"qubits": [79]}, "purpose": "acquire", "type": "acquire"}, "acquire8": {"operates": {"qubits": [8]}, "purpose": "acquire", "type": "acquire"}, "acquire80": {"operates": {"qubits": [80]}, "purpose": "acquire", "type": "acquire"}, "acquire81": {"operates": {"qubits": [81]}, "purpose": "acquire", "type": "acquire"}, "acquire82": {"operates": {"qubits": [82]}, "purpose": "acquire", "type": "acquire"}, "acquire83": {"operates": {"qubits": [83]}, "purpose": "acquire", "type": "acquire"}, "acquire84": {"operates": {"qubits": [84]}, "purpose": "acquire", "type": "acquire"}, "acquire85": {"operates": {"qubits": [85]}, "purpose": "acquire", "type": "acquire"}, "acquire86": {"operates": {"qubits": [86]}, "purpose": "acquire", "type": "acquire"}, "acquire87": {"operates": {"qubits": [87]}, "purpose": "acquire", "type": "acquire"}, "acquire88": {"operates": {"qubits": [88]}, "purpose": "acquire", "type": "acquire"}, "acquire89": {"operates": {"qubits": [89]}, "purpose": "acquire", "type": "acquire"}, "acquire9": {"operates": {"qubits": [9]}, "purpose": "acquire", "type": "acquire"}, "acquire90": {"operates": {"qubits": [90]}, "purpose": "acquire", "type": "acquire"}, "acquire91": {"operates": {"qubits": [91]}, "purpose": "acquire", "type": "acquire"}, "acquire92": {"operates": {"qubits": [92]}, "purpose": "acquire", "type": "acquire"}, "acquire93": {"operates": {"qubits": [93]}, "purpose": "acquire", "type": "acquire"}, "acquire94": {"operates": {"qubits": [94]}, "purpose": "acquire", "type": "acquire"}, "acquire95": {"operates": {"qubits": [95]}, "purpose": "acquire", "type": "acquire"}, "acquire96": {"operates": {"qubits": [96]}, "purpose": "acquire", "type": "acquire"}, "acquire97": {"operates": {"qubits": [97]}, "purpose": "acquire", "type": "acquire"}, "acquire98": {"operates": {"qubits": [98]}, "purpose": "acquire", "type": "acquire"}, "acquire99": {"operates": {"qubits": [99]}, "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"}, "d100": {"operates": {"qubits": [100]}, "purpose": "drive", "type": "drive"}, "d101": {"operates": {"qubits": [101]}, "purpose": "drive", "type": "drive"}, "d102": {"operates": {"qubits": [102]}, "purpose": "drive", "type": "drive"}, "d103": {"operates": {"qubits": [103]}, "purpose": "drive", "type": "drive"}, "d104": {"operates": {"qubits": [104]}, "purpose": "drive", "type": "drive"}, "d105": {"operates": {"qubits": [105]}, "purpose": "drive", "type": "drive"}, "d106": {"operates": {"qubits": [106]}, "purpose": "drive", "type": "drive"}, "d107": {"operates": {"qubits": [107]}, "purpose": "drive", "type": "drive"}, "d108": {"operates": {"qubits": [108]}, "purpose": "drive", "type": "drive"}, "d109": {"operates": {"qubits": [109]}, "purpose": "drive", "type": "drive"}, "d11": {"operates": {"qubits": [11]}, "purpose": "drive", "type": "drive"}, "d110": {"operates": {"qubits": [110]}, "purpose": "drive", "type": "drive"}, "d111": {"operates": {"qubits": [111]}, "purpose": "drive", "type": "drive"}, "d112": {"operates": {"qubits": [112]}, "purpose": "drive", "type": "drive"}, "d113": {"operates": {"qubits": [113]}, "purpose": "drive", "type": "drive"}, "d114": {"operates": {"qubits": [114]}, "purpose": "drive", "type": "drive"}, "d115": {"operates": {"qubits": [115]}, "purpose": "drive", "type": "drive"}, "d116": {"operates": {"qubits": [116]}, "purpose": "drive", "type": "drive"}, "d117": {"operates": {"qubits": [117]}, "purpose": "drive", "type": "drive"}, "d118": {"operates": {"qubits": [118]}, "purpose": "drive", "type": "drive"}, "d119": {"operates": {"qubits": [119]}, "purpose": "drive", "type": "drive"}, "d12": {"operates": {"qubits": [12]}, "purpose": "drive", "type": "drive"}, "d120": {"operates": {"qubits": [120]}, "purpose": "drive", "type": "drive"}, "d121": {"operates": {"qubits": [121]}, "purpose": "drive", "type": "drive"}, "d122": {"operates": {"qubits": [122]}, "purpose": "drive", "type": "drive"}, "d123": {"operates": {"qubits": [123]}, "purpose": "drive", "type": "drive"}, "d124": {"operates": {"qubits": [124]}, "purpose": "drive", "type": "drive"}, "d125": {"operates": {"qubits": [125]}, "purpose": "drive", "type": "drive"}, "d126": {"operates": {"qubits": [126]}, "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"}, "d27": {"operates": {"qubits": [27]}, "purpose": "drive", "type": "drive"}, "d28": {"operates": {"qubits": [28]}, "purpose": "drive", "type": "drive"}, "d29": {"operates": {"qubits": [29]}, "purpose": "drive", "type": "drive"}, "d3": {"operates": {"qubits": [3]}, "purpose": "drive", "type": "drive"}, "d30": {"operates": {"qubits": [30]}, "purpose": "drive", "type": "drive"}, "d31": {"operates": {"qubits": [31]}, "purpose": "drive", "type": "drive"}, "d32": {"operates": {"qubits": [32]}, "purpose": "drive", "type": "drive"}, "d33": {"operates": {"qubits": [33]}, "purpose": "drive", "type": "drive"}, "d34": {"operates": {"qubits": [34]}, "purpose": "drive", "type": "drive"}, "d35": {"operates": {"qubits": [35]}, "purpose": "drive", "type": "drive"}, "d36": {"operates": {"qubits": [36]}, "purpose": "drive", "type": "drive"}, "d37": {"operates": {"qubits": [37]}, "purpose": "drive", "type": "drive"}, "d38": {"operates": {"qubits": [38]}, "purpose": "drive", "type": "drive"}, "d39": {"operates": {"qubits": [39]}, "purpose": "drive", "type": "drive"}, "d4": {"operates": {"qubits": [4]}, "purpose": "drive", "type": "drive"}, "d40": {"operates": {"qubits": [40]}, "purpose": "drive", "type": "drive"}, "d41": {"operates": {"qubits": [41]}, "purpose": "drive", "type": "drive"}, "d42": {"operates": {"qubits": [42]}, "purpose": "drive", "type": "drive"}, "d43": {"operates": {"qubits": [43]}, "purpose": "drive", "type": "drive"}, "d44": {"operates": {"qubits": [44]}, "purpose": "drive", "type": "drive"}, "d45": {"operates": {"qubits": [45]}, "purpose": "drive", "type": "drive"}, "d46": {"operates": {"qubits": [46]}, "purpose": "drive", "type": "drive"}, "d47": {"operates": {"qubits": [47]}, "purpose": "drive", "type": "drive"}, "d48": {"operates": {"qubits": [48]}, "purpose": "drive", "type": "drive"}, "d49": {"operates": {"qubits": [49]}, "purpose": "drive", "type": "drive"}, "d5": {"operates": {"qubits": [5]}, "purpose": "drive", "type": "drive"}, "d50": {"operates": {"qubits": [50]}, "purpose": "drive", "type": "drive"}, "d51": {"operates": {"qubits": [51]}, "purpose": "drive", "type": "drive"}, "d52": {"operates": {"qubits": [52]}, "purpose": "drive", "type": "drive"}, "d53": {"operates": {"qubits": [53]}, "purpose": "drive", "type": "drive"}, "d54": {"operates": {"qubits": [54]}, "purpose": "drive", "type": "drive"}, "d55": {"operates": {"qubits": [55]}, "purpose": "drive", "type": "drive"}, "d56": {"operates": {"qubits": [56]}, "purpose": "drive", "type": "drive"}, "d57": {"operates": {"qubits": [57]}, "purpose": "drive", "type": "drive"}, "d58": {"operates": {"qubits": [58]}, "purpose": "drive", "type": "drive"}, "d59": {"operates": {"qubits": [59]}, "purpose": "drive", "type": "drive"}, "d6": {"operates": {"qubits": [6]}, "purpose": "drive", "type": "drive"}, "d60": {"operates": {"qubits": [60]}, "purpose": "drive", "type": "drive"}, "d61": {"operates": {"qubits": [61]}, "purpose": "drive", "type": "drive"}, "d62": {"operates": {"qubits": [62]}, "purpose": "drive", "type": "drive"}, "d63": {"operates": {"qubits": [63]}, "purpose": "drive", "type": "drive"}, "d64": {"operates": {"qubits": [64]}, "purpose": "drive", "type": "drive"}, "d65": {"operates": {"qubits": [65]}, "purpose": "drive", "type": "drive"}, "d66": {"operates": {"qubits": [66]}, "purpose": "drive", "type": "drive"}, "d67": {"operates": {"qubits": [67]}, "purpose": "drive", "type": "drive"}, "d68": {"operates": {"qubits": [68]}, "purpose": "drive", "type": "drive"}, "d69": {"operates": {"qubits": [69]}, "purpose": "drive", "type": "drive"}, "d7": {"operates": {"qubits": [7]}, "purpose": "drive", "type": "drive"}, "d70": {"operates": {"qubits": [70]}, "purpose": "drive", "type": "drive"}, "d71": {"operates": {"qubits": [71]}, "purpose": "drive", "type": "drive"}, "d72": {"operates": {"qubits": [72]}, "purpose": "drive", "type": "drive"}, "d73": {"operates": {"qubits": [73]}, "purpose": "drive", "type": "drive"}, "d74": {"operates": {"qubits": [74]}, "purpose": "drive", "type": "drive"}, "d75": {"operates": {"qubits": [75]}, "purpose": "drive", "type": "drive"}, "d76": {"operates": {"qubits": [76]}, "purpose": "drive", "type": "drive"}, "d77": {"operates": {"qubits": [77]}, "purpose": "drive", "type": "drive"}, "d78": {"operates": {"qubits": [78]}, "purpose": "drive", "type": "drive"}, "d79": {"operates": {"qubits": [79]}, "purpose": "drive", "type": "drive"}, "d8": {"operates": {"qubits": [8]}, "purpose": "drive", "type": "drive"}, "d80": {"operates": {"qubits": [80]}, "purpose": "drive", "type": "drive"}, "d81": {"operates": {"qubits": [81]}, "purpose": "drive", "type": "drive"}, "d82": {"operates": {"qubits": [82]}, "purpose": "drive", "type": "drive"}, "d83": {"operates": {"qubits": [83]}, "purpose": "drive", "type": "drive"}, "d84": {"operates": {"qubits": [84]}, "purpose": "drive", "type": "drive"}, "d85": {"operates": {"qubits": [85]}, "purpose": "drive", "type": "drive"}, "d86": {"operates": {"qubits": [86]}, "purpose": "drive", "type": "drive"}, "d87": {"operates": {"qubits": [87]}, "purpose": "drive", "type": "drive"}, "d88": {"operates": {"qubits": [88]}, "purpose": "drive", "type": "drive"}, "d89": {"operates": {"qubits": [89]}, "purpose": "drive", "type": "drive"}, "d9": {"operates": {"qubits": [9]}, "purpose": "drive", "type": "drive"}, "d90": {"operates": {"qubits": [90]}, "purpose": "drive", "type": "drive"}, "d91": {"operates": {"qubits": [91]}, "purpose": "drive", "type": "drive"}, "d92": {"operates": {"qubits": [92]}, "purpose": "drive", "type": "drive"}, "d93": {"operates": {"qubits": [93]}, "purpose": "drive", "type": "drive"}, "d94": {"operates": {"qubits": [94]}, "purpose": "drive", "type": "drive"}, "d95": {"operates": {"qubits": [95]}, "purpose": "drive", "type": "drive"}, "d96": {"operates": {"qubits": [96]}, "purpose": "drive", "type": "drive"}, "d97": {"operates": {"qubits": [97]}, "purpose": "drive", "type": "drive"}, "d98": {"operates": {"qubits": [98]}, "purpose": "drive", "type": "drive"}, "d99": {"operates": {"qubits": [99]}, "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"}, "m100": {"operates": {"qubits": [100]}, "purpose": "measure", "type": "measure"}, "m101": {"operates": {"qubits": [101]}, "purpose": "measure", "type": "measure"}, "m102": {"operates": {"qubits": [102]}, "purpose": "measure", "type": "measure"}, "m103": {"operates": {"qubits": [103]}, "purpose": "measure", "type": "measure"}, "m104": {"operates": {"qubits": [104]}, "purpose": "measure", "type": "measure"}, "m105": {"operates": {"qubits": [105]}, "purpose": "measure", "type": "measure"}, "m106": {"operates": {"qubits": [106]}, "purpose": "measure", "type": "measure"}, "m107": {"operates": {"qubits": [107]}, "purpose": "measure", "type": "measure"}, "m108": {"operates": {"qubits": [108]}, "purpose": "measure", "type": "measure"}, "m109": {"operates": {"qubits": [109]}, "purpose": "measure", "type": "measure"}, "m11": {"operates": {"qubits": [11]}, "purpose": "measure", "type": "measure"}, "m110": {"operates": {"qubits": [110]}, "purpose": "measure", "type": "measure"}, "m111": {"operates": {"qubits": [111]}, "purpose": "measure", "type": "measure"}, "m112": {"operates": {"qubits": [112]}, "purpose": "measure", "type": "measure"}, "m113": {"operates": {"qubits": [113]}, "purpose": "measure", "type": "measure"}, "m114": {"operates": {"qubits": [114]}, "purpose": "measure", "type": "measure"}, "m115": {"operates": {"qubits": [115]}, "purpose": "measure", "type": "measure"}, "m116": {"operates": {"qubits": [116]}, "purpose": "measure", "type": "measure"}, "m117": {"operates": {"qubits": [117]}, "purpose": "measure", "type": "measure"}, "m118": {"operates": {"qubits": [118]}, "purpose": "measure", "type": "measure"}, "m119": {"operates": {"qubits": [119]}, "purpose": "measure", "type": "measure"}, "m12": {"operates": {"qubits": [12]}, "purpose": "measure", "type": "measure"}, "m120": {"operates": {"qubits": [120]}, "purpose": "measure", "type": "measure"}, "m121": {"operates": {"qubits": [121]}, "purpose": "measure", "type": "measure"}, "m122": {"operates": {"qubits": [122]}, "purpose": "measure", "type": "measure"}, "m123": {"operates": {"qubits": [123]}, "purpose": "measure", "type": "measure"}, "m124": {"operates": {"qubits": [124]}, "purpose": "measure", "type": "measure"}, "m125": {"operates": {"qubits": [125]}, "purpose": "measure", "type": "measure"}, "m126": {"operates": {"qubits": [126]}, "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"}, "m27": {"operates": {"qubits": [27]}, "purpose": "measure", "type": "measure"}, "m28": {"operates": {"qubits": [28]}, "purpose": "measure", "type": "measure"}, "m29": {"operates": {"qubits": [29]}, "purpose": "measure", "type": "measure"}, "m3": {"operates": {"qubits": [3]}, "purpose": "measure", "type": "measure"}, "m30": {"operates": {"qubits": [30]}, "purpose": "measure", "type": "measure"}, "m31": {"operates": {"qubits": [31]}, "purpose": "measure", "type": "measure"}, "m32": {"operates": {"qubits": [32]}, "purpose": "measure", "type": "measure"}, "m33": {"operates": {"qubits": [33]}, "purpose": "measure", "type": "measure"}, "m34": {"operates": {"qubits": [34]}, "purpose": "measure", "type": "measure"}, "m35": {"operates": {"qubits": [35]}, "purpose": "measure", "type": "measure"}, "m36": {"operates": {"qubits": [36]}, "purpose": "measure", "type": "measure"}, "m37": {"operates": {"qubits": [37]}, "purpose": "measure", "type": "measure"}, "m38": {"operates": {"qubits": [38]}, "purpose": "measure", "type": "measure"}, "m39": {"operates": {"qubits": [39]}, "purpose": "measure", "type": "measure"}, "m4": {"operates": {"qubits": [4]}, "purpose": "measure", "type": "measure"}, "m40": {"operates": {"qubits": [40]}, "purpose": "measure", "type": "measure"}, "m41": {"operates": {"qubits": [41]}, "purpose": "measure", "type": "measure"}, "m42": {"operates": {"qubits": [42]}, "purpose": "measure", "type": "measure"}, "m43": {"operates": {"qubits": [43]}, "purpose": "measure", "type": "measure"}, "m44": {"operates": {"qubits": [44]}, "purpose": "measure", "type": "measure"}, "m45": {"operates": {"qubits": [45]}, "purpose": "measure", "type": "measure"}, "m46": {"operates": {"qubits": [46]}, "purpose": "measure", "type": "measure"}, "m47": {"operates": {"qubits": [47]}, "purpose": "measure", "type": "measure"}, "m48": {"operates": {"qubits": [48]}, "purpose": "measure", "type": "measure"}, "m49": {"operates": {"qubits": [49]}, "purpose": "measure", "type": "measure"}, "m5": {"operates": {"qubits": [5]}, "purpose": "measure", "type": "measure"}, "m50": {"operates": {"qubits": [50]}, "purpose": "measure", "type": "measure"}, "m51": {"operates": {"qubits": [51]}, "purpose": "measure", "type": "measure"}, "m52": {"operates": {"qubits": [52]}, "purpose": "measure", "type": "measure"}, "m53": {"operates": {"qubits": [53]}, "purpose": "measure", "type": "measure"}, "m54": {"operates": {"qubits": [54]}, "purpose": "measure", "type": "measure"}, "m55": {"operates": {"qubits": [55]}, "purpose": "measure", "type": "measure"}, "m56": {"operates": {"qubits": [56]}, "purpose": "measure", "type": "measure"}, "m57": {"operates": {"qubits": [57]}, "purpose": "measure", "type": "measure"}, "m58": {"operates": {"qubits": [58]}, "purpose": "measure", "type": "measure"}, "m59": {"operates": {"qubits": [59]}, "purpose": "measure", "type": "measure"}, "m6": {"operates": {"qubits": [6]}, "purpose": "measure", "type": "measure"}, "m60": {"operates": {"qubits": [60]}, "purpose": "measure", "type": "measure"}, "m61": {"operates": {"qubits": [61]}, "purpose": "measure", "type": "measure"}, "m62": {"operates": {"qubits": [62]}, "purpose": "measure", "type": "measure"}, "m63": {"operates": {"qubits": [63]}, "purpose": "measure", "type": "measure"}, "m64": {"operates": {"qubits": [64]}, "purpose": "measure", "type": "measure"}, "m65": {"operates": {"qubits": [65]}, "purpose": "measure", "type": "measure"}, "m66": {"operates": {"qubits": [66]}, "purpose": "measure", "type": "measure"}, "m67": {"operates": {"qubits": [67]}, "purpose": "measure", "type": "measure"}, "m68": {"operates": {"qubits": [68]}, "purpose": "measure", "type": "measure"}, "m69": {"operates": {"qubits": [69]}, "purpose": "measure", "type": "measure"}, "m7": {"operates": {"qubits": [7]}, "purpose": "measure", "type": "measure"}, "m70": {"operates": {"qubits": [70]}, "purpose": "measure", "type": "measure"}, "m71": {"operates": {"qubits": [71]}, "purpose": "measure", "type": "measure"}, "m72": {"operates": {"qubits": [72]}, "purpose": "measure", "type": "measure"}, "m73": {"operates": {"qubits": [73]}, "purpose": "measure", "type": "measure"}, "m74": {"operates": {"qubits": [74]}, "purpose": "measure", "type": "measure"}, "m75": {"operates": {"qubits": [75]}, "purpose": "measure", "type": "measure"}, "m76": {"operates": {"qubits": [76]}, "purpose": "measure", "type": "measure"}, "m77": {"operates": {"qubits": [77]}, "purpose": "measure", "type": "measure"}, "m78": {"operates": {"qubits": [78]}, "purpose": "measure", "type": "measure"}, "m79": {"operates": {"qubits": [79]}, "purpose": "measure", "type": "measure"}, "m8": {"operates": {"qubits": [8]}, "purpose": "measure", "type": "measure"}, "m80": {"operates": {"qubits": [80]}, "purpose": "measure", "type": "measure"}, "m81": {"operates": {"qubits": [81]}, "purpose": "measure", "type": "measure"}, "m82": {"operates": {"qubits": [82]}, "purpose": "measure", "type": "measure"}, "m83": {"operates": {"qubits": [83]}, "purpose": "measure", "type": "measure"}, "m84": {"operates": {"qubits": [84]}, "purpose": "measure", "type": "measure"}, "m85": {"operates": {"qubits": [85]}, "purpose": "measure", "type": "measure"}, "m86": {"operates": {"qubits": [86]}, "purpose": "measure", "type": "measure"}, "m87": {"operates": {"qubits": [87]}, "purpose": "measure", "type": "measure"}, "m88": {"operates": {"qubits": [88]}, "purpose": "measure", "type": "measure"}, "m89": {"operates": {"qubits": [89]}, "purpose": "measure", "type": "measure"}, "m9": {"operates": {"qubits": [9]}, "purpose": "measure", "type": "measure"}, "m90": {"operates": {"qubits": [90]}, "purpose": "measure", "type": "measure"}, "m91": {"operates": {"qubits": [91]}, "purpose": "measure", "type": "measure"}, "m92": {"operates": {"qubits": [92]}, "purpose": "measure", "type": "measure"}, "m93": {"operates": {"qubits": [93]}, "purpose": "measure", "type": "measure"}, "m94": {"operates": {"qubits": [94]}, "purpose": "measure", "type": "measure"}, "m95": {"operates": {"qubits": [95]}, "purpose": "measure", "type": "measure"}, "m96": {"operates": {"qubits": [96]}, "purpose": "measure", "type": "measure"}, "m97": {"operates": {"qubits": [97]}, "purpose": "measure", "type": "measure"}, "m98": {"operates": {"qubits": [98]}, "purpose": "measure", "type": "measure"}, "m99": {"operates": {"qubits": [99]}, "purpose": "measure", "type": "measure"}, "u0": {"operates": {"qubits": [0, 1]}, "purpose": "cross-resonance", "type": "control"}, "u1": {"operates": {"qubits": [0, 14]}, "purpose": "cross-resonance", "type": "control"}, "u10": {"operates": {"qubits": [4, 15]}, "purpose": "cross-resonance", "type": "control"}, "u100": {"operates": {"qubits": [45, 46]}, "purpose": "cross-resonance", "type": "control"}, "u101": {"operates": {"qubits": [45, 54]}, "purpose": "cross-resonance", "type": "control"}, "u102": {"operates": {"qubits": [46, 45]}, "purpose": "cross-resonance", "type": "control"}, "u103": {"operates": {"qubits": [46, 47]}, "purpose": "cross-resonance", "type": "control"}, "u104": {"operates": {"qubits": [47, 35]}, "purpose": "cross-resonance", "type": "control"}, "u105": {"operates": {"qubits": [47, 46]}, "purpose": "cross-resonance", "type": "control"}, "u106": {"operates": {"qubits": [47, 48]}, "purpose": "cross-resonance", "type": "control"}, "u107": {"operates": {"qubits": [48, 47]}, "purpose": "cross-resonance", "type": "control"}, "u108": {"operates": {"qubits": [48, 49]}, "purpose": "cross-resonance", "type": "control"}, "u109": {"operates": {"qubits": [49, 48]}, "purpose": "cross-resonance", "type": "control"}, "u11": {"operates": {"qubits": [5, 4]}, "purpose": "cross-resonance", "type": "control"}, "u110": {"operates": {"qubits": [49, 50]}, "purpose": "cross-resonance", "type": "control"}, "u111": {"operates": {"qubits": [49, 55]}, "purpose": "cross-resonance", "type": "control"}, "u112": {"operates": {"qubits": [50, 49]}, "purpose": "cross-resonance", "type": "control"}, "u113": {"operates": {"qubits": [50, 51]}, "purpose": "cross-resonance", "type": "control"}, "u114": {"operates": {"qubits": [51, 36]}, "purpose": "cross-resonance", "type": "control"}, "u115": {"operates": {"qubits": [51, 50]}, "purpose": "cross-resonance", "type": "control"}, "u116": {"operates": {"qubits": [52, 37]}, "purpose": "cross-resonance", "type": "control"}, "u117": {"operates": {"qubits": [52, 56]}, "purpose": "cross-resonance", "type": "control"}, "u118": {"operates": {"qubits": [53, 41]}, "purpose": "cross-resonance", "type": "control"}, "u119": {"operates": {"qubits": [53, 60]}, "purpose": "cross-resonance", "type": "control"}, "u12": {"operates": {"qubits": [5, 6]}, "purpose": "cross-resonance", "type": "control"}, "u120": {"operates": {"qubits": [54, 45]}, "purpose": "cross-resonance", "type": "control"}, "u121": {"operates": {"qubits": [54, 64]}, "purpose": "cross-resonance", "type": "control"}, "u122": {"operates": {"qubits": [55, 49]}, "purpose": "cross-resonance", "type": "control"}, "u123": {"operates": {"qubits": [55, 68]}, "purpose": "cross-resonance", "type": "control"}, "u124": {"operates": {"qubits": [56, 52]}, "purpose": "cross-resonance", "type": "control"}, "u125": {"operates": {"qubits": [56, 57]}, "purpose": "cross-resonance", "type": "control"}, "u126": {"operates": {"qubits": [57, 56]}, "purpose": "cross-resonance", "type": "control"}, "u127": {"operates": {"qubits": [57, 58]}, "purpose": "cross-resonance", "type": "control"}, "u128": {"operates": {"qubits": [58, 57]}, "purpose": "cross-resonance", "type": "control"}, "u129": {"operates": {"qubits": [58, 59]}, "purpose": "cross-resonance", "type": "control"}, "u13": {"operates": {"qubits": [6, 5]}, "purpose": "cross-resonance", "type": "control"}, "u130": {"operates": {"qubits": [58, 71]}, "purpose": "cross-resonance", "type": "control"}, "u131": {"operates": {"qubits": [59, 58]}, "purpose": "cross-resonance", "type": "control"}, "u132": {"operates": {"qubits": [59, 60]}, "purpose": "cross-resonance", "type": "control"}, "u133": {"operates": {"qubits": [60, 53]}, "purpose": "cross-resonance", "type": "control"}, "u134": {"operates": {"qubits": [60, 59]}, "purpose": "cross-resonance", "type": "control"}, "u135": {"operates": {"qubits": [60, 61]}, "purpose": "cross-resonance", "type": "control"}, "u136": {"operates": {"qubits": [61, 60]}, "purpose": "cross-resonance", "type": "control"}, "u137": {"operates": {"qubits": [61, 62]}, "purpose": "cross-resonance", "type": "control"}, "u138": {"operates": {"qubits": [62, 61]}, "purpose": "cross-resonance", "type": "control"}, "u139": {"operates": {"qubits": [62, 63]}, "purpose": "cross-resonance", "type": "control"}, "u14": {"operates": {"qubits": [6, 7]}, "purpose": "cross-resonance", "type": "control"}, "u140": {"operates": {"qubits": [62, 72]}, "purpose": "cross-resonance", "type": "control"}, "u141": {"operates": {"qubits": [63, 62]}, "purpose": "cross-resonance", "type": "control"}, "u142": {"operates": {"qubits": [63, 64]}, "purpose": "cross-resonance", "type": "control"}, "u143": {"operates": {"qubits": [64, 54]}, "purpose": "cross-resonance", "type": "control"}, "u144": {"operates": {"qubits": [64, 63]}, "purpose": "cross-resonance", "type": "control"}, "u145": {"operates": {"qubits": [64, 65]}, "purpose": "cross-resonance", "type": "control"}, "u146": {"operates": {"qubits": [65, 64]}, "purpose": "cross-resonance", "type": "control"}, "u147": {"operates": {"qubits": [65, 66]}, "purpose": "cross-resonance", "type": "control"}, "u148": {"operates": {"qubits": [66, 65]}, "purpose": "cross-resonance", "type": "control"}, "u149": {"operates": {"qubits": [66, 67]}, "purpose": "cross-resonance", "type": "control"}, "u15": {"operates": {"qubits": [7, 6]}, "purpose": "cross-resonance", "type": "control"}, "u150": {"operates": {"qubits": [66, 73]}, "purpose": "cross-resonance", "type": "control"}, "u151": {"operates": {"qubits": [67, 66]}, "purpose": "cross-resonance", "type": "control"}, "u152": {"operates": {"qubits": [67, 68]}, "purpose": "cross-resonance", "type": "control"}, "u153": {"operates": {"qubits": [68, 55]}, "purpose": "cross-resonance", "type": "control"}, "u154": {"operates": {"qubits": [68, 67]}, "purpose": "cross-resonance", "type": "control"}, "u155": {"operates": {"qubits": [68, 69]}, "purpose": "cross-resonance", "type": "control"}, "u156": {"operates": {"qubits": [69, 68]}, "purpose": "cross-resonance", "type": "control"}, "u157": {"operates": {"qubits": [69, 70]}, "purpose": "cross-resonance", "type": "control"}, "u158": {"operates": {"qubits": [70, 69]}, "purpose": "cross-resonance", "type": "control"}, "u159": {"operates": {"qubits": [70, 74]}, "purpose": "cross-resonance", "type": "control"}, "u16": {"operates": {"qubits": [7, 8]}, "purpose": "cross-resonance", "type": "control"}, "u160": {"operates": {"qubits": [71, 58]}, "purpose": "cross-resonance", "type": "control"}, "u161": {"operates": {"qubits": [71, 77]}, "purpose": "cross-resonance", "type": "control"}, "u162": {"operates": {"qubits": [72, 62]}, "purpose": "cross-resonance", "type": "control"}, "u163": {"operates": {"qubits": [72, 81]}, "purpose": "cross-resonance", "type": "control"}, "u164": {"operates": {"qubits": [73, 66]}, "purpose": "cross-resonance", "type": "control"}, "u165": {"operates": {"qubits": [73, 85]}, "purpose": "cross-resonance", "type": "control"}, "u166": {"operates": {"qubits": [74, 70]}, "purpose": "cross-resonance", "type": "control"}, "u167": {"operates": {"qubits": [74, 89]}, "purpose": "cross-resonance", "type": "control"}, "u168": {"operates": {"qubits": [75, 76]}, "purpose": "cross-resonance", "type": "control"}, "u169": {"operates": {"qubits": [75, 90]}, "purpose": "cross-resonance", "type": "control"}, "u17": {"operates": {"qubits": [8, 7]}, "purpose": "cross-resonance", "type": "control"}, "u170": {"operates": {"qubits": [76, 75]}, "purpose": "cross-resonance", "type": "control"}, "u171": {"operates": {"qubits": [76, 77]}, "purpose": "cross-resonance", "type": "control"}, "u172": {"operates": {"qubits": [77, 71]}, "purpose": "cross-resonance", "type": "control"}, "u173": {"operates": {"qubits": [77, 76]}, "purpose": "cross-resonance", "type": "control"}, "u174": {"operates": {"qubits": [77, 78]}, "purpose": "cross-resonance", "type": "control"}, "u175": {"operates": {"qubits": [78, 77]}, "purpose": "cross-resonance", "type": "control"}, "u176": {"operates": {"qubits": [78, 79]}, "purpose": "cross-resonance", "type": "control"}, "u177": {"operates": {"qubits": [79, 78]}, "purpose": "cross-resonance", "type": "control"}, "u178": {"operates": {"qubits": [79, 80]}, "purpose": "cross-resonance", "type": "control"}, "u179": {"operates": {"qubits": [79, 91]}, "purpose": "cross-resonance", "type": "control"}, "u18": {"operates": {"qubits": [8, 16]}, "purpose": "cross-resonance", "type": "control"}, "u180": {"operates": {"qubits": [80, 79]}, "purpose": "cross-resonance", "type": "control"}, "u181": {"operates": {"qubits": [80, 81]}, "purpose": "cross-resonance", "type": "control"}, "u182": {"operates": {"qubits": [81, 72]}, "purpose": "cross-resonance", "type": "control"}, "u183": {"operates": {"qubits": [81, 80]}, "purpose": "cross-resonance", "type": "control"}, "u184": {"operates": {"qubits": [81, 82]}, "purpose": "cross-resonance", "type": "control"}, "u185": {"operates": {"qubits": [82, 81]}, "purpose": "cross-resonance", "type": "control"}, "u186": {"operates": {"qubits": [82, 83]}, "purpose": "cross-resonance", "type": "control"}, "u187": {"operates": {"qubits": [83, 82]}, "purpose": "cross-resonance", "type": "control"}, "u188": {"operates": {"qubits": [83, 84]}, "purpose": "cross-resonance", "type": "control"}, "u189": {"operates": {"qubits": [83, 92]}, "purpose": "cross-resonance", "type": "control"}, "u19": {"operates": {"qubits": [9, 10]}, "purpose": "cross-resonance", "type": "control"}, "u190": {"operates": {"qubits": [84, 83]}, "purpose": "cross-resonance", "type": "control"}, "u191": {"operates": {"qubits": [84, 85]}, "purpose": "cross-resonance", "type": "control"}, "u192": {"operates": {"qubits": [85, 73]}, "purpose": "cross-resonance", "type": "control"}, "u193": {"operates": {"qubits": [85, 84]}, "purpose": "cross-resonance", "type": "control"}, "u194": {"operates": {"qubits": [85, 86]}, "purpose": "cross-resonance", "type": "control"}, "u195": {"operates": {"qubits": [86, 85]}, "purpose": "cross-resonance", "type": "control"}, "u196": {"operates": {"qubits": [86, 87]}, "purpose": "cross-resonance", "type": "control"}, "u197": {"operates": {"qubits": [87, 86]}, "purpose": "cross-resonance", "type": "control"}, "u198": {"operates": {"qubits": [87, 88]}, "purpose": "cross-resonance", "type": "control"}, "u199": {"operates": {"qubits": [87, 93]}, "purpose": "cross-resonance", "type": "control"}, "u2": {"operates": {"qubits": [1, 0]}, "purpose": "cross-resonance", "type": "control"}, "u20": {"operates": {"qubits": [10, 9]}, "purpose": "cross-resonance", "type": "control"}, "u200": {"operates": {"qubits": [88, 87]}, "purpose": "cross-resonance", "type": "control"}, "u201": {"operates": {"qubits": [88, 89]}, "purpose": "cross-resonance", "type": "control"}, "u202": {"operates": {"qubits": [89, 74]}, "purpose": "cross-resonance", "type": "control"}, "u203": {"operates": {"qubits": [89, 88]}, "purpose": "cross-resonance", "type": "control"}, "u204": {"operates": {"qubits": [90, 75]}, "purpose": "cross-resonance", "type": "control"}, "u205": {"operates": {"qubits": [90, 94]}, "purpose": "cross-resonance", "type": "control"}, "u206": {"operates": {"qubits": [91, 79]}, "purpose": "cross-resonance", "type": "control"}, "u207": {"operates": {"qubits": [91, 98]}, "purpose": "cross-resonance", "type": "control"}, "u208": {"operates": {"qubits": [92, 83]}, "purpose": "cross-resonance", "type": "control"}, "u209": {"operates": {"qubits": [92, 102]}, "purpose": "cross-resonance", "type": "control"}, "u21": {"operates": {"qubits": [10, 11]}, "purpose": "cross-resonance", "type": "control"}, "u210": {"operates": {"qubits": [93, 87]}, "purpose": "cross-resonance", "type": "control"}, "u211": {"operates": {"qubits": [93, 106]}, "purpose": "cross-resonance", "type": "control"}, "u212": {"operates": {"qubits": [94, 90]}, "purpose": "cross-resonance", "type": "control"}, "u213": {"operates": {"qubits": [94, 95]}, "purpose": "cross-resonance", "type": "control"}, "u214": {"operates": {"qubits": [95, 94]}, "purpose": "cross-resonance", "type": "control"}, "u215": {"operates": {"qubits": [95, 96]}, "purpose": "cross-resonance", "type": "control"}, "u216": {"operates": {"qubits": [96, 95]}, "purpose": "cross-resonance", "type": "control"}, "u217": {"operates": {"qubits": [96, 97]}, "purpose": "cross-resonance", "type": "control"}, "u218": {"operates": {"qubits": [96, 109]}, "purpose": "cross-resonance", "type": "control"}, "u219": {"operates": {"qubits": [97, 96]}, "purpose": "cross-resonance", "type": "control"}, "u22": {"operates": {"qubits": [11, 10]}, "purpose": "cross-resonance", "type": "control"}, "u220": {"operates": {"qubits": [97, 98]}, "purpose": "cross-resonance", "type": "control"}, "u221": {"operates": {"qubits": [98, 91]}, "purpose": "cross-resonance", "type": "control"}, "u222": {"operates": {"qubits": [98, 97]}, "purpose": "cross-resonance", "type": "control"}, "u223": {"operates": {"qubits": [98, 99]}, "purpose": "cross-resonance", "type": "control"}, "u224": {"operates": {"qubits": [99, 98]}, "purpose": "cross-resonance", "type": "control"}, "u225": {"operates": {"qubits": [99, 100]}, "purpose": "cross-resonance", "type": "control"}, "u226": {"operates": {"qubits": [100, 99]}, "purpose": "cross-resonance", "type": "control"}, "u227": {"operates": {"qubits": [100, 101]}, "purpose": "cross-resonance", "type": "control"}, "u228": {"operates": {"qubits": [100, 110]}, "purpose": "cross-resonance", "type": "control"}, "u229": {"operates": {"qubits": [101, 100]}, "purpose": "cross-resonance", "type": "control"}, "u23": {"operates": {"qubits": [11, 12]}, "purpose": "cross-resonance", "type": "control"}, "u230": {"operates": {"qubits": [101, 102]}, "purpose": "cross-resonance", "type": "control"}, "u231": {"operates": {"qubits": [102, 92]}, "purpose": "cross-resonance", "type": "control"}, "u232": {"operates": {"qubits": [102, 101]}, "purpose": "cross-resonance", "type": "control"}, "u233": {"operates": {"qubits": [102, 103]}, "purpose": "cross-resonance", "type": "control"}, "u234": {"operates": {"qubits": [103, 102]}, "purpose": "cross-resonance", "type": "control"}, "u235": {"operates": {"qubits": [103, 104]}, "purpose": "cross-resonance", "type": "control"}, "u236": {"operates": {"qubits": [104, 103]}, "purpose": "cross-resonance", "type": "control"}, "u237": {"operates": {"qubits": [104, 105]}, "purpose": "cross-resonance", "type": "control"}, "u238": {"operates": {"qubits": [104, 111]}, "purpose": "cross-resonance", "type": "control"}, "u239": {"operates": {"qubits": [105, 104]}, "purpose": "cross-resonance", "type": "control"}, "u24": {"operates": {"qubits": [12, 11]}, "purpose": "cross-resonance", "type": "control"}, "u240": {"operates": {"qubits": [105, 106]}, "purpose": "cross-resonance", "type": "control"}, "u241": {"operates": {"qubits": [106, 93]}, "purpose": "cross-resonance", "type": "control"}, "u242": {"operates": {"qubits": [106, 105]}, "purpose": "cross-resonance", "type": "control"}, "u243": {"operates": {"qubits": [106, 107]}, "purpose": "cross-resonance", "type": "control"}, "u244": {"operates": {"qubits": [107, 106]}, "purpose": "cross-resonance", "type": "control"}, "u245": {"operates": {"qubits": [107, 108]}, "purpose": "cross-resonance", "type": "control"}, "u246": {"operates": {"qubits": [108, 107]}, "purpose": "cross-resonance", "type": "control"}, "u247": {"operates": {"qubits": [108, 112]}, "purpose": "cross-resonance", "type": "control"}, "u248": {"operates": {"qubits": [109, 96]}, "purpose": "cross-resonance", "type": "control"}, "u249": {"operates": {"qubits": [110, 100]}, "purpose": "cross-resonance", "type": "control"}, "u25": {"operates": {"qubits": [12, 13]}, "purpose": "cross-resonance", "type": "control"}, "u250": {"operates": {"qubits": [110, 118]}, "purpose": "cross-resonance", "type": "control"}, "u251": {"operates": {"qubits": [111, 104]}, "purpose": "cross-resonance", "type": "control"}, "u252": {"operates": {"qubits": [111, 122]}, "purpose": "cross-resonance", "type": "control"}, "u253": {"operates": {"qubits": [112, 108]}, "purpose": "cross-resonance", "type": "control"}, "u254": {"operates": {"qubits": [112, 126]}, "purpose": "cross-resonance", "type": "control"}, "u255": {"operates": {"qubits": [113, 114]}, "purpose": "cross-resonance", "type": "control"}, "u256": {"operates": {"qubits": [114, 113]}, "purpose": "cross-resonance", "type": "control"}, "u257": {"operates": {"qubits": [114, 115]}, "purpose": "cross-resonance", "type": "control"}, "u258": {"operates": {"qubits": [115, 114]}, "purpose": "cross-resonance", "type": "control"}, "u259": {"operates": {"qubits": [115, 116]}, "purpose": "cross-resonance", "type": "control"}, "u26": {"operates": {"qubits": [12, 17]}, "purpose": "cross-resonance", "type": "control"}, "u260": {"operates": {"qubits": [116, 115]}, "purpose": "cross-resonance", "type": "control"}, "u261": {"operates": {"qubits": [116, 117]}, "purpose": "cross-resonance", "type": "control"}, "u262": {"operates": {"qubits": [117, 116]}, "purpose": "cross-resonance", "type": "control"}, "u263": {"operates": {"qubits": [117, 118]}, "purpose": "cross-resonance", "type": "control"}, "u264": {"operates": {"qubits": [118, 110]}, "purpose": "cross-resonance", "type": "control"}, "u265": {"operates": {"qubits": [118, 117]}, "purpose": "cross-resonance", "type": "control"}, "u266": {"operates": {"qubits": [118, 119]}, "purpose": "cross-resonance", "type": "control"}, "u267": {"operates": {"qubits": [119, 118]}, "purpose": "cross-resonance", "type": "control"}, "u268": {"operates": {"qubits": [119, 120]}, "purpose": "cross-resonance", "type": "control"}, "u269": {"operates": {"qubits": [120, 119]}, "purpose": "cross-resonance", "type": "control"}, "u27": {"operates": {"qubits": [13, 12]}, "purpose": "cross-resonance", "type": "control"}, "u270": {"operates": {"qubits": [120, 121]}, "purpose": "cross-resonance", "type": "control"}, "u271": {"operates": {"qubits": [121, 120]}, "purpose": "cross-resonance", "type": "control"}, "u272": {"operates": {"qubits": [121, 122]}, "purpose": "cross-resonance", "type": "control"}, "u273": {"operates": {"qubits": [122, 111]}, "purpose": "cross-resonance", "type": "control"}, "u274": {"operates": {"qubits": [122, 121]}, "purpose": "cross-resonance", "type": "control"}, "u275": {"operates": {"qubits": [122, 123]}, "purpose": "cross-resonance", "type": "control"}, "u276": {"operates": {"qubits": [123, 122]}, "purpose": "cross-resonance", "type": "control"}, "u277": {"operates": {"qubits": [123, 124]}, "purpose": "cross-resonance", "type": "control"}, "u278": {"operates": {"qubits": [124, 123]}, "purpose": "cross-resonance", "type": "control"}, "u279": {"operates": {"qubits": [124, 125]}, "purpose": "cross-resonance", "type": "control"}, "u28": {"operates": {"qubits": [14, 0]}, "purpose": "cross-resonance", "type": "control"}, "u280": {"operates": {"qubits": [125, 124]}, "purpose": "cross-resonance", "type": "control"}, "u281": {"operates": {"qubits": [125, 126]}, "purpose": "cross-resonance", "type": "control"}, "u282": {"operates": {"qubits": [126, 112]}, "purpose": "cross-resonance", "type": "control"}, "u283": {"operates": {"qubits": [126, 125]}, "purpose": "cross-resonance", "type": "control"}, "u29": {"operates": {"qubits": [14, 18]}, "purpose": "cross-resonance", "type": "control"}, "u3": {"operates": {"qubits": [1, 2]}, "purpose": "cross-resonance", "type": "control"}, "u30": {"operates": {"qubits": [15, 4]}, "purpose": "cross-resonance", "type": "control"}, "u31": {"operates": {"qubits": [15, 22]}, "purpose": "cross-resonance", "type": "control"}, "u32": {"operates": {"qubits": [16, 8]}, "purpose": "cross-resonance", "type": "control"}, "u33": {"operates": {"qubits": [16, 26]}, "purpose": "cross-resonance", "type": "control"}, "u34": {"operates": {"qubits": [17, 12]}, "purpose": "cross-resonance", "type": "control"}, "u35": {"operates": {"qubits": [17, 30]}, "purpose": "cross-resonance", "type": "control"}, "u36": {"operates": {"qubits": [18, 14]}, "purpose": "cross-resonance", "type": "control"}, "u37": {"operates": {"qubits": [18, 19]}, "purpose": "cross-resonance", "type": "control"}, "u38": {"operates": {"qubits": [19, 18]}, "purpose": "cross-resonance", "type": "control"}, "u39": {"operates": {"qubits": [19, 20]}, "purpose": "cross-resonance", "type": "control"}, "u4": {"operates": {"qubits": [2, 1]}, "purpose": "cross-resonance", "type": "control"}, "u40": {"operates": {"qubits": [20, 19]}, "purpose": "cross-resonance", "type": "control"}, "u41": {"operates": {"qubits": [20, 21]}, "purpose": "cross-resonance", "type": "control"}, "u42": {"operates": {"qubits": [20, 33]}, "purpose": "cross-resonance", "type": "control"}, "u43": {"operates": {"qubits": [21, 20]}, "purpose": "cross-resonance", "type": "control"}, "u44": {"operates": {"qubits": [21, 22]}, "purpose": "cross-resonance", "type": "control"}, "u45": {"operates": {"qubits": [22, 15]}, "purpose": "cross-resonance", "type": "control"}, "u46": {"operates": {"qubits": [22, 21]}, "purpose": "cross-resonance", "type": "control"}, "u47": {"operates": {"qubits": [22, 23]}, "purpose": "cross-resonance", "type": "control"}, "u48": {"operates": {"qubits": [23, 22]}, "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": [24, 34]}, "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, 16]}, "purpose": "cross-resonance", "type": "control"}, "u56": {"operates": {"qubits": [26, 25]}, "purpose": "cross-resonance", "type": "control"}, "u57": {"operates": {"qubits": [26, 27]}, "purpose": "cross-resonance", "type": "control"}, "u58": {"operates": {"qubits": [27, 26]}, "purpose": "cross-resonance", "type": "control"}, "u59": {"operates": {"qubits": [27, 28]}, "purpose": "cross-resonance", "type": "control"}, "u6": {"operates": {"qubits": [3, 2]}, "purpose": "cross-resonance", "type": "control"}, "u60": {"operates": {"qubits": [28, 27]}, "purpose": "cross-resonance", "type": "control"}, "u61": {"operates": {"qubits": [28, 29]}, "purpose": "cross-resonance", "type": "control"}, "u62": {"operates": {"qubits": [28, 35]}, "purpose": "cross-resonance", "type": "control"}, "u63": {"operates": {"qubits": [29, 28]}, "purpose": "cross-resonance", "type": "control"}, "u64": {"operates": {"qubits": [29, 30]}, "purpose": "cross-resonance", "type": "control"}, "u65": {"operates": {"qubits": [30, 17]}, "purpose": "cross-resonance", "type": "control"}, "u66": {"operates": {"qubits": [30, 29]}, "purpose": "cross-resonance", "type": "control"}, "u67": {"operates": {"qubits": [30, 31]}, "purpose": "cross-resonance", "type": "control"}, "u68": {"operates": {"qubits": [31, 30]}, "purpose": "cross-resonance", "type": "control"}, "u69": {"operates": {"qubits": [31, 32]}, "purpose": "cross-resonance", "type": "control"}, "u7": {"operates": {"qubits": [3, 4]}, "purpose": "cross-resonance", "type": "control"}, "u70": {"operates": {"qubits": [32, 31]}, "purpose": "cross-resonance", "type": "control"}, "u71": {"operates": {"qubits": [32, 36]}, "purpose": "cross-resonance", "type": "control"}, "u72": {"operates": {"qubits": [33, 20]}, "purpose": "cross-resonance", "type": "control"}, "u73": {"operates": {"qubits": [33, 39]}, "purpose": "cross-resonance", "type": "control"}, "u74": {"operates": {"qubits": [34, 24]}, "purpose": "cross-resonance", "type": "control"}, "u75": {"operates": {"qubits": [34, 43]}, "purpose": "cross-resonance", "type": "control"}, "u76": {"operates": {"qubits": [35, 28]}, "purpose": "cross-resonance", "type": "control"}, "u77": {"operates": {"qubits": [35, 47]}, "purpose": "cross-resonance", "type": "control"}, "u78": {"operates": {"qubits": [36, 32]}, "purpose": "cross-resonance", "type": "control"}, "u79": {"operates": {"qubits": [36, 51]}, "purpose": "cross-resonance", "type": "control"}, "u8": {"operates": {"qubits": [4, 3]}, "purpose": "cross-resonance", "type": "control"}, "u80": {"operates": {"qubits": [37, 38]}, "purpose": "cross-resonance", "type": "control"}, "u81": {"operates": {"qubits": [37, 52]}, "purpose": "cross-resonance", "type": "control"}, "u82": {"operates": {"qubits": [38, 37]}, "purpose": "cross-resonance", "type": "control"}, "u83": {"operates": {"qubits": [38, 39]}, "purpose": "cross-resonance", "type": "control"}, "u84": {"operates": {"qubits": [39, 33]}, "purpose": "cross-resonance", "type": "control"}, "u85": {"operates": {"qubits": [39, 38]}, "purpose": "cross-resonance", "type": "control"}, "u86": {"operates": {"qubits": [39, 40]}, "purpose": "cross-resonance", "type": "control"}, "u87": {"operates": {"qubits": [40, 39]}, "purpose": "cross-resonance", "type": "control"}, "u88": {"operates": {"qubits": [40, 41]}, "purpose": "cross-resonance", "type": "control"}, "u89": {"operates": {"qubits": [41, 40]}, "purpose": "cross-resonance", "type": "control"}, "u9": {"operates": {"qubits": [4, 5]}, "purpose": "cross-resonance", "type": "control"}, "u90": {"operates": {"qubits": [41, 42]}, "purpose": "cross-resonance", "type": "control"}, "u91": {"operates": {"qubits": [41, 53]}, "purpose": "cross-resonance", "type": "control"}, "u92": {"operates": {"qubits": [42, 41]}, "purpose": "cross-resonance", "type": "control"}, "u93": {"operates": {"qubits": [42, 43]}, "purpose": "cross-resonance", "type": "control"}, "u94": {"operates": {"qubits": [43, 34]}, "purpose": "cross-resonance", "type": "control"}, "u95": {"operates": {"qubits": [43, 42]}, "purpose": "cross-resonance", "type": "control"}, "u96": {"operates": {"qubits": [43, 44]}, "purpose": "cross-resonance", "type": "control"}, "u97": {"operates": {"qubits": [44, 43]}, "purpose": "cross-resonance", "type": "control"}, "u98": {"operates": {"qubits": [44, 45]}, "purpose": "cross-resonance", "type": "control"}, "u99": {"operates": {"qubits": [45, 44]}, "purpose": "cross-resonance", "type": "control"}}} \ No newline at end of file diff --git a/qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/defs_washington.json b/qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/defs_washington.json deleted file mode 100644 index 3651c3b107fd..000000000000 --- a/qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/defs_washington.json +++ /dev/null @@ -1 +0,0 @@ -{"qubit_freq_est": [5.087824350874885, 4.980901514685951, 4.891702218592115, 4.9444585142828075, 4.98431489750368, 4.882304939612839, 4.968632496684476, 5.015141130180365, 5.111107000814732, 4.969961141430453, 4.876236162210333, 5.127258209921372, 4.830399938466667, 4.950285449243983, 4.9952779469569215, 5.117992551750363, 4.917841896617579, 5.003119694195752, 4.865532095997974, 5.103540605832302, 4.901752355744929, 5.039671730454215, 4.9727650011162305, 5.033362348492518, 4.767135320989823, 4.87009160939394, 4.999176398427699, 5.076929641593295, 5.1982908314560525, 4.994033598302923, 5.083412759689636, 5.129462319531657, 5.204146892421287, 4.952689741086457, 4.936810364073245, 5.074211948853692, 5.102037772648568, 5.169912726493731, 5.10591860635811, 5.017721503796682, 5.162743583215261, 5.0930762619292125, 4.9254247350159295, 5.0332800992576345, 5.116093607546647, 4.879817076512298, 5.144953191921095, 5.001218860751744, 4.933996639186529, 5.116377346401518, 5.017681444153948, 5.2087974894294415, 5.015740608254556, 5.048027704064221, 5.026427678168784, 5.197455254932549, 5.187991750356475, 5.093296222883172, 4.96489582705621, 5.019051421647695, 5.141155962810145, 4.875133856398962, 4.96110957527232, 5.044541513646728, 5.258205194263763, 5.100989285863291, 5.237195247243983, 4.912092379869785, 5.135519196588795, 4.943793362347639, 5.154609713802475, 5.11737756179788, 5.144682424408957, 5.018882135225528, 4.87431877527336, 5.007972184984558, 4.903715871736079, 5.071065916776435, 5.277313452094319, 5.017443628214384, 5.081023026790399, 4.944680717888667, 5.079891410859493, 5.052386435439891, 4.908935748495378, 5.092091999790578, 4.930910284653366, 5.195160700948685, 5.097143114803176, 4.95779764124521, 5.256398741273999, 5.057143169722408, 5.12364557820648, 5.139903178299379, 5.176148306630854, 5.220594257519045, 5.141883422445972, 5.05175144306341, 5.123686027496476, 5.1749719826365626, 5.0282655137668195, 5.095164314904394, 4.984550747011607, 5.226854129683186, 5.134909475114922, 4.985044881402859, 5.040239775957792, 5.12150306992114, 5.253516462743983, 4.997392066338402, 5.291579200368684, 5.191230179718276, 5.216078728309004, 5.170132593962133, 5.273695587040669, 5.122112629859396, 5.016868785002357, 5.233669518732525, 5.114385740568254, 5.274339315768484, 5.083501964940935, 4.996218903141436, 5.268635018486352, 5.108097954495629, 5.24407272505404, 5.037262922433084, 5.1649103635824565], "meas_freq_est": [7.032582196000001, 6.970907966, 7.086376109000001, 7.032780735, 6.967206413, 7.075791913000001, 6.649490342, 7.029456802, 7.140570810000001, 7.195625624000001, 7.086392794000001, 6.657557290000001, 7.136338842000001, 7.027465245, 6.9874229240000005, 7.140833522, 6.7722374720000005, 6.7549666870000005, 7.152800212000001, 7.196856589, 6.661956542, 6.727848791, 6.776508491, 7.188059209, 6.719309186, 7.077292457, 7.02594414, 6.822749552, 7.089231925000001, 6.720096703, 7.023525474, 7.138137172, 6.657870016, 6.8349330450000005, 6.824045843, 6.973603248000001, 6.720293821, 6.774960019000001, 7.085403471, 6.832049926000001, 6.972905692, 7.0904199000000006, 7.033906238, 6.964964934, 7.192276221, 6.646101571, 7.140577046000001, 7.193564348000001, 6.8302114000000005, 7.081087136000001, 7.0233057940000005, 6.766999129, 6.712234832, 6.653364049, 6.721228172, 7.131733711000001, 6.981817739, 6.655410486, 7.195469182, 6.826690675, 6.726779595, 7.143382052000001, 6.827756708000001, 6.969627816, 7.088634841, 6.771093394, 6.967198101, 7.1882672030000005, 6.6573386690000005, 6.722540787000001, 6.7658035530000005, 7.025998105, 6.7735541040000005, 7.027009669000001, 7.013044302000001, 6.770182279, 7.087495045000001, 7.144889406000001, 6.832954721, 6.969728935, 7.0909187970000005, 7.028056673, 7.139931353000001, 7.190161725, 6.649558896, 7.134987731000001, 6.773125565000001, 6.83324159, 7.084449039000001, 7.131255778000001, 6.6615699710000005, 7.188565474000001, 6.830128897000001, 6.964142584, 7.020725383, 7.14569147, 6.825452641, 6.969138089, 6.830008064, 6.658081129, 6.769754194000001, 7.027164843, 6.9610111980000005, 6.720889474000001, 7.030364523, 7.133458459000001, 7.181903497, 6.651967496, 6.763917617000001, 6.706960921, 6.727165823, 7.096498458, 6.713592263000001, 7.19227943, 6.654154182, 6.825176485, 6.724434024000001, 6.662186052, 7.087707621000001, 7.145404221000001, 6.769938413, 7.186801835000001, 6.645675401, 6.822100306, 6.717137807, 6.7700023090000006, 6.828344326000001], "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_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_d100", "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_d101", "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_d102", "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_d103", "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_d104", "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_d105", "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_d106", "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_d107", "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_d108", "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_d109", "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_d110", "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_d111", "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_d112", "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_d113", "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_d114", "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_d115", "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_d116", "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_d117", "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_d118", "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_d119", "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_d120", "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_d121", "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_d122", "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_d123", "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_d124", "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_d125", "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_d126", "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_d27", "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_d28", "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_d29", "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_d30", "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_d31", "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_d32", "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_d33", "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_d34", "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_d35", "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_d36", "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_d37", "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_d38", "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_d39", "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_d40", "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_d41", "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_d42", "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_d43", "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_d44", "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_d45", "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_d46", "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_d47", "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_d48", "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_d49", "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_d50", "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_d51", "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_d52", "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_d53", "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_d54", "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_d55", "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_d56", "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_d57", "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_d58", "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_d59", "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_d60", "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_d61", "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_d62", "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_d63", "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_d64", "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_d65", "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_d66", "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_d67", "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_d68", "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_d69", "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_d70", "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_d71", "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_d72", "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_d73", "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_d74", "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_d75", "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_d76", "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_d77", "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_d78", "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_d79", "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_d80", "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_d81", "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_d82", "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_d83", "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_d84", "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_d85", "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_d86", "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_d87", "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_d88", "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_d89", "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]]}, {"name": "QId_d90", "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_d91", "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_d92", "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_d93", "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_d94", "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_d95", "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_d96", "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_d97", "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_d98", "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_d99", "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": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "Y90p_d0", "pulse_shape": "drag", "parameters": {"amp": [-0.0019751357407327037, 0.09728209426170822], "beta": -2.3019214793895904, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d0", "label": "CR90p_d0_u2", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.015152845957900661, 0.001283324737650424], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "parametric_pulse", "t0": 2000, "ch": "d0", "label": "CR90m_d0_u2", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.015152845957900661, -0.001283324737650422], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "fc", "t0": 3680, "ch": "d0", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 3680, "ch": "d0", "label": "X90p_d0", "pulse_shape": "drag", "parameters": {"amp": [0.09728209426170822, 0.001975135740732707], "beta": -2.3019214793895904, "duration": 160, "sigma": 40}}, {"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.10638496648367338, 0.0015547838132457532], "beta": -0.28484248854103933, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1840, "ch": "d1", "label": "Xp_d1", "pulse_shape": "drag", "parameters": {"amp": [0.21328971571531255, 0.0], "beta": -0.24672224809952714, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 3680, "ch": "d1", "label": "Y90m_d1", "pulse_shape": "drag", "parameters": {"amp": [0.0015547838132457551, -0.10638496648367338], "beta": -0.28484248854103933, "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.10531061155674071, -0.19367839414292212], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "parametric_pulse", "t0": 2000, "ch": "u2", "label": "CR90m_u2", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10531061155674068, 0.19367839414292212], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "fc", "t0": 3680, "ch": "u2", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u28", "phase": -3.141592653589793}, {"name": "fc", "t0": 3680, "ch": "u28", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u4", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [0, 14], "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.0019751357407327037, 0.09728209426170822], "beta": -2.3019214793895904, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d0", "label": "CR90p_d0_u28", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.030356235307176745, 0.001593669152982892], "duration": 928, "sigma": 64, "width": 672}}, {"name": "parametric_pulse", "t0": 1248, "ch": "d0", "label": "CR90m_d0_u28", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.030356235307176745, -0.0015936691529828883], "duration": 928, "sigma": 64, "width": 672}}, {"name": "fc", "t0": 2176, "ch": "d0", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2176, "ch": "d0", "label": "X90p_d0", "pulse_shape": "drag", "parameters": {"amp": [0.09728209426170822, 0.001975135740732707], "beta": -2.3019214793895904, "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.0997639294205537, 0.0009177538819246977], "beta": 0.29379454298510066, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1088, "ch": "d14", "label": "Xp_d14", "pulse_shape": "drag", "parameters": {"amp": [0.1988075422234681, 0.0], "beta": 0.25652091438797253, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2176, "ch": "d14", "label": "Y90m_d14", "pulse_shape": "drag", "parameters": {"amp": [0.0009177538819247209, -0.0997639294205537], "beta": 0.29379454298510066, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u1", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u2", "phase": -3.141592653589793}, {"name": "fc", "t0": 2176, "ch": "u2", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u28", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u28", "label": "CR90p_u28", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.33795987902099095, 0.14833698477479773], "duration": 928, "sigma": 64, "width": 672}}, {"name": "parametric_pulse", "t0": 1248, "ch": "u28", "label": "CR90m_u28", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.33795987902099095, -0.14833698477479776], "duration": 928, "sigma": 64, "width": 672}}, {"name": "fc", "t0": 2176, "ch": "u28", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u36", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [1, 0], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "X90p_d0", "pulse_shape": "drag", "parameters": {"amp": [0.09728209426170822, 0.001975135740732707], "beta": -2.3019214793895904, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d0", "label": "CR90p_d0_u2", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.015152845957900661, 0.001283324737650424], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "parametric_pulse", "t0": 2000, "ch": "d0", "label": "CR90m_d0_u2", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.015152845957900661, -0.001283324737650422], "duration": 1680, "sigma": 64, "width": 1424}}, {"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.918068514627096e-17, -0.21328971571531255], "beta": -0.24672224809952714, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1840, "ch": "d1", "label": "Xp_d1", "pulse_shape": "drag", "parameters": {"amp": [0.21328971571531255, 0.0], "beta": -0.24672224809952714, "duration": 160, "sigma": 40}}, {"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.10531061155674071, -0.19367839414292212], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "parametric_pulse", "t0": 2000, "ch": "u2", "label": "CR90m_u2", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10531061155674068, 0.19367839414292212], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "fc", "t0": 0, "ch": "u4", "phase": 1.5707963267948966}]}, {"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.918068514627096e-17, -0.21328971571531255], "beta": -0.24672224809952714, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 672, "ch": "d1", "label": "Xp_d1", "pulse_shape": "drag", "parameters": {"amp": [0.21328971571531255, 0.0], "beta": -0.24672224809952714, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "X90p_d2", "pulse_shape": "drag", "parameters": {"amp": [0.1477775342467566, 0.000927550518651574], "beta": 0.18306791118865184, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d2", "label": "CR90p_d2_u3", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.10406212438326509, 0.0022077974506250764], "duration": 512, "sigma": 64, "width": 256}}, {"name": "parametric_pulse", "t0": 832, "ch": "d2", "label": "CR90m_d2_u3", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10406212438326509, -0.002207797450625064], "duration": 512, "sigma": 64, "width": 256}}, {"name": "fc", "t0": 0, "ch": "u0", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u3", "label": "CR90p_u3", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.11763359282004147, 0.753191853391928], "duration": 512, "sigma": 64, "width": 256}}, {"name": "parametric_pulse", "t0": 832, "ch": "u3", "label": "CR90m_u3", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.11763359282004138, -0.753191853391928], "duration": 512, "sigma": 64, "width": 256}}, {"name": "fc", "t0": 0, "ch": "u4", "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.10638496648367338, 0.0015547838132457532], "beta": -0.28484248854103933, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 672, "ch": "d1", "label": "Xp_d1", "pulse_shape": "drag", "parameters": {"amp": [0.21328971571531255, 0.0], "beta": -0.24672224809952714, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1344, "ch": "d1", "label": "Y90m_d1", "pulse_shape": "drag", "parameters": {"amp": [0.0015547838132457551, -0.10638496648367338], "beta": -0.28484248854103933, "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.0009275505186515704, 0.1477775342467566], "beta": 0.18306791118865184, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d2", "label": "CR90p_d2_u3", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.10406212438326509, 0.0022077974506250764], "duration": 512, "sigma": 64, "width": 256}}, {"name": "parametric_pulse", "t0": 832, "ch": "d2", "label": "CR90m_d2_u3", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10406212438326509, -0.002207797450625064], "duration": 512, "sigma": 64, "width": 256}}, {"name": "fc", "t0": 1344, "ch": "d2", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1344, "ch": "d2", "label": "X90p_d2", "pulse_shape": "drag", "parameters": {"amp": [0.1477775342467566, 0.000927550518651574], "beta": 0.18306791118865184, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u0", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u3", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u3", "label": "CR90p_u3", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.11763359282004147, 0.753191853391928], "duration": 512, "sigma": 64, "width": 256}}, {"name": "parametric_pulse", "t0": 832, "ch": "u3", "label": "CR90m_u3", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.11763359282004138, -0.753191853391928], "duration": 512, "sigma": 64, "width": 256}}, {"name": "fc", "t0": 1344, "ch": "u3", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u4", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u6", "phase": -3.141592653589793}, {"name": "fc", "t0": 1344, "ch": "u6", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [2, 3], "sequence": [{"name": "fc", "t0": 0, "ch": "d2", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "Ym_d2", "pulse_shape": "drag", "parameters": {"amp": [-5.4333617589867215e-17, -0.2957784379283692], "beta": 0.24207485329173292, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1392, "ch": "d2", "label": "Xp_d2", "pulse_shape": "drag", "parameters": {"amp": [0.2957784379283692, 0.0], "beta": 0.24207485329173292, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "X90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.1392633903465627, -0.000660743939739058], "beta": 2.31736591143808, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d3", "label": "CR90p_d3_u5", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03209444587099834, -0.00031110022528862144], "duration": 1232, "sigma": 64, "width": 976}}, {"name": "parametric_pulse", "t0": 1552, "ch": "d3", "label": "CR90m_d3_u5", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03209444587099834, 0.0003111002252886254], "duration": 1232, "sigma": 64, "width": 976}}, {"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.14401994574365293, 0.13350447372622343], "duration": 1232, "sigma": 64, "width": 976}}, {"name": "parametric_pulse", "t0": 1552, "ch": "u5", "label": "CR90m_u5", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1440199457436529, -0.13350447372622345], "duration": 1232, "sigma": 64, "width": 976}}, {"name": "fc", "t0": 0, "ch": "u6", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [3, 2], "sequence": [{"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.1477775342467566, 0.000927550518651574], "beta": 0.18306791118865184, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1392, "ch": "d2", "label": "Xp_d2", "pulse_shape": "drag", "parameters": {"amp": [0.2957784379283692, 0.0], "beta": 0.24207485329173292, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2784, "ch": "d2", "label": "Y90m_d2", "pulse_shape": "drag", "parameters": {"amp": [0.0009275505186515524, -0.1477775342467566], "beta": 0.18306791118865184, "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.0006607439397390516, 0.1392633903465627], "beta": 2.31736591143808, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d3", "label": "CR90p_d3_u5", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03209444587099834, -0.00031110022528862144], "duration": 1232, "sigma": 64, "width": 976}}, {"name": "parametric_pulse", "t0": 1552, "ch": "d3", "label": "CR90m_d3_u5", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03209444587099834, 0.0003111002252886254], "duration": 1232, "sigma": 64, "width": 976}}, {"name": "fc", "t0": 2784, "ch": "d3", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2784, "ch": "d3", "label": "X90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.1392633903465627, -0.000660743939739058], "beta": 2.31736591143808, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u3", "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.14401994574365293, 0.13350447372622343], "duration": 1232, "sigma": 64, "width": 976}}, {"name": "parametric_pulse", "t0": 1552, "ch": "u5", "label": "CR90m_u5", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1440199457436529, -0.13350447372622345], "duration": 1232, "sigma": 64, "width": 976}}, {"name": "fc", "t0": 2784, "ch": "u5", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u6", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u8", "phase": -3.141592653589793}, {"name": "fc", "t0": 2784, "ch": "u8", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [3, 4], "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": [-5.158014522542213e-17, -0.2807892325163154], "beta": 2.3602538622290368, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1360, "ch": "d3", "label": "Xp_d3", "pulse_shape": "drag", "parameters": {"amp": [0.2807892325163154, 0.0], "beta": 2.3602538622290368, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "X90p_d4", "pulse_shape": "drag", "parameters": {"amp": [0.1054780518897047, -5.828969373965889e-05], "beta": 1.185879763851856, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d4", "label": "CR90p_d4_u7", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.025250876838027632, -0.0004295671559145295], "duration": 1200, "sigma": 64, "width": 944}}, {"name": "parametric_pulse", "t0": 1520, "ch": "d4", "label": "CR90m_d4_u7", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.025250876838027632, 0.0004295671559145326], "duration": 1200, "sigma": 64, "width": 944}}, {"name": "fc", "t0": 0, "ch": "u5", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u7", "label": "CR90p_u7", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.08710761775369463, -0.17145272119227423], "duration": 1200, "sigma": 64, "width": 944}}, {"name": "parametric_pulse", "t0": 1520, "ch": "u7", "label": "CR90m_u7", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0871076177536946, 0.17145272119227423], "duration": 1200, "sigma": 64, "width": 944}}, {"name": "fc", "t0": 0, "ch": "u8", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [4, 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.1392633903465627, -0.000660743939739058], "beta": 2.31736591143808, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1360, "ch": "d3", "label": "Xp_d3", "pulse_shape": "drag", "parameters": {"amp": [0.2807892325163154, 0.0], "beta": 2.3602538622290368, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2720, "ch": "d3", "label": "Y90m_d3", "pulse_shape": "drag", "parameters": {"amp": [-0.0006607439397390996, -0.1392633903465627], "beta": 2.31736591143808, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d4", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "Y90p_d4", "pulse_shape": "drag", "parameters": {"amp": [5.828969373966866e-05, 0.1054780518897047], "beta": 1.185879763851856, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d4", "label": "CR90p_d4_u7", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.025250876838027632, -0.0004295671559145295], "duration": 1200, "sigma": 64, "width": 944}}, {"name": "parametric_pulse", "t0": 1520, "ch": "d4", "label": "CR90m_d4_u7", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.025250876838027632, 0.0004295671559145326], "duration": 1200, "sigma": 64, "width": 944}}, {"name": "fc", "t0": 2720, "ch": "d4", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2720, "ch": "d4", "label": "X90p_d4", "pulse_shape": "drag", "parameters": {"amp": [0.1054780518897047, -5.828969373965889e-05], "beta": 1.185879763851856, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u11", "phase": -3.141592653589793}, {"name": "fc", "t0": 2720, "ch": "u11", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u30", "phase": -3.141592653589793}, {"name": "fc", "t0": 2720, "ch": "u30", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u5", "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.08710761775369463, -0.17145272119227423], "duration": 1200, "sigma": 64, "width": 944}}, {"name": "parametric_pulse", "t0": 1520, "ch": "u7", "label": "CR90m_u7", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0871076177536946, 0.17145272119227423], "duration": 1200, "sigma": 64, "width": 944}}, {"name": "fc", "t0": 2720, "ch": "u7", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u8", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [4, 5], "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": [5.828969373966866e-05, 0.1054780518897047], "beta": 1.185879763851856, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d4", "label": "CR90p_d4_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.016321058968310796, -0.0002717948686615786], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "parametric_pulse", "t0": 2064, "ch": "d4", "label": "CR90m_d4_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.016321058968310796, 0.0002717948686615806], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "fc", "t0": 3808, "ch": "d4", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 3808, "ch": "d4", "label": "X90p_d4", "pulse_shape": "drag", "parameters": {"amp": [0.1054780518897047, -5.828969373965889e-05], "beta": 1.185879763851856, "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.14459494637817813, 0.0018373244858420805], "beta": 0.5363032545144716, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1904, "ch": "d5", "label": "Xp_d5", "pulse_shape": "drag", "parameters": {"amp": [0.2896159339919146, 0.0], "beta": 0.6627381540213356, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 3808, "ch": "d5", "label": "Y90m_d5", "pulse_shape": "drag", "parameters": {"amp": [0.0018373244858420517, -0.14459494637817813], "beta": 0.5363032545144716, "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.25487572703633254, 0.022348484212601518], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "parametric_pulse", "t0": 2064, "ch": "u11", "label": "CR90m_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.25487572703633254, -0.02234848421260155], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "fc", "t0": 3808, "ch": "u11", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u13", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u30", "phase": -3.141592653589793}, {"name": "fc", "t0": 3808, "ch": "u30", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u7", "phase": -3.141592653589793}, {"name": "fc", "t0": 3808, "ch": "u7", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u9", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [4, 15], "sequence": [{"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.09650300361020016, 0.001628361203891289], "beta": -0.9887921785211227, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1472, "ch": "d15", "label": "Xp_d15", "pulse_shape": "drag", "parameters": {"amp": [0.19191700255891492, 0.0], "beta": -0.9216812237589831, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2944, "ch": "d15", "label": "Y90m_d15", "pulse_shape": "drag", "parameters": {"amp": [0.00162836120389128, -0.09650300361020016], "beta": -0.9887921785211227, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d4", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "Y90p_d4", "pulse_shape": "drag", "parameters": {"amp": [5.828969373966866e-05, 0.1054780518897047], "beta": 1.185879763851856, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d4", "label": "CR90p_d4_u30", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.024513330790001415, -0.0001230987785775477], "duration": 1312, "sigma": 64, "width": 1056}}, {"name": "parametric_pulse", "t0": 1632, "ch": "d4", "label": "CR90m_d4_u30", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.024513330790001415, 0.00012309877857755072], "duration": 1312, "sigma": 64, "width": 1056}}, {"name": "fc", "t0": 2944, "ch": "d4", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2944, "ch": "d4", "label": "X90p_d4", "pulse_shape": "drag", "parameters": {"amp": [0.1054780518897047, -5.828969373965889e-05], "beta": 1.185879763851856, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u10", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u11", "phase": -3.141592653589793}, {"name": "fc", "t0": 2944, "ch": "u11", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u30", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u30", "label": "CR90p_u30", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.16526680562208543, -0.08353469136735216], "duration": 1312, "sigma": 64, "width": 1056}}, {"name": "parametric_pulse", "t0": 1632, "ch": "u30", "label": "CR90m_u30", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.16526680562208543, 0.08353469136735214], "duration": 1312, "sigma": 64, "width": 1056}}, {"name": "fc", "t0": 2944, "ch": "u30", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u45", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u7", "phase": -3.141592653589793}, {"name": "fc", "t0": 2944, "ch": "u7", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [5, 4], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "X90p_d4", "pulse_shape": "drag", "parameters": {"amp": [0.1054780518897047, -5.828969373965889e-05], "beta": 1.185879763851856, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d4", "label": "CR90p_d4_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.016321058968310796, -0.0002717948686615786], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "parametric_pulse", "t0": 2064, "ch": "d4", "label": "CR90m_d4_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.016321058968310796, 0.0002717948686615806], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "fc", "t0": 0, "ch": "d5", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "Ym_d5", "pulse_shape": "drag", "parameters": {"amp": [-5.3201583981790395e-17, -0.2896159339919146], "beta": 0.6627381540213356, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1904, "ch": "d5", "label": "Xp_d5", "pulse_shape": "drag", "parameters": {"amp": [0.2896159339919146, 0.0], "beta": 0.6627381540213356, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "u11", "label": "CR90p_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.25487572703633254, 0.022348484212601518], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "parametric_pulse", "t0": 2064, "ch": "u11", "label": "CR90m_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.25487572703633254, -0.02234848421260155], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "fc", "t0": 0, "ch": "u13", "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.0018373244858420695, 0.14459494637817813], "beta": 0.5363032545144716, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d5", "label": "CR90p_d5_u13", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0713290115551986, 0.0015232244181519184], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "d5", "label": "CR90m_d5_u13", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0713290115551986, -0.0015232244181519097], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 1664, "ch": "d5", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1664, "ch": "d5", "label": "X90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.14459494637817813, 0.0018373244858420805], "beta": 0.5363032545144716, "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.07561148941072868, 0.001215415507143674], "beta": 0.5534597651532466, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 832, "ch": "d6", "label": "Xp_d6", "pulse_shape": "drag", "parameters": {"amp": [0.15039409666227885, 0.0], "beta": 0.5484785661526171, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1664, "ch": "d6", "label": "Y90m_d6", "pulse_shape": "drag", "parameters": {"amp": [0.0012154155071436433, -0.07561148941072868], "beta": 0.5534597651532466, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u12", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u13", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u13", "label": "CR90p_u13", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04981095152230606, -0.3154749446988195], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "u13", "label": "CR90m_u13", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0498109515223061, 0.3154749446988195], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 1664, "ch": "u13", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u15", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u9", "phase": -3.141592653589793}, {"name": "fc", "t0": 1664, "ch": "u9", "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.14459494637817813, 0.0018373244858420805], "beta": 0.5363032545144716, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d5", "label": "CR90p_d5_u13", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0713290115551986, 0.0015232244181519184], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "d5", "label": "CR90m_d5_u13", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0713290115551986, -0.0015232244181519097], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 0, "ch": "d6", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "Ym_d6", "pulse_shape": "drag", "parameters": {"amp": [-2.762694736321761e-17, -0.15039409666227885], "beta": 0.5484785661526171, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 832, "ch": "d6", "label": "Xp_d6", "pulse_shape": "drag", "parameters": {"amp": [0.15039409666227885, 0.0], "beta": 0.5484785661526171, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u12", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u13", "label": "CR90p_u13", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04981095152230606, -0.3154749446988195], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "u13", "label": "CR90m_u13", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0498109515223061, 0.3154749446988195], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 0, "ch": "u15", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [6, 7], "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.0012154155071436694, 0.07561148941072868], "beta": 0.5534597651532466, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d6", "label": "CR90p_d6_u15", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.030296913834643266, 0.001284718704631995], "duration": 784, "sigma": 64, "width": 528}}, {"name": "parametric_pulse", "t0": 1104, "ch": "d6", "label": "CR90m_d6_u15", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.030296913834643266, -0.0012847187046319912], "duration": 784, "sigma": 64, "width": 528}}, {"name": "fc", "t0": 1888, "ch": "d6", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1888, "ch": "d6", "label": "X90p_d6", "pulse_shape": "drag", "parameters": {"amp": [0.07561148941072868, 0.001215415507143674], "beta": 0.5534597651532466, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d7", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "X90p_d7", "pulse_shape": "drag", "parameters": {"amp": [0.09848029480623005, 0.0015633483865749366], "beta": -0.3949669959890538, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 944, "ch": "d7", "label": "Xp_d7", "pulse_shape": "drag", "parameters": {"amp": [0.19628532501441837, 0.0], "beta": -0.3041880723001541, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1888, "ch": "d7", "label": "Y90m_d7", "pulse_shape": "drag", "parameters": {"amp": [0.001563348386574901, -0.09848029480623005], "beta": -0.3949669959890538, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u12", "phase": -3.141592653589793}, {"name": "fc", "t0": 1888, "ch": "u12", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u14", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u15", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u15", "label": "CR90p_u15", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.13114110784543018, -0.0940556664965823], "duration": 784, "sigma": 64, "width": 528}}, {"name": "parametric_pulse", "t0": 1104, "ch": "u15", "label": "CR90m_u15", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.13114110784543018, 0.09405566649658231], "duration": 784, "sigma": 64, "width": 528}}, {"name": "fc", "t0": 1888, "ch": "u15", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u17", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [7, 6], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "X90p_d6", "pulse_shape": "drag", "parameters": {"amp": [0.07561148941072868, 0.001215415507143674], "beta": 0.5534597651532466, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d6", "label": "CR90p_d6_u15", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.030296913834643266, 0.001284718704631995], "duration": 784, "sigma": 64, "width": 528}}, {"name": "parametric_pulse", "t0": 1104, "ch": "d6", "label": "CR90m_d6_u15", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.030296913834643266, -0.0012847187046319912], "duration": 784, "sigma": 64, "width": 528}}, {"name": "fc", "t0": 0, "ch": "d7", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "Ym_d7", "pulse_shape": "drag", "parameters": {"amp": [-3.60570292497758e-17, -0.19628532501441837], "beta": -0.3041880723001541, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 944, "ch": "d7", "label": "Xp_d7", "pulse_shape": "drag", "parameters": {"amp": [0.19628532501441837, 0.0], "beta": -0.3041880723001541, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u14", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u15", "label": "CR90p_u15", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.13114110784543018, -0.0940556664965823], "duration": 784, "sigma": 64, "width": 528}}, {"name": "parametric_pulse", "t0": 1104, "ch": "u15", "label": "CR90m_u15", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.13114110784543018, 0.09405566649658231], "duration": 784, "sigma": 64, "width": 528}}, {"name": "fc", "t0": 0, "ch": "u17", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [7, 8], "sequence": [{"name": "fc", "t0": 0, "ch": "d7", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "Ym_d7", "pulse_shape": "drag", "parameters": {"amp": [-3.60570292497758e-17, -0.19628532501441837], "beta": -0.3041880723001541, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1200, "ch": "d7", "label": "Xp_d7", "pulse_shape": "drag", "parameters": {"amp": [0.19628532501441837, 0.0], "beta": -0.3041880723001541, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d8", "label": "X90p_d8", "pulse_shape": "drag", "parameters": {"amp": [0.09368124420338951, 0.001379194387390647], "beta": -0.42142455572411086, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d8", "label": "CR90p_d8_u16", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.024902739779002793, 0.0006824061662210531], "duration": 1040, "sigma": 64, "width": 784}}, {"name": "parametric_pulse", "t0": 1360, "ch": "d8", "label": "CR90m_d8_u16", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.024902739779002793, -0.00068240616622105], "duration": 1040, "sigma": 64, "width": 784}}, {"name": "fc", "t0": 0, "ch": "u14", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u16", "label": "CR90p_u16", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.08520698257468426, -0.29836704154542276], "duration": 1040, "sigma": 64, "width": 784}}, {"name": "parametric_pulse", "t0": 1360, "ch": "u16", "label": "CR90m_u16", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.08520698257468422, 0.29836704154542276], "duration": 1040, "sigma": 64, "width": 784}}, {"name": "fc", "t0": 0, "ch": "u17", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [8, 7], "sequence": [{"name": "fc", "t0": 0, "ch": "d7", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "X90p_d7", "pulse_shape": "drag", "parameters": {"amp": [0.09848029480623005, 0.0015633483865749366], "beta": -0.3949669959890538, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1200, "ch": "d7", "label": "Xp_d7", "pulse_shape": "drag", "parameters": {"amp": [0.19628532501441837, 0.0], "beta": -0.3041880723001541, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2400, "ch": "d7", "label": "Y90m_d7", "pulse_shape": "drag", "parameters": {"amp": [0.001563348386574901, -0.09848029480623005], "beta": -0.3949669959890538, "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.0013791943873906459, 0.09368124420338951], "beta": -0.42142455572411086, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d8", "label": "CR90p_d8_u16", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.024902739779002793, 0.0006824061662210531], "duration": 1040, "sigma": 64, "width": 784}}, {"name": "parametric_pulse", "t0": 1360, "ch": "d8", "label": "CR90m_d8_u16", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.024902739779002793, -0.00068240616622105], "duration": 1040, "sigma": 64, "width": 784}}, {"name": "fc", "t0": 2400, "ch": "d8", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2400, "ch": "d8", "label": "X90p_d8", "pulse_shape": "drag", "parameters": {"amp": [0.09368124420338951, 0.001379194387390647], "beta": -0.42142455572411086, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u14", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u16", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u16", "label": "CR90p_u16", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.08520698257468426, -0.29836704154542276], "duration": 1040, "sigma": 64, "width": 784}}, {"name": "parametric_pulse", "t0": 1360, "ch": "u16", "label": "CR90m_u16", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.08520698257468422, 0.29836704154542276], "duration": 1040, "sigma": 64, "width": 784}}, {"name": "fc", "t0": 2400, "ch": "u16", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u17", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u32", "phase": -3.141592653589793}, {"name": "fc", "t0": 2400, "ch": "u32", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [8, 16], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d16", "label": "X90p_d16", "pulse_shape": "drag", "parameters": {"amp": [0.10014577319325092, 0.0011746805802234992], "beta": -0.5844127608981904, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d16", "label": "CR90p_d16_u18", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04776964465095786, 0.0015028960163255233], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 1040, "ch": "d16", "label": "CR90m_d16_u18", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04776964465095786, -0.0015028960163255174], "duration": 720, "sigma": 64, "width": 464}}, {"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.427830160609473e-17, -0.1866023827167181], "beta": -0.5424614282356547, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 880, "ch": "d8", "label": "Xp_d8", "pulse_shape": "drag", "parameters": {"amp": [0.1866023827167181, 0.0], "beta": -0.5424614282356547, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u16", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u18", "label": "CR90p_u18", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2065362554566166, -0.3178913317630568], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 1040, "ch": "u18", "label": "CR90m_u18", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.20653625545661658, 0.3178913317630568], "duration": 720, "sigma": 64, "width": 464}}, {"name": "fc", "t0": 0, "ch": "u32", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [9, 10], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d10", "label": "X90p_d10", "pulse_shape": "drag", "parameters": {"amp": [0.12226850679503899, 0.0009728222483080352], "beta": -1.0035305592449417, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d10", "label": "CR90p_d10_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04953477736866336, -0.0005973206886227902], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d10", "label": "CR90m_d10_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04953477736866336, 0.0005973206886227963], "duration": 800, "sigma": 64, "width": 544}}, {"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.825836476066479e-17, -0.26270630190007516], "beta": 0.3798070819409623, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d9", "label": "Xp_d9", "pulse_shape": "drag", "parameters": {"amp": [0.26270630190007516, 0.0], "beta": 0.3798070819409623, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "u19", "label": "CR90p_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.5728483590465608, 0.13470787871958345], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u19", "label": "CR90m_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.5728483590465608, -0.13470787871958337], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "u20", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [10, 9], "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.0009728222483080371, 0.12226850679503899], "beta": -1.0035305592449417, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d10", "label": "CR90p_d10_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04953477736866336, -0.0005973206886227902], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d10", "label": "CR90m_d10_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04953477736866336, 0.0005973206886227963], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "d10", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1920, "ch": "d10", "label": "X90p_d10", "pulse_shape": "drag", "parameters": {"amp": [0.12226850679503899, 0.0009728222483080352], "beta": -1.0035305592449417, "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.12935536112710258, -0.0015553081498054482], "beta": 0.3926782249530035, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d9", "label": "Xp_d9", "pulse_shape": "drag", "parameters": {"amp": [0.26270630190007516, 0.0], "beta": 0.3798070819409623, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1920, "ch": "d9", "label": "Y90m_d9", "pulse_shape": "drag", "parameters": {"amp": [-0.0015553081498055176, -0.12935536112710258], "beta": 0.3926782249530035, "duration": 160, "sigma": 40}}, {"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.5728483590465608, 0.13470787871958345], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u19", "label": "CR90m_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.5728483590465608, -0.13470787871958337], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "u19", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u20", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u22", "phase": -3.141592653589793}, {"name": "fc", "t0": 1920, "ch": "u22", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [10, 11], "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.0009728222483080371, 0.12226850679503899], "beta": -1.0035305592449417, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d10", "label": "CR90p_d10_u22", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06441062112803492, 0.0028849256203318037], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "d10", "label": "CR90m_d10_u22", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06441062112803492, -0.002884925620331796], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 1664, "ch": "d10", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1664, "ch": "d10", "label": "X90p_d10", "pulse_shape": "drag", "parameters": {"amp": [0.12226850679503899, 0.0009728222483080352], "beta": -1.0035305592449417, "duration": 160, "sigma": 40}}, {"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.0965492053359095, 0.001462623500846168], "beta": -0.09318466583520002, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 832, "ch": "d11", "label": "Xp_d11", "pulse_shape": "drag", "parameters": {"amp": [0.19105054805914953, 0.0], "beta": -0.16634711490215365, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1664, "ch": "d11", "label": "Y90m_d11", "pulse_shape": "drag", "parameters": {"amp": [0.0014626235008461243, -0.0965492053359095], "beta": -0.09318466583520002, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u19", "phase": -3.141592653589793}, {"name": "fc", "t0": 1664, "ch": "u19", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u21", "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.32405505987725086, 0.18995548299563933], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "u22", "label": "CR90m_u22", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.32405505987725086, -0.18995548299563936], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 1664, "ch": "u22", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u24", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [11, 10], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d10", "label": "X90p_d10", "pulse_shape": "drag", "parameters": {"amp": [0.12226850679503899, 0.0009728222483080352], "beta": -1.0035305592449417, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d10", "label": "CR90p_d10_u22", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06441062112803492, 0.0028849256203318037], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "d10", "label": "CR90m_d10_u22", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06441062112803492, -0.002884925620331796], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 0, "ch": "d11", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d11", "label": "Ym_d11", "pulse_shape": "drag", "parameters": {"amp": [-3.5095416323397756e-17, -0.19105054805914953], "beta": -0.16634711490215365, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 832, "ch": "d11", "label": "Xp_d11", "pulse_shape": "drag", "parameters": {"amp": [0.19105054805914953, 0.0], "beta": -0.16634711490215365, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u21", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u22", "label": "CR90p_u22", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.32405505987725086, 0.18995548299563933], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "u22", "label": "CR90m_u22", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.32405505987725086, -0.18995548299563936], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 0, "ch": "u24", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [11, 12], "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.0014626235008461574, 0.0965492053359095], "beta": -0.09318466583520002, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d11", "label": "CR90p_d11_u24", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.00801793228472648, 0.0008749869788438837], "duration": 2784, "sigma": 64, "width": 2528}}, {"name": "parametric_pulse", "t0": 3104, "ch": "d11", "label": "CR90m_d11_u24", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.00801793228472648, -0.0008749869788438827], "duration": 2784, "sigma": 64, "width": 2528}}, {"name": "fc", "t0": 5888, "ch": "d11", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 5888, "ch": "d11", "label": "X90p_d11", "pulse_shape": "drag", "parameters": {"amp": [0.0965492053359095, 0.001462623500846168], "beta": -0.09318466583520002, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d12", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "X90p_d12", "pulse_shape": "drag", "parameters": {"amp": [0.1411151894421111, 0.0016022747979090887], "beta": 0.5233579158789275, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2944, "ch": "d12", "label": "Xp_d12", "pulse_shape": "drag", "parameters": {"amp": [0.28708035767913603, 0.0], "beta": 0.5295190577023939, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 5888, "ch": "d12", "label": "Y90m_d12", "pulse_shape": "drag", "parameters": {"amp": [0.0016022747979090434, -0.1411151894421111], "beta": 0.5233579158789275, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u21", "phase": -3.141592653589793}, {"name": "fc", "t0": 5888, "ch": "u21", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u23", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u24", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u24", "label": "CR90p_u24", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.5439956155282503, 0.04917348163246789], "duration": 2784, "sigma": 64, "width": 2528}}, {"name": "parametric_pulse", "t0": 3104, "ch": "u24", "label": "CR90m_u24", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.5439956155282503, -0.04917348163246782], "duration": 2784, "sigma": 64, "width": 2528}}, {"name": "fc", "t0": 5888, "ch": "u24", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u27", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u34", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [12, 11], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d11", "label": "X90p_d11", "pulse_shape": "drag", "parameters": {"amp": [0.0965492053359095, 0.001462623500846168], "beta": -0.09318466583520002, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d11", "label": "CR90p_d11_u24", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.00801793228472648, 0.0008749869788438837], "duration": 2784, "sigma": 64, "width": 2528}}, {"name": "parametric_pulse", "t0": 3104, "ch": "d11", "label": "CR90m_d11_u24", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.00801793228472648, -0.0008749869788438827], "duration": 2784, "sigma": 64, "width": 2528}}, {"name": "fc", "t0": 0, "ch": "d12", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "Ym_d12", "pulse_shape": "drag", "parameters": {"amp": [-5.273580616947468e-17, -0.28708035767913603], "beta": 0.5295190577023939, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2944, "ch": "d12", "label": "Xp_d12", "pulse_shape": "drag", "parameters": {"amp": [0.28708035767913603, 0.0], "beta": 0.5295190577023939, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u23", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u24", "label": "CR90p_u24", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.5439956155282503, 0.04917348163246789], "duration": 2784, "sigma": 64, "width": 2528}}, {"name": "parametric_pulse", "t0": 3104, "ch": "u24", "label": "CR90m_u24", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.5439956155282503, -0.04917348163246782], "duration": 2784, "sigma": 64, "width": 2528}}, {"name": "fc", "t0": 0, "ch": "u27", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u34", "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.001602274797909092, 0.1411151894421111], "beta": 0.5233579158789275, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d12", "label": "CR90p_d12_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07588745249176239, 0.0005353731889641916], "duration": 656, "sigma": 64, "width": 400}}, {"name": "parametric_pulse", "t0": 976, "ch": "d12", "label": "CR90m_d12_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07588745249176239, -0.0005353731889641823], "duration": 656, "sigma": 64, "width": 400}}, {"name": "fc", "t0": 1632, "ch": "d12", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1632, "ch": "d12", "label": "X90p_d12", "pulse_shape": "drag", "parameters": {"amp": [0.1411151894421111, 0.0016022747979090887], "beta": 0.5233579158789275, "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.1006313679680152, 0.001920958731107576], "beta": -0.054820210899730354, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 816, "ch": "d13", "label": "Xp_d13", "pulse_shape": "drag", "parameters": {"amp": [0.20092488457970142, 0.0], "beta": -0.07194947379334214, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1632, "ch": "d13", "label": "Y90m_d13", "pulse_shape": "drag", "parameters": {"amp": [0.0019209587311075848, -0.1006313679680152], "beta": -0.054820210899730354, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u23", "phase": -3.141592653589793}, {"name": "fc", "t0": 1632, "ch": "u23", "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.5147250593561606, -0.441724959429025], "duration": 656, "sigma": 64, "width": 400}}, {"name": "parametric_pulse", "t0": 976, "ch": "u27", "label": "CR90m_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.5147250593561606, 0.44172495942902495], "duration": 656, "sigma": 64, "width": 400}}, {"name": "fc", "t0": 1632, "ch": "u27", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u34", "phase": -3.141592653589793}, {"name": "fc", "t0": 1632, "ch": "u34", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [12, 17], "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.001602274797909092, 0.1411151894421111], "beta": 0.5233579158789275, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d12", "label": "CR90p_d12_u34", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.01090842622022126, -0.0029947582083959196], "duration": 2432, "sigma": 64, "width": 2176}}, {"name": "parametric_pulse", "t0": 2752, "ch": "d12", "label": "CR90m_d12_u34", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.01090842622022126, 0.002994758208395921], "duration": 2432, "sigma": 64, "width": 2176}}, {"name": "fc", "t0": 5184, "ch": "d12", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 5184, "ch": "d12", "label": "X90p_d12", "pulse_shape": "drag", "parameters": {"amp": [0.1411151894421111, 0.0016022747979090887], "beta": 0.5233579158789275, "duration": 160, "sigma": 40}}, {"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.0979722505683425, 0.0015733702439471957], "beta": -0.4233679463109371, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2592, "ch": "d17", "label": "Xp_d17", "pulse_shape": "drag", "parameters": {"amp": [0.19508525450381228, 0.0], "beta": -0.2745112148012951, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 5184, "ch": "d17", "label": "Y90m_d17", "pulse_shape": "drag", "parameters": {"amp": [0.0015733702439471673, -0.0979722505683425], "beta": -0.4233679463109371, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u23", "phase": -3.141592653589793}, {"name": "fc", "t0": 5184, "ch": "u23", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u26", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u27", "phase": -3.141592653589793}, {"name": "fc", "t0": 5184, "ch": "u27", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u34", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u34", "label": "CR90p_u34", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3743287548507658, 0.6751858359977667], "duration": 2432, "sigma": 64, "width": 2176}}, {"name": "parametric_pulse", "t0": 2752, "ch": "u34", "label": "CR90m_u34", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.37432875485076583, -0.6751858359977667], "duration": 2432, "sigma": 64, "width": 2176}}, {"name": "fc", "t0": 5184, "ch": "u34", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u65", "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.1411151894421111, 0.0016022747979090887], "beta": 0.5233579158789275, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d12", "label": "CR90p_d12_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07588745249176239, 0.0005353731889641916], "duration": 656, "sigma": 64, "width": 400}}, {"name": "parametric_pulse", "t0": 976, "ch": "d12", "label": "CR90m_d12_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07588745249176239, -0.0005353731889641823], "duration": 656, "sigma": 64, "width": 400}}, {"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.6909302515437405e-17, -0.20092488457970142], "beta": -0.07194947379334214, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 816, "ch": "d13", "label": "Xp_d13", "pulse_shape": "drag", "parameters": {"amp": [0.20092488457970142, 0.0], "beta": -0.07194947379334214, "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.5147250593561606, -0.441724959429025], "duration": 656, "sigma": 64, "width": 400}}, {"name": "parametric_pulse", "t0": 976, "ch": "u27", "label": "CR90m_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.5147250593561606, 0.44172495942902495], "duration": 656, "sigma": 64, "width": 400}}]}, {"name": "cx", "qubits": [14, 0], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "X90p_d0", "pulse_shape": "drag", "parameters": {"amp": [0.09728209426170822, 0.001975135740732707], "beta": -2.3019214793895904, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d0", "label": "CR90p_d0_u28", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.030356235307176745, 0.001593669152982892], "duration": 928, "sigma": 64, "width": 672}}, {"name": "parametric_pulse", "t0": 1248, "ch": "d0", "label": "CR90m_d0_u28", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.030356235307176745, -0.0015936691529828883], "duration": 928, "sigma": 64, "width": 672}}, {"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.652035303454837e-17, -0.1988075422234681], "beta": 0.25652091438797253, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1088, "ch": "d14", "label": "Xp_d14", "pulse_shape": "drag", "parameters": {"amp": [0.1988075422234681, 0.0], "beta": 0.25652091438797253, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u1", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u28", "label": "CR90p_u28", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.33795987902099095, 0.14833698477479773], "duration": 928, "sigma": 64, "width": 672}}, {"name": "parametric_pulse", "t0": 1248, "ch": "u28", "label": "CR90m_u28", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.33795987902099095, -0.14833698477479776], "duration": 928, "sigma": 64, "width": 672}}, {"name": "fc", "t0": 0, "ch": "u36", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [14, 18], "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.652035303454837e-17, -0.1988075422234681], "beta": 0.25652091438797253, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 800, "ch": "d14", "label": "Xp_d14", "pulse_shape": "drag", "parameters": {"amp": [0.1988075422234681, 0.0], "beta": 0.25652091438797253, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "X90p_d18", "pulse_shape": "drag", "parameters": {"amp": [0.12482178554522665, 0.0014011390312256725], "beta": -0.063620137374164, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d18", "label": "CR90p_d18_u29", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06807956152954968, 0.001357639153083456], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "d18", "label": "CR90m_d18_u29", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06807956152954968, -0.0013576391530834477], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 0, "ch": "u1", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u29", "label": "CR90p_u29", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09140055186823384, 0.5455043686353737], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "u29", "label": "CR90m_u29", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.09140055186823391, -0.5455043686353737], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 0, "ch": "u36", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [15, 4], "sequence": [{"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.525458143285943e-17, -0.19191700255891492], "beta": -0.9216812237589831, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1472, "ch": "d15", "label": "Xp_d15", "pulse_shape": "drag", "parameters": {"amp": [0.19191700255891492, 0.0], "beta": -0.9216812237589831, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "X90p_d4", "pulse_shape": "drag", "parameters": {"amp": [0.1054780518897047, -5.828969373965889e-05], "beta": 1.185879763851856, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d4", "label": "CR90p_d4_u30", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.024513330790001415, -0.0001230987785775477], "duration": 1312, "sigma": 64, "width": 1056}}, {"name": "parametric_pulse", "t0": 1632, "ch": "d4", "label": "CR90m_d4_u30", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.024513330790001415, 0.00012309877857755072], "duration": 1312, "sigma": 64, "width": 1056}}, {"name": "fc", "t0": 0, "ch": "u10", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u30", "label": "CR90p_u30", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.16526680562208543, -0.08353469136735216], "duration": 1312, "sigma": 64, "width": 1056}}, {"name": "parametric_pulse", "t0": 1632, "ch": "u30", "label": "CR90m_u30", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.16526680562208543, 0.08353469136735214], "duration": 1312, "sigma": 64, "width": 1056}}, {"name": "fc", "t0": 0, "ch": "u45", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [15, 22], "sequence": [{"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.525458143285943e-17, -0.19191700255891492], "beta": -0.9216812237589831, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2432, "ch": "d15", "label": "Xp_d15", "pulse_shape": "drag", "parameters": {"amp": [0.19191700255891492, 0.0], "beta": -0.9216812237589831, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "X90p_d22", "pulse_shape": "drag", "parameters": {"amp": [0.10452897318719664, 0.0004032729900171576], "beta": 1.628318054634379, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d22", "label": "CR90p_d22_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.013738244382174232, 2.7487020105065127e-05], "duration": 2272, "sigma": 64, "width": 2016}}, {"name": "parametric_pulse", "t0": 2592, "ch": "d22", "label": "CR90m_d22_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.013738244382174232, -2.7487020105063444e-05], "duration": 2272, "sigma": 64, "width": 2016}}, {"name": "fc", "t0": 0, "ch": "u10", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u31", "label": "CR90p_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.013278229661322735, 0.09704769706931361], "duration": 2272, "sigma": 64, "width": 2016}}, {"name": "parametric_pulse", "t0": 2592, "ch": "u31", "label": "CR90m_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.013278229661322723, -0.09704769706931361], "duration": 2272, "sigma": 64, "width": 2016}}, {"name": "fc", "t0": 0, "ch": "u45", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [16, 8], "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": [-0.0011746805802234862, 0.10014577319325092], "beta": -0.5844127608981904, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d16", "label": "CR90p_d16_u18", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04776964465095786, 0.0015028960163255233], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 1040, "ch": "d16", "label": "CR90m_d16_u18", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04776964465095786, -0.0015028960163255174], "duration": 720, "sigma": 64, "width": 464}}, {"name": "fc", "t0": 1760, "ch": "d16", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1760, "ch": "d16", "label": "X90p_d16", "pulse_shape": "drag", "parameters": {"amp": [0.10014577319325092, 0.0011746805802234992], "beta": -0.5844127608981904, "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.09368124420338951, 0.001379194387390647], "beta": -0.42142455572411086, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 880, "ch": "d8", "label": "Xp_d8", "pulse_shape": "drag", "parameters": {"amp": [0.1866023827167181, 0.0], "beta": -0.5424614282356547, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1760, "ch": "d8", "label": "Y90m_d8", "pulse_shape": "drag", "parameters": {"amp": [0.0013791943873906135, -0.09368124420338951], "beta": -0.42142455572411086, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u16", "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.2065362554566166, -0.3178913317630568], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 1040, "ch": "u18", "label": "CR90m_u18", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.20653625545661658, 0.3178913317630568], "duration": 720, "sigma": 64, "width": 464}}, {"name": "fc", "t0": 1760, "ch": "u18", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u32", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u55", "phase": -3.141592653589793}, {"name": "fc", "t0": 1760, "ch": "u55", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [16, 26], "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": [-0.0011746805802234862, 0.10014577319325092], "beta": -0.5844127608981904, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d16", "label": "CR90p_d16_u55", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06341754999546964, 0.0024163984285384306], "duration": 544, "sigma": 64, "width": 288}}, {"name": "parametric_pulse", "t0": 864, "ch": "d16", "label": "CR90m_d16_u55", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06341754999546964, -0.002416398428538423], "duration": 544, "sigma": 64, "width": 288}}, {"name": "fc", "t0": 1408, "ch": "d16", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1408, "ch": "d16", "label": "X90p_d16", "pulse_shape": "drag", "parameters": {"amp": [0.10014577319325092, 0.0011746805802234992], "beta": -0.5844127608981904, "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.12370745592779968, 0.0023081177405813074], "beta": -1.9921354121480892, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 704, "ch": "d26", "label": "Xp_d26", "pulse_shape": "drag", "parameters": {"amp": [0.24700612784901774, 0.0], "beta": -1.951263849684402, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1408, "ch": "d26", "label": "Y90m_d26", "pulse_shape": "drag", "parameters": {"amp": [0.002308117740581243, -0.12370745592779968], "beta": -1.9921354121480892, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u18", "phase": -3.141592653589793}, {"name": "fc", "t0": 1408, "ch": "u18", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u33", "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.6079210103870523, -0.25525565777005255], "duration": 544, "sigma": 64, "width": 288}}, {"name": "parametric_pulse", "t0": 864, "ch": "u55", "label": "CR90m_u55", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.6079210103870523, 0.2552556577700526], "duration": 544, "sigma": 64, "width": 288}}, {"name": "fc", "t0": 1408, "ch": "u55", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u58", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [17, 12], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "X90p_d12", "pulse_shape": "drag", "parameters": {"amp": [0.1411151894421111, 0.0016022747979090887], "beta": 0.5233579158789275, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d12", "label": "CR90p_d12_u34", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.01090842622022126, -0.0029947582083959196], "duration": 2432, "sigma": 64, "width": 2176}}, {"name": "parametric_pulse", "t0": 2752, "ch": "d12", "label": "CR90m_d12_u34", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.01090842622022126, 0.002994758208395921], "duration": 2432, "sigma": 64, "width": 2176}}, {"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.583657987334107e-17, -0.19508525450381228], "beta": -0.2745112148012951, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2592, "ch": "d17", "label": "Xp_d17", "pulse_shape": "drag", "parameters": {"amp": [0.19508525450381228, 0.0], "beta": -0.2745112148012951, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u26", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u34", "label": "CR90p_u34", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3743287548507658, 0.6751858359977667], "duration": 2432, "sigma": 64, "width": 2176}}, {"name": "parametric_pulse", "t0": 2752, "ch": "u34", "label": "CR90m_u34", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.37432875485076583, -0.6751858359977667], "duration": 2432, "sigma": 64, "width": 2176}}, {"name": "fc", "t0": 0, "ch": "u65", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [17, 30], "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.583657987334107e-17, -0.19508525450381228], "beta": -0.2745112148012951, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 864, "ch": "d17", "label": "Xp_d17", "pulse_shape": "drag", "parameters": {"amp": [0.19508525450381228, 0.0], "beta": -0.2745112148012951, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d30", "label": "X90p_d30", "pulse_shape": "drag", "parameters": {"amp": [0.0998203943189428, -0.0008913257066435659], "beta": 1.9815355924298044, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d30", "label": "CR90p_d30_u35", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.042903776796026964, -0.0017112350426424186], "duration": 704, "sigma": 64, "width": 448}}, {"name": "parametric_pulse", "t0": 1024, "ch": "d30", "label": "CR90m_d30_u35", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.042903776796026964, 0.0017112350426424238], "duration": 704, "sigma": 64, "width": 448}}, {"name": "fc", "t0": 0, "ch": "u26", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u35", "label": "CR90p_u35", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3477422448806514, 0.38389719132274486], "duration": 704, "sigma": 64, "width": 448}}, {"name": "parametric_pulse", "t0": 1024, "ch": "u35", "label": "CR90m_u35", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.34774224488065136, -0.3838971913227449], "duration": 704, "sigma": 64, "width": 448}}, {"name": "fc", "t0": 0, "ch": "u65", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [18, 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.0997639294205537, 0.0009177538819246977], "beta": 0.29379454298510066, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 800, "ch": "d14", "label": "Xp_d14", "pulse_shape": "drag", "parameters": {"amp": [0.1988075422234681, 0.0], "beta": 0.25652091438797253, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1600, "ch": "d14", "label": "Y90m_d14", "pulse_shape": "drag", "parameters": {"amp": [0.0009177538819247209, -0.0997639294205537], "beta": 0.29379454298510066, "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.0014011390312256553, 0.12482178554522665], "beta": -0.063620137374164, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d18", "label": "CR90p_d18_u29", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06807956152954968, 0.001357639153083456], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "d18", "label": "CR90m_d18_u29", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06807956152954968, -0.0013576391530834477], "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.12482178554522665, 0.0014011390312256725], "beta": -0.063620137374164, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u1", "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.09140055186823384, 0.5455043686353737], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "u29", "label": "CR90m_u29", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.09140055186823391, -0.5455043686353737], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 1600, "ch": "u29", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u36", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u38", "phase": -3.141592653589793}, {"name": "fc", "t0": 1600, "ch": "u38", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [18, 19], "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.0014011390312256553, 0.12482178554522665], "beta": -0.063620137374164, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d18", "label": "CR90p_d18_u38", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06534393948477406, -3.201316388316701e-05], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "d18", "label": "CR90m_d18_u38", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06534393948477406, 3.2013163883175016e-05], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 1664, "ch": "d18", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1664, "ch": "d18", "label": "X90p_d18", "pulse_shape": "drag", "parameters": {"amp": [0.12482178554522665, 0.0014011390312256725], "beta": -0.063620137374164, "duration": 160, "sigma": 40}}, {"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.10218576437493715, 0.0024164259426144967], "beta": -1.0348577584111769, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 832, "ch": "d19", "label": "Xp_d19", "pulse_shape": "drag", "parameters": {"amp": [0.2042366941033988, 0.0], "beta": -0.9901031883141508, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1664, "ch": "d19", "label": "Y90m_d19", "pulse_shape": "drag", "parameters": {"amp": [0.0024164259426144555, -0.10218576437493715], "beta": -1.0348577584111769, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u29", "phase": -3.141592653589793}, {"name": "fc", "t0": 1664, "ch": "u29", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u37", "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.168607778401446, -0.36880208257720465], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "u38", "label": "CR90m_u38", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.16860777840144595, 0.36880208257720465], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 1664, "ch": "u38", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u40", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [19, 18], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "X90p_d18", "pulse_shape": "drag", "parameters": {"amp": [0.12482178554522665, 0.0014011390312256725], "beta": -0.063620137374164, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d18", "label": "CR90p_d18_u38", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06534393948477406, -3.201316388316701e-05], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "d18", "label": "CR90m_d18_u38", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06534393948477406, 3.2013163883175016e-05], "duration": 672, "sigma": 64, "width": 416}}, {"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.7517672055324664e-17, -0.2042366941033988], "beta": -0.9901031883141508, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 832, "ch": "d19", "label": "Xp_d19", "pulse_shape": "drag", "parameters": {"amp": [0.2042366941033988, 0.0], "beta": -0.9901031883141508, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u37", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u38", "label": "CR90p_u38", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.168607778401446, -0.36880208257720465], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "u38", "label": "CR90m_u38", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.16860777840144595, 0.36880208257720465], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 0, "ch": "u40", "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.7517672055324664e-17, -0.2042366941033988], "beta": -0.9901031883141508, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 784, "ch": "d19", "label": "Xp_d19", "pulse_shape": "drag", "parameters": {"amp": [0.2042366941033988, 0.0], "beta": -0.9901031883141508, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d20", "label": "X90p_d20", "pulse_shape": "drag", "parameters": {"amp": [0.10547829975820261, 0.0019050880991815444], "beta": -0.5067821802819922, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d20", "label": "CR90p_d20_u39", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05945183465713261, 0.0016375647389317537], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "d20", "label": "CR90m_d20_u39", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05945183465713261, -0.0016375647389317463], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 0, "ch": "u37", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u39", "label": "CR90p_u39", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.24311952780672888, 0.41104380919411526], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "u39", "label": "CR90m_u39", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.24311952780672882, -0.4110438091941153], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 0, "ch": "u40", "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.10218576437493715, 0.0024164259426144967], "beta": -1.0348577584111769, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 784, "ch": "d19", "label": "Xp_d19", "pulse_shape": "drag", "parameters": {"amp": [0.2042366941033988, 0.0], "beta": -0.9901031883141508, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1568, "ch": "d19", "label": "Y90m_d19", "pulse_shape": "drag", "parameters": {"amp": [0.0024164259426144555, -0.10218576437493715], "beta": -1.0348577584111769, "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.0019050880991815411, 0.10547829975820261], "beta": -0.5067821802819922, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d20", "label": "CR90p_d20_u39", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05945183465713261, 0.0016375647389317537], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "d20", "label": "CR90m_d20_u39", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05945183465713261, -0.0016375647389317463], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 1568, "ch": "d20", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1568, "ch": "d20", "label": "X90p_d20", "pulse_shape": "drag", "parameters": {"amp": [0.10547829975820261, 0.0019050880991815444], "beta": -0.5067821802819922, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u37", "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.24311952780672888, 0.41104380919411526], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "u39", "label": "CR90m_u39", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.24311952780672882, -0.4110438091941153], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 1568, "ch": "u39", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u40", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u43", "phase": -3.141592653589793}, {"name": "fc", "t0": 1568, "ch": "u43", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u72", "phase": -3.141592653589793}, {"name": "fc", "t0": 1568, "ch": "u72", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [20, 21], "sequence": [{"name": "fc", "t0": 0, "ch": "d20", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d20", "label": "Ym_d20", "pulse_shape": "drag", "parameters": {"amp": [-3.856095339781677e-17, -0.20991605320905266], "beta": -0.4987236702748688, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1824, "ch": "d20", "label": "Xp_d20", "pulse_shape": "drag", "parameters": {"amp": [0.20991605320905266, 0.0], "beta": -0.4987236702748688, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d21", "label": "X90p_d21", "pulse_shape": "drag", "parameters": {"amp": [0.09756024919220983, 0.0006249762950963058], "beta": 1.1101749738435711, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d21", "label": "CR90p_d21_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.014937054024797424, 0.0008335266688647537], "duration": 1664, "sigma": 64, "width": 1408}}, {"name": "parametric_pulse", "t0": 1984, "ch": "d21", "label": "CR90m_d21_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.014937054024797424, -0.0008335266688647519], "duration": 1664, "sigma": 64, "width": 1408}}, {"name": "fc", "t0": 0, "ch": "u39", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u41", "label": "CR90p_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.263086993799031, -0.037588631166626016], "duration": 1664, "sigma": 64, "width": 1408}}, {"name": "parametric_pulse", "t0": 1984, "ch": "u41", "label": "CR90m_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.263086993799031, 0.03758863116662605], "duration": 1664, "sigma": 64, "width": 1408}}, {"name": "fc", "t0": 0, "ch": "u43", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u72", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [20, 33], "sequence": [{"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.0019050880991815411, 0.10547829975820261], "beta": -0.5067821802819922, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d20", "label": "CR90p_d20_u72", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.052645080856505544, 0.0029460404177246925], "duration": 656, "sigma": 64, "width": 400}}, {"name": "parametric_pulse", "t0": 976, "ch": "d20", "label": "CR90m_d20_u72", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.052645080856505544, -0.002946040417724686], "duration": 656, "sigma": 64, "width": 400}}, {"name": "fc", "t0": 1632, "ch": "d20", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1632, "ch": "d20", "label": "X90p_d20", "pulse_shape": "drag", "parameters": {"amp": [0.10547829975820261, 0.0019050880991815444], "beta": -0.5067821802819922, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d33", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d33", "label": "X90p_d33", "pulse_shape": "drag", "parameters": {"amp": [0.0996688040038656, 0.0007876057703022679], "beta": 0.6275186917690918, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 816, "ch": "d33", "label": "Xp_d33", "pulse_shape": "drag", "parameters": {"amp": [0.19863229708071828, 0.0], "beta": 0.6519513195788639, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1632, "ch": "d33", "label": "Y90m_d33", "pulse_shape": "drag", "parameters": {"amp": [0.00078760577030221, -0.0996688040038656], "beta": 0.6275186917690918, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u39", "phase": -3.141592653589793}, {"name": "fc", "t0": 1632, "ch": "u39", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u42", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u43", "phase": -3.141592653589793}, {"name": "fc", "t0": 1632, "ch": "u43", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u72", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u72", "label": "CR90p_u72", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.15503562125303913, 0.20705803471036918], "duration": 656, "sigma": 64, "width": 400}}, {"name": "parametric_pulse", "t0": 976, "ch": "u72", "label": "CR90m_u72", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1550356212530391, -0.2070580347103692], "duration": 656, "sigma": 64, "width": 400}}, {"name": "fc", "t0": 1632, "ch": "u72", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u84", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [21, 20], "sequence": [{"name": "fc", "t0": 0, "ch": "d20", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d20", "label": "X90p_d20", "pulse_shape": "drag", "parameters": {"amp": [0.10547829975820261, 0.0019050880991815444], "beta": -0.5067821802819922, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1824, "ch": "d20", "label": "Xp_d20", "pulse_shape": "drag", "parameters": {"amp": [0.20991605320905266, 0.0], "beta": -0.4987236702748688, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 3648, "ch": "d20", "label": "Y90m_d20", "pulse_shape": "drag", "parameters": {"amp": [0.0019050880991815513, -0.10547829975820261], "beta": -0.5067821802819922, "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.0006249762950962998, 0.09756024919220983], "beta": 1.1101749738435711, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d21", "label": "CR90p_d21_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.014937054024797424, 0.0008335266688647537], "duration": 1664, "sigma": 64, "width": 1408}}, {"name": "parametric_pulse", "t0": 1984, "ch": "d21", "label": "CR90m_d21_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.014937054024797424, -0.0008335266688647519], "duration": 1664, "sigma": 64, "width": 1408}}, {"name": "fc", "t0": 3648, "ch": "d21", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 3648, "ch": "d21", "label": "X90p_d21", "pulse_shape": "drag", "parameters": {"amp": [0.09756024919220983, 0.0006249762950963058], "beta": 1.1101749738435711, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u39", "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.263086993799031, -0.037588631166626016], "duration": 1664, "sigma": 64, "width": 1408}}, {"name": "parametric_pulse", "t0": 1984, "ch": "u41", "label": "CR90m_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.263086993799031, 0.03758863116662605], "duration": 1664, "sigma": 64, "width": 1408}}, {"name": "fc", "t0": 3648, "ch": "u41", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u43", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u46", "phase": -3.141592653589793}, {"name": "fc", "t0": 3648, "ch": "u46", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u72", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [21, 22], "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.558376769999855e-17, -0.1937090091323929], "beta": 1.091779918745643, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1328, "ch": "d21", "label": "Xp_d21", "pulse_shape": "drag", "parameters": {"amp": [0.1937090091323929, 0.0], "beta": 1.091779918745643, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "X90p_d22", "pulse_shape": "drag", "parameters": {"amp": [0.10452897318719664, 0.0004032729900171576], "beta": 1.628318054634379, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d22", "label": "CR90p_d22_u44", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.026571532995724068, -0.00019294100805593485], "duration": 1168, "sigma": 64, "width": 912}}, {"name": "parametric_pulse", "t0": 1488, "ch": "d22", "label": "CR90m_d22_u44", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.026571532995724068, 0.0001929410080559381], "duration": 1168, "sigma": 64, "width": 912}}, {"name": "fc", "t0": 0, "ch": "u41", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u44", "label": "CR90p_u44", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.13401514458493283, -0.03368456010808949], "duration": 1168, "sigma": 64, "width": 912}}, {"name": "parametric_pulse", "t0": 1488, "ch": "u44", "label": "CR90m_u44", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.13401514458493283, 0.03368456010808948], "duration": 1168, "sigma": 64, "width": 912}}, {"name": "fc", "t0": 0, "ch": "u46", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [22, 15], "sequence": [{"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.09650300361020016, 0.001628361203891289], "beta": -0.9887921785211227, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2432, "ch": "d15", "label": "Xp_d15", "pulse_shape": "drag", "parameters": {"amp": [0.19191700255891492, 0.0], "beta": -0.9216812237589831, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 4864, "ch": "d15", "label": "Y90m_d15", "pulse_shape": "drag", "parameters": {"amp": [0.00162836120389128, -0.09650300361020016], "beta": -0.9887921785211227, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d22", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "Y90p_d22", "pulse_shape": "drag", "parameters": {"amp": [-0.00040327299001715076, 0.10452897318719664], "beta": 1.628318054634379, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d22", "label": "CR90p_d22_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.013738244382174232, 2.7487020105065127e-05], "duration": 2272, "sigma": 64, "width": 2016}}, {"name": "parametric_pulse", "t0": 2592, "ch": "d22", "label": "CR90m_d22_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.013738244382174232, -2.7487020105063444e-05], "duration": 2272, "sigma": 64, "width": 2016}}, {"name": "fc", "t0": 4864, "ch": "d22", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 4864, "ch": "d22", "label": "X90p_d22", "pulse_shape": "drag", "parameters": {"amp": [0.10452897318719664, 0.0004032729900171576], "beta": 1.628318054634379, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u10", "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.013278229661322735, 0.09704769706931361], "duration": 2272, "sigma": 64, "width": 2016}}, {"name": "parametric_pulse", "t0": 2592, "ch": "u31", "label": "CR90m_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.013278229661322723, -0.09704769706931361], "duration": 2272, "sigma": 64, "width": 2016}}, {"name": "fc", "t0": 4864, "ch": "u31", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u44", "phase": -3.141592653589793}, {"name": "fc", "t0": 4864, "ch": "u44", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u45", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u48", "phase": -3.141592653589793}, {"name": "fc", "t0": 4864, "ch": "u48", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [22, 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.09756024919220983, 0.0006249762950963058], "beta": 1.1101749738435711, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1328, "ch": "d21", "label": "Xp_d21", "pulse_shape": "drag", "parameters": {"amp": [0.1937090091323929, 0.0], "beta": 1.091779918745643, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2656, "ch": "d21", "label": "Y90m_d21", "pulse_shape": "drag", "parameters": {"amp": [0.0006249762950962879, -0.09756024919220983], "beta": 1.1101749738435711, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d22", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "Y90p_d22", "pulse_shape": "drag", "parameters": {"amp": [-0.00040327299001715076, 0.10452897318719664], "beta": 1.628318054634379, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d22", "label": "CR90p_d22_u44", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.026571532995724068, -0.00019294100805593485], "duration": 1168, "sigma": 64, "width": 912}}, {"name": "parametric_pulse", "t0": 1488, "ch": "d22", "label": "CR90m_d22_u44", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.026571532995724068, 0.0001929410080559381], "duration": 1168, "sigma": 64, "width": 912}}, {"name": "fc", "t0": 2656, "ch": "d22", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2656, "ch": "d22", "label": "X90p_d22", "pulse_shape": "drag", "parameters": {"amp": [0.10452897318719664, 0.0004032729900171576], "beta": 1.628318054634379, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u31", "phase": -3.141592653589793}, {"name": "fc", "t0": 2656, "ch": "u31", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u41", "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.13401514458493283, -0.03368456010808949], "duration": 1168, "sigma": 64, "width": 912}}, {"name": "parametric_pulse", "t0": 1488, "ch": "u44", "label": "CR90m_u44", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.13401514458493283, 0.03368456010808948], "duration": 1168, "sigma": 64, "width": 912}}, {"name": "fc", "t0": 2656, "ch": "u44", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u46", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u48", "phase": -3.141592653589793}, {"name": "fc", "t0": 2656, "ch": "u48", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [22, 23], "sequence": [{"name": "fc", "t0": 0, "ch": "d22", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "Y90p_d22", "pulse_shape": "drag", "parameters": {"amp": [-0.00040327299001715076, 0.10452897318719664], "beta": 1.628318054634379, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d22", "label": "CR90p_d22_u48", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02961468799331379, -0.00033256998052020735], "duration": 1072, "sigma": 64, "width": 816}}, {"name": "parametric_pulse", "t0": 1392, "ch": "d22", "label": "CR90m_d22_u48", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.02961468799331379, 0.000332569980520211], "duration": 1072, "sigma": 64, "width": 816}}, {"name": "fc", "t0": 2464, "ch": "d22", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2464, "ch": "d22", "label": "X90p_d22", "pulse_shape": "drag", "parameters": {"amp": [0.10452897318719664, 0.0004032729900171576], "beta": 1.628318054634379, "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.11259097245717699, 0.0017474463098071482], "beta": -0.8192925427610356, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1232, "ch": "d23", "label": "Xp_d23", "pulse_shape": "drag", "parameters": {"amp": [0.22503842054111084, 0.0], "beta": -0.826050899587014, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2464, "ch": "d23", "label": "Y90m_d23", "pulse_shape": "drag", "parameters": {"amp": [0.0017474463098071764, -0.11259097245717699], "beta": -0.8192925427610356, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u31", "phase": -3.141592653589793}, {"name": "fc", "t0": 2464, "ch": "u31", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u44", "phase": -3.141592653589793}, {"name": "fc", "t0": 2464, "ch": "u44", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u47", "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.049168801413527995, -0.15421122362904002], "duration": 1072, "sigma": 64, "width": 816}}, {"name": "parametric_pulse", "t0": 1392, "ch": "u48", "label": "CR90m_u48", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.049168801413528015, 0.15421122362904002], "duration": 1072, "sigma": 64, "width": 816}}, {"name": "fc", "t0": 2464, "ch": "u48", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u50", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [23, 22], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "X90p_d22", "pulse_shape": "drag", "parameters": {"amp": [0.10452897318719664, 0.0004032729900171576], "beta": 1.628318054634379, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d22", "label": "CR90p_d22_u48", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02961468799331379, -0.00033256998052020735], "duration": 1072, "sigma": 64, "width": 816}}, {"name": "parametric_pulse", "t0": 1392, "ch": "d22", "label": "CR90m_d22_u48", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.02961468799331379, 0.000332569980520211], "duration": 1072, "sigma": 64, "width": 816}}, {"name": "fc", "t0": 0, "ch": "d23", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d23", "label": "Ym_d23", "pulse_shape": "drag", "parameters": {"amp": [-4.13388872101271e-17, -0.22503842054111084], "beta": -0.826050899587014, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1232, "ch": "d23", "label": "Xp_d23", "pulse_shape": "drag", "parameters": {"amp": [0.22503842054111084, 0.0], "beta": -0.826050899587014, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u47", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u48", "label": "CR90p_u48", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.049168801413527995, -0.15421122362904002], "duration": 1072, "sigma": 64, "width": 816}}, {"name": "parametric_pulse", "t0": 1392, "ch": "u48", "label": "CR90m_u48", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.049168801413528015, 0.15421122362904002], "duration": 1072, "sigma": 64, "width": 816}}, {"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": [-4.13388872101271e-17, -0.22503842054111084], "beta": -0.826050899587014, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1904, "ch": "d23", "label": "Xp_d23", "pulse_shape": "drag", "parameters": {"amp": [0.22503842054111084, 0.0], "beta": -0.826050899587014, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d24", "label": "X90p_d24", "pulse_shape": "drag", "parameters": {"amp": [0.12008616562884425, -0.00019569291853983403], "beta": 0.0737359797208475, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d24", "label": "CR90p_d24_u49", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.021613144317584574, 0.00035695364674226274], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "parametric_pulse", "t0": 2064, "ch": "d24", "label": "CR90m_d24_u49", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.021613144317584574, -0.0003569536467422601], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "fc", "t0": 0, "ch": "u47", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u49", "label": "CR90p_u49", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.10093119291592566, 0.06873746571398447], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "parametric_pulse", "t0": 2064, "ch": "u49", "label": "CR90m_u49", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10093119291592567, -0.06873746571398445], "duration": 1744, "sigma": 64, "width": 1488}}, {"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.11259097245717699, 0.0017474463098071482], "beta": -0.8192925427610356, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1904, "ch": "d23", "label": "Xp_d23", "pulse_shape": "drag", "parameters": {"amp": [0.22503842054111084, 0.0], "beta": -0.826050899587014, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 3808, "ch": "d23", "label": "Y90m_d23", "pulse_shape": "drag", "parameters": {"amp": [0.0017474463098071764, -0.11259097245717699], "beta": -0.8192925427610356, "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.00019569291853984685, 0.12008616562884425], "beta": 0.0737359797208475, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d24", "label": "CR90p_d24_u49", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.021613144317584574, 0.00035695364674226274], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "parametric_pulse", "t0": 2064, "ch": "d24", "label": "CR90m_d24_u49", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.021613144317584574, -0.0003569536467422601], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "fc", "t0": 3808, "ch": "d24", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 3808, "ch": "d24", "label": "X90p_d24", "pulse_shape": "drag", "parameters": {"amp": [0.12008616562884425, -0.00019569291853983403], "beta": 0.0737359797208475, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u47", "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.10093119291592566, 0.06873746571398447], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "parametric_pulse", "t0": 2064, "ch": "u49", "label": "CR90m_u49", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10093119291592567, -0.06873746571398445], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "fc", "t0": 3808, "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": 3808, "ch": "u53", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u74", "phase": -3.141592653589793}, {"name": "fc", "t0": 3808, "ch": "u74", "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": [0.00019569291853984685, 0.12008616562884425], "beta": 0.0737359797208475, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d24", "label": "CR90p_d24_u53", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.049754947979465516, -0.00026717416334890684], "duration": 784, "sigma": 64, "width": 528}}, {"name": "parametric_pulse", "t0": 1104, "ch": "d24", "label": "CR90m_d24_u53", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.049754947979465516, 0.0002671741633489129], "duration": 784, "sigma": 64, "width": 528}}, {"name": "fc", "t0": 1888, "ch": "d24", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1888, "ch": "d24", "label": "X90p_d24", "pulse_shape": "drag", "parameters": {"amp": [0.12008616562884425, -0.00019569291853983403], "beta": 0.0737359797208475, "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.19349250192396455, 0.0006473554137496782], "beta": 0.8501523480808286, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 944, "ch": "d25", "label": "Xp_d25", "pulse_shape": "drag", "parameters": {"amp": [0.38791843986159485, 0.0], "beta": 0.8249212568741953, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1888, "ch": "d25", "label": "Y90m_d25", "pulse_shape": "drag", "parameters": {"amp": [0.0006473554137496946, -0.19349250192396455], "beta": 0.8501523480808286, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u49", "phase": -3.141592653589793}, {"name": "fc", "t0": 1888, "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.6811729442738144, 0.2975287615093276], "duration": 784, "sigma": 64, "width": 528}}, {"name": "parametric_pulse", "t0": 1104, "ch": "u53", "label": "CR90m_u53", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.6811729442738144, -0.2975287615093277], "duration": 784, "sigma": 64, "width": 528}}, {"name": "fc", "t0": 1888, "ch": "u53", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u56", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u74", "phase": -3.141592653589793}, {"name": "fc", "t0": 1888, "ch": "u74", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [24, 34], "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": [0.00019569291853984685, 0.12008616562884425], "beta": 0.0737359797208475, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d24", "label": "CR90p_d24_u74", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.01882553832013533, 0.00015052369425096307], "duration": 1904, "sigma": 64, "width": 1648}}, {"name": "parametric_pulse", "t0": 2224, "ch": "d24", "label": "CR90m_d24_u74", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.01882553832013533, -0.00015052369425096077], "duration": 1904, "sigma": 64, "width": 1648}}, {"name": "fc", "t0": 4128, "ch": "d24", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 4128, "ch": "d24", "label": "X90p_d24", "pulse_shape": "drag", "parameters": {"amp": [0.12008616562884425, -0.00019569291853983403], "beta": 0.0737359797208475, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d34", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d34", "label": "X90p_d34", "pulse_shape": "drag", "parameters": {"amp": [0.1031016977628983, 0.0006833613539886323], "beta": 0.5245085704395506, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2064, "ch": "d34", "label": "Xp_d34", "pulse_shape": "drag", "parameters": {"amp": [0.20681627854421744, 0.0], "beta": 0.47692300828027834, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 4128, "ch": "d34", "label": "Y90m_d34", "pulse_shape": "drag", "parameters": {"amp": [0.000683361353988656, -0.1031016977628983], "beta": 0.5245085704395506, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u49", "phase": -3.141592653589793}, {"name": "fc", "t0": 4128, "ch": "u49", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u52", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u53", "phase": -3.141592653589793}, {"name": "fc", "t0": 4128, "ch": "u53", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u74", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u74", "label": "CR90p_u74", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05850241404990918, -0.1394262226289472], "duration": 1904, "sigma": 64, "width": 1648}}, {"name": "parametric_pulse", "t0": 2224, "ch": "u74", "label": "CR90m_u74", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05850241404990919, 0.1394262226289472], "duration": 1904, "sigma": 64, "width": 1648}}, {"name": "fc", "t0": 4128, "ch": "u74", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u94", "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.12008616562884425, -0.00019569291853983403], "beta": 0.0737359797208475, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d24", "label": "CR90p_d24_u53", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.049754947979465516, -0.00026717416334890684], "duration": 784, "sigma": 64, "width": 528}}, {"name": "parametric_pulse", "t0": 1104, "ch": "d24", "label": "CR90m_d24_u53", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.049754947979465516, 0.0002671741633489129], "duration": 784, "sigma": 64, "width": 528}}, {"name": "fc", "t0": 0, "ch": "d25", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d25", "label": "Ym_d25", "pulse_shape": "drag", "parameters": {"amp": [-7.125946135601058e-17, -0.38791843986159485], "beta": 0.8249212568741953, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 944, "ch": "d25", "label": "Xp_d25", "pulse_shape": "drag", "parameters": {"amp": [0.38791843986159485, 0.0], "beta": 0.8249212568741953, "duration": 160, "sigma": 40}}, {"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.6811729442738144, 0.2975287615093276], "duration": 784, "sigma": 64, "width": 528}}, {"name": "parametric_pulse", "t0": 1104, "ch": "u53", "label": "CR90m_u53", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.6811729442738144, -0.2975287615093277], "duration": 784, "sigma": 64, "width": 528}}, {"name": "fc", "t0": 0, "ch": "u56", "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.0006473554137496753, 0.19349250192396455], "beta": 0.8501523480808286, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d25", "label": "CR90p_d25_u56", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07890271780495237, 0.00013029048154958325], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d25", "label": "CR90m_d25_u56", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07890271780495237, -0.0001302904815495736], "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.19349250192396455, 0.0006473554137496782], "beta": 0.8501523480808286, "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.12370745592779968, 0.0023081177405813074], "beta": -1.9921354121480892, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d26", "label": "Xp_d26", "pulse_shape": "drag", "parameters": {"amp": [0.24700612784901774, 0.0], "beta": -1.951263849684402, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1920, "ch": "d26", "label": "Y90m_d26", "pulse_shape": "drag", "parameters": {"amp": [0.002308117740581243, -0.12370745592779968], "beta": -1.9921354121480892, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u33", "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": "u54", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u56", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u56", "label": "CR90p_u56", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.22689824291727484, 0.43447727991039453], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u56", "label": "CR90m_u56", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2268982429172749, -0.4344772799103945], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "u56", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u58", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [26, 16], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d16", "label": "X90p_d16", "pulse_shape": "drag", "parameters": {"amp": [0.10014577319325092, 0.0011746805802234992], "beta": -0.5844127608981904, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d16", "label": "CR90p_d16_u55", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06341754999546964, 0.0024163984285384306], "duration": 544, "sigma": 64, "width": 288}}, {"name": "parametric_pulse", "t0": 864, "ch": "d16", "label": "CR90m_d16_u55", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06341754999546964, -0.002416398428538423], "duration": 544, "sigma": 64, "width": 288}}, {"name": "fc", "t0": 0, "ch": "d26", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d26", "label": "Ym_d26", "pulse_shape": "drag", "parameters": {"amp": [-4.537428957601222e-17, -0.24700612784901774], "beta": -1.951263849684402, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 704, "ch": "d26", "label": "Xp_d26", "pulse_shape": "drag", "parameters": {"amp": [0.24700612784901774, 0.0], "beta": -1.951263849684402, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u33", "phase": 1.5707963267948966}, {"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.6079210103870523, -0.25525565777005255], "duration": 544, "sigma": 64, "width": 288}}, {"name": "parametric_pulse", "t0": 864, "ch": "u55", "label": "CR90m_u55", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.6079210103870523, 0.2552556577700526], "duration": 544, "sigma": 64, "width": 288}}, {"name": "fc", "t0": 0, "ch": "u58", "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.19349250192396455, 0.0006473554137496782], "beta": 0.8501523480808286, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d25", "label": "CR90p_d25_u56", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07890271780495237, 0.00013029048154958325], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d25", "label": "CR90m_d25_u56", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07890271780495237, -0.0001302904815495736], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "d26", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d26", "label": "Ym_d26", "pulse_shape": "drag", "parameters": {"amp": [-4.537428957601222e-17, -0.24700612784901774], "beta": -1.951263849684402, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d26", "label": "Xp_d26", "pulse_shape": "drag", "parameters": {"amp": [0.24700612784901774, 0.0], "beta": -1.951263849684402, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u33", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u54", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u56", "label": "CR90p_u56", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.22689824291727484, 0.43447727991039453], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u56", "label": "CR90m_u56", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2268982429172749, -0.4344772799103945], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "u58", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [26, 27], "sequence": [{"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.002308117740581313, 0.12370745592779968], "beta": -1.9921354121480892, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d26", "label": "CR90p_d26_u58", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06781505160612691, 0.005367571065171387], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "d26", "label": "CR90m_d26_u58", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06781505160612691, -0.0053675710651713785], "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.12370745592779968, 0.0023081177405813074], "beta": -1.9921354121480892, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d27", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d27", "label": "X90p_d27", "pulse_shape": "drag", "parameters": {"amp": [0.0975304567213684, 0.0019139994718727436], "beta": -1.1805954740326357, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 784, "ch": "d27", "label": "Xp_d27", "pulse_shape": "drag", "parameters": {"amp": [0.19515671925301054, 0.0], "beta": -1.2096439489059458, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1568, "ch": "d27", "label": "Y90m_d27", "pulse_shape": "drag", "parameters": {"amp": [0.0019139994718727362, -0.0975304567213684], "beta": -1.1805954740326357, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u33", "phase": -3.141592653589793}, {"name": "fc", "t0": 1568, "ch": "u33", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u54", "phase": -3.141592653589793}, {"name": "fc", "t0": 1568, "ch": "u54", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u57", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u58", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u58", "label": "CR90p_u58", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2980753302704841, -0.05190237186069303], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "u58", "label": "CR90m_u58", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2980753302704841, 0.051902371860693], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 1568, "ch": "u58", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u60", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [27, 26], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d26", "label": "X90p_d26", "pulse_shape": "drag", "parameters": {"amp": [0.12370745592779968, 0.0023081177405813074], "beta": -1.9921354121480892, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d26", "label": "CR90p_d26_u58", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06781505160612691, 0.005367571065171387], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "d26", "label": "CR90m_d26_u58", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06781505160612691, -0.0053675710651713785], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 0, "ch": "d27", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d27", "label": "Ym_d27", "pulse_shape": "drag", "parameters": {"amp": [-3.5849707734794695e-17, -0.19515671925301054], "beta": -1.2096439489059458, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 784, "ch": "d27", "label": "Xp_d27", "pulse_shape": "drag", "parameters": {"amp": [0.19515671925301054, 0.0], "beta": -1.2096439489059458, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u57", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u58", "label": "CR90p_u58", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2980753302704841, -0.05190237186069303], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "u58", "label": "CR90m_u58", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2980753302704841, 0.051902371860693], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 0, "ch": "u60", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [27, 28], "sequence": [{"name": "fc", "t0": 0, "ch": "d27", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d27", "label": "Ym_d27", "pulse_shape": "drag", "parameters": {"amp": [-3.5849707734794695e-17, -0.19515671925301054], "beta": -1.2096439489059458, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2272, "ch": "d27", "label": "Xp_d27", "pulse_shape": "drag", "parameters": {"amp": [0.19515671925301054, 0.0], "beta": -1.2096439489059458, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d28", "label": "X90p_d28", "pulse_shape": "drag", "parameters": {"amp": [0.09338563445466869, 0.00033341233559143143], "beta": 0.5634615459559276, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d28", "label": "CR90p_d28_u59", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.011613226358577197, 0.0009503441299322366], "duration": 2112, "sigma": 64, "width": 1856}}, {"name": "parametric_pulse", "t0": 2432, "ch": "d28", "label": "CR90m_d28_u59", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.011613226358577197, -0.0009503441299322352], "duration": 2112, "sigma": 64, "width": 1856}}, {"name": "fc", "t0": 0, "ch": "u57", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u59", "label": "CR90p_u59", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.12117353040890248, -0.062492393672802474], "duration": 2112, "sigma": 64, "width": 1856}}, {"name": "parametric_pulse", "t0": 2432, "ch": "u59", "label": "CR90m_u59", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1211735304089025, 0.06249239367280246], "duration": 2112, "sigma": 64, "width": 1856}}, {"name": "fc", "t0": 0, "ch": "u60", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [28, 27], "sequence": [{"name": "fc", "t0": 0, "ch": "d27", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d27", "label": "X90p_d27", "pulse_shape": "drag", "parameters": {"amp": [0.0975304567213684, 0.0019139994718727436], "beta": -1.1805954740326357, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2272, "ch": "d27", "label": "Xp_d27", "pulse_shape": "drag", "parameters": {"amp": [0.19515671925301054, 0.0], "beta": -1.2096439489059458, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 4544, "ch": "d27", "label": "Y90m_d27", "pulse_shape": "drag", "parameters": {"amp": [0.0019139994718727362, -0.0975304567213684], "beta": -1.1805954740326357, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d28", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d28", "label": "Y90p_d28", "pulse_shape": "drag", "parameters": {"amp": [-0.0003334123355914212, 0.09338563445466869], "beta": 0.5634615459559276, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d28", "label": "CR90p_d28_u59", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.011613226358577197, 0.0009503441299322366], "duration": 2112, "sigma": 64, "width": 1856}}, {"name": "parametric_pulse", "t0": 2432, "ch": "d28", "label": "CR90m_d28_u59", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.011613226358577197, -0.0009503441299322352], "duration": 2112, "sigma": 64, "width": 1856}}, {"name": "fc", "t0": 4544, "ch": "d28", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 4544, "ch": "d28", "label": "X90p_d28", "pulse_shape": "drag", "parameters": {"amp": [0.09338563445466869, 0.00033341233559143143], "beta": 0.5634615459559276, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u57", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u59", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u59", "label": "CR90p_u59", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.12117353040890248, -0.062492393672802474], "duration": 2112, "sigma": 64, "width": 1856}}, {"name": "parametric_pulse", "t0": 2432, "ch": "u59", "label": "CR90m_u59", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1211735304089025, 0.06249239367280246], "duration": 2112, "sigma": 64, "width": 1856}}, {"name": "fc", "t0": 4544, "ch": "u59", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u60", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u63", "phase": -3.141592653589793}, {"name": "fc", "t0": 4544, "ch": "u63", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u76", "phase": -3.141592653589793}, {"name": "fc", "t0": 4544, "ch": "u76", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [28, 29], "sequence": [{"name": "fc", "t0": 0, "ch": "d28", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d28", "label": "Ym_d28", "pulse_shape": "drag", "parameters": {"amp": [-3.412656899814973e-17, -0.1857763888707067], "beta": 0.4999648403727735, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 928, "ch": "d28", "label": "Xp_d28", "pulse_shape": "drag", "parameters": {"amp": [0.1857763888707067, 0.0], "beta": 0.4999648403727735, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d29", "label": "X90p_d29", "pulse_shape": "drag", "parameters": {"amp": [0.09877234192398036, 0.0020614535062876906], "beta": -1.3799289543722217, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d29", "label": "CR90p_d29_u61", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0440357406271852, 0.0015490061187994188], "duration": 768, "sigma": 64, "width": 512}}, {"name": "parametric_pulse", "t0": 1088, "ch": "d29", "label": "CR90m_d29_u61", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0440357406271852, -0.0015490061187994134], "duration": 768, "sigma": 64, "width": 512}}, {"name": "fc", "t0": 0, "ch": "u59", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u61", "label": "CR90p_u61", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.30508666551604763, 0.17753728361872273], "duration": 768, "sigma": 64, "width": 512}}, {"name": "parametric_pulse", "t0": 1088, "ch": "u61", "label": "CR90m_u61", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.30508666551604763, -0.17753728361872276], "duration": 768, "sigma": 64, "width": 512}}, {"name": "fc", "t0": 0, "ch": "u63", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u76", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [28, 35], "sequence": [{"name": "fc", "t0": 0, "ch": "d28", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d28", "label": "Y90p_d28", "pulse_shape": "drag", "parameters": {"amp": [-0.0003334123355914212, 0.09338563445466869], "beta": 0.5634615459559276, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d28", "label": "CR90p_d28_u76", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.010664904765857974, 0.0008495855994938216], "duration": 2288, "sigma": 64, "width": 2032}}, {"name": "parametric_pulse", "t0": 2608, "ch": "d28", "label": "CR90m_d28_u76", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.010664904765857974, -0.0008495855994938203], "duration": 2288, "sigma": 64, "width": 2032}}, {"name": "fc", "t0": 4896, "ch": "d28", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 4896, "ch": "d28", "label": "X90p_d28", "pulse_shape": "drag", "parameters": {"amp": [0.09338563445466869, 0.00033341233559143143], "beta": 0.5634615459559276, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d35", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d35", "label": "X90p_d35", "pulse_shape": "drag", "parameters": {"amp": [0.09543579625182948, 0.002042956899134053], "beta": -1.5020529715515876, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2448, "ch": "d35", "label": "Xp_d35", "pulse_shape": "drag", "parameters": {"amp": [0.18998064719918778, 0.0], "beta": -1.4699802077797814, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 4896, "ch": "d35", "label": "Y90m_d35", "pulse_shape": "drag", "parameters": {"amp": [0.002042956899134063, -0.09543579625182948], "beta": -1.5020529715515876, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u104", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u59", "phase": -3.141592653589793}, {"name": "fc", "t0": 4896, "ch": "u59", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u62", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u63", "phase": -3.141592653589793}, {"name": "fc", "t0": 4896, "ch": "u63", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u76", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u76", "label": "CR90p_u76", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07893466365020727, 0.10892741428644215], "duration": 2288, "sigma": 64, "width": 2032}}, {"name": "parametric_pulse", "t0": 2608, "ch": "u76", "label": "CR90m_u76", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07893466365020728, -0.10892741428644213], "duration": 2288, "sigma": 64, "width": 2032}}, {"name": "fc", "t0": 4896, "ch": "u76", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [29, 28], "sequence": [{"name": "fc", "t0": 0, "ch": "d28", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d28", "label": "X90p_d28", "pulse_shape": "drag", "parameters": {"amp": [0.09338563445466869, 0.00033341233559143143], "beta": 0.5634615459559276, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 928, "ch": "d28", "label": "Xp_d28", "pulse_shape": "drag", "parameters": {"amp": [0.1857763888707067, 0.0], "beta": 0.4999648403727735, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1856, "ch": "d28", "label": "Y90m_d28", "pulse_shape": "drag", "parameters": {"amp": [0.00033341233559143046, -0.09338563445466869], "beta": 0.5634615459559276, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d29", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d29", "label": "Y90p_d29", "pulse_shape": "drag", "parameters": {"amp": [-0.0020614535062876953, 0.09877234192398036], "beta": -1.3799289543722217, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d29", "label": "CR90p_d29_u61", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0440357406271852, 0.0015490061187994188], "duration": 768, "sigma": 64, "width": 512}}, {"name": "parametric_pulse", "t0": 1088, "ch": "d29", "label": "CR90m_d29_u61", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0440357406271852, -0.0015490061187994134], "duration": 768, "sigma": 64, "width": 512}}, {"name": "fc", "t0": 1856, "ch": "d29", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1856, "ch": "d29", "label": "X90p_d29", "pulse_shape": "drag", "parameters": {"amp": [0.09877234192398036, 0.0020614535062876906], "beta": -1.3799289543722217, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u59", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u61", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u61", "label": "CR90p_u61", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.30508666551604763, 0.17753728361872273], "duration": 768, "sigma": 64, "width": 512}}, {"name": "parametric_pulse", "t0": 1088, "ch": "u61", "label": "CR90m_u61", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.30508666551604763, -0.17753728361872276], "duration": 768, "sigma": 64, "width": 512}}, {"name": "fc", "t0": 1856, "ch": "u61", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u63", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u66", "phase": -3.141592653589793}, {"name": "fc", "t0": 1856, "ch": "u66", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u76", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [29, 30], "sequence": [{"name": "fc", "t0": 0, "ch": "d29", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d29", "label": "Ym_d29", "pulse_shape": "drag", "parameters": {"amp": [-3.614389247429507e-17, -0.1967581863846232], "beta": -1.3744451424145125, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1280, "ch": "d29", "label": "Xp_d29", "pulse_shape": "drag", "parameters": {"amp": [0.1967581863846232, 0.0], "beta": -1.3744451424145125, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d30", "label": "X90p_d30", "pulse_shape": "drag", "parameters": {"amp": [0.0998203943189428, -0.0008913257066435659], "beta": 1.9815355924298044, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d30", "label": "CR90p_d30_u64", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.025327879204548636, -0.00020678942409365096], "duration": 1120, "sigma": 64, "width": 864}}, {"name": "parametric_pulse", "t0": 1440, "ch": "d30", "label": "CR90m_d30_u64", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.025327879204548636, 0.00020678942409365405], "duration": 1120, "sigma": 64, "width": 864}}, {"name": "fc", "t0": 0, "ch": "u61", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u64", "label": "CR90p_u64", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.18825898890984513, -0.1438858554272763], "duration": 1120, "sigma": 64, "width": 864}}, {"name": "parametric_pulse", "t0": 1440, "ch": "u64", "label": "CR90m_u64", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.18825898890984516, 0.14388585542727628], "duration": 1120, "sigma": 64, "width": 864}}, {"name": "fc", "t0": 0, "ch": "u66", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [30, 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.0979722505683425, 0.0015733702439471957], "beta": -0.4233679463109371, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 864, "ch": "d17", "label": "Xp_d17", "pulse_shape": "drag", "parameters": {"amp": [0.19508525450381228, 0.0], "beta": -0.2745112148012951, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1728, "ch": "d17", "label": "Y90m_d17", "pulse_shape": "drag", "parameters": {"amp": [0.0015733702439471673, -0.0979722505683425], "beta": -0.4233679463109371, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d30", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d30", "label": "Y90p_d30", "pulse_shape": "drag", "parameters": {"amp": [0.0008913257066435639, 0.0998203943189428], "beta": 1.9815355924298044, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d30", "label": "CR90p_d30_u35", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.042903776796026964, -0.0017112350426424186], "duration": 704, "sigma": 64, "width": 448}}, {"name": "parametric_pulse", "t0": 1024, "ch": "d30", "label": "CR90m_d30_u35", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.042903776796026964, 0.0017112350426424238], "duration": 704, "sigma": 64, "width": 448}}, {"name": "fc", "t0": 1728, "ch": "d30", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1728, "ch": "d30", "label": "X90p_d30", "pulse_shape": "drag", "parameters": {"amp": [0.0998203943189428, -0.0008913257066435659], "beta": 1.9815355924298044, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u26", "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.3477422448806514, 0.38389719132274486], "duration": 704, "sigma": 64, "width": 448}}, {"name": "parametric_pulse", "t0": 1024, "ch": "u35", "label": "CR90m_u35", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.34774224488065136, -0.3838971913227449], "duration": 704, "sigma": 64, "width": 448}}, {"name": "fc", "t0": 1728, "ch": "u35", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u64", "phase": -3.141592653589793}, {"name": "fc", "t0": 1728, "ch": "u64", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u65", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u68", "phase": -3.141592653589793}, {"name": "fc", "t0": 1728, "ch": "u68", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [30, 29], "sequence": [{"name": "fc", "t0": 0, "ch": "d29", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d29", "label": "X90p_d29", "pulse_shape": "drag", "parameters": {"amp": [0.09877234192398036, 0.0020614535062876906], "beta": -1.3799289543722217, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1280, "ch": "d29", "label": "Xp_d29", "pulse_shape": "drag", "parameters": {"amp": [0.1967581863846232, 0.0], "beta": -1.3744451424145125, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2560, "ch": "d29", "label": "Y90m_d29", "pulse_shape": "drag", "parameters": {"amp": [0.002061453506287661, -0.09877234192398036], "beta": -1.3799289543722217, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d30", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d30", "label": "Y90p_d30", "pulse_shape": "drag", "parameters": {"amp": [0.0008913257066435639, 0.0998203943189428], "beta": 1.9815355924298044, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d30", "label": "CR90p_d30_u64", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.025327879204548636, -0.00020678942409365096], "duration": 1120, "sigma": 64, "width": 864}}, {"name": "parametric_pulse", "t0": 1440, "ch": "d30", "label": "CR90m_d30_u64", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.025327879204548636, 0.00020678942409365405], "duration": 1120, "sigma": 64, "width": 864}}, {"name": "fc", "t0": 2560, "ch": "d30", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2560, "ch": "d30", "label": "X90p_d30", "pulse_shape": "drag", "parameters": {"amp": [0.0998203943189428, -0.0008913257066435659], "beta": 1.9815355924298044, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u35", "phase": -3.141592653589793}, {"name": "fc", "t0": 2560, "ch": "u35", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u61", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u64", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u64", "label": "CR90p_u64", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.18825898890984513, -0.1438858554272763], "duration": 1120, "sigma": 64, "width": 864}}, {"name": "parametric_pulse", "t0": 1440, "ch": "u64", "label": "CR90m_u64", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.18825898890984516, 0.14388585542727628], "duration": 1120, "sigma": 64, "width": 864}}, {"name": "fc", "t0": 2560, "ch": "u64", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u66", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u68", "phase": -3.141592653589793}, {"name": "fc", "t0": 2560, "ch": "u68", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [30, 31], "sequence": [{"name": "fc", "t0": 0, "ch": "d30", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d30", "label": "Y90p_d30", "pulse_shape": "drag", "parameters": {"amp": [0.0008913257066435639, 0.0998203943189428], "beta": 1.9815355924298044, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d30", "label": "CR90p_d30_u68", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.039040839490160864, -8.320421474388028e-05], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1136, "ch": "d30", "label": "CR90m_d30_u68", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.039040839490160864, 8.320421474388507e-05], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 1952, "ch": "d30", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1952, "ch": "d30", "label": "X90p_d30", "pulse_shape": "drag", "parameters": {"amp": [0.0998203943189428, -0.0008913257066435659], "beta": 1.9815355924298044, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d31", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d31", "label": "X90p_d31", "pulse_shape": "drag", "parameters": {"amp": [0.088832157763875, 0.0011055588213696723], "beta": -0.08666964349488815, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 976, "ch": "d31", "label": "Xp_d31", "pulse_shape": "drag", "parameters": {"amp": [0.1772718322630821, 0.0], "beta": -0.1309833671232473, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1952, "ch": "d31", "label": "Y90m_d31", "pulse_shape": "drag", "parameters": {"amp": [0.0011055588213696348, -0.088832157763875], "beta": -0.08666964349488815, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u35", "phase": -3.141592653589793}, {"name": "fc", "t0": 1952, "ch": "u35", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u64", "phase": -3.141592653589793}, {"name": "fc", "t0": 1952, "ch": "u64", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u67", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u68", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u68", "label": "CR90p_u68", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.12888520385496838, 0.06519575432325311], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1136, "ch": "u68", "label": "CR90m_u68", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.12888520385496838, -0.06519575432325313], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 1952, "ch": "u68", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u70", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [31, 30], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d30", "label": "X90p_d30", "pulse_shape": "drag", "parameters": {"amp": [0.0998203943189428, -0.0008913257066435659], "beta": 1.9815355924298044, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d30", "label": "CR90p_d30_u68", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.039040839490160864, -8.320421474388028e-05], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1136, "ch": "d30", "label": "CR90m_d30_u68", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.039040839490160864, 8.320421474388507e-05], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 0, "ch": "d31", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d31", "label": "Ym_d31", "pulse_shape": "drag", "parameters": {"amp": [-3.2564307293995495e-17, -0.1772718322630821], "beta": -0.1309833671232473, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 976, "ch": "d31", "label": "Xp_d31", "pulse_shape": "drag", "parameters": {"amp": [0.1772718322630821, 0.0], "beta": -0.1309833671232473, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u67", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u68", "label": "CR90p_u68", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.12888520385496838, 0.06519575432325311], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1136, "ch": "u68", "label": "CR90m_u68", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.12888520385496838, -0.06519575432325313], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 0, "ch": "u70", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [31, 32], "sequence": [{"name": "fc", "t0": 0, "ch": "d31", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d31", "label": "Y90p_d31", "pulse_shape": "drag", "parameters": {"amp": [-0.0011055588213696656, 0.088832157763875], "beta": -0.08666964349488815, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d31", "label": "CR90p_d31_u70", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05336124326026894, 0.0018696879615808146], "duration": 576, "sigma": 64, "width": 320}}, {"name": "parametric_pulse", "t0": 896, "ch": "d31", "label": "CR90m_d31_u70", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05336124326026894, -0.0018696879615808081], "duration": 576, "sigma": 64, "width": 320}}, {"name": "fc", "t0": 1472, "ch": "d31", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1472, "ch": "d31", "label": "X90p_d31", "pulse_shape": "drag", "parameters": {"amp": [0.088832157763875, 0.0011055588213696723], "beta": -0.08666964349488815, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d32", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d32", "label": "X90p_d32", "pulse_shape": "drag", "parameters": {"amp": [0.08863224981973591, 0.001253267673417812], "beta": -1.2669442943495863, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 736, "ch": "d32", "label": "Xp_d32", "pulse_shape": "drag", "parameters": {"amp": [0.17611114603873637, 0.0], "beta": -1.1972511311869525, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1472, "ch": "d32", "label": "Y90m_d32", "pulse_shape": "drag", "parameters": {"amp": [0.0012532676734178223, -0.08863224981973591], "beta": -1.2669442943495863, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u67", "phase": -3.141592653589793}, {"name": "fc", "t0": 1472, "ch": "u67", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u69", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u70", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u70", "label": "CR90p_u70", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.01880293749566312, 0.39657028300825203], "duration": 576, "sigma": 64, "width": 320}}, {"name": "parametric_pulse", "t0": 896, "ch": "u70", "label": "CR90m_u70", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.018802937495663072, -0.39657028300825203], "duration": 576, "sigma": 64, "width": 320}}, {"name": "fc", "t0": 1472, "ch": "u70", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u78", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [32, 31], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d31", "label": "X90p_d31", "pulse_shape": "drag", "parameters": {"amp": [0.088832157763875, 0.0011055588213696723], "beta": -0.08666964349488815, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d31", "label": "CR90p_d31_u70", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05336124326026894, 0.0018696879615808146], "duration": 576, "sigma": 64, "width": 320}}, {"name": "parametric_pulse", "t0": 896, "ch": "d31", "label": "CR90m_d31_u70", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05336124326026894, -0.0018696879615808081], "duration": 576, "sigma": 64, "width": 320}}, {"name": "fc", "t0": 0, "ch": "d32", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d32", "label": "Ym_d32", "pulse_shape": "drag", "parameters": {"amp": [-3.2351092693576586e-17, -0.17611114603873637], "beta": -1.1972511311869525, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 736, "ch": "d32", "label": "Xp_d32", "pulse_shape": "drag", "parameters": {"amp": [0.17611114603873637, 0.0], "beta": -1.1972511311869525, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u69", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u70", "label": "CR90p_u70", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.01880293749566312, 0.39657028300825203], "duration": 576, "sigma": 64, "width": 320}}, {"name": "parametric_pulse", "t0": 896, "ch": "u70", "label": "CR90m_u70", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.018802937495663072, -0.39657028300825203], "duration": 576, "sigma": 64, "width": 320}}, {"name": "fc", "t0": 0, "ch": "u78", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [32, 36], "sequence": [{"name": "fc", "t0": 0, "ch": "d32", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d32", "label": "Ym_d32", "pulse_shape": "drag", "parameters": {"amp": [-3.2351092693576586e-17, -0.17611114603873637], "beta": -1.1972511311869525, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 720, "ch": "d32", "label": "Xp_d32", "pulse_shape": "drag", "parameters": {"amp": [0.17611114603873637, 0.0], "beta": -1.1972511311869525, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d36", "label": "X90p_d36", "pulse_shape": "drag", "parameters": {"amp": [0.09604187125716661, 0.002171430094789102], "beta": -1.356253373528273, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d36", "label": "CR90p_d36_u71", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06208294204626178, 0.0035942436862040077], "duration": 560, "sigma": 64, "width": 304}}, {"name": "parametric_pulse", "t0": 880, "ch": "d36", "label": "CR90m_d36_u71", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06208294204626178, -0.003594243686204], "duration": 560, "sigma": 64, "width": 304}}, {"name": "fc", "t0": 0, "ch": "u69", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u71", "label": "CR90p_u71", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.12482685477829716, -0.507246917105793], "duration": 560, "sigma": 64, "width": 304}}, {"name": "parametric_pulse", "t0": 880, "ch": "u71", "label": "CR90m_u71", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.12482685477829711, 0.507246917105793], "duration": 560, "sigma": 64, "width": 304}}, {"name": "fc", "t0": 0, "ch": "u78", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [33, 20], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d20", "label": "X90p_d20", "pulse_shape": "drag", "parameters": {"amp": [0.10547829975820261, 0.0019050880991815444], "beta": -0.5067821802819922, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d20", "label": "CR90p_d20_u72", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.052645080856505544, 0.0029460404177246925], "duration": 656, "sigma": 64, "width": 400}}, {"name": "parametric_pulse", "t0": 976, "ch": "d20", "label": "CR90m_d20_u72", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.052645080856505544, -0.002946040417724686], "duration": 656, "sigma": 64, "width": 400}}, {"name": "fc", "t0": 0, "ch": "d33", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d33", "label": "Ym_d33", "pulse_shape": "drag", "parameters": {"amp": [-3.648816102407817e-17, -0.19863229708071828], "beta": 0.6519513195788639, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 816, "ch": "d33", "label": "Xp_d33", "pulse_shape": "drag", "parameters": {"amp": [0.19863229708071828, 0.0], "beta": 0.6519513195788639, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u42", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u72", "label": "CR90p_u72", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.15503562125303913, 0.20705803471036918], "duration": 656, "sigma": 64, "width": 400}}, {"name": "parametric_pulse", "t0": 976, "ch": "u72", "label": "CR90m_u72", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1550356212530391, -0.2070580347103692], "duration": 656, "sigma": 64, "width": 400}}, {"name": "fc", "t0": 0, "ch": "u84", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [33, 39], "sequence": [{"name": "fc", "t0": 0, "ch": "d33", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d33", "label": "Y90p_d33", "pulse_shape": "drag", "parameters": {"amp": [-0.0007876057703022663, 0.0996688040038656], "beta": 0.6275186917690918, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d33", "label": "CR90p_d33_u84", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05368536931412309, 0.0009491140703795284], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "d33", "label": "CR90m_d33_u84", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05368536931412309, -0.0009491140703795218], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 1568, "ch": "d33", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1568, "ch": "d33", "label": "X90p_d33", "pulse_shape": "drag", "parameters": {"amp": [0.0996688040038656, 0.0007876057703022679], "beta": 0.6275186917690918, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d39", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d39", "label": "X90p_d39", "pulse_shape": "drag", "parameters": {"amp": [0.09616073209644509, 0.0016850437409281819], "beta": -0.8536808799302869, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 784, "ch": "d39", "label": "Xp_d39", "pulse_shape": "drag", "parameters": {"amp": [0.1916453526161165, 0.0], "beta": -0.7816374692622183, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1568, "ch": "d39", "label": "Y90m_d39", "pulse_shape": "drag", "parameters": {"amp": [0.0016850437409281472, -0.09616073209644509], "beta": -0.8536808799302869, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u42", "phase": -3.141592653589793}, {"name": "fc", "t0": 1568, "ch": "u42", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u73", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u83", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u84", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u84", "label": "CR90p_u84", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3104392285008058, -0.07019878805827875], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "u84", "label": "CR90m_u84", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3104392285008058, 0.0701987880582788], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 1568, "ch": "u84", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u87", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [34, 24], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d24", "label": "X90p_d24", "pulse_shape": "drag", "parameters": {"amp": [0.12008616562884425, -0.00019569291853983403], "beta": 0.0737359797208475, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d24", "label": "CR90p_d24_u74", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.01882553832013533, 0.00015052369425096307], "duration": 1904, "sigma": 64, "width": 1648}}, {"name": "parametric_pulse", "t0": 2224, "ch": "d24", "label": "CR90m_d24_u74", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.01882553832013533, -0.00015052369425096077], "duration": 1904, "sigma": 64, "width": 1648}}, {"name": "fc", "t0": 0, "ch": "d34", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d34", "label": "Ym_d34", "pulse_shape": "drag", "parameters": {"amp": [-3.799153402961149e-17, -0.20681627854421744], "beta": 0.47692300828027834, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2064, "ch": "d34", "label": "Xp_d34", "pulse_shape": "drag", "parameters": {"amp": [0.20681627854421744, 0.0], "beta": 0.47692300828027834, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u52", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u74", "label": "CR90p_u74", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05850241404990918, -0.1394262226289472], "duration": 1904, "sigma": 64, "width": 1648}}, {"name": "parametric_pulse", "t0": 2224, "ch": "u74", "label": "CR90m_u74", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05850241404990919, 0.1394262226289472], "duration": 1904, "sigma": 64, "width": 1648}}, {"name": "fc", "t0": 0, "ch": "u94", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [34, 43], "sequence": [{"name": "fc", "t0": 0, "ch": "d34", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d34", "label": "Ym_d34", "pulse_shape": "drag", "parameters": {"amp": [-3.799153402961149e-17, -0.20681627854421744], "beta": 0.47692300828027834, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2576, "ch": "d34", "label": "Xp_d34", "pulse_shape": "drag", "parameters": {"amp": [0.20681627854421744, 0.0], "beta": 0.47692300828027834, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d43", "label": "X90p_d43", "pulse_shape": "drag", "parameters": {"amp": [0.09044746229702674, 0.0029863123798981508], "beta": -2.1778628135701905, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d43", "label": "CR90p_d43_u75", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.008174549609769984, 0.0008978678577389441], "duration": 2416, "sigma": 64, "width": 2160}}, {"name": "parametric_pulse", "t0": 2736, "ch": "d43", "label": "CR90m_d43_u75", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.008174549609769984, -0.0008978678577389431], "duration": 2416, "sigma": 64, "width": 2160}}, {"name": "fc", "t0": 0, "ch": "u52", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u75", "label": "CR90p_u75", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.08657983561776686, -0.06880094292299811], "duration": 2416, "sigma": 64, "width": 2160}}, {"name": "parametric_pulse", "t0": 2736, "ch": "u75", "label": "CR90m_u75", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.08657983561776685, 0.06880094292299813], "duration": 2416, "sigma": 64, "width": 2160}}, {"name": "fc", "t0": 0, "ch": "u94", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [35, 28], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d28", "label": "X90p_d28", "pulse_shape": "drag", "parameters": {"amp": [0.09338563445466869, 0.00033341233559143143], "beta": 0.5634615459559276, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d28", "label": "CR90p_d28_u76", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.010664904765857974, 0.0008495855994938216], "duration": 2288, "sigma": 64, "width": 2032}}, {"name": "parametric_pulse", "t0": 2608, "ch": "d28", "label": "CR90m_d28_u76", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.010664904765857974, -0.0008495855994938203], "duration": 2288, "sigma": 64, "width": 2032}}, {"name": "fc", "t0": 0, "ch": "d35", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d35", "label": "Ym_d35", "pulse_shape": "drag", "parameters": {"amp": [-3.4898878723864184e-17, -0.18998064719918778], "beta": -1.4699802077797814, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2448, "ch": "d35", "label": "Xp_d35", "pulse_shape": "drag", "parameters": {"amp": [0.18998064719918778, 0.0], "beta": -1.4699802077797814, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u104", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u62", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u76", "label": "CR90p_u76", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07893466365020727, 0.10892741428644215], "duration": 2288, "sigma": 64, "width": 2032}}, {"name": "parametric_pulse", "t0": 2608, "ch": "u76", "label": "CR90m_u76", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07893466365020728, -0.10892741428644213], "duration": 2288, "sigma": 64, "width": 2032}}]}, {"name": "cx", "qubits": [35, 47], "sequence": [{"name": "fc", "t0": 0, "ch": "d35", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d35", "label": "Ym_d35", "pulse_shape": "drag", "parameters": {"amp": [-3.4898878723864184e-17, -0.18998064719918778], "beta": -1.4699802077797814, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 848, "ch": "d35", "label": "Xp_d35", "pulse_shape": "drag", "parameters": {"amp": [0.18998064719918778, 0.0], "beta": -1.4699802077797814, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d47", "label": "X90p_d47", "pulse_shape": "drag", "parameters": {"amp": [0.11396167254498489, -0.0003247278126238997], "beta": 1.1839405884152225, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d47", "label": "CR90p_d47_u77", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05459677878450613, 0.00033429621685166606], "duration": 688, "sigma": 64, "width": 432}}, {"name": "parametric_pulse", "t0": 1008, "ch": "d47", "label": "CR90m_d47_u77", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05459677878450613, -0.0003342962168516594], "duration": 688, "sigma": 64, "width": 432}}, {"name": "fc", "t0": 0, "ch": "u104", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u62", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u77", "label": "CR90p_u77", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.026388056396285373, 0.2514999878027767], "duration": 688, "sigma": 64, "width": 432}}, {"name": "parametric_pulse", "t0": 1008, "ch": "u77", "label": "CR90m_u77", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.026388056396285404, -0.2514999878027767], "duration": 688, "sigma": 64, "width": 432}}]}, {"name": "cx", "qubits": [36, 32], "sequence": [{"name": "fc", "t0": 0, "ch": "d32", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d32", "label": "X90p_d32", "pulse_shape": "drag", "parameters": {"amp": [0.08863224981973591, 0.001253267673417812], "beta": -1.2669442943495863, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 720, "ch": "d32", "label": "Xp_d32", "pulse_shape": "drag", "parameters": {"amp": [0.17611114603873637, 0.0], "beta": -1.1972511311869525, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1440, "ch": "d32", "label": "Y90m_d32", "pulse_shape": "drag", "parameters": {"amp": [0.0012532676734178223, -0.08863224981973591], "beta": -1.2669442943495863, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d36", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d36", "label": "Y90p_d36", "pulse_shape": "drag", "parameters": {"amp": [-0.0021714300947891017, 0.09604187125716661], "beta": -1.356253373528273, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d36", "label": "CR90p_d36_u71", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06208294204626178, 0.0035942436862040077], "duration": 560, "sigma": 64, "width": 304}}, {"name": "parametric_pulse", "t0": 880, "ch": "d36", "label": "CR90m_d36_u71", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06208294204626178, -0.003594243686204], "duration": 560, "sigma": 64, "width": 304}}, {"name": "fc", "t0": 1440, "ch": "d36", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1440, "ch": "d36", "label": "X90p_d36", "pulse_shape": "drag", "parameters": {"amp": [0.09604187125716661, 0.002171430094789102], "beta": -1.356253373528273, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u114", "phase": -3.141592653589793}, {"name": "fc", "t0": 1440, "ch": "u114", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u69", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u71", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u71", "label": "CR90p_u71", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.12482685477829716, -0.507246917105793], "duration": 560, "sigma": 64, "width": 304}}, {"name": "parametric_pulse", "t0": 880, "ch": "u71", "label": "CR90m_u71", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.12482685477829711, 0.507246917105793], "duration": 560, "sigma": 64, "width": 304}}, {"name": "fc", "t0": 1440, "ch": "u71", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u78", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [36, 51], "sequence": [{"name": "fc", "t0": 0, "ch": "d36", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d36", "label": "Y90p_d36", "pulse_shape": "drag", "parameters": {"amp": [-0.0021714300947891017, 0.09604187125716661], "beta": -1.356253373528273, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d36", "label": "CR90p_d36_u114", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.044095721809905244, 0.002253769222759941], "duration": 736, "sigma": 64, "width": 480}}, {"name": "parametric_pulse", "t0": 1056, "ch": "d36", "label": "CR90m_d36_u114", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.044095721809905244, -0.0022537692227599356], "duration": 736, "sigma": 64, "width": 480}}, {"name": "fc", "t0": 1792, "ch": "d36", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1792, "ch": "d36", "label": "X90p_d36", "pulse_shape": "drag", "parameters": {"amp": [0.09604187125716661, 0.002171430094789102], "beta": -1.356253373528273, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d51", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d51", "label": "X90p_d51", "pulse_shape": "drag", "parameters": {"amp": [0.09834851113603359, 0.0017618162023445008], "beta": -1.687806463213027, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 896, "ch": "d51", "label": "Xp_d51", "pulse_shape": "drag", "parameters": {"amp": [0.19564382961711657, 0.0], "beta": -1.6941555108249076, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1792, "ch": "d51", "label": "Y90m_d51", "pulse_shape": "drag", "parameters": {"amp": [0.0017618162023444973, -0.09834851113603359], "beta": -1.687806463213027, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u113", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u114", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u114", "label": "CR90p_u114", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.32255469865043596, 0.06443071840042347], "duration": 736, "sigma": 64, "width": 480}}, {"name": "parametric_pulse", "t0": 1056, "ch": "u114", "label": "CR90m_u114", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.32255469865043596, -0.06443071840042343], "duration": 736, "sigma": 64, "width": 480}}, {"name": "fc", "t0": 1792, "ch": "u114", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u71", "phase": -3.141592653589793}, {"name": "fc", "t0": 1792, "ch": "u71", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u79", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [37, 38], "sequence": [{"name": "fc", "t0": 0, "ch": "d37", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d37", "label": "Y90p_d37", "pulse_shape": "drag", "parameters": {"amp": [0.09455783388557376, 0.008688382857890233], "beta": -1.5480729069919235, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d37", "label": "CR90p_d37_u82", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.003913061260443653, -0.03480009980098173], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d37", "label": "CR90m_d37_u82", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.003913061260443649, 0.03480009980098173], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "d37", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1920, "ch": "d37", "label": "X90p_d37", "pulse_shape": "drag", "parameters": {"amp": [0.00868838285789024, -0.09455783388557376], "beta": -1.5480729069919235, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d38", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d38", "label": "X90p_d38", "pulse_shape": "drag", "parameters": {"amp": [0.09617623246264881, 0.0006124725782723429], "beta": 1.3557810403870874, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d38", "label": "Xp_d38", "pulse_shape": "drag", "parameters": {"amp": [0.1917465632827654, 0.0], "beta": 1.3965094842539658, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1920, "ch": "d38", "label": "Y90m_d38", "pulse_shape": "drag", "parameters": {"amp": [0.0006124725782723371, -0.09617623246264881], "beta": 1.3557810403870874, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u116", "phase": -3.141592653589793}, {"name": "fc", "t0": 1920, "ch": "u116", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u80", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u82", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u82", "label": "CR90p_u82", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.00028652848146251437, 0.2187649524642194], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u82", "label": "CR90m_u82", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0002865284814624876, -0.2187649524642194], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "u82", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u85", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [37, 52], "sequence": [{"name": "fc", "t0": 0, "ch": "d37", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d37", "label": "Y90p_d37", "pulse_shape": "drag", "parameters": {"amp": [0.09455783388557376, 0.008688382857890233], "beta": -1.5480729069919235, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d37", "label": "CR90p_d37_u116", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.002401279743303449, -0.01172403760663196], "duration": 2048, "sigma": 64, "width": 1792}}, {"name": "parametric_pulse", "t0": 2368, "ch": "d37", "label": "CR90m_d37_u116", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0024012797433034475, 0.01172403760663196], "duration": 2048, "sigma": 64, "width": 1792}}, {"name": "fc", "t0": 4416, "ch": "d37", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 4416, "ch": "d37", "label": "X90p_d37", "pulse_shape": "drag", "parameters": {"amp": [0.00868838285789024, -0.09455783388557376], "beta": -1.5480729069919235, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d52", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d52", "label": "X90p_d52", "pulse_shape": "drag", "parameters": {"amp": [0.09269374168645778, 9.479147153851943e-05], "beta": 1.6356768795321304, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2208, "ch": "d52", "label": "Xp_d52", "pulse_shape": "drag", "parameters": {"amp": [0.18498045424955065, 0.0], "beta": 1.6796188276418986, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 4416, "ch": "d52", "label": "Y90m_d52", "pulse_shape": "drag", "parameters": {"amp": [9.479147153853254e-05, -0.09269374168645778], "beta": 1.6356768795321304, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u116", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u116", "label": "CR90p_u116", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1282111498257288, -0.18430135883910773], "duration": 2048, "sigma": 64, "width": 1792}}, {"name": "parametric_pulse", "t0": 2368, "ch": "u116", "label": "CR90m_u116", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.12821114982572882, 0.1843013588391077], "duration": 2048, "sigma": 64, "width": 1792}}, {"name": "fc", "t0": 4416, "ch": "u116", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u124", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u81", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u82", "phase": -3.141592653589793}, {"name": "fc", "t0": 4416, "ch": "u82", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [38, 37], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d37", "label": "X90p_d37", "pulse_shape": "drag", "parameters": {"amp": [0.00868838285789024, -0.09455783388557376], "beta": -1.5480729069919235, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d37", "label": "CR90p_d37_u82", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.003913061260443653, -0.03480009980098173], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d37", "label": "CR90m_d37_u82", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.003913061260443649, 0.03480009980098173], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "d38", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d38", "label": "Ym_d38", "pulse_shape": "drag", "parameters": {"amp": [-3.5223272245761604e-17, -0.1917465632827654], "beta": 1.3965094842539658, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d38", "label": "Xp_d38", "pulse_shape": "drag", "parameters": {"amp": [0.1917465632827654, 0.0], "beta": 1.3965094842539658, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u80", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u82", "label": "CR90p_u82", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.00028652848146251437, 0.2187649524642194], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u82", "label": "CR90m_u82", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0002865284814624876, -0.2187649524642194], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "u85", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [38, 39], "sequence": [{"name": "fc", "t0": 0, "ch": "d38", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d38", "label": "Ym_d38", "pulse_shape": "drag", "parameters": {"amp": [-3.5223272245761604e-17, -0.1917465632827654], "beta": 1.3965094842539658, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 992, "ch": "d38", "label": "Xp_d38", "pulse_shape": "drag", "parameters": {"amp": [0.1917465632827654, 0.0], "beta": 1.3965094842539658, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d39", "label": "X90p_d39", "pulse_shape": "drag", "parameters": {"amp": [0.09616073209644509, 0.0016850437409281819], "beta": -0.8536808799302869, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d39", "label": "CR90p_d39_u83", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03676028793523085, 0.001700645795545523], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 1152, "ch": "d39", "label": "CR90m_d39_u83", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03676028793523085, -0.0017006457955455185], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 0, "ch": "u80", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u83", "label": "CR90p_u83", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.10142109940511222, -0.1928130415549434], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 1152, "ch": "u83", "label": "CR90m_u83", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1014210994051122, 0.1928130415549434], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 0, "ch": "u85", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [39, 33], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d33", "label": "X90p_d33", "pulse_shape": "drag", "parameters": {"amp": [0.0996688040038656, 0.0007876057703022679], "beta": 0.6275186917690918, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d33", "label": "CR90p_d33_u84", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05368536931412309, 0.0009491140703795284], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "d33", "label": "CR90m_d33_u84", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05368536931412309, -0.0009491140703795218], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 0, "ch": "d39", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d39", "label": "Ym_d39", "pulse_shape": "drag", "parameters": {"amp": [-3.520468014791894e-17, -0.1916453526161165], "beta": -0.7816374692622183, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 784, "ch": "d39", "label": "Xp_d39", "pulse_shape": "drag", "parameters": {"amp": [0.1916453526161165, 0.0], "beta": -0.7816374692622183, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u73", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u83", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u84", "label": "CR90p_u84", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3104392285008058, -0.07019878805827875], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "u84", "label": "CR90m_u84", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3104392285008058, 0.0701987880582788], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 0, "ch": "u87", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [39, 38], "sequence": [{"name": "fc", "t0": 0, "ch": "d38", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d38", "label": "X90p_d38", "pulse_shape": "drag", "parameters": {"amp": [0.09617623246264881, 0.0006124725782723429], "beta": 1.3557810403870874, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 992, "ch": "d38", "label": "Xp_d38", "pulse_shape": "drag", "parameters": {"amp": [0.1917465632827654, 0.0], "beta": 1.3965094842539658, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1984, "ch": "d38", "label": "Y90m_d38", "pulse_shape": "drag", "parameters": {"amp": [0.0006124725782723371, -0.09617623246264881], "beta": 1.3557810403870874, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d39", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d39", "label": "Y90p_d39", "pulse_shape": "drag", "parameters": {"amp": [-0.0016850437409281801, 0.09616073209644509], "beta": -0.8536808799302869, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d39", "label": "CR90p_d39_u83", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03676028793523085, 0.001700645795545523], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 1152, "ch": "d39", "label": "CR90m_d39_u83", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03676028793523085, -0.0017006457955455185], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 1984, "ch": "d39", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1984, "ch": "d39", "label": "X90p_d39", "pulse_shape": "drag", "parameters": {"amp": [0.09616073209644509, 0.0016850437409281819], "beta": -0.8536808799302869, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u73", "phase": -3.141592653589793}, {"name": "fc", "t0": 1984, "ch": "u73", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u80", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u83", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u83", "label": "CR90p_u83", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.10142109940511222, -0.1928130415549434], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 1152, "ch": "u83", "label": "CR90m_u83", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1014210994051122, 0.1928130415549434], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 1984, "ch": "u83", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u85", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u87", "phase": -3.141592653589793}, {"name": "fc", "t0": 1984, "ch": "u87", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [39, 40], "sequence": [{"name": "fc", "t0": 0, "ch": "d39", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d39", "label": "Y90p_d39", "pulse_shape": "drag", "parameters": {"amp": [-0.0016850437409281801, 0.09616073209644509], "beta": -0.8536808799302869, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d39", "label": "CR90p_d39_u87", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02516930267353751, 0.0013178645166975534], "duration": 1216, "sigma": 64, "width": 960}}, {"name": "parametric_pulse", "t0": 1536, "ch": "d39", "label": "CR90m_d39_u87", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.02516930267353751, -0.0013178645166975504], "duration": 1216, "sigma": 64, "width": 960}}, {"name": "fc", "t0": 2752, "ch": "d39", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2752, "ch": "d39", "label": "X90p_d39", "pulse_shape": "drag", "parameters": {"amp": [0.09616073209644509, 0.0016850437409281819], "beta": -0.8536808799302869, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d40", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d40", "label": "X90p_d40", "pulse_shape": "drag", "parameters": {"amp": [0.10407740229347077, -0.00020678038318438586], "beta": 2.2937256852428485, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1376, "ch": "d40", "label": "Xp_d40", "pulse_shape": "drag", "parameters": {"amp": [0.20784934840830382, 0.0], "beta": 2.2446017928698576, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2752, "ch": "d40", "label": "Y90m_d40", "pulse_shape": "drag", "parameters": {"amp": [-0.00020678038318440364, -0.10407740229347077], "beta": 2.2937256852428485, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u73", "phase": -3.141592653589793}, {"name": "fc", "t0": 2752, "ch": "u73", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u83", "phase": -3.141592653589793}, {"name": "fc", "t0": 2752, "ch": "u83", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u86", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u87", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u87", "label": "CR90p_u87", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.18426404144600622, -0.11621625553212331], "duration": 1216, "sigma": 64, "width": 960}}, {"name": "parametric_pulse", "t0": 1536, "ch": "u87", "label": "CR90m_u87", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1842640414460062, 0.11621625553212334], "duration": 1216, "sigma": 64, "width": 960}}, {"name": "fc", "t0": 2752, "ch": "u87", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u89", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [40, 39], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d39", "label": "X90p_d39", "pulse_shape": "drag", "parameters": {"amp": [0.09616073209644509, 0.0016850437409281819], "beta": -0.8536808799302869, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d39", "label": "CR90p_d39_u87", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02516930267353751, 0.0013178645166975534], "duration": 1216, "sigma": 64, "width": 960}}, {"name": "parametric_pulse", "t0": 1536, "ch": "d39", "label": "CR90m_d39_u87", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.02516930267353751, -0.0013178645166975504], "duration": 1216, "sigma": 64, "width": 960}}, {"name": "fc", "t0": 0, "ch": "d40", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d40", "label": "Ym_d40", "pulse_shape": "drag", "parameters": {"amp": [-3.818130588496384e-17, -0.20784934840830382], "beta": 2.2446017928698576, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1376, "ch": "d40", "label": "Xp_d40", "pulse_shape": "drag", "parameters": {"amp": [0.20784934840830382, 0.0], "beta": 2.2446017928698576, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u86", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u87", "label": "CR90p_u87", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.18426404144600622, -0.11621625553212331], "duration": 1216, "sigma": 64, "width": 960}}, {"name": "parametric_pulse", "t0": 1536, "ch": "u87", "label": "CR90m_u87", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1842640414460062, 0.11621625553212334], "duration": 1216, "sigma": 64, "width": 960}}, {"name": "fc", "t0": 0, "ch": "u89", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [40, 41], "sequence": [{"name": "fc", "t0": 0, "ch": "d40", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d40", "label": "Ym_d40", "pulse_shape": "drag", "parameters": {"amp": [-3.818130588496384e-17, -0.20784934840830382], "beta": 2.2446017928698576, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 720, "ch": "d40", "label": "Xp_d40", "pulse_shape": "drag", "parameters": {"amp": [0.20784934840830382, 0.0], "beta": 2.2446017928698576, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d41", "label": "X90p_d41", "pulse_shape": "drag", "parameters": {"amp": [0.1167061478055803, -0.0008502982254150733], "beta": 1.6810119998778095, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d41", "label": "CR90p_d41_u88", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07219434144866207, -0.0021311440709947892], "duration": 560, "sigma": 64, "width": 304}}, {"name": "parametric_pulse", "t0": 880, "ch": "d41", "label": "CR90m_d41_u88", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07219434144866207, 0.002131144070994798], "duration": 560, "sigma": 64, "width": 304}}, {"name": "fc", "t0": 0, "ch": "u86", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u88", "label": "CR90p_u88", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10290419240886016, -0.4028814225672767], "duration": 560, "sigma": 64, "width": 304}}, {"name": "parametric_pulse", "t0": 880, "ch": "u88", "label": "CR90m_u88", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.10290419240886022, 0.4028814225672767], "duration": 560, "sigma": 64, "width": 304}}, {"name": "fc", "t0": 0, "ch": "u89", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [41, 40], "sequence": [{"name": "fc", "t0": 0, "ch": "d40", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d40", "label": "X90p_d40", "pulse_shape": "drag", "parameters": {"amp": [0.10407740229347077, -0.00020678038318438586], "beta": 2.2937256852428485, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 720, "ch": "d40", "label": "Xp_d40", "pulse_shape": "drag", "parameters": {"amp": [0.20784934840830382, 0.0], "beta": 2.2446017928698576, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1440, "ch": "d40", "label": "Y90m_d40", "pulse_shape": "drag", "parameters": {"amp": [-0.00020678038318440364, -0.10407740229347077], "beta": 2.2937256852428485, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d41", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d41", "label": "Y90p_d41", "pulse_shape": "drag", "parameters": {"amp": [0.0008502982254150679, 0.1167061478055803], "beta": 1.6810119998778095, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d41", "label": "CR90p_d41_u88", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07219434144866207, -0.0021311440709947892], "duration": 560, "sigma": 64, "width": 304}}, {"name": "parametric_pulse", "t0": 880, "ch": "d41", "label": "CR90m_d41_u88", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07219434144866207, 0.002131144070994798], "duration": 560, "sigma": 64, "width": 304}}, {"name": "fc", "t0": 1440, "ch": "d41", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1440, "ch": "d41", "label": "X90p_d41", "pulse_shape": "drag", "parameters": {"amp": [0.1167061478055803, -0.0008502982254150733], "beta": 1.6810119998778095, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u118", "phase": -3.141592653589793}, {"name": "fc", "t0": 1440, "ch": "u118", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u86", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u88", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u88", "label": "CR90p_u88", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10290419240886016, -0.4028814225672767], "duration": 560, "sigma": 64, "width": 304}}, {"name": "parametric_pulse", "t0": 880, "ch": "u88", "label": "CR90m_u88", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.10290419240886022, 0.4028814225672767], "duration": 560, "sigma": 64, "width": 304}}, {"name": "fc", "t0": 1440, "ch": "u88", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u89", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u92", "phase": -3.141592653589793}, {"name": "fc", "t0": 1440, "ch": "u92", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [41, 42], "sequence": [{"name": "fc", "t0": 0, "ch": "d41", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d41", "label": "Ym_d41", "pulse_shape": "drag", "parameters": {"amp": [-4.288753771535101e-17, -0.2334688812328637], "beta": 1.6694816560417942, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1312, "ch": "d41", "label": "Xp_d41", "pulse_shape": "drag", "parameters": {"amp": [0.2334688812328637, 0.0], "beta": 1.6694816560417942, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d42", "label": "X90p_d42", "pulse_shape": "drag", "parameters": {"amp": [0.11130987573324137, 0.001264518089987534], "beta": -0.6884140873882535, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d42", "label": "CR90p_d42_u90", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.030523164282591966, 0.001615314472922754], "duration": 1152, "sigma": 64, "width": 896}}, {"name": "parametric_pulse", "t0": 1472, "ch": "d42", "label": "CR90m_d42_u90", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.030523164282591966, -0.0016153144729227503], "duration": 1152, "sigma": 64, "width": 896}}, {"name": "fc", "t0": 0, "ch": "u118", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u88", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u90", "label": "CR90p_u90", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.040878274632550705, -0.25723834949749624], "duration": 1152, "sigma": 64, "width": 896}}, {"name": "parametric_pulse", "t0": 1472, "ch": "u90", "label": "CR90m_u90", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04087827463255067, 0.25723834949749624], "duration": 1152, "sigma": 64, "width": 896}}, {"name": "fc", "t0": 0, "ch": "u92", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [41, 53], "sequence": [{"name": "fc", "t0": 0, "ch": "d41", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d41", "label": "Ym_d41", "pulse_shape": "drag", "parameters": {"amp": [-4.288753771535101e-17, -0.2334688812328637], "beta": 1.6694816560417942, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 800, "ch": "d41", "label": "Xp_d41", "pulse_shape": "drag", "parameters": {"amp": [0.2334688812328637, 0.0], "beta": 1.6694816560417942, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d53", "label": "X90p_d53", "pulse_shape": "drag", "parameters": {"amp": [0.1135499885157783, 0.0021683182524991603], "beta": -1.147433978287251, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d53", "label": "CR90p_d53_u91", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05894346195882207, 0.004352875072701396], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "d53", "label": "CR90m_d53_u91", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05894346195882207, -0.004352875072701389], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 0, "ch": "u118", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u88", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u91", "label": "CR90p_u91", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.14698286610636468, -0.19874968478604446], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "u91", "label": "CR90m_u91", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.14698286610636466, 0.1987496847860445], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 0, "ch": "u92", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [42, 41], "sequence": [{"name": "fc", "t0": 0, "ch": "d41", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d41", "label": "X90p_d41", "pulse_shape": "drag", "parameters": {"amp": [0.1167061478055803, -0.0008502982254150733], "beta": 1.6810119998778095, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1312, "ch": "d41", "label": "Xp_d41", "pulse_shape": "drag", "parameters": {"amp": [0.2334688812328637, 0.0], "beta": 1.6694816560417942, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2624, "ch": "d41", "label": "Y90m_d41", "pulse_shape": "drag", "parameters": {"amp": [-0.0008502982254151082, -0.1167061478055803], "beta": 1.6810119998778095, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d42", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d42", "label": "Y90p_d42", "pulse_shape": "drag", "parameters": {"amp": [-0.0012645180899875158, 0.11130987573324137], "beta": -0.6884140873882535, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d42", "label": "CR90p_d42_u90", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.030523164282591966, 0.001615314472922754], "duration": 1152, "sigma": 64, "width": 896}}, {"name": "parametric_pulse", "t0": 1472, "ch": "d42", "label": "CR90m_d42_u90", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.030523164282591966, -0.0016153144729227503], "duration": 1152, "sigma": 64, "width": 896}}, {"name": "fc", "t0": 2624, "ch": "d42", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2624, "ch": "d42", "label": "X90p_d42", "pulse_shape": "drag", "parameters": {"amp": [0.11130987573324137, 0.001264518089987534], "beta": -0.6884140873882535, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u118", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u88", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u90", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u90", "label": "CR90p_u90", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.040878274632550705, -0.25723834949749624], "duration": 1152, "sigma": 64, "width": 896}}, {"name": "parametric_pulse", "t0": 1472, "ch": "u90", "label": "CR90m_u90", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04087827463255067, 0.25723834949749624], "duration": 1152, "sigma": 64, "width": 896}}, {"name": "fc", "t0": 2624, "ch": "u90", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u92", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u95", "phase": -3.141592653589793}, {"name": "fc", "t0": 2624, "ch": "u95", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [42, 43], "sequence": [{"name": "fc", "t0": 0, "ch": "d42", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d42", "label": "Ym_d42", "pulse_shape": "drag", "parameters": {"amp": [-4.0799724141537193e-17, -0.22210335349992913], "beta": -0.6870295445258087, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1808, "ch": "d42", "label": "Xp_d42", "pulse_shape": "drag", "parameters": {"amp": [0.22210335349992913, 0.0], "beta": -0.6870295445258087, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d43", "label": "X90p_d43", "pulse_shape": "drag", "parameters": {"amp": [0.09044746229702674, 0.0029863123798981508], "beta": -2.1778628135701905, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d43", "label": "CR90p_d43_u93", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.012640726243248517, 0.0009990150973793852], "duration": 1648, "sigma": 64, "width": 1392}}, {"name": "parametric_pulse", "t0": 1968, "ch": "d43", "label": "CR90m_d43_u93", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.012640726243248517, -0.0009990150973793837], "duration": 1648, "sigma": 64, "width": 1392}}, {"name": "fc", "t0": 0, "ch": "u90", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u93", "label": "CR90p_u93", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.16966532868886083, -0.10378843106242944], "duration": 1648, "sigma": 64, "width": 1392}}, {"name": "parametric_pulse", "t0": 1968, "ch": "u93", "label": "CR90m_u93", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.16966532868886083, 0.10378843106242942], "duration": 1648, "sigma": 64, "width": 1392}}, {"name": "fc", "t0": 0, "ch": "u95", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [43, 34], "sequence": [{"name": "fc", "t0": 0, "ch": "d34", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d34", "label": "X90p_d34", "pulse_shape": "drag", "parameters": {"amp": [0.1031016977628983, 0.0006833613539886323], "beta": 0.5245085704395506, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2576, "ch": "d34", "label": "Xp_d34", "pulse_shape": "drag", "parameters": {"amp": [0.20681627854421744, 0.0], "beta": 0.47692300828027834, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 5152, "ch": "d34", "label": "Y90m_d34", "pulse_shape": "drag", "parameters": {"amp": [0.000683361353988656, -0.1031016977628983], "beta": 0.5245085704395506, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d43", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d43", "label": "Y90p_d43", "pulse_shape": "drag", "parameters": {"amp": [-0.0029863123798981356, 0.09044746229702674], "beta": -2.1778628135701905, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d43", "label": "CR90p_d43_u75", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.008174549609769984, 0.0008978678577389441], "duration": 2416, "sigma": 64, "width": 2160}}, {"name": "parametric_pulse", "t0": 2736, "ch": "d43", "label": "CR90m_d43_u75", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.008174549609769984, -0.0008978678577389431], "duration": 2416, "sigma": 64, "width": 2160}}, {"name": "fc", "t0": 5152, "ch": "d43", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 5152, "ch": "d43", "label": "X90p_d43", "pulse_shape": "drag", "parameters": {"amp": [0.09044746229702674, 0.0029863123798981508], "beta": -2.1778628135701905, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u52", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u75", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u75", "label": "CR90p_u75", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.08657983561776686, -0.06880094292299811], "duration": 2416, "sigma": 64, "width": 2160}}, {"name": "parametric_pulse", "t0": 2736, "ch": "u75", "label": "CR90m_u75", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.08657983561776685, 0.06880094292299813], "duration": 2416, "sigma": 64, "width": 2160}}, {"name": "fc", "t0": 5152, "ch": "u75", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u93", "phase": -3.141592653589793}, {"name": "fc", "t0": 5152, "ch": "u93", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u94", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u97", "phase": -3.141592653589793}, {"name": "fc", "t0": 5152, "ch": "u97", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [43, 42], "sequence": [{"name": "fc", "t0": 0, "ch": "d42", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d42", "label": "X90p_d42", "pulse_shape": "drag", "parameters": {"amp": [0.11130987573324137, 0.001264518089987534], "beta": -0.6884140873882535, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1808, "ch": "d42", "label": "Xp_d42", "pulse_shape": "drag", "parameters": {"amp": [0.22210335349992913, 0.0], "beta": -0.6870295445258087, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 3616, "ch": "d42", "label": "Y90m_d42", "pulse_shape": "drag", "parameters": {"amp": [0.001264518089987502, -0.11130987573324137], "beta": -0.6884140873882535, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d43", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d43", "label": "Y90p_d43", "pulse_shape": "drag", "parameters": {"amp": [-0.0029863123798981356, 0.09044746229702674], "beta": -2.1778628135701905, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d43", "label": "CR90p_d43_u93", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.012640726243248517, 0.0009990150973793852], "duration": 1648, "sigma": 64, "width": 1392}}, {"name": "parametric_pulse", "t0": 1968, "ch": "d43", "label": "CR90m_d43_u93", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.012640726243248517, -0.0009990150973793837], "duration": 1648, "sigma": 64, "width": 1392}}, {"name": "fc", "t0": 3616, "ch": "d43", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 3616, "ch": "d43", "label": "X90p_d43", "pulse_shape": "drag", "parameters": {"amp": [0.09044746229702674, 0.0029863123798981508], "beta": -2.1778628135701905, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u75", "phase": -3.141592653589793}, {"name": "fc", "t0": 3616, "ch": "u75", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u90", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u93", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u93", "label": "CR90p_u93", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.16966532868886083, -0.10378843106242944], "duration": 1648, "sigma": 64, "width": 1392}}, {"name": "parametric_pulse", "t0": 1968, "ch": "u93", "label": "CR90m_u93", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.16966532868886083, 0.10378843106242942], "duration": 1648, "sigma": 64, "width": 1392}}, {"name": "fc", "t0": 3616, "ch": "u93", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u95", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u97", "phase": -3.141592653589793}, {"name": "fc", "t0": 3616, "ch": "u97", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [43, 44], "sequence": [{"name": "fc", "t0": 0, "ch": "d43", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d43", "label": "Y90p_d43", "pulse_shape": "drag", "parameters": {"amp": [-0.0029863123798981356, 0.09044746229702674], "beta": -2.1778628135701905, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d43", "label": "CR90p_d43_u97", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.034461422235946115, 0.0011230381264953364], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 1040, "ch": "d43", "label": "CR90m_d43_u97", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.034461422235946115, -0.0011230381264953323], "duration": 720, "sigma": 64, "width": 464}}, {"name": "fc", "t0": 1760, "ch": "d43", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1760, "ch": "d43", "label": "X90p_d43", "pulse_shape": "drag", "parameters": {"amp": [0.09044746229702674, 0.0029863123798981508], "beta": -2.1778628135701905, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d44", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d44", "label": "X90p_d44", "pulse_shape": "drag", "parameters": {"amp": [0.09619830100875673, -0.0007263830957272626], "beta": 1.5870927210118877, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 880, "ch": "d44", "label": "Xp_d44", "pulse_shape": "drag", "parameters": {"amp": [0.19123509507012992, 0.0], "beta": 1.6189753136934866, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1760, "ch": "d44", "label": "Y90m_d44", "pulse_shape": "drag", "parameters": {"amp": [-0.0007263830957272394, -0.09619830100875673], "beta": 1.5870927210118877, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u75", "phase": -3.141592653589793}, {"name": "fc", "t0": 1760, "ch": "u75", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u93", "phase": -3.141592653589793}, {"name": "fc", "t0": 1760, "ch": "u93", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u96", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u97", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u97", "label": "CR90p_u97", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.047115568269847696, -0.31416105128495364], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 1040, "ch": "u97", "label": "CR90m_u97", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04711556826984774, 0.31416105128495364], "duration": 720, "sigma": 64, "width": 464}}, {"name": "fc", "t0": 1760, "ch": "u97", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u99", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [44, 43], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d43", "label": "X90p_d43", "pulse_shape": "drag", "parameters": {"amp": [0.09044746229702674, 0.0029863123798981508], "beta": -2.1778628135701905, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d43", "label": "CR90p_d43_u97", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.034461422235946115, 0.0011230381264953364], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 1040, "ch": "d43", "label": "CR90m_d43_u97", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.034461422235946115, -0.0011230381264953323], "duration": 720, "sigma": 64, "width": 464}}, {"name": "fc", "t0": 0, "ch": "d44", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d44", "label": "Ym_d44", "pulse_shape": "drag", "parameters": {"amp": [-3.5129317059341155e-17, -0.19123509507012992], "beta": 1.6189753136934866, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 880, "ch": "d44", "label": "Xp_d44", "pulse_shape": "drag", "parameters": {"amp": [0.19123509507012992, 0.0], "beta": 1.6189753136934866, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u96", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u97", "label": "CR90p_u97", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.047115568269847696, -0.31416105128495364], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 1040, "ch": "u97", "label": "CR90m_u97", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04711556826984774, 0.31416105128495364], "duration": 720, "sigma": 64, "width": 464}}, {"name": "fc", "t0": 0, "ch": "u99", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [44, 45], "sequence": [{"name": "fc", "t0": 0, "ch": "d44", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d44", "label": "Ym_d44", "pulse_shape": "drag", "parameters": {"amp": [-3.5129317059341155e-17, -0.19123509507012992], "beta": 1.6189753136934866, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2416, "ch": "d44", "label": "Xp_d44", "pulse_shape": "drag", "parameters": {"amp": [0.19123509507012992, 0.0], "beta": 1.6189753136934866, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d45", "label": "X90p_d45", "pulse_shape": "drag", "parameters": {"amp": [0.09912252983507365, 0.0007938306920316289], "beta": 0.6062390717479786, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d45", "label": "CR90p_d45_u98", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.01328953459545806, 0.001567325678553428], "duration": 2256, "sigma": 64, "width": 2000}}, {"name": "parametric_pulse", "t0": 2576, "ch": "d45", "label": "CR90m_d45_u98", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.01328953459545806, -0.0015673256785534262], "duration": 2256, "sigma": 64, "width": 2000}}, {"name": "fc", "t0": 0, "ch": "u96", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u98", "label": "CR90p_u98", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.043424303057956554, -0.09711491299257909], "duration": 2256, "sigma": 64, "width": 2000}}, {"name": "parametric_pulse", "t0": 2576, "ch": "u98", "label": "CR90m_u98", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04342430305795654, 0.09711491299257909], "duration": 2256, "sigma": 64, "width": 2000}}, {"name": "fc", "t0": 0, "ch": "u99", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [45, 44], "sequence": [{"name": "fc", "t0": 0, "ch": "d44", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d44", "label": "X90p_d44", "pulse_shape": "drag", "parameters": {"amp": [0.09619830100875673, -0.0007263830957272626], "beta": 1.5870927210118877, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2416, "ch": "d44", "label": "Xp_d44", "pulse_shape": "drag", "parameters": {"amp": [0.19123509507012992, 0.0], "beta": 1.6189753136934866, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 4832, "ch": "d44", "label": "Y90m_d44", "pulse_shape": "drag", "parameters": {"amp": [-0.0007263830957272394, -0.09619830100875673], "beta": 1.5870927210118877, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d45", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d45", "label": "Y90p_d45", "pulse_shape": "drag", "parameters": {"amp": [-0.0007938306920316266, 0.09912252983507365], "beta": 0.6062390717479786, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d45", "label": "CR90p_d45_u98", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.01328953459545806, 0.001567325678553428], "duration": 2256, "sigma": 64, "width": 2000}}, {"name": "parametric_pulse", "t0": 2576, "ch": "d45", "label": "CR90m_d45_u98", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.01328953459545806, -0.0015673256785534262], "duration": 2256, "sigma": 64, "width": 2000}}, {"name": "fc", "t0": 4832, "ch": "d45", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 4832, "ch": "d45", "label": "X90p_d45", "pulse_shape": "drag", "parameters": {"amp": [0.09912252983507365, 0.0007938306920316289], "beta": 0.6062390717479786, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u102", "phase": -3.141592653589793}, {"name": "fc", "t0": 4832, "ch": "u102", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u120", "phase": -3.141592653589793}, {"name": "fc", "t0": 4832, "ch": "u120", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u96", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u98", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u98", "label": "CR90p_u98", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.043424303057956554, -0.09711491299257909], "duration": 2256, "sigma": 64, "width": 2000}}, {"name": "parametric_pulse", "t0": 2576, "ch": "u98", "label": "CR90m_u98", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04342430305795654, 0.09711491299257909], "duration": 2256, "sigma": 64, "width": 2000}}, {"name": "fc", "t0": 4832, "ch": "u98", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u99", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [45, 46], "sequence": [{"name": "fc", "t0": 0, "ch": "d45", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d45", "label": "Y90p_d45", "pulse_shape": "drag", "parameters": {"amp": [-0.0007938306920316266, 0.09912252983507365], "beta": 0.6062390717479786, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d45", "label": "CR90p_d45_u102", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.01804214907797888, 0.0012804727651522696], "duration": 1712, "sigma": 64, "width": 1456}}, {"name": "parametric_pulse", "t0": 2032, "ch": "d45", "label": "CR90m_d45_u102", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.01804214907797888, -0.0012804727651522674], "duration": 1712, "sigma": 64, "width": 1456}}, {"name": "fc", "t0": 3744, "ch": "d45", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 3744, "ch": "d45", "label": "X90p_d45", "pulse_shape": "drag", "parameters": {"amp": [0.09912252983507365, 0.0007938306920316289], "beta": 0.6062390717479786, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d46", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d46", "label": "X90p_d46", "pulse_shape": "drag", "parameters": {"amp": [0.0933462200261285, 0.001642806907055986], "beta": 0.032701912718651575, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1872, "ch": "d46", "label": "Xp_d46", "pulse_shape": "drag", "parameters": {"amp": [0.1861227412441505, 0.0], "beta": 0.16097499616468744, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 3744, "ch": "d46", "label": "Y90m_d46", "pulse_shape": "drag", "parameters": {"amp": [0.0016428069070559836, -0.0933462200261285], "beta": 0.032701912718651575, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u100", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u102", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u102", "label": "CR90p_u102", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07803783870721226, 0.042963585251763074], "duration": 1712, "sigma": 64, "width": 1456}}, {"name": "parametric_pulse", "t0": 2032, "ch": "u102", "label": "CR90m_u102", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07803783870721226, -0.04296358525176307], "duration": 1712, "sigma": 64, "width": 1456}}, {"name": "fc", "t0": 3744, "ch": "u102", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u105", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u120", "phase": -3.141592653589793}, {"name": "fc", "t0": 3744, "ch": "u120", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u98", "phase": -3.141592653589793}, {"name": "fc", "t0": 3744, "ch": "u98", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [45, 54], "sequence": [{"name": "fc", "t0": 0, "ch": "d45", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d45", "label": "Y90p_d45", "pulse_shape": "drag", "parameters": {"amp": [-0.0007938306920316266, 0.09912252983507365], "beta": 0.6062390717479786, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d45", "label": "CR90p_d45_u120", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.028741327934739904, 0.0008041181577363248], "duration": 1104, "sigma": 64, "width": 848}}, {"name": "parametric_pulse", "t0": 1424, "ch": "d45", "label": "CR90m_d45_u120", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.028741327934739904, -0.0008041181577363213], "duration": 1104, "sigma": 64, "width": 848}}, {"name": "fc", "t0": 2528, "ch": "d45", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2528, "ch": "d45", "label": "X90p_d45", "pulse_shape": "drag", "parameters": {"amp": [0.09912252983507365, 0.0007938306920316289], "beta": 0.6062390717479786, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d54", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d54", "label": "X90p_d54", "pulse_shape": "drag", "parameters": {"amp": [0.07602813059040985, -9.300376883827832e-05], "beta": 0.7148241595332547, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1264, "ch": "d54", "label": "Xp_d54", "pulse_shape": "drag", "parameters": {"amp": [0.1516361865594324, 0.0], "beta": 0.7106074879675671, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2528, "ch": "d54", "label": "Y90m_d54", "pulse_shape": "drag", "parameters": {"amp": [-9.300376883832425e-05, -0.07602813059040985], "beta": 0.7148241595332547, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u101", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u102", "phase": -3.141592653589793}, {"name": "fc", "t0": 2528, "ch": "u102", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u120", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u120", "label": "CR90p_u120", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.20309498432188564, -0.07891332088331732], "duration": 1104, "sigma": 64, "width": 848}}, {"name": "parametric_pulse", "t0": 1424, "ch": "u120", "label": "CR90m_u120", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.20309498432188564, 0.07891332088331734], "duration": 1104, "sigma": 64, "width": 848}}, {"name": "fc", "t0": 2528, "ch": "u120", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u143", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u98", "phase": -3.141592653589793}, {"name": "fc", "t0": 2528, "ch": "u98", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [46, 45], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d45", "label": "X90p_d45", "pulse_shape": "drag", "parameters": {"amp": [0.09912252983507365, 0.0007938306920316289], "beta": 0.6062390717479786, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d45", "label": "CR90p_d45_u102", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.01804214907797888, 0.0012804727651522696], "duration": 1712, "sigma": 64, "width": 1456}}, {"name": "parametric_pulse", "t0": 2032, "ch": "d45", "label": "CR90m_d45_u102", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.01804214907797888, -0.0012804727651522674], "duration": 1712, "sigma": 64, "width": 1456}}, {"name": "fc", "t0": 0, "ch": "d46", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d46", "label": "Ym_d46", "pulse_shape": "drag", "parameters": {"amp": [-3.4190192896977e-17, -0.1861227412441505], "beta": 0.16097499616468744, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1872, "ch": "d46", "label": "Xp_d46", "pulse_shape": "drag", "parameters": {"amp": [0.1861227412441505, 0.0], "beta": 0.16097499616468744, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u100", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u102", "label": "CR90p_u102", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07803783870721226, 0.042963585251763074], "duration": 1712, "sigma": 64, "width": 1456}}, {"name": "parametric_pulse", "t0": 2032, "ch": "u102", "label": "CR90m_u102", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07803783870721226, -0.04296358525176307], "duration": 1712, "sigma": 64, "width": 1456}}, {"name": "fc", "t0": 0, "ch": "u105", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [46, 47], "sequence": [{"name": "fc", "t0": 0, "ch": "d46", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d46", "label": "Ym_d46", "pulse_shape": "drag", "parameters": {"amp": [-3.4190192896977e-17, -0.1861227412441505], "beta": 0.16097499616468744, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2048, "ch": "d46", "label": "Xp_d46", "pulse_shape": "drag", "parameters": {"amp": [0.1861227412441505, 0.0], "beta": 0.16097499616468744, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d47", "label": "X90p_d47", "pulse_shape": "drag", "parameters": {"amp": [0.11396167254498489, -0.0003247278126238997], "beta": 1.1839405884152225, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d47", "label": "CR90p_d47_u103", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.018303211552475954, 0.0009989273170119104], "duration": 1888, "sigma": 64, "width": 1632}}, {"name": "parametric_pulse", "t0": 2208, "ch": "d47", "label": "CR90m_d47_u103", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.018303211552475954, -0.0009989273170119082], "duration": 1888, "sigma": 64, "width": 1632}}, {"name": "fc", "t0": 0, "ch": "u100", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u103", "label": "CR90p_u103", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06239286864906329, 0.11977641994850731], "duration": 1888, "sigma": 64, "width": 1632}}, {"name": "parametric_pulse", "t0": 2208, "ch": "u103", "label": "CR90m_u103", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06239286864906328, -0.11977641994850732], "duration": 1888, "sigma": 64, "width": 1632}}, {"name": "fc", "t0": 0, "ch": "u105", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [47, 35], "sequence": [{"name": "fc", "t0": 0, "ch": "d35", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d35", "label": "X90p_d35", "pulse_shape": "drag", "parameters": {"amp": [0.09543579625182948, 0.002042956899134053], "beta": -1.5020529715515876, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 848, "ch": "d35", "label": "Xp_d35", "pulse_shape": "drag", "parameters": {"amp": [0.18998064719918778, 0.0], "beta": -1.4699802077797814, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1696, "ch": "d35", "label": "Y90m_d35", "pulse_shape": "drag", "parameters": {"amp": [0.002042956899134063, -0.09543579625182948], "beta": -1.5020529715515876, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d47", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d47", "label": "Y90p_d47", "pulse_shape": "drag", "parameters": {"amp": [0.00032472781262389474, 0.11396167254498489], "beta": 1.1839405884152225, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d47", "label": "CR90p_d47_u77", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05459677878450613, 0.00033429621685166606], "duration": 688, "sigma": 64, "width": 432}}, {"name": "parametric_pulse", "t0": 1008, "ch": "d47", "label": "CR90m_d47_u77", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05459677878450613, -0.0003342962168516594], "duration": 688, "sigma": 64, "width": 432}}, {"name": "fc", "t0": 1696, "ch": "d47", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1696, "ch": "d47", "label": "X90p_d47", "pulse_shape": "drag", "parameters": {"amp": [0.11396167254498489, -0.0003247278126238997], "beta": 1.1839405884152225, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u103", "phase": -3.141592653589793}, {"name": "fc", "t0": 1696, "ch": "u103", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u104", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u107", "phase": -3.141592653589793}, {"name": "fc", "t0": 1696, "ch": "u107", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u62", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u77", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u77", "label": "CR90p_u77", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.026388056396285373, 0.2514999878027767], "duration": 688, "sigma": 64, "width": 432}}, {"name": "parametric_pulse", "t0": 1008, "ch": "u77", "label": "CR90m_u77", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.026388056396285404, -0.2514999878027767], "duration": 688, "sigma": 64, "width": 432}}, {"name": "fc", "t0": 1696, "ch": "u77", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [47, 46], "sequence": [{"name": "fc", "t0": 0, "ch": "d46", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d46", "label": "X90p_d46", "pulse_shape": "drag", "parameters": {"amp": [0.0933462200261285, 0.001642806907055986], "beta": 0.032701912718651575, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2048, "ch": "d46", "label": "Xp_d46", "pulse_shape": "drag", "parameters": {"amp": [0.1861227412441505, 0.0], "beta": 0.16097499616468744, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 4096, "ch": "d46", "label": "Y90m_d46", "pulse_shape": "drag", "parameters": {"amp": [0.0016428069070559836, -0.0933462200261285], "beta": 0.032701912718651575, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d47", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d47", "label": "Y90p_d47", "pulse_shape": "drag", "parameters": {"amp": [0.00032472781262389474, 0.11396167254498489], "beta": 1.1839405884152225, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d47", "label": "CR90p_d47_u103", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.018303211552475954, 0.0009989273170119104], "duration": 1888, "sigma": 64, "width": 1632}}, {"name": "parametric_pulse", "t0": 2208, "ch": "d47", "label": "CR90m_d47_u103", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.018303211552475954, -0.0009989273170119082], "duration": 1888, "sigma": 64, "width": 1632}}, {"name": "fc", "t0": 4096, "ch": "d47", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 4096, "ch": "d47", "label": "X90p_d47", "pulse_shape": "drag", "parameters": {"amp": [0.11396167254498489, -0.0003247278126238997], "beta": 1.1839405884152225, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u100", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u103", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u103", "label": "CR90p_u103", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06239286864906329, 0.11977641994850731], "duration": 1888, "sigma": 64, "width": 1632}}, {"name": "parametric_pulse", "t0": 2208, "ch": "u103", "label": "CR90m_u103", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06239286864906328, -0.11977641994850732], "duration": 1888, "sigma": 64, "width": 1632}}, {"name": "fc", "t0": 4096, "ch": "u103", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u105", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u107", "phase": -3.141592653589793}, {"name": "fc", "t0": 4096, "ch": "u107", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u77", "phase": -3.141592653589793}, {"name": "fc", "t0": 4096, "ch": "u77", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [47, 48], "sequence": [{"name": "fc", "t0": 0, "ch": "d47", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d47", "label": "Ym_d47", "pulse_shape": "drag", "parameters": {"amp": [-4.1817951464510416e-17, -0.22764632487574216], "beta": 1.2034832425654165, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 768, "ch": "d47", "label": "Xp_d47", "pulse_shape": "drag", "parameters": {"amp": [0.22764632487574216, 0.0], "beta": 1.2034832425654165, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d48", "label": "X90p_d48", "pulse_shape": "drag", "parameters": {"amp": [0.09984166958938402, 0.0014443545255074816], "beta": 0.011127899545718467, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d48", "label": "CR90p_d48_u106", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05559128043838306, 0.0016608908883077938], "duration": 608, "sigma": 64, "width": 352}}, {"name": "parametric_pulse", "t0": 928, "ch": "d48", "label": "CR90m_d48_u106", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05559128043838306, -0.001660890888307787], "duration": 608, "sigma": 64, "width": 352}}, {"name": "fc", "t0": 0, "ch": "u103", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u106", "label": "CR90p_u106", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.4036308334386165, -0.09643375637256635], "duration": 608, "sigma": 64, "width": 352}}, {"name": "parametric_pulse", "t0": 928, "ch": "u106", "label": "CR90m_u106", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.4036308334386165, 0.09643375637256629], "duration": 608, "sigma": 64, "width": 352}}, {"name": "fc", "t0": 0, "ch": "u107", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u77", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [48, 47], "sequence": [{"name": "fc", "t0": 0, "ch": "d47", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d47", "label": "X90p_d47", "pulse_shape": "drag", "parameters": {"amp": [0.11396167254498489, -0.0003247278126238997], "beta": 1.1839405884152225, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 768, "ch": "d47", "label": "Xp_d47", "pulse_shape": "drag", "parameters": {"amp": [0.22764632487574216, 0.0], "beta": 1.2034832425654165, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1536, "ch": "d47", "label": "Y90m_d47", "pulse_shape": "drag", "parameters": {"amp": [-0.00032472781262390867, -0.11396167254498489], "beta": 1.1839405884152225, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d48", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d48", "label": "Y90p_d48", "pulse_shape": "drag", "parameters": {"amp": [-0.0014443545255074827, 0.09984166958938402], "beta": 0.011127899545718467, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d48", "label": "CR90p_d48_u106", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05559128043838306, 0.0016608908883077938], "duration": 608, "sigma": 64, "width": 352}}, {"name": "parametric_pulse", "t0": 928, "ch": "d48", "label": "CR90m_d48_u106", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05559128043838306, -0.001660890888307787], "duration": 608, "sigma": 64, "width": 352}}, {"name": "fc", "t0": 1536, "ch": "d48", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1536, "ch": "d48", "label": "X90p_d48", "pulse_shape": "drag", "parameters": {"amp": [0.09984166958938402, 0.0014443545255074816], "beta": 0.011127899545718467, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u103", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u106", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u106", "label": "CR90p_u106", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.4036308334386165, -0.09643375637256635], "duration": 608, "sigma": 64, "width": 352}}, {"name": "parametric_pulse", "t0": 928, "ch": "u106", "label": "CR90m_u106", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.4036308334386165, 0.09643375637256629], "duration": 608, "sigma": 64, "width": 352}}, {"name": "fc", "t0": 1536, "ch": "u106", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u107", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u109", "phase": -3.141592653589793}, {"name": "fc", "t0": 1536, "ch": "u109", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u77", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [48, 49], "sequence": [{"name": "fc", "t0": 0, "ch": "d48", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d48", "label": "Y90p_d48", "pulse_shape": "drag", "parameters": {"amp": [-0.0014443545255074827, 0.09984166958938402], "beta": 0.011127899545718467, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d48", "label": "CR90p_d48_u109", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04504948380450604, 0.00047636010003434203], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "d48", "label": "CR90m_d48_u109", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04504948380450604, -0.0004763601000343365], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 1824, "ch": "d48", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1824, "ch": "d48", "label": "X90p_d48", "pulse_shape": "drag", "parameters": {"amp": [0.09984166958938402, 0.0014443545255074816], "beta": 0.011127899545718467, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d49", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d49", "label": "X90p_d49", "pulse_shape": "drag", "parameters": {"amp": [0.10071169403389009, -0.0002931327059855909], "beta": 1.6229136926277805, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 912, "ch": "d49", "label": "Xp_d49", "pulse_shape": "drag", "parameters": {"amp": [0.20115745663794263, 0.0], "beta": 1.6398708724646518, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1824, "ch": "d49", "label": "Y90m_d49", "pulse_shape": "drag", "parameters": {"amp": [-0.00029313270598563864, -0.10071169403389009], "beta": 1.6229136926277805, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u106", "phase": -3.141592653589793}, {"name": "fc", "t0": 1824, "ch": "u106", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u108", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u109", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u109", "label": "CR90p_u109", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3216612511669875, -0.18340286620489904], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "u109", "label": "CR90m_u109", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3216612511669875, 0.183402866204899], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 1824, "ch": "u109", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u112", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u122", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [49, 48], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d48", "label": "X90p_d48", "pulse_shape": "drag", "parameters": {"amp": [0.09984166958938402, 0.0014443545255074816], "beta": 0.011127899545718467, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d48", "label": "CR90p_d48_u109", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04504948380450604, 0.00047636010003434203], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "d48", "label": "CR90m_d48_u109", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04504948380450604, -0.0004763601000343365], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 0, "ch": "d49", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d49", "label": "Ym_d49", "pulse_shape": "drag", "parameters": {"amp": [-3.695202530944184e-17, -0.20115745663794263], "beta": 1.6398708724646518, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 912, "ch": "d49", "label": "Xp_d49", "pulse_shape": "drag", "parameters": {"amp": [0.20115745663794263, 0.0], "beta": 1.6398708724646518, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u108", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u109", "label": "CR90p_u109", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3216612511669875, -0.18340286620489904], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "u109", "label": "CR90m_u109", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3216612511669875, 0.183402866204899], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 0, "ch": "u112", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u122", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [49, 50], "sequence": [{"name": "fc", "t0": 0, "ch": "d49", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d49", "label": "Y90p_d49", "pulse_shape": "drag", "parameters": {"amp": [0.00029313270598560395, 0.10071169403389009], "beta": 1.6229136926277805, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d49", "label": "CR90p_d49_u112", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03243016586838822, -0.0004069234683367085], "duration": 880, "sigma": 64, "width": 624}}, {"name": "parametric_pulse", "t0": 1200, "ch": "d49", "label": "CR90m_d49_u112", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03243016586838822, 0.00040692346833671246], "duration": 880, "sigma": 64, "width": 624}}, {"name": "fc", "t0": 2080, "ch": "d49", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2080, "ch": "d49", "label": "X90p_d49", "pulse_shape": "drag", "parameters": {"amp": [0.10071169403389009, -0.0002931327059855909], "beta": 1.6229136926277805, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d50", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d50", "label": "X90p_d50", "pulse_shape": "drag", "parameters": {"amp": [0.0962750652116885, 0.0011921871260471115], "beta": -0.9595096305449423, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1040, "ch": "d50", "label": "Xp_d50", "pulse_shape": "drag", "parameters": {"amp": [0.19181541891642784, 0.0], "beta": -0.9509828037722772, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2080, "ch": "d50", "label": "Y90m_d50", "pulse_shape": "drag", "parameters": {"amp": [0.0011921871260471245, -0.0962750652116885], "beta": -0.9595096305449423, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u108", "phase": -3.141592653589793}, {"name": "fc", "t0": 2080, "ch": "u108", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u110", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u112", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u112", "label": "CR90p_u112", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.4713413481053852, 0.009371142981128084], "duration": 880, "sigma": 64, "width": 624}}, {"name": "parametric_pulse", "t0": 1200, "ch": "u112", "label": "CR90m_u112", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.4713413481053852, -0.009371142981128141], "duration": 880, "sigma": 64, "width": 624}}, {"name": "fc", "t0": 2080, "ch": "u112", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u115", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u122", "phase": -3.141592653589793}, {"name": "fc", "t0": 2080, "ch": "u122", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [49, 55], "sequence": [{"name": "fc", "t0": 0, "ch": "d49", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d49", "label": "Ym_d49", "pulse_shape": "drag", "parameters": {"amp": [-3.695202530944184e-17, -0.20115745663794263], "beta": 1.6398708724646518, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1008, "ch": "d49", "label": "Xp_d49", "pulse_shape": "drag", "parameters": {"amp": [0.20115745663794263, 0.0], "beta": 1.6398708724646518, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d55", "label": "X90p_d55", "pulse_shape": "drag", "parameters": {"amp": [0.0960424795080809, 0.0007979783114878937], "beta": -0.3225929689724514, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d55", "label": "CR90p_d55_u111", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03322481685329561, 5.874758437693196e-05], "duration": 848, "sigma": 64, "width": 592}}, {"name": "parametric_pulse", "t0": 1168, "ch": "d55", "label": "CR90m_d55_u111", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03322481685329561, -5.8747584376927896e-05], "duration": 848, "sigma": 64, "width": 592}}, {"name": "fc", "t0": 0, "ch": "u108", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u111", "label": "CR90p_u111", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2537880401031925, 0.07921486627828125], "duration": 848, "sigma": 64, "width": 592}}, {"name": "parametric_pulse", "t0": 1168, "ch": "u111", "label": "CR90m_u111", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2537880401031925, -0.07921486627828128], "duration": 848, "sigma": 64, "width": 592}}, {"name": "fc", "t0": 0, "ch": "u112", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u122", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [50, 49], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d49", "label": "X90p_d49", "pulse_shape": "drag", "parameters": {"amp": [0.10071169403389009, -0.0002931327059855909], "beta": 1.6229136926277805, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d49", "label": "CR90p_d49_u112", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03243016586838822, -0.0004069234683367085], "duration": 880, "sigma": 64, "width": 624}}, {"name": "parametric_pulse", "t0": 1200, "ch": "d49", "label": "CR90m_d49_u112", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03243016586838822, 0.00040692346833671246], "duration": 880, "sigma": 64, "width": 624}}, {"name": "fc", "t0": 0, "ch": "d50", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d50", "label": "Ym_d50", "pulse_shape": "drag", "parameters": {"amp": [-3.52359208204668e-17, -0.19181541891642784], "beta": -0.9509828037722772, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1040, "ch": "d50", "label": "Xp_d50", "pulse_shape": "drag", "parameters": {"amp": [0.19181541891642784, 0.0], "beta": -0.9509828037722772, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u110", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u112", "label": "CR90p_u112", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.4713413481053852, 0.009371142981128084], "duration": 880, "sigma": 64, "width": 624}}, {"name": "parametric_pulse", "t0": 1200, "ch": "u112", "label": "CR90m_u112", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.4713413481053852, -0.009371142981128141], "duration": 880, "sigma": 64, "width": 624}}, {"name": "fc", "t0": 0, "ch": "u115", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [50, 51], "sequence": [{"name": "fc", "t0": 0, "ch": "d50", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d50", "label": "Y90p_d50", "pulse_shape": "drag", "parameters": {"amp": [-0.001192187126047115, 0.0962750652116885], "beta": -0.9595096305449423, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d50", "label": "CR90p_d50_u115", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06389830660571333, 0.001446311509384672], "duration": 544, "sigma": 64, "width": 288}}, {"name": "parametric_pulse", "t0": 864, "ch": "d50", "label": "CR90m_d50_u115", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06389830660571333, -0.0014463115093846643], "duration": 544, "sigma": 64, "width": 288}}, {"name": "fc", "t0": 1408, "ch": "d50", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1408, "ch": "d50", "label": "X90p_d50", "pulse_shape": "drag", "parameters": {"amp": [0.0962750652116885, 0.0011921871260471115], "beta": -0.9595096305449423, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d51", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d51", "label": "X90p_d51", "pulse_shape": "drag", "parameters": {"amp": [0.09834851113603359, 0.0017618162023445008], "beta": -1.687806463213027, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 704, "ch": "d51", "label": "Xp_d51", "pulse_shape": "drag", "parameters": {"amp": [0.19564382961711657, 0.0], "beta": -1.6941555108249076, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1408, "ch": "d51", "label": "Y90m_d51", "pulse_shape": "drag", "parameters": {"amp": [0.0017618162023444973, -0.09834851113603359], "beta": -1.687806463213027, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u110", "phase": -3.141592653589793}, {"name": "fc", "t0": 1408, "ch": "u110", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u113", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u115", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u115", "label": "CR90p_u115", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0950516523931215, -0.4909070821529348], "duration": 544, "sigma": 64, "width": 288}}, {"name": "parametric_pulse", "t0": 864, "ch": "u115", "label": "CR90m_u115", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09505165239312155, 0.4909070821529348], "duration": 544, "sigma": 64, "width": 288}}, {"name": "fc", "t0": 1408, "ch": "u115", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u79", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [51, 36], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d36", "label": "X90p_d36", "pulse_shape": "drag", "parameters": {"amp": [0.09604187125716661, 0.002171430094789102], "beta": -1.356253373528273, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d36", "label": "CR90p_d36_u114", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.044095721809905244, 0.002253769222759941], "duration": 736, "sigma": 64, "width": 480}}, {"name": "parametric_pulse", "t0": 1056, "ch": "d36", "label": "CR90m_d36_u114", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.044095721809905244, -0.0022537692227599356], "duration": 736, "sigma": 64, "width": 480}}, {"name": "fc", "t0": 0, "ch": "d51", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d51", "label": "Ym_d51", "pulse_shape": "drag", "parameters": {"amp": [-3.593918845702979e-17, -0.19564382961711657], "beta": -1.6941555108249076, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 896, "ch": "d51", "label": "Xp_d51", "pulse_shape": "drag", "parameters": {"amp": [0.19564382961711657, 0.0], "beta": -1.6941555108249076, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u113", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u114", "label": "CR90p_u114", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.32255469865043596, 0.06443071840042347], "duration": 736, "sigma": 64, "width": 480}}, {"name": "parametric_pulse", "t0": 1056, "ch": "u114", "label": "CR90m_u114", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.32255469865043596, -0.06443071840042343], "duration": 736, "sigma": 64, "width": 480}}, {"name": "fc", "t0": 0, "ch": "u79", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [51, 50], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d50", "label": "X90p_d50", "pulse_shape": "drag", "parameters": {"amp": [0.0962750652116885, 0.0011921871260471115], "beta": -0.9595096305449423, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d50", "label": "CR90p_d50_u115", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06389830660571333, 0.001446311509384672], "duration": 544, "sigma": 64, "width": 288}}, {"name": "parametric_pulse", "t0": 864, "ch": "d50", "label": "CR90m_d50_u115", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06389830660571333, -0.0014463115093846643], "duration": 544, "sigma": 64, "width": 288}}, {"name": "fc", "t0": 0, "ch": "d51", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d51", "label": "Ym_d51", "pulse_shape": "drag", "parameters": {"amp": [-3.593918845702979e-17, -0.19564382961711657], "beta": -1.6941555108249076, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 704, "ch": "d51", "label": "Xp_d51", "pulse_shape": "drag", "parameters": {"amp": [0.19564382961711657, 0.0], "beta": -1.6941555108249076, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u113", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u115", "label": "CR90p_u115", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0950516523931215, -0.4909070821529348], "duration": 544, "sigma": 64, "width": 288}}, {"name": "parametric_pulse", "t0": 864, "ch": "u115", "label": "CR90m_u115", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09505165239312155, 0.4909070821529348], "duration": 544, "sigma": 64, "width": 288}}, {"name": "fc", "t0": 0, "ch": "u79", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [52, 37], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d37", "label": "X90p_d37", "pulse_shape": "drag", "parameters": {"amp": [0.00868838285789024, -0.09455783388557376], "beta": -1.5480729069919235, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d37", "label": "CR90p_d37_u116", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.002401279743303449, -0.01172403760663196], "duration": 2048, "sigma": 64, "width": 1792}}, {"name": "parametric_pulse", "t0": 2368, "ch": "d37", "label": "CR90m_d37_u116", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0024012797433034475, 0.01172403760663196], "duration": 2048, "sigma": 64, "width": 1792}}, {"name": "fc", "t0": 0, "ch": "d52", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d52", "label": "Ym_d52", "pulse_shape": "drag", "parameters": {"amp": [-3.3980358180230336e-17, -0.18498045424955065], "beta": 1.6796188276418986, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2208, "ch": "d52", "label": "Xp_d52", "pulse_shape": "drag", "parameters": {"amp": [0.18498045424955065, 0.0], "beta": 1.6796188276418986, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "u116", "label": "CR90p_u116", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1282111498257288, -0.18430135883910773], "duration": 2048, "sigma": 64, "width": 1792}}, {"name": "parametric_pulse", "t0": 2368, "ch": "u116", "label": "CR90m_u116", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.12821114982572882, 0.1843013588391077], "duration": 2048, "sigma": 64, "width": 1792}}, {"name": "fc", "t0": 0, "ch": "u124", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u81", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [52, 56], "sequence": [{"name": "fc", "t0": 0, "ch": "d52", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d52", "label": "Y90p_d52", "pulse_shape": "drag", "parameters": {"amp": [-9.479147153852331e-05, 0.09269374168645778], "beta": 1.6356768795321304, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d52", "label": "CR90p_d52_u124", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.028937420862410333, -0.00035909474189010676], "duration": 1024, "sigma": 64, "width": 768}}, {"name": "parametric_pulse", "t0": 1344, "ch": "d52", "label": "CR90m_d52_u124", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.028937420862410333, 0.0003590947418901103], "duration": 1024, "sigma": 64, "width": 768}}, {"name": "fc", "t0": 2368, "ch": "d52", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2368, "ch": "d52", "label": "X90p_d52", "pulse_shape": "drag", "parameters": {"amp": [0.09269374168645778, 9.479147153851943e-05], "beta": 1.6356768795321304, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d56", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d56", "label": "X90p_d56", "pulse_shape": "drag", "parameters": {"amp": [0.09648382789817259, 0.0018494218536374148], "beta": -1.878949570843616, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1184, "ch": "d56", "label": "Xp_d56", "pulse_shape": "drag", "parameters": {"amp": [0.19231366103110997, 0.0], "beta": -1.8631163321515958, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2368, "ch": "d56", "label": "Y90m_d56", "pulse_shape": "drag", "parameters": {"amp": [0.0018494218536373888, -0.09648382789817259], "beta": -1.878949570843616, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u117", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u124", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u124", "label": "CR90p_u124", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.21411481322067866, 0.06256022723711363], "duration": 1024, "sigma": 64, "width": 768}}, {"name": "parametric_pulse", "t0": 1344, "ch": "u124", "label": "CR90m_u124", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.21411481322067866, -0.0625602272371136], "duration": 1024, "sigma": 64, "width": 768}}, {"name": "fc", "t0": 2368, "ch": "u124", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u126", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u81", "phase": -3.141592653589793}, {"name": "fc", "t0": 2368, "ch": "u81", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [53, 41], "sequence": [{"name": "fc", "t0": 0, "ch": "d41", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d41", "label": "X90p_d41", "pulse_shape": "drag", "parameters": {"amp": [0.1167061478055803, -0.0008502982254150733], "beta": 1.6810119998778095, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 800, "ch": "d41", "label": "Xp_d41", "pulse_shape": "drag", "parameters": {"amp": [0.2334688812328637, 0.0], "beta": 1.6694816560417942, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1600, "ch": "d41", "label": "Y90m_d41", "pulse_shape": "drag", "parameters": {"amp": [-0.0008502982254151082, -0.1167061478055803], "beta": 1.6810119998778095, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d53", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d53", "label": "Y90p_d53", "pulse_shape": "drag", "parameters": {"amp": [-0.0021683182524991408, 0.1135499885157783], "beta": -1.147433978287251, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d53", "label": "CR90p_d53_u91", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05894346195882207, 0.004352875072701396], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "d53", "label": "CR90m_d53_u91", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05894346195882207, -0.004352875072701389], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 1600, "ch": "d53", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1600, "ch": "d53", "label": "X90p_d53", "pulse_shape": "drag", "parameters": {"amp": [0.1135499885157783, 0.0021683182524991603], "beta": -1.147433978287251, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u118", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u133", "phase": -3.141592653589793}, {"name": "fc", "t0": 1600, "ch": "u133", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u88", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u91", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u91", "label": "CR90p_u91", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.14698286610636468, -0.19874968478604446], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "u91", "label": "CR90m_u91", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.14698286610636466, 0.1987496847860445], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 1600, "ch": "u91", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u92", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [53, 60], "sequence": [{"name": "fc", "t0": 0, "ch": "d53", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d53", "label": "Ym_d53", "pulse_shape": "drag", "parameters": {"amp": [-4.1612586128827485e-17, -0.22652836805844642], "beta": -1.675953014303533, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 864, "ch": "d53", "label": "Xp_d53", "pulse_shape": "drag", "parameters": {"amp": [0.22652836805844642, 0.0], "beta": -1.675953014303533, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d60", "label": "X90p_d60", "pulse_shape": "drag", "parameters": {"amp": [0.09469310232356903, 0.0012371261739891075], "beta": -0.9902472702399228, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d60", "label": "CR90p_d60_u119", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04075339645919228, 0.0007064387937232686], "duration": 704, "sigma": 64, "width": 448}}, {"name": "parametric_pulse", "t0": 1024, "ch": "d60", "label": "CR90m_d60_u119", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04075339645919228, -0.0007064387937232636], "duration": 704, "sigma": 64, "width": 448}}, {"name": "parametric_pulse", "t0": 160, "ch": "u119", "label": "CR90p_u119", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.5202668309786657, 0.24288911922816267], "duration": 704, "sigma": 64, "width": 448}}, {"name": "parametric_pulse", "t0": 1024, "ch": "u119", "label": "CR90m_u119", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.5202668309786657, -0.24288911922816273], "duration": 704, "sigma": 64, "width": 448}}, {"name": "fc", "t0": 0, "ch": "u133", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u91", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [54, 45], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d45", "label": "X90p_d45", "pulse_shape": "drag", "parameters": {"amp": [0.09912252983507365, 0.0007938306920316289], "beta": 0.6062390717479786, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d45", "label": "CR90p_d45_u120", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.028741327934739904, 0.0008041181577363248], "duration": 1104, "sigma": 64, "width": 848}}, {"name": "parametric_pulse", "t0": 1424, "ch": "d45", "label": "CR90m_d45_u120", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.028741327934739904, -0.0008041181577363213], "duration": 1104, "sigma": 64, "width": 848}}, {"name": "fc", "t0": 0, "ch": "d54", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d54", "label": "Ym_d54", "pulse_shape": "drag", "parameters": {"amp": [-2.785511557573797e-17, -0.1516361865594324], "beta": 0.7106074879675671, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1264, "ch": "d54", "label": "Xp_d54", "pulse_shape": "drag", "parameters": {"amp": [0.1516361865594324, 0.0], "beta": 0.7106074879675671, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u101", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u120", "label": "CR90p_u120", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.20309498432188564, -0.07891332088331732], "duration": 1104, "sigma": 64, "width": 848}}, {"name": "parametric_pulse", "t0": 1424, "ch": "u120", "label": "CR90m_u120", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.20309498432188564, 0.07891332088331734], "duration": 1104, "sigma": 64, "width": 848}}, {"name": "fc", "t0": 0, "ch": "u143", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [54, 64], "sequence": [{"name": "fc", "t0": 0, "ch": "d54", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d54", "label": "Y90p_d54", "pulse_shape": "drag", "parameters": {"amp": [9.300376883828117e-05, 0.07602813059040985], "beta": 0.7148241595332547, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d54", "label": "CR90p_d54_u143", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.044624315260515565, -0.0012214795933231499], "duration": 608, "sigma": 64, "width": 352}}, {"name": "parametric_pulse", "t0": 928, "ch": "d54", "label": "CR90m_d54_u143", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.044624315260515565, 0.0012214795933231553], "duration": 608, "sigma": 64, "width": 352}}, {"name": "fc", "t0": 1536, "ch": "d54", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1536, "ch": "d54", "label": "X90p_d54", "pulse_shape": "drag", "parameters": {"amp": [0.07602813059040985, -9.300376883827832e-05], "beta": 0.7148241595332547, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d64", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d64", "label": "X90p_d64", "pulse_shape": "drag", "parameters": {"amp": [0.08382418622965596, 3.803805038136307e-05], "beta": 0.19218474042267178, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 768, "ch": "d64", "label": "Xp_d64", "pulse_shape": "drag", "parameters": {"amp": [0.1658671765971227, 0.0], "beta": 0.28548117023718617, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1536, "ch": "d64", "label": "Y90m_d64", "pulse_shape": "drag", "parameters": {"amp": [3.8038050381365106e-05, -0.08382418622965596], "beta": 0.19218474042267178, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u101", "phase": -3.141592653589793}, {"name": "fc", "t0": 1536, "ch": "u101", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u121", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u142", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u143", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u143", "label": "CR90p_u143", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.345322653022183, -0.2433828819453052], "duration": 608, "sigma": 64, "width": 352}}, {"name": "parametric_pulse", "t0": 928, "ch": "u143", "label": "CR90m_u143", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.34532265302218307, 0.24338288194530514], "duration": 608, "sigma": 64, "width": 352}}, {"name": "fc", "t0": 1536, "ch": "u143", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u146", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [55, 49], "sequence": [{"name": "fc", "t0": 0, "ch": "d49", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d49", "label": "X90p_d49", "pulse_shape": "drag", "parameters": {"amp": [0.10071169403389009, -0.0002931327059855909], "beta": 1.6229136926277805, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1008, "ch": "d49", "label": "Xp_d49", "pulse_shape": "drag", "parameters": {"amp": [0.20115745663794263, 0.0], "beta": 1.6398708724646518, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2016, "ch": "d49", "label": "Y90m_d49", "pulse_shape": "drag", "parameters": {"amp": [-0.00029313270598563864, -0.10071169403389009], "beta": 1.6229136926277805, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d55", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d55", "label": "Y90p_d55", "pulse_shape": "drag", "parameters": {"amp": [-0.0007979783114878939, 0.0960424795080809], "beta": -0.3225929689724514, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d55", "label": "CR90p_d55_u111", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03322481685329561, 5.874758437693196e-05], "duration": 848, "sigma": 64, "width": 592}}, {"name": "parametric_pulse", "t0": 1168, "ch": "d55", "label": "CR90m_d55_u111", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03322481685329561, -5.8747584376927896e-05], "duration": 848, "sigma": 64, "width": 592}}, {"name": "fc", "t0": 2016, "ch": "d55", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2016, "ch": "d55", "label": "X90p_d55", "pulse_shape": "drag", "parameters": {"amp": [0.0960424795080809, 0.0007979783114878937], "beta": -0.3225929689724514, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u108", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u111", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u111", "label": "CR90p_u111", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2537880401031925, 0.07921486627828125], "duration": 848, "sigma": 64, "width": 592}}, {"name": "parametric_pulse", "t0": 1168, "ch": "u111", "label": "CR90m_u111", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2537880401031925, -0.07921486627828128], "duration": 848, "sigma": 64, "width": 592}}, {"name": "fc", "t0": 2016, "ch": "u111", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u112", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u122", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u153", "phase": -3.141592653589793}, {"name": "fc", "t0": 2016, "ch": "u153", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [55, 68], "sequence": [{"name": "fc", "t0": 0, "ch": "d55", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d55", "label": "Y90p_d55", "pulse_shape": "drag", "parameters": {"amp": [-0.0007979783114878939, 0.0960424795080809], "beta": -0.3225929689724514, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d55", "label": "CR90p_d55_u153", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03456043807652837, 0.00040944745332599275], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1136, "ch": "d55", "label": "CR90m_d55_u153", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03456043807652837, -0.0004094474533259885], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 1952, "ch": "d55", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1952, "ch": "d55", "label": "X90p_d55", "pulse_shape": "drag", "parameters": {"amp": [0.0960424795080809, 0.0007979783114878937], "beta": -0.3225929689724514, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d68", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d68", "label": "X90p_d68", "pulse_shape": "drag", "parameters": {"amp": [0.09509979238321963, 0.0008452552253863645], "beta": -0.03889942945742053, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 976, "ch": "d68", "label": "Xp_d68", "pulse_shape": "drag", "parameters": {"amp": [0.18899965619565834, 0.0], "beta": -0.032220842197396724, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1952, "ch": "d68", "label": "Y90m_d68", "pulse_shape": "drag", "parameters": {"amp": [0.0008452552253863169, -0.09509979238321963], "beta": -0.03889942945742053, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u111", "phase": -3.141592653589793}, {"name": "fc", "t0": 1952, "ch": "u111", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u123", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u152", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u153", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u153", "label": "CR90p_u153", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.08219912954711908, -0.19552612551980922], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1136, "ch": "u153", "label": "CR90m_u153", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.08219912954711911, 0.19552612551980922], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 1952, "ch": "u153", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u156", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [56, 52], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d52", "label": "X90p_d52", "pulse_shape": "drag", "parameters": {"amp": [0.09269374168645778, 9.479147153851943e-05], "beta": 1.6356768795321304, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d52", "label": "CR90p_d52_u124", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.028937420862410333, -0.00035909474189010676], "duration": 1024, "sigma": 64, "width": 768}}, {"name": "parametric_pulse", "t0": 1344, "ch": "d52", "label": "CR90m_d52_u124", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.028937420862410333, 0.0003590947418901103], "duration": 1024, "sigma": 64, "width": 768}}, {"name": "fc", "t0": 0, "ch": "d56", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d56", "label": "Ym_d56", "pulse_shape": "drag", "parameters": {"amp": [-3.532744641210868e-17, -0.19231366103110997], "beta": -1.8631163321515958, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1184, "ch": "d56", "label": "Xp_d56", "pulse_shape": "drag", "parameters": {"amp": [0.19231366103110997, 0.0], "beta": -1.8631163321515958, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u117", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u124", "label": "CR90p_u124", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.21411481322067866, 0.06256022723711363], "duration": 1024, "sigma": 64, "width": 768}}, {"name": "parametric_pulse", "t0": 1344, "ch": "u124", "label": "CR90m_u124", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.21411481322067866, -0.0625602272371136], "duration": 1024, "sigma": 64, "width": 768}}, {"name": "fc", "t0": 0, "ch": "u126", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [56, 57], "sequence": [{"name": "fc", "t0": 0, "ch": "d56", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d56", "label": "Y90p_d56", "pulse_shape": "drag", "parameters": {"amp": [-0.0018494218536374005, 0.09648382789817259], "beta": -1.878949570843616, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d56", "label": "CR90p_d56_u126", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03963421722737605, 0.001383209181837289], "duration": 704, "sigma": 64, "width": 448}}, {"name": "parametric_pulse", "t0": 1024, "ch": "d56", "label": "CR90m_d56_u126", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03963421722737605, -0.0013832091818372842], "duration": 704, "sigma": 64, "width": 448}}, {"name": "fc", "t0": 1728, "ch": "d56", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1728, "ch": "d56", "label": "X90p_d56", "pulse_shape": "drag", "parameters": {"amp": [0.09648382789817259, 0.0018494218536374148], "beta": -1.878949570843616, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d57", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d57", "label": "X90p_d57", "pulse_shape": "drag", "parameters": {"amp": [0.09702946655500636, 0.001549001315399112], "beta": -1.2776729790590766, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 864, "ch": "d57", "label": "Xp_d57", "pulse_shape": "drag", "parameters": {"amp": [0.1934889589534442, 0.0], "beta": -1.3000737363779669, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1728, "ch": "d57", "label": "Y90m_d57", "pulse_shape": "drag", "parameters": {"amp": [0.0015490013153991256, -0.09702946655500636], "beta": -1.2776729790590766, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u117", "phase": -3.141592653589793}, {"name": "fc", "t0": 1728, "ch": "u117", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u125", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u126", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u126", "label": "CR90p_u126", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.49538761480780225, -0.13228038028843972], "duration": 704, "sigma": 64, "width": 448}}, {"name": "parametric_pulse", "t0": 1024, "ch": "u126", "label": "CR90m_u126", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.49538761480780225, 0.13228038028843966], "duration": 704, "sigma": 64, "width": 448}}, {"name": "fc", "t0": 1728, "ch": "u126", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u128", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [57, 56], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d56", "label": "X90p_d56", "pulse_shape": "drag", "parameters": {"amp": [0.09648382789817259, 0.0018494218536374148], "beta": -1.878949570843616, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d56", "label": "CR90p_d56_u126", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03963421722737605, 0.001383209181837289], "duration": 704, "sigma": 64, "width": 448}}, {"name": "parametric_pulse", "t0": 1024, "ch": "d56", "label": "CR90m_d56_u126", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03963421722737605, -0.0013832091818372842], "duration": 704, "sigma": 64, "width": 448}}, {"name": "fc", "t0": 0, "ch": "d57", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d57", "label": "Ym_d57", "pulse_shape": "drag", "parameters": {"amp": [-3.5543345137903353e-17, -0.1934889589534442], "beta": -1.3000737363779669, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 864, "ch": "d57", "label": "Xp_d57", "pulse_shape": "drag", "parameters": {"amp": [0.1934889589534442, 0.0], "beta": -1.3000737363779669, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u125", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u126", "label": "CR90p_u126", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.49538761480780225, -0.13228038028843972], "duration": 704, "sigma": 64, "width": 448}}, {"name": "parametric_pulse", "t0": 1024, "ch": "u126", "label": "CR90m_u126", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.49538761480780225, 0.13228038028843966], "duration": 704, "sigma": 64, "width": 448}}, {"name": "fc", "t0": 0, "ch": "u128", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [57, 58], "sequence": [{"name": "fc", "t0": 0, "ch": "d57", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d57", "label": "Ym_d57", "pulse_shape": "drag", "parameters": {"amp": [-3.5543345137903353e-17, -0.1934889589534442], "beta": -1.3000737363779669, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 928, "ch": "d57", "label": "Xp_d57", "pulse_shape": "drag", "parameters": {"amp": [0.1934889589534442, 0.0], "beta": -1.3000737363779669, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d58", "label": "X90p_d58", "pulse_shape": "drag", "parameters": {"amp": [0.11851841072866011, -0.00016336988848341012], "beta": 1.679116280234777, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d58", "label": "CR90p_d58_u127", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05154396342242829, -0.00032285029322362026], "duration": 768, "sigma": 64, "width": 512}}, {"name": "parametric_pulse", "t0": 1088, "ch": "d58", "label": "CR90m_d58_u127", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05154396342242829, 0.00032285029322362655], "duration": 768, "sigma": 64, "width": 512}}, {"name": "fc", "t0": 0, "ch": "u125", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u127", "label": "CR90p_u127", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.280336530540642, 0.1995275966112485], "duration": 768, "sigma": 64, "width": 512}}, {"name": "parametric_pulse", "t0": 1088, "ch": "u127", "label": "CR90m_u127", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.280336530540642, -0.19952759661124853], "duration": 768, "sigma": 64, "width": 512}}, {"name": "fc", "t0": 0, "ch": "u128", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [58, 57], "sequence": [{"name": "fc", "t0": 0, "ch": "d57", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d57", "label": "X90p_d57", "pulse_shape": "drag", "parameters": {"amp": [0.09702946655500636, 0.001549001315399112], "beta": -1.2776729790590766, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 928, "ch": "d57", "label": "Xp_d57", "pulse_shape": "drag", "parameters": {"amp": [0.1934889589534442, 0.0], "beta": -1.3000737363779669, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1856, "ch": "d57", "label": "Y90m_d57", "pulse_shape": "drag", "parameters": {"amp": [0.0015490013153991256, -0.09702946655500636], "beta": -1.2776729790590766, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d58", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d58", "label": "Y90p_d58", "pulse_shape": "drag", "parameters": {"amp": [0.00016336988848340695, 0.11851841072866011], "beta": 1.679116280234777, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d58", "label": "CR90p_d58_u127", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05154396342242829, -0.00032285029322362026], "duration": 768, "sigma": 64, "width": 512}}, {"name": "parametric_pulse", "t0": 1088, "ch": "d58", "label": "CR90m_d58_u127", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05154396342242829, 0.00032285029322362655], "duration": 768, "sigma": 64, "width": 512}}, {"name": "fc", "t0": 1856, "ch": "d58", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1856, "ch": "d58", "label": "X90p_d58", "pulse_shape": "drag", "parameters": {"amp": [0.11851841072866011, -0.00016336988848341012], "beta": 1.679116280234777, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u125", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u127", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u127", "label": "CR90p_u127", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.280336530540642, 0.1995275966112485], "duration": 768, "sigma": 64, "width": 512}}, {"name": "parametric_pulse", "t0": 1088, "ch": "u127", "label": "CR90m_u127", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.280336530540642, -0.19952759661124853], "duration": 768, "sigma": 64, "width": 512}}, {"name": "fc", "t0": 1856, "ch": "u127", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u128", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u131", "phase": -3.141592653589793}, {"name": "fc", "t0": 1856, "ch": "u131", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u160", "phase": -3.141592653589793}, {"name": "fc", "t0": 1856, "ch": "u160", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [58, 59], "sequence": [{"name": "fc", "t0": 0, "ch": "d58", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d58", "label": "Y90p_d58", "pulse_shape": "drag", "parameters": {"amp": [0.00016336988848340695, 0.11851841072866011], "beta": 1.679116280234777, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d58", "label": "CR90p_d58_u131", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.046703941032132976, 0.0006683085141972586], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d58", "label": "CR90m_d58_u131", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.046703941032132976, -0.0006683085141972529], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "d58", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1920, "ch": "d58", "label": "X90p_d58", "pulse_shape": "drag", "parameters": {"amp": [0.11851841072866011, -0.00016336988848341012], "beta": 1.679116280234777, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d59", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d59", "label": "X90p_d59", "pulse_shape": "drag", "parameters": {"amp": [0.09559374711496173, 0.0007505483946901862], "beta": 0.4579455937135979, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d59", "label": "Xp_d59", "pulse_shape": "drag", "parameters": {"amp": [0.1903478743897623, 0.0], "beta": 0.3923734356416953, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1920, "ch": "d59", "label": "Y90m_d59", "pulse_shape": "drag", "parameters": {"amp": [0.0007505483946901981, -0.09559374711496173], "beta": 0.4579455937135979, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u127", "phase": -3.141592653589793}, {"name": "fc", "t0": 1920, "ch": "u127", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u129", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u131", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u131", "label": "CR90p_u131", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1277164400353452, 0.13123937407822778], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u131", "label": "CR90m_u131", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.12771644003534519, -0.1312393740782278], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "u131", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u134", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u160", "phase": -3.141592653589793}, {"name": "fc", "t0": 1920, "ch": "u160", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [58, 71], "sequence": [{"name": "fc", "t0": 0, "ch": "d58", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d58", "label": "Y90p_d58", "pulse_shape": "drag", "parameters": {"amp": [0.00016336988848340695, 0.11851841072866011], "beta": 1.679116280234777, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d58", "label": "CR90p_d58_u160", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.046830043010876767, 0.0001556595605368184], "duration": 864, "sigma": 64, "width": 608}}, {"name": "parametric_pulse", "t0": 1184, "ch": "d58", "label": "CR90m_d58_u160", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.046830043010876767, -0.00015565956053681265], "duration": 864, "sigma": 64, "width": 608}}, {"name": "fc", "t0": 2048, "ch": "d58", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2048, "ch": "d58", "label": "X90p_d58", "pulse_shape": "drag", "parameters": {"amp": [0.11851841072866011, -0.00016336988848341012], "beta": 1.679116280234777, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d71", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d71", "label": "X90p_d71", "pulse_shape": "drag", "parameters": {"amp": [0.09843274010937189, 0.0005495208125857818], "beta": -0.4419617673478976, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1024, "ch": "d71", "label": "Xp_d71", "pulse_shape": "drag", "parameters": {"amp": [0.19663477042894675, 0.0], "beta": -0.2505306908761036, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2048, "ch": "d71", "label": "Y90m_d71", "pulse_shape": "drag", "parameters": {"amp": [0.0005495208125858005, -0.09843274010937189], "beta": -0.4419617673478976, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u127", "phase": -3.141592653589793}, {"name": "fc", "t0": 2048, "ch": "u127", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u130", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u131", "phase": -3.141592653589793}, {"name": "fc", "t0": 2048, "ch": "u131", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u160", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u160", "label": "CR90p_u160", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.29076722423272755, 0.3009427360985879], "duration": 864, "sigma": 64, "width": 608}}, {"name": "parametric_pulse", "t0": 1184, "ch": "u160", "label": "CR90m_u160", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2907672242327276, -0.30094273609858785], "duration": 864, "sigma": 64, "width": 608}}, {"name": "fc", "t0": 2048, "ch": "u160", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u172", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [59, 58], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d58", "label": "X90p_d58", "pulse_shape": "drag", "parameters": {"amp": [0.11851841072866011, -0.00016336988848341012], "beta": 1.679116280234777, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d58", "label": "CR90p_d58_u131", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.046703941032132976, 0.0006683085141972586], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d58", "label": "CR90m_d58_u131", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.046703941032132976, -0.0006683085141972529], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "d59", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d59", "label": "Ym_d59", "pulse_shape": "drag", "parameters": {"amp": [-3.4966337264388724e-17, -0.1903478743897623], "beta": 0.3923734356416953, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d59", "label": "Xp_d59", "pulse_shape": "drag", "parameters": {"amp": [0.1903478743897623, 0.0], "beta": 0.3923734356416953, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u129", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u131", "label": "CR90p_u131", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1277164400353452, 0.13123937407822778], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u131", "label": "CR90m_u131", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.12771644003534519, -0.1312393740782278], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "u134", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [59, 60], "sequence": [{"name": "fc", "t0": 0, "ch": "d59", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d59", "label": "Y90p_d59", "pulse_shape": "drag", "parameters": {"amp": [-0.0007505483946901887, 0.09559374711496173], "beta": 0.4579455937135979, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d59", "label": "CR90p_d59_u134", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04259908567936777, 0.0004829058171111053], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "d59", "label": "CR90m_d59_u134", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04259908567936777, -0.0004829058171111001], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 1824, "ch": "d59", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1824, "ch": "d59", "label": "X90p_d59", "pulse_shape": "drag", "parameters": {"amp": [0.09559374711496173, 0.0007505483946901862], "beta": 0.4579455937135979, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d60", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d60", "label": "X90p_d60", "pulse_shape": "drag", "parameters": {"amp": [0.09469310232356903, 0.0012371261739891075], "beta": -0.9902472702399228, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 912, "ch": "d60", "label": "Xp_d60", "pulse_shape": "drag", "parameters": {"amp": [0.18840940344287263, 0.0], "beta": -1.0159787603415793, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1824, "ch": "d60", "label": "Y90m_d60", "pulse_shape": "drag", "parameters": {"amp": [0.001237126173989084, -0.09469310232356903], "beta": -0.9902472702399228, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u119", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u129", "phase": -3.141592653589793}, {"name": "fc", "t0": 1824, "ch": "u129", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u132", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u134", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u134", "label": "CR90p_u134", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.15528309113440242, 0.3111919570080486], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "u134", "label": "CR90m_u134", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1552830911344024, -0.3111919570080486], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 1824, "ch": "u134", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u136", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [60, 53], "sequence": [{"name": "fc", "t0": 0, "ch": "d53", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d53", "label": "X90p_d53", "pulse_shape": "drag", "parameters": {"amp": [0.1135499885157783, 0.0021683182524991603], "beta": -1.147433978287251, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 864, "ch": "d53", "label": "Xp_d53", "pulse_shape": "drag", "parameters": {"amp": [0.22652836805844642, 0.0], "beta": -1.675953014303533, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1728, "ch": "d53", "label": "Y90m_d53", "pulse_shape": "drag", "parameters": {"amp": [0.002168318252499127, -0.1135499885157783], "beta": -1.147433978287251, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d60", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d60", "label": "Y90p_d60", "pulse_shape": "drag", "parameters": {"amp": [-0.0012371261739890956, 0.09469310232356903], "beta": -0.9902472702399228, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d60", "label": "CR90p_d60_u119", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04075339645919228, 0.0007064387937232686], "duration": 704, "sigma": 64, "width": 448}}, {"name": "parametric_pulse", "t0": 1024, "ch": "d60", "label": "CR90m_d60_u119", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04075339645919228, -0.0007064387937232636], "duration": 704, "sigma": 64, "width": 448}}, {"name": "fc", "t0": 1728, "ch": "d60", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1728, "ch": "d60", "label": "X90p_d60", "pulse_shape": "drag", "parameters": {"amp": [0.09469310232356903, 0.0012371261739891075], "beta": -0.9902472702399228, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u119", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u119", "label": "CR90p_u119", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.5202668309786657, 0.24288911922816267], "duration": 704, "sigma": 64, "width": 448}}, {"name": "parametric_pulse", "t0": 1024, "ch": "u119", "label": "CR90m_u119", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.5202668309786657, -0.24288911922816273], "duration": 704, "sigma": 64, "width": 448}}, {"name": "fc", "t0": 1728, "ch": "u119", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u132", "phase": -3.141592653589793}, {"name": "fc", "t0": 1728, "ch": "u132", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u133", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u136", "phase": -3.141592653589793}, {"name": "fc", "t0": 1728, "ch": "u136", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u91", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [60, 59], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d59", "label": "X90p_d59", "pulse_shape": "drag", "parameters": {"amp": [0.09559374711496173, 0.0007505483946901862], "beta": 0.4579455937135979, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d59", "label": "CR90p_d59_u134", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04259908567936777, 0.0004829058171111053], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "d59", "label": "CR90m_d59_u134", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04259908567936777, -0.0004829058171111001], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 0, "ch": "d60", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d60", "label": "Ym_d60", "pulse_shape": "drag", "parameters": {"amp": [-3.461024592833644e-17, -0.18840940344287263], "beta": -1.0159787603415793, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 912, "ch": "d60", "label": "Xp_d60", "pulse_shape": "drag", "parameters": {"amp": [0.18840940344287263, 0.0], "beta": -1.0159787603415793, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u119", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u132", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u134", "label": "CR90p_u134", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.15528309113440242, 0.3111919570080486], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "u134", "label": "CR90m_u134", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1552830911344024, -0.3111919570080486], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 0, "ch": "u136", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [60, 61], "sequence": [{"name": "fc", "t0": 0, "ch": "d60", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d60", "label": "Ym_d60", "pulse_shape": "drag", "parameters": {"amp": [-3.461024592833644e-17, -0.18840940344287263], "beta": -1.0159787603415793, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d60", "label": "Xp_d60", "pulse_shape": "drag", "parameters": {"amp": [0.18840940344287263, 0.0], "beta": -1.0159787603415793, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d61", "label": "X90p_d61", "pulse_shape": "drag", "parameters": {"amp": [0.13559960005611674, 0.0007206927680335045], "beta": 0.9063938971915719, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d61", "label": "CR90p_d61_u135", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05923529260489868, -0.0020316253346128917], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d61", "label": "CR90m_d61_u135", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05923529260489868, 0.002031625334612899], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "u119", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u132", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u135", "label": "CR90p_u135", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10117839000264149, -0.1651676370917286], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u135", "label": "CR90m_u135", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1011783900026415, 0.1651676370917286], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "u136", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [61, 60], "sequence": [{"name": "fc", "t0": 0, "ch": "d60", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d60", "label": "X90p_d60", "pulse_shape": "drag", "parameters": {"amp": [0.09469310232356903, 0.0012371261739891075], "beta": -0.9902472702399228, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d60", "label": "Xp_d60", "pulse_shape": "drag", "parameters": {"amp": [0.18840940344287263, 0.0], "beta": -1.0159787603415793, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1920, "ch": "d60", "label": "Y90m_d60", "pulse_shape": "drag", "parameters": {"amp": [0.001237126173989084, -0.09469310232356903], "beta": -0.9902472702399228, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d61", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d61", "label": "Y90p_d61", "pulse_shape": "drag", "parameters": {"amp": [-0.000720692768033511, 0.13559960005611674], "beta": 0.9063938971915719, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d61", "label": "CR90p_d61_u135", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05923529260489868, -0.0020316253346128917], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d61", "label": "CR90m_d61_u135", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05923529260489868, 0.002031625334612899], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "d61", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1920, "ch": "d61", "label": "X90p_d61", "pulse_shape": "drag", "parameters": {"amp": [0.13559960005611674, 0.0007206927680335045], "beta": 0.9063938971915719, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u119", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u132", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u135", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u135", "label": "CR90p_u135", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10117839000264149, -0.1651676370917286], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u135", "label": "CR90m_u135", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1011783900026415, 0.1651676370917286], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "u135", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u136", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u138", "phase": -3.141592653589793}, {"name": "fc", "t0": 1920, "ch": "u138", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [61, 62], "sequence": [{"name": "fc", "t0": 0, "ch": "d61", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d61", "label": "Ym_d61", "pulse_shape": "drag", "parameters": {"amp": [-4.972868372527448e-17, -0.2707103455456029], "beta": 0.876219609614946, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1184, "ch": "d61", "label": "Xp_d61", "pulse_shape": "drag", "parameters": {"amp": [0.2707103455456029, 0.0], "beta": 0.876219609614946, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d62", "label": "X90p_d62", "pulse_shape": "drag", "parameters": {"amp": [0.08126354415594338, 0.0011258441606146754], "beta": 0.07795727230674765, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d62", "label": "CR90p_d62_u137", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.022574126834903042, 0.0009754622691559648], "duration": 1024, "sigma": 64, "width": 768}}, {"name": "parametric_pulse", "t0": 1344, "ch": "d62", "label": "CR90m_d62_u137", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.022574126834903042, -0.0009754622691559621], "duration": 1024, "sigma": 64, "width": 768}}, {"name": "fc", "t0": 0, "ch": "u135", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u137", "label": "CR90p_u137", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.11387953645217304, -0.3682607937086576], "duration": 1024, "sigma": 64, "width": 768}}, {"name": "parametric_pulse", "t0": 1344, "ch": "u137", "label": "CR90m_u137", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.11387953645217308, 0.3682607937086576], "duration": 1024, "sigma": 64, "width": 768}}, {"name": "fc", "t0": 0, "ch": "u138", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [62, 61], "sequence": [{"name": "fc", "t0": 0, "ch": "d61", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d61", "label": "X90p_d61", "pulse_shape": "drag", "parameters": {"amp": [0.13559960005611674, 0.0007206927680335045], "beta": 0.9063938971915719, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1184, "ch": "d61", "label": "Xp_d61", "pulse_shape": "drag", "parameters": {"amp": [0.2707103455456029, 0.0], "beta": 0.876219609614946, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2368, "ch": "d61", "label": "Y90m_d61", "pulse_shape": "drag", "parameters": {"amp": [0.0007206927680335246, -0.13559960005611674], "beta": 0.9063938971915719, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d62", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d62", "label": "Y90p_d62", "pulse_shape": "drag", "parameters": {"amp": [-0.0011258441606146691, 0.08126354415594338], "beta": 0.07795727230674765, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d62", "label": "CR90p_d62_u137", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.022574126834903042, 0.0009754622691559648], "duration": 1024, "sigma": 64, "width": 768}}, {"name": "parametric_pulse", "t0": 1344, "ch": "d62", "label": "CR90m_d62_u137", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.022574126834903042, -0.0009754622691559621], "duration": 1024, "sigma": 64, "width": 768}}, {"name": "fc", "t0": 2368, "ch": "d62", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2368, "ch": "d62", "label": "X90p_d62", "pulse_shape": "drag", "parameters": {"amp": [0.08126354415594338, 0.0011258441606146754], "beta": 0.07795727230674765, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u135", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u137", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u137", "label": "CR90p_u137", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.11387953645217304, -0.3682607937086576], "duration": 1024, "sigma": 64, "width": 768}}, {"name": "parametric_pulse", "t0": 1344, "ch": "u137", "label": "CR90m_u137", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.11387953645217308, 0.3682607937086576], "duration": 1024, "sigma": 64, "width": 768}}, {"name": "fc", "t0": 2368, "ch": "u137", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u138", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u141", "phase": -3.141592653589793}, {"name": "fc", "t0": 2368, "ch": "u141", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u162", "phase": -3.141592653589793}, {"name": "fc", "t0": 2368, "ch": "u162", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [62, 63], "sequence": [{"name": "fc", "t0": 0, "ch": "d62", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d62", "label": "Ym_d62", "pulse_shape": "drag", "parameters": {"amp": [-2.964574298391477e-17, -0.1613839081578748], "beta": 0.101010630074013, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1152, "ch": "d62", "label": "Xp_d62", "pulse_shape": "drag", "parameters": {"amp": [0.1613839081578748, 0.0], "beta": 0.101010630074013, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d63", "label": "X90p_d63", "pulse_shape": "drag", "parameters": {"amp": [0.09579814893537118, 0.0009677048540111488], "beta": 0.24532288593439402, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d63", "label": "CR90p_d63_u139", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02687195327994612, 0.0006431441410533724], "duration": 992, "sigma": 64, "width": 736}}, {"name": "parametric_pulse", "t0": 1312, "ch": "d63", "label": "CR90m_d63_u139", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.02687195327994612, -0.0006431441410533692], "duration": 992, "sigma": 64, "width": 736}}, {"name": "fc", "t0": 0, "ch": "u137", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u139", "label": "CR90p_u139", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.24646727314936862, -0.07113844697576222], "duration": 992, "sigma": 64, "width": 736}}, {"name": "parametric_pulse", "t0": 1312, "ch": "u139", "label": "CR90m_u139", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.24646727314936862, 0.07113844697576224], "duration": 992, "sigma": 64, "width": 736}}, {"name": "fc", "t0": 0, "ch": "u141", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u162", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [62, 72], "sequence": [{"name": "fc", "t0": 0, "ch": "d62", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d62", "label": "Y90p_d62", "pulse_shape": "drag", "parameters": {"amp": [-0.0011258441606146691, 0.08126354415594338], "beta": 0.07795727230674765, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d62", "label": "CR90p_d62_u162", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06764621301984743, 0.00021297496583813999], "duration": 448, "sigma": 64, "width": 192}}, {"name": "parametric_pulse", "t0": 768, "ch": "d62", "label": "CR90m_d62_u162", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06764621301984743, -0.0002129749658381317], "duration": 448, "sigma": 64, "width": 192}}, {"name": "fc", "t0": 1216, "ch": "d62", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1216, "ch": "d62", "label": "X90p_d62", "pulse_shape": "drag", "parameters": {"amp": [0.08126354415594338, 0.0011258441606146754], "beta": 0.07795727230674765, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d72", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d72", "label": "X90p_d72", "pulse_shape": "drag", "parameters": {"amp": [0.0955035129685456, 0.0008297541854273995], "beta": -0.11133125902076414, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 608, "ch": "d72", "label": "Xp_d72", "pulse_shape": "drag", "parameters": {"amp": [0.19032083364880062, 0.0], "beta": -0.14119562982423, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1216, "ch": "d72", "label": "Y90m_d72", "pulse_shape": "drag", "parameters": {"amp": [0.0008297541854274209, -0.0955035129685456], "beta": -0.11133125902076414, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u137", "phase": -3.141592653589793}, {"name": "fc", "t0": 1216, "ch": "u137", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u140", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u141", "phase": -3.141592653589793}, {"name": "fc", "t0": 1216, "ch": "u141", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u162", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u162", "label": "CR90p_u162", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.48086537531018886, 0.5435394483869352], "duration": 448, "sigma": 64, "width": 192}}, {"name": "parametric_pulse", "t0": 768, "ch": "u162", "label": "CR90m_u162", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.4808653753101888, -0.5435394483869354], "duration": 448, "sigma": 64, "width": 192}}, {"name": "fc", "t0": 1216, "ch": "u162", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u182", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [63, 62], "sequence": [{"name": "fc", "t0": 0, "ch": "d62", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d62", "label": "X90p_d62", "pulse_shape": "drag", "parameters": {"amp": [0.08126354415594338, 0.0011258441606146754], "beta": 0.07795727230674765, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1152, "ch": "d62", "label": "Xp_d62", "pulse_shape": "drag", "parameters": {"amp": [0.1613839081578748, 0.0], "beta": 0.101010630074013, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2304, "ch": "d62", "label": "Y90m_d62", "pulse_shape": "drag", "parameters": {"amp": [0.0011258441606146591, -0.08126354415594338], "beta": 0.07795727230674765, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d63", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d63", "label": "Y90p_d63", "pulse_shape": "drag", "parameters": {"amp": [-0.0009677048540111384, 0.09579814893537118], "beta": 0.24532288593439402, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d63", "label": "CR90p_d63_u139", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02687195327994612, 0.0006431441410533724], "duration": 992, "sigma": 64, "width": 736}}, {"name": "parametric_pulse", "t0": 1312, "ch": "d63", "label": "CR90m_d63_u139", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.02687195327994612, -0.0006431441410533692], "duration": 992, "sigma": 64, "width": 736}}, {"name": "fc", "t0": 2304, "ch": "d63", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2304, "ch": "d63", "label": "X90p_d63", "pulse_shape": "drag", "parameters": {"amp": [0.09579814893537118, 0.0009677048540111488], "beta": 0.24532288593439402, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u137", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u139", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u139", "label": "CR90p_u139", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.24646727314936862, -0.07113844697576222], "duration": 992, "sigma": 64, "width": 736}}, {"name": "parametric_pulse", "t0": 1312, "ch": "u139", "label": "CR90m_u139", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.24646727314936862, 0.07113844697576224], "duration": 992, "sigma": 64, "width": 736}}, {"name": "fc", "t0": 2304, "ch": "u139", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u141", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u144", "phase": -3.141592653589793}, {"name": "fc", "t0": 2304, "ch": "u144", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u162", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [63, 64], "sequence": [{"name": "fc", "t0": 0, "ch": "d63", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d63", "label": "Y90p_d63", "pulse_shape": "drag", "parameters": {"amp": [-0.0009677048540111384, 0.09579814893537118], "beta": 0.24532288593439402, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d63", "label": "CR90p_d63_u144", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04374109521538105, 0.0013340545837056566], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "d63", "label": "CR90m_d63_u144", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04374109521538105, -0.0013340545837056512], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 1824, "ch": "d63", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1824, "ch": "d63", "label": "X90p_d63", "pulse_shape": "drag", "parameters": {"amp": [0.09579814893537118, 0.0009677048540111488], "beta": 0.24532288593439402, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d64", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d64", "label": "X90p_d64", "pulse_shape": "drag", "parameters": {"amp": [0.08382418622965596, 3.803805038136307e-05], "beta": 0.19218474042267178, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 912, "ch": "d64", "label": "Xp_d64", "pulse_shape": "drag", "parameters": {"amp": [0.1658671765971227, 0.0], "beta": 0.28548117023718617, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1824, "ch": "d64", "label": "Y90m_d64", "pulse_shape": "drag", "parameters": {"amp": [3.8038050381365106e-05, -0.08382418622965596], "beta": 0.19218474042267178, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u121", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u139", "phase": -3.141592653589793}, {"name": "fc", "t0": 1824, "ch": "u139", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u142", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u144", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u144", "label": "CR90p_u144", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2703390818358152, 0.1922306707713331], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "u144", "label": "CR90m_u144", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2703390818358152, -0.19223067077133307], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 1824, "ch": "u144", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u146", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [64, 54], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d54", "label": "X90p_d54", "pulse_shape": "drag", "parameters": {"amp": [0.07602813059040985, -9.300376883827832e-05], "beta": 0.7148241595332547, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d54", "label": "CR90p_d54_u143", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.044624315260515565, -0.0012214795933231499], "duration": 608, "sigma": 64, "width": 352}}, {"name": "parametric_pulse", "t0": 928, "ch": "d54", "label": "CR90m_d54_u143", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.044624315260515565, 0.0012214795933231553], "duration": 608, "sigma": 64, "width": 352}}, {"name": "fc", "t0": 0, "ch": "d64", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d64", "label": "Ym_d64", "pulse_shape": "drag", "parameters": {"amp": [-3.046930603549126e-17, -0.1658671765971227], "beta": 0.28548117023718617, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 768, "ch": "d64", "label": "Xp_d64", "pulse_shape": "drag", "parameters": {"amp": [0.1658671765971227, 0.0], "beta": 0.28548117023718617, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u121", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u142", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u143", "label": "CR90p_u143", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.345322653022183, -0.2433828819453052], "duration": 608, "sigma": 64, "width": 352}}, {"name": "parametric_pulse", "t0": 928, "ch": "u143", "label": "CR90m_u143", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.34532265302218307, 0.24338288194530514], "duration": 608, "sigma": 64, "width": 352}}, {"name": "fc", "t0": 0, "ch": "u146", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [64, 63], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d63", "label": "X90p_d63", "pulse_shape": "drag", "parameters": {"amp": [0.09579814893537118, 0.0009677048540111488], "beta": 0.24532288593439402, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d63", "label": "CR90p_d63_u144", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04374109521538105, 0.0013340545837056566], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "d63", "label": "CR90m_d63_u144", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04374109521538105, -0.0013340545837056512], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 0, "ch": "d64", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d64", "label": "Ym_d64", "pulse_shape": "drag", "parameters": {"amp": [-3.046930603549126e-17, -0.1658671765971227], "beta": 0.28548117023718617, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 912, "ch": "d64", "label": "Xp_d64", "pulse_shape": "drag", "parameters": {"amp": [0.1658671765971227, 0.0], "beta": 0.28548117023718617, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u121", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u142", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u144", "label": "CR90p_u144", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2703390818358152, 0.1922306707713331], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "u144", "label": "CR90m_u144", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2703390818358152, -0.19223067077133307], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 0, "ch": "u146", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [64, 65], "sequence": [{"name": "fc", "t0": 0, "ch": "d64", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d64", "label": "Y90p_d64", "pulse_shape": "drag", "parameters": {"amp": [-3.8038050381356765e-05, 0.08382418622965596], "beta": 0.19218474042267178, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d64", "label": "CR90p_d64_u146", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.014121605794818566, 0.00043290818196754224], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "parametric_pulse", "t0": 2000, "ch": "d64", "label": "CR90m_d64_u146", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.014121605794818566, -0.0004329081819675405], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "fc", "t0": 3680, "ch": "d64", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 3680, "ch": "d64", "label": "X90p_d64", "pulse_shape": "drag", "parameters": {"amp": [0.08382418622965596, 3.803805038136307e-05], "beta": 0.19218474042267178, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d65", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d65", "label": "X90p_d65", "pulse_shape": "drag", "parameters": {"amp": [0.10453536510892569, -0.0011380216202906517], "beta": 3.914999018535003, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1840, "ch": "d65", "label": "Xp_d65", "pulse_shape": "drag", "parameters": {"amp": [0.20882017999693422, 0.0], "beta": 3.89217874906099, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 3680, "ch": "d65", "label": "Y90m_d65", "pulse_shape": "drag", "parameters": {"amp": [-0.00113802162029064, -0.10453536510892569], "beta": 3.914999018535003, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u121", "phase": -3.141592653589793}, {"name": "fc", "t0": 3680, "ch": "u121", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u142", "phase": -3.141592653589793}, {"name": "fc", "t0": 3680, "ch": "u142", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u145", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u146", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u146", "label": "CR90p_u146", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.21678137742160863, -0.12186286817118405], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "parametric_pulse", "t0": 2000, "ch": "u146", "label": "CR90m_u146", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.21678137742160866, 0.12186286817118402], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "fc", "t0": 3680, "ch": "u146", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u148", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [65, 64], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d64", "label": "X90p_d64", "pulse_shape": "drag", "parameters": {"amp": [0.08382418622965596, 3.803805038136307e-05], "beta": 0.19218474042267178, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d64", "label": "CR90p_d64_u146", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.014121605794818566, 0.00043290818196754224], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "parametric_pulse", "t0": 2000, "ch": "d64", "label": "CR90m_d64_u146", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.014121605794818566, -0.0004329081819675405], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "fc", "t0": 0, "ch": "d65", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d65", "label": "Ym_d65", "pulse_shape": "drag", "parameters": {"amp": [-3.8359644754592945e-17, -0.20882017999693422], "beta": 3.89217874906099, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1840, "ch": "d65", "label": "Xp_d65", "pulse_shape": "drag", "parameters": {"amp": [0.20882017999693422, 0.0], "beta": 3.89217874906099, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u145", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u146", "label": "CR90p_u146", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.21678137742160863, -0.12186286817118405], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "parametric_pulse", "t0": 2000, "ch": "u146", "label": "CR90m_u146", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.21678137742160866, 0.12186286817118402], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "fc", "t0": 0, "ch": "u148", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [65, 66], "sequence": [{"name": "fc", "t0": 0, "ch": "d65", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d65", "label": "Ym_d65", "pulse_shape": "drag", "parameters": {"amp": [-3.8359644754592945e-17, -0.20882017999693422], "beta": 3.89217874906099, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 896, "ch": "d65", "label": "Xp_d65", "pulse_shape": "drag", "parameters": {"amp": [0.20882017999693422, 0.0], "beta": 3.89217874906099, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d66", "label": "X90p_d66", "pulse_shape": "drag", "parameters": {"amp": [0.10003690588645268, 0.0009704992045627891], "beta": -1.56723348443864, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d66", "label": "CR90p_d66_u147", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03941040787291374, 0.0007722932894625547], "duration": 736, "sigma": 64, "width": 480}}, {"name": "parametric_pulse", "t0": 1056, "ch": "d66", "label": "CR90m_d66_u147", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03941040787291374, -0.0007722932894625498], "duration": 736, "sigma": 64, "width": 480}}, {"name": "fc", "t0": 0, "ch": "u145", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u147", "label": "CR90p_u147", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.896019125256087, -0.44401545826166544], "duration": 736, "sigma": 64, "width": 480}}, {"name": "parametric_pulse", "t0": 1056, "ch": "u147", "label": "CR90m_u147", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.8960191252560868, 0.44401545826166555], "duration": 736, "sigma": 64, "width": 480}}, {"name": "fc", "t0": 0, "ch": "u148", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [66, 65], "sequence": [{"name": "fc", "t0": 0, "ch": "d65", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d65", "label": "X90p_d65", "pulse_shape": "drag", "parameters": {"amp": [0.10453536510892569, -0.0011380216202906517], "beta": 3.914999018535003, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 896, "ch": "d65", "label": "Xp_d65", "pulse_shape": "drag", "parameters": {"amp": [0.20882017999693422, 0.0], "beta": 3.89217874906099, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1792, "ch": "d65", "label": "Y90m_d65", "pulse_shape": "drag", "parameters": {"amp": [-0.00113802162029064, -0.10453536510892569], "beta": 3.914999018535003, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d66", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d66", "label": "Y90p_d66", "pulse_shape": "drag", "parameters": {"amp": [-0.0009704992045627742, 0.10003690588645268], "beta": -1.56723348443864, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d66", "label": "CR90p_d66_u147", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03941040787291374, 0.0007722932894625547], "duration": 736, "sigma": 64, "width": 480}}, {"name": "parametric_pulse", "t0": 1056, "ch": "d66", "label": "CR90m_d66_u147", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03941040787291374, -0.0007722932894625498], "duration": 736, "sigma": 64, "width": 480}}, {"name": "fc", "t0": 1792, "ch": "d66", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1792, "ch": "d66", "label": "X90p_d66", "pulse_shape": "drag", "parameters": {"amp": [0.10003690588645268, 0.0009704992045627891], "beta": -1.56723348443864, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u145", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u147", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u147", "label": "CR90p_u147", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.896019125256087, -0.44401545826166544], "duration": 736, "sigma": 64, "width": 480}}, {"name": "parametric_pulse", "t0": 1056, "ch": "u147", "label": "CR90m_u147", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.8960191252560868, 0.44401545826166555], "duration": 736, "sigma": 64, "width": 480}}, {"name": "fc", "t0": 1792, "ch": "u147", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u148", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u151", "phase": -3.141592653589793}, {"name": "fc", "t0": 1792, "ch": "u151", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u164", "phase": -3.141592653589793}, {"name": "fc", "t0": 1792, "ch": "u164", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [66, 67], "sequence": [{"name": "fc", "t0": 0, "ch": "d66", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d66", "label": "Ym_d66", "pulse_shape": "drag", "parameters": {"amp": [-3.708856308984176e-17, -0.20190073369543102], "beta": -1.6242506631001679, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2000, "ch": "d66", "label": "Xp_d66", "pulse_shape": "drag", "parameters": {"amp": [0.20190073369543102, 0.0], "beta": -1.6242506631001679, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d67", "label": "X90p_d67", "pulse_shape": "drag", "parameters": {"amp": [0.13497171221478987, -0.0015293073332990558], "beta": 2.3517476260527217, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d67", "label": "CR90p_d67_u149", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02334376285286972, -0.0009462194107619324], "duration": 1840, "sigma": 64, "width": 1584}}, {"name": "parametric_pulse", "t0": 2160, "ch": "d67", "label": "CR90m_d67_u149", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.02334376285286972, 0.0009462194107619352], "duration": 1840, "sigma": 64, "width": 1584}}, {"name": "fc", "t0": 0, "ch": "u147", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u149", "label": "CR90p_u149", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0376071600444892, -0.056394320384289105], "duration": 1840, "sigma": 64, "width": 1584}}, {"name": "parametric_pulse", "t0": 2160, "ch": "u149", "label": "CR90m_u149", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.037607160044489205, 0.0563943203842891], "duration": 1840, "sigma": 64, "width": 1584}}, {"name": "fc", "t0": 0, "ch": "u151", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u164", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [66, 73], "sequence": [{"name": "fc", "t0": 0, "ch": "d66", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d66", "label": "Ym_d66", "pulse_shape": "drag", "parameters": {"amp": [-3.708856308984176e-17, -0.20190073369543102], "beta": -1.6242506631001679, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 912, "ch": "d66", "label": "Xp_d66", "pulse_shape": "drag", "parameters": {"amp": [0.20190073369543102, 0.0], "beta": -1.6242506631001679, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d73", "label": "X90p_d73", "pulse_shape": "drag", "parameters": {"amp": [0.09726692800811326, 0.0003699418974938183], "beta": 1.4135897153745198, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d73", "label": "CR90p_d73_u150", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.044722850577430154, -0.0012163522134826825], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "d73", "label": "CR90m_d73_u150", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.044722850577430154, 0.0012163522134826879], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 0, "ch": "u147", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u150", "label": "CR90p_u150", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07977549919158251, -0.28910147317613355], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "u150", "label": "CR90m_u150", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07977549919158256, 0.28910147317613355], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 0, "ch": "u151", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u164", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [67, 66], "sequence": [{"name": "fc", "t0": 0, "ch": "d66", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d66", "label": "X90p_d66", "pulse_shape": "drag", "parameters": {"amp": [0.10003690588645268, 0.0009704992045627891], "beta": -1.56723348443864, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2000, "ch": "d66", "label": "Xp_d66", "pulse_shape": "drag", "parameters": {"amp": [0.20190073369543102, 0.0], "beta": -1.6242506631001679, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 4000, "ch": "d66", "label": "Y90m_d66", "pulse_shape": "drag", "parameters": {"amp": [0.0009704992045627842, -0.10003690588645268], "beta": -1.56723348443864, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d67", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d67", "label": "Y90p_d67", "pulse_shape": "drag", "parameters": {"amp": [0.0015293073332990576, 0.13497171221478987], "beta": 2.3517476260527217, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d67", "label": "CR90p_d67_u149", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02334376285286972, -0.0009462194107619324], "duration": 1840, "sigma": 64, "width": 1584}}, {"name": "parametric_pulse", "t0": 2160, "ch": "d67", "label": "CR90m_d67_u149", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.02334376285286972, 0.0009462194107619352], "duration": 1840, "sigma": 64, "width": 1584}}, {"name": "fc", "t0": 4000, "ch": "d67", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 4000, "ch": "d67", "label": "X90p_d67", "pulse_shape": "drag", "parameters": {"amp": [0.13497171221478987, -0.0015293073332990558], "beta": 2.3517476260527217, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u147", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u149", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u149", "label": "CR90p_u149", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0376071600444892, -0.056394320384289105], "duration": 1840, "sigma": 64, "width": 1584}}, {"name": "parametric_pulse", "t0": 2160, "ch": "u149", "label": "CR90m_u149", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.037607160044489205, 0.0563943203842891], "duration": 1840, "sigma": 64, "width": 1584}}, {"name": "fc", "t0": 4000, "ch": "u149", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u151", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u154", "phase": -3.141592653589793}, {"name": "fc", "t0": 4000, "ch": "u154", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u164", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [67, 68], "sequence": [{"name": "fc", "t0": 0, "ch": "d67", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d67", "label": "Y90p_d67", "pulse_shape": "drag", "parameters": {"amp": [0.0015293073332990576, 0.13497171221478987], "beta": 2.3517476260527217, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d67", "label": "CR90p_d67_u154", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06286575825150631, -0.00414938758830303], "duration": 736, "sigma": 64, "width": 480}}, {"name": "parametric_pulse", "t0": 1056, "ch": "d67", "label": "CR90m_d67_u154", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06286575825150631, 0.004149387588303037], "duration": 736, "sigma": 64, "width": 480}}, {"name": "fc", "t0": 1792, "ch": "d67", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1792, "ch": "d67", "label": "X90p_d67", "pulse_shape": "drag", "parameters": {"amp": [0.13497171221478987, -0.0015293073332990558], "beta": 2.3517476260527217, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d68", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d68", "label": "X90p_d68", "pulse_shape": "drag", "parameters": {"amp": [0.09509979238321963, 0.0008452552253863645], "beta": -0.03889942945742053, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 896, "ch": "d68", "label": "Xp_d68", "pulse_shape": "drag", "parameters": {"amp": [0.18899965619565834, 0.0], "beta": -0.032220842197396724, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1792, "ch": "d68", "label": "Y90m_d68", "pulse_shape": "drag", "parameters": {"amp": [0.0008452552253863169, -0.09509979238321963], "beta": -0.03889942945742053, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u123", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u149", "phase": -3.141592653589793}, {"name": "fc", "t0": 1792, "ch": "u149", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u152", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u154", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u154", "label": "CR90p_u154", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06997716702048368, 0.30535307606034867], "duration": 736, "sigma": 64, "width": 480}}, {"name": "parametric_pulse", "t0": 1056, "ch": "u154", "label": "CR90m_u154", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06997716702048364, -0.30535307606034867], "duration": 736, "sigma": 64, "width": 480}}, {"name": "fc", "t0": 1792, "ch": "u154", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u156", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [68, 55], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d55", "label": "X90p_d55", "pulse_shape": "drag", "parameters": {"amp": [0.0960424795080809, 0.0007979783114878937], "beta": -0.3225929689724514, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d55", "label": "CR90p_d55_u153", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03456043807652837, 0.00040944745332599275], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1136, "ch": "d55", "label": "CR90m_d55_u153", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03456043807652837, -0.0004094474533259885], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 0, "ch": "d68", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d68", "label": "Ym_d68", "pulse_shape": "drag", "parameters": {"amp": [-3.471867359999448e-17, -0.18899965619565834], "beta": -0.032220842197396724, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 976, "ch": "d68", "label": "Xp_d68", "pulse_shape": "drag", "parameters": {"amp": [0.18899965619565834, 0.0], "beta": -0.032220842197396724, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u123", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u152", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u153", "label": "CR90p_u153", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.08219912954711908, -0.19552612551980922], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1136, "ch": "u153", "label": "CR90m_u153", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.08219912954711911, 0.19552612551980922], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 0, "ch": "u156", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [68, 67], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d67", "label": "X90p_d67", "pulse_shape": "drag", "parameters": {"amp": [0.13497171221478987, -0.0015293073332990558], "beta": 2.3517476260527217, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d67", "label": "CR90p_d67_u154", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06286575825150631, -0.00414938758830303], "duration": 736, "sigma": 64, "width": 480}}, {"name": "parametric_pulse", "t0": 1056, "ch": "d67", "label": "CR90m_d67_u154", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06286575825150631, 0.004149387588303037], "duration": 736, "sigma": 64, "width": 480}}, {"name": "fc", "t0": 0, "ch": "d68", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d68", "label": "Ym_d68", "pulse_shape": "drag", "parameters": {"amp": [-3.471867359999448e-17, -0.18899965619565834], "beta": -0.032220842197396724, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 896, "ch": "d68", "label": "Xp_d68", "pulse_shape": "drag", "parameters": {"amp": [0.18899965619565834, 0.0], "beta": -0.032220842197396724, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u123", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u152", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u154", "label": "CR90p_u154", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06997716702048368, 0.30535307606034867], "duration": 736, "sigma": 64, "width": 480}}, {"name": "parametric_pulse", "t0": 1056, "ch": "u154", "label": "CR90m_u154", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06997716702048364, -0.30535307606034867], "duration": 736, "sigma": 64, "width": 480}}, {"name": "fc", "t0": 0, "ch": "u156", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [68, 69], "sequence": [{"name": "fc", "t0": 0, "ch": "d68", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d68", "label": "Ym_d68", "pulse_shape": "drag", "parameters": {"amp": [-3.471867359999448e-17, -0.18899965619565834], "beta": -0.032220842197396724, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 992, "ch": "d68", "label": "Xp_d68", "pulse_shape": "drag", "parameters": {"amp": [0.18899965619565834, 0.0], "beta": -0.032220842197396724, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d69", "label": "X90p_d69", "pulse_shape": "drag", "parameters": {"amp": [0.09801059311430563, 0.0009211124509229749], "beta": 0.9954120580123458, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d69", "label": "CR90p_d69_u155", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03618803734016322, 0.0007355104544103632], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 1152, "ch": "d69", "label": "CR90m_d69_u155", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03618803734016322, -0.0007355104544103587], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 0, "ch": "u123", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u152", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u155", "label": "CR90p_u155", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2732710491705258, -0.006755876217763293], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 1152, "ch": "u155", "label": "CR90m_u155", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2732710491705258, 0.006755876217763259], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 0, "ch": "u156", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [69, 68], "sequence": [{"name": "fc", "t0": 0, "ch": "d68", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d68", "label": "X90p_d68", "pulse_shape": "drag", "parameters": {"amp": [0.09509979238321963, 0.0008452552253863645], "beta": -0.03889942945742053, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 992, "ch": "d68", "label": "Xp_d68", "pulse_shape": "drag", "parameters": {"amp": [0.18899965619565834, 0.0], "beta": -0.032220842197396724, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1984, "ch": "d68", "label": "Y90m_d68", "pulse_shape": "drag", "parameters": {"amp": [0.0008452552253863169, -0.09509979238321963], "beta": -0.03889942945742053, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d69", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d69", "label": "Y90p_d69", "pulse_shape": "drag", "parameters": {"amp": [-0.0009211124509229689, 0.09801059311430563], "beta": 0.9954120580123458, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d69", "label": "CR90p_d69_u155", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03618803734016322, 0.0007355104544103632], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 1152, "ch": "d69", "label": "CR90m_d69_u155", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03618803734016322, -0.0007355104544103587], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 1984, "ch": "d69", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1984, "ch": "d69", "label": "X90p_d69", "pulse_shape": "drag", "parameters": {"amp": [0.09801059311430563, 0.0009211124509229749], "beta": 0.9954120580123458, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u123", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u152", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u155", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u155", "label": "CR90p_u155", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2732710491705258, -0.006755876217763293], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 1152, "ch": "u155", "label": "CR90m_u155", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2732710491705258, 0.006755876217763259], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 1984, "ch": "u155", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u156", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u158", "phase": -3.141592653589793}, {"name": "fc", "t0": 1984, "ch": "u158", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [69, 70], "sequence": [{"name": "fc", "t0": 0, "ch": "d69", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d69", "label": "Y90p_d69", "pulse_shape": "drag", "parameters": {"amp": [-0.0009211124509229689, 0.09801059311430563], "beta": 0.9954120580123458, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d69", "label": "CR90p_d69_u158", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05910136040933995, -0.0004839359669084909], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 912, "ch": "d69", "label": "CR90m_d69_u158", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05910136040933995, 0.00048393596690849815], "duration": 592, "sigma": 64, "width": 336}}, {"name": "fc", "t0": 1504, "ch": "d69", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1504, "ch": "d69", "label": "X90p_d69", "pulse_shape": "drag", "parameters": {"amp": [0.09801059311430563, 0.0009211124509229749], "beta": 0.9954120580123458, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d70", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d70", "label": "X90p_d70", "pulse_shape": "drag", "parameters": {"amp": [0.09797541640384796, 0.002416946030692584], "beta": -2.16583570401465, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 752, "ch": "d70", "label": "Xp_d70", "pulse_shape": "drag", "parameters": {"amp": [0.1954291617865932, 0.0], "beta": -2.237656241841245, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1504, "ch": "d70", "label": "Y90m_d70", "pulse_shape": "drag", "parameters": {"amp": [0.0024169460306925346, -0.09797541640384796], "beta": -2.16583570401465, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u155", "phase": -3.141592653589793}, {"name": "fc", "t0": 1504, "ch": "u155", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u157", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u158", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u158", "label": "CR90p_u158", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.4770992588142603, 0.12266315300414066], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 912, "ch": "u158", "label": "CR90m_u158", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.4770992588142603, -0.1226631530041406], "duration": 592, "sigma": 64, "width": 336}}, {"name": "fc", "t0": 1504, "ch": "u158", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u166", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [70, 69], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d69", "label": "X90p_d69", "pulse_shape": "drag", "parameters": {"amp": [0.09801059311430563, 0.0009211124509229749], "beta": 0.9954120580123458, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d69", "label": "CR90p_d69_u158", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05910136040933995, -0.0004839359669084909], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 912, "ch": "d69", "label": "CR90m_d69_u158", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05910136040933995, 0.00048393596690849815], "duration": 592, "sigma": 64, "width": 336}}, {"name": "fc", "t0": 0, "ch": "d70", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d70", "label": "Ym_d70", "pulse_shape": "drag", "parameters": {"amp": [-3.5899754616300234e-17, -0.1954291617865932], "beta": -2.237656241841245, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 752, "ch": "d70", "label": "Xp_d70", "pulse_shape": "drag", "parameters": {"amp": [0.1954291617865932, 0.0], "beta": -2.237656241841245, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u157", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u158", "label": "CR90p_u158", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.4770992588142603, 0.12266315300414066], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 912, "ch": "u158", "label": "CR90m_u158", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.4770992588142603, -0.1226631530041406], "duration": 592, "sigma": 64, "width": 336}}, {"name": "fc", "t0": 0, "ch": "u166", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [70, 74], "sequence": [{"name": "fc", "t0": 0, "ch": "d70", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d70", "label": "Ym_d70", "pulse_shape": "drag", "parameters": {"amp": [-3.5899754616300234e-17, -0.1954291617865932], "beta": -2.237656241841245, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1840, "ch": "d70", "label": "Xp_d70", "pulse_shape": "drag", "parameters": {"amp": [0.1954291617865932, 0.0], "beta": -2.237656241841245, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d74", "label": "X90p_d74", "pulse_shape": "drag", "parameters": {"amp": [0.1198761178291242, 0.000977520844465389], "beta": -0.15100947323751712, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d74", "label": "CR90p_d74_u159", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02269916617142926, 5.060380698529084e-05], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "parametric_pulse", "t0": 2000, "ch": "d74", "label": "CR90m_d74_u159", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.02269916617142926, -5.0603806985288065e-05], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "fc", "t0": 0, "ch": "u157", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u159", "label": "CR90p_u159", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05531566443001017, 0.013273356803587088], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "parametric_pulse", "t0": 2000, "ch": "u159", "label": "CR90m_u159", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05531566443001017, -0.01327335680358708], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "fc", "t0": 0, "ch": "u166", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [71, 58], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d58", "label": "X90p_d58", "pulse_shape": "drag", "parameters": {"amp": [0.11851841072866011, -0.00016336988848341012], "beta": 1.679116280234777, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d58", "label": "CR90p_d58_u160", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.046830043010876767, 0.0001556595605368184], "duration": 864, "sigma": 64, "width": 608}}, {"name": "parametric_pulse", "t0": 1184, "ch": "d58", "label": "CR90m_d58_u160", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.046830043010876767, -0.00015565956053681265], "duration": 864, "sigma": 64, "width": 608}}, {"name": "fc", "t0": 0, "ch": "d71", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d71", "label": "Ym_d71", "pulse_shape": "drag", "parameters": {"amp": [-3.6121221331032634e-17, -0.19663477042894675], "beta": -0.2505306908761036, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1024, "ch": "d71", "label": "Xp_d71", "pulse_shape": "drag", "parameters": {"amp": [0.19663477042894675, 0.0], "beta": -0.2505306908761036, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u130", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u160", "label": "CR90p_u160", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.29076722423272755, 0.3009427360985879], "duration": 864, "sigma": 64, "width": 608}}, {"name": "parametric_pulse", "t0": 1184, "ch": "u160", "label": "CR90m_u160", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2907672242327276, -0.30094273609858785], "duration": 864, "sigma": 64, "width": 608}}, {"name": "fc", "t0": 0, "ch": "u172", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [71, 77], "sequence": [{"name": "fc", "t0": 0, "ch": "d71", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d71", "label": "Y90p_d71", "pulse_shape": "drag", "parameters": {"amp": [-0.0005495208125857689, 0.09843274010937189], "beta": -0.4419617673478976, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d71", "label": "CR90p_d71_u172", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03624178906934047, -0.0007968957487180161], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d71", "label": "CR90m_d71_u172", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03624178906934047, 0.0007968957487180206], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "d71", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1920, "ch": "d71", "label": "X90p_d71", "pulse_shape": "drag", "parameters": {"amp": [0.09843274010937189, 0.0005495208125857818], "beta": -0.4419617673478976, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d77", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d77", "label": "X90p_d77", "pulse_shape": "drag", "parameters": {"amp": [0.09837299208037871, 0.0021223511285101354], "beta": -2.3124803053390233, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d77", "label": "Xp_d77", "pulse_shape": "drag", "parameters": {"amp": [0.19536561901965938, 0.0], "beta": -2.2445099176216177, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1920, "ch": "d77", "label": "Y90m_d77", "pulse_shape": "drag", "parameters": {"amp": [0.002122351128510123, -0.09837299208037871], "beta": -2.3124803053390233, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u130", "phase": -3.141592653589793}, {"name": "fc", "t0": 1920, "ch": "u130", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u161", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u171", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u172", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u172", "label": "CR90p_u172", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.09104024582059264, -0.1759640145955839], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u172", "label": "CR90m_u172", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09104024582059267, 0.1759640145955839], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "u172", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u175", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [72, 62], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d62", "label": "X90p_d62", "pulse_shape": "drag", "parameters": {"amp": [0.08126354415594338, 0.0011258441606146754], "beta": 0.07795727230674765, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d62", "label": "CR90p_d62_u162", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06764621301984743, 0.00021297496583813999], "duration": 448, "sigma": 64, "width": 192}}, {"name": "parametric_pulse", "t0": 768, "ch": "d62", "label": "CR90m_d62_u162", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06764621301984743, -0.0002129749658381317], "duration": 448, "sigma": 64, "width": 192}}, {"name": "fc", "t0": 0, "ch": "d72", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d72", "label": "Ym_d72", "pulse_shape": "drag", "parameters": {"amp": [-3.4961369960858933e-17, -0.19032083364880062], "beta": -0.14119562982423, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 608, "ch": "d72", "label": "Xp_d72", "pulse_shape": "drag", "parameters": {"amp": [0.19032083364880062, 0.0], "beta": -0.14119562982423, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u140", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u162", "label": "CR90p_u162", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.48086537531018886, 0.5435394483869352], "duration": 448, "sigma": 64, "width": 192}}, {"name": "parametric_pulse", "t0": 768, "ch": "u162", "label": "CR90m_u162", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.4808653753101888, -0.5435394483869354], "duration": 448, "sigma": 64, "width": 192}}, {"name": "fc", "t0": 0, "ch": "u182", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [72, 81], "sequence": [{"name": "fc", "t0": 0, "ch": "d72", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d72", "label": "Ym_d72", "pulse_shape": "drag", "parameters": {"amp": [-3.4961369960858933e-17, -0.19032083364880062], "beta": -0.14119562982423, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 832, "ch": "d72", "label": "Xp_d72", "pulse_shape": "drag", "parameters": {"amp": [0.19032083364880062, 0.0], "beta": -0.14119562982423, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d81", "label": "X90p_d81", "pulse_shape": "drag", "parameters": {"amp": [0.09525406276346755, 0.001357441029031795], "beta": 0.07410235913307432, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d81", "label": "CR90p_d81_u163", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0486456046631631, 0.0005296847941802075], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "d81", "label": "CR90m_d81_u163", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0486456046631631, -0.0005296847941802015], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 0, "ch": "u140", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u163", "label": "CR90p_u163", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3587633608268012, 0.1944425704420019], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "u163", "label": "CR90m_u163", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3587633608268012, -0.19444257044200194], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 0, "ch": "u182", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [73, 66], "sequence": [{"name": "fc", "t0": 0, "ch": "d66", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d66", "label": "X90p_d66", "pulse_shape": "drag", "parameters": {"amp": [0.10003690588645268, 0.0009704992045627891], "beta": -1.56723348443864, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 912, "ch": "d66", "label": "Xp_d66", "pulse_shape": "drag", "parameters": {"amp": [0.20190073369543102, 0.0], "beta": -1.6242506631001679, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1824, "ch": "d66", "label": "Y90m_d66", "pulse_shape": "drag", "parameters": {"amp": [0.0009704992045627842, -0.10003690588645268], "beta": -1.56723348443864, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d73", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d73", "label": "Y90p_d73", "pulse_shape": "drag", "parameters": {"amp": [-0.0003699418974938029, 0.09726692800811326], "beta": 1.4135897153745198, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d73", "label": "CR90p_d73_u150", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.044722850577430154, -0.0012163522134826825], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "d73", "label": "CR90m_d73_u150", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.044722850577430154, 0.0012163522134826879], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 1824, "ch": "d73", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1824, "ch": "d73", "label": "X90p_d73", "pulse_shape": "drag", "parameters": {"amp": [0.09726692800811326, 0.0003699418974938183], "beta": 1.4135897153745198, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u147", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u150", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u150", "label": "CR90p_u150", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07977549919158251, -0.28910147317613355], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "u150", "label": "CR90m_u150", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07977549919158256, 0.28910147317613355], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 1824, "ch": "u150", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u151", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u164", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u192", "phase": -3.141592653589793}, {"name": "fc", "t0": 1824, "ch": "u192", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [73, 85], "sequence": [{"name": "fc", "t0": 0, "ch": "d73", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d73", "label": "Y90p_d73", "pulse_shape": "drag", "parameters": {"amp": [-0.0003699418974938029, 0.09726692800811326], "beta": 1.4135897153745198, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d73", "label": "CR90p_d73_u192", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03867002386823023, 2.0564337986456414e-05], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d73", "label": "CR90m_d73_u192", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03867002386823023, -2.0564337986451677e-05], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "d73", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1920, "ch": "d73", "label": "X90p_d73", "pulse_shape": "drag", "parameters": {"amp": [0.09726692800811326, 0.0003699418974938183], "beta": 1.4135897153745198, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d85", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d85", "label": "X90p_d85", "pulse_shape": "drag", "parameters": {"amp": [0.16899085938555627, 0.00203275014469085], "beta": -1.431441662592734, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d85", "label": "Xp_d85", "pulse_shape": "drag", "parameters": {"amp": [0.3386251967328379, 0.0], "beta": -1.4074626024840975, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1920, "ch": "d85", "label": "Y90m_d85", "pulse_shape": "drag", "parameters": {"amp": [0.002032750144690767, -0.16899085938555627], "beta": -1.431441662592734, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u150", "phase": -3.141592653589793}, {"name": "fc", "t0": 1920, "ch": "u150", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u165", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u191", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u192", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u192", "label": "CR90p_u192", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.22353555485221158, 0.23810965185583038], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u192", "label": "CR90m_u192", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2235355548522116, -0.23810965185583036], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "u192", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u195", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [74, 70], "sequence": [{"name": "fc", "t0": 0, "ch": "d70", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d70", "label": "X90p_d70", "pulse_shape": "drag", "parameters": {"amp": [0.09797541640384796, 0.002416946030692584], "beta": -2.16583570401465, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1840, "ch": "d70", "label": "Xp_d70", "pulse_shape": "drag", "parameters": {"amp": [0.1954291617865932, 0.0], "beta": -2.237656241841245, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 3680, "ch": "d70", "label": "Y90m_d70", "pulse_shape": "drag", "parameters": {"amp": [0.0024169460306925346, -0.09797541640384796], "beta": -2.16583570401465, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d74", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d74", "label": "Y90p_d74", "pulse_shape": "drag", "parameters": {"amp": [-0.0009775208444653923, 0.1198761178291242], "beta": -0.15100947323751712, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d74", "label": "CR90p_d74_u159", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02269916617142926, 5.060380698529084e-05], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "parametric_pulse", "t0": 2000, "ch": "d74", "label": "CR90m_d74_u159", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.02269916617142926, -5.0603806985288065e-05], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "fc", "t0": 3680, "ch": "d74", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 3680, "ch": "d74", "label": "X90p_d74", "pulse_shape": "drag", "parameters": {"amp": [0.1198761178291242, 0.000977520844465389], "beta": -0.15100947323751712, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u157", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u159", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u159", "label": "CR90p_u159", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05531566443001017, 0.013273356803587088], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "parametric_pulse", "t0": 2000, "ch": "u159", "label": "CR90m_u159", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05531566443001017, -0.01327335680358708], "duration": 1680, "sigma": 64, "width": 1424}}, {"name": "fc", "t0": 3680, "ch": "u159", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u166", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u202", "phase": -3.141592653589793}, {"name": "fc", "t0": 3680, "ch": "u202", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [74, 89], "sequence": [{"name": "fc", "t0": 0, "ch": "d74", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d74", "label": "Y90p_d74", "pulse_shape": "drag", "parameters": {"amp": [-0.0009775208444653923, 0.1198761178291242], "beta": -0.15100947323751712, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d74", "label": "CR90p_d74_u202", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05595382355156643, 0.0014542153615567056], "duration": 704, "sigma": 64, "width": 448}}, {"name": "parametric_pulse", "t0": 1024, "ch": "d74", "label": "CR90m_d74_u202", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05595382355156643, -0.0014542153615566987], "duration": 704, "sigma": 64, "width": 448}}, {"name": "fc", "t0": 1728, "ch": "d74", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1728, "ch": "d74", "label": "X90p_d74", "pulse_shape": "drag", "parameters": {"amp": [0.1198761178291242, 0.000977520844465389], "beta": -0.15100947323751712, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d89", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d89", "label": "X90p_d89", "pulse_shape": "drag", "parameters": {"amp": [0.09726740528530739, 0.0009725962114104623], "beta": 0.8053259211720791, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 864, "ch": "d89", "label": "Xp_d89", "pulse_shape": "drag", "parameters": {"amp": [0.1936396465218968, 0.0], "beta": 0.7702300337344413, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1728, "ch": "d89", "label": "Y90m_d89", "pulse_shape": "drag", "parameters": {"amp": [0.0009725962114104316, -0.09726740528530739], "beta": 0.8053259211720791, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u159", "phase": -3.141592653589793}, {"name": "fc", "t0": 1728, "ch": "u159", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u167", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u201", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u202", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u202", "label": "CR90p_u202", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0767022699586629, 0.3225329679100912], "duration": 704, "sigma": 64, "width": 448}}, {"name": "parametric_pulse", "t0": 1024, "ch": "u202", "label": "CR90m_u202", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07670226995866294, -0.3225329679100912], "duration": 704, "sigma": 64, "width": 448}}, {"name": "fc", "t0": 1728, "ch": "u202", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [75, 76], "sequence": [{"name": "fc", "t0": 0, "ch": "d75", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d75", "label": "Y90p_d75", "pulse_shape": "drag", "parameters": {"amp": [9.860245197808967e-05, 0.10513108234978502], "beta": 1.9938042604922348, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d75", "label": "CR90p_d75_u170", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.016623252550180632, 0.0006928280870464364], "duration": 1712, "sigma": 64, "width": 1456}}, {"name": "parametric_pulse", "t0": 2032, "ch": "d75", "label": "CR90m_d75_u170", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.016623252550180632, -0.0006928280870464343], "duration": 1712, "sigma": 64, "width": 1456}}, {"name": "fc", "t0": 3744, "ch": "d75", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 3744, "ch": "d75", "label": "X90p_d75", "pulse_shape": "drag", "parameters": {"amp": [0.10513108234978502, -9.860245197807804e-05], "beta": 1.9938042604922348, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d76", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d76", "label": "X90p_d76", "pulse_shape": "drag", "parameters": {"amp": [0.10321413288314152, 0.0012987096283798725], "beta": -0.7935449964227578, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1872, "ch": "d76", "label": "Xp_d76", "pulse_shape": "drag", "parameters": {"amp": [0.20557191492482194, 0.0], "beta": -0.6950738099371728, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 3744, "ch": "d76", "label": "Y90m_d76", "pulse_shape": "drag", "parameters": {"amp": [0.001298709628379877, -0.10321413288314152], "beta": -0.7935449964227578, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u168", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u170", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u170", "label": "CR90p_u170", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1514171122598437, 0.037168527537487145], "duration": 1712, "sigma": 64, "width": 1456}}, {"name": "parametric_pulse", "t0": 2032, "ch": "u170", "label": "CR90m_u170", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1514171122598437, -0.037168527537487166], "duration": 1712, "sigma": 64, "width": 1456}}, {"name": "fc", "t0": 3744, "ch": "u170", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u173", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u204", "phase": -3.141592653589793}, {"name": "fc", "t0": 3744, "ch": "u204", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [75, 90], "sequence": [{"name": "fc", "t0": 0, "ch": "d75", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d75", "label": "Y90p_d75", "pulse_shape": "drag", "parameters": {"amp": [9.860245197808967e-05, 0.10513108234978502], "beta": 1.9938042604922348, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d75", "label": "CR90p_d75_u204", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04763357671213976, -0.0022164222553254123], "duration": 768, "sigma": 64, "width": 512}}, {"name": "parametric_pulse", "t0": 1088, "ch": "d75", "label": "CR90m_d75_u204", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04763357671213976, 0.002216422255325418], "duration": 768, "sigma": 64, "width": 512}}, {"name": "fc", "t0": 1856, "ch": "d75", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1856, "ch": "d75", "label": "X90p_d75", "pulse_shape": "drag", "parameters": {"amp": [0.10513108234978502, -9.860245197807804e-05], "beta": 1.9938042604922348, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d90", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d90", "label": "X90p_d90", "pulse_shape": "drag", "parameters": {"amp": [0.09743303031530948, -0.0006859479590268138], "beta": 2.769047420942697, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 928, "ch": "d90", "label": "Xp_d90", "pulse_shape": "drag", "parameters": {"amp": [0.1938615816660265, 0.0], "beta": 2.735915636805241, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1856, "ch": "d90", "label": "Y90m_d90", "pulse_shape": "drag", "parameters": {"amp": [-0.0006859479590268495, -0.09743303031530948], "beta": 2.769047420942697, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u169", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u170", "phase": -3.141592653589793}, {"name": "fc", "t0": 1856, "ch": "u170", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u204", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u204", "label": "CR90p_u204", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.15074636973003705, 0.1562673720112814], "duration": 768, "sigma": 64, "width": 512}}, {"name": "parametric_pulse", "t0": 1088, "ch": "u204", "label": "CR90m_u204", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.15074636973003708, -0.15626737201128138], "duration": 768, "sigma": 64, "width": 512}}, {"name": "fc", "t0": 1856, "ch": "u204", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u212", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [76, 75], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d75", "label": "X90p_d75", "pulse_shape": "drag", "parameters": {"amp": [0.10513108234978502, -9.860245197807804e-05], "beta": 1.9938042604922348, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d75", "label": "CR90p_d75_u170", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.016623252550180632, 0.0006928280870464364], "duration": 1712, "sigma": 64, "width": 1456}}, {"name": "parametric_pulse", "t0": 2032, "ch": "d75", "label": "CR90m_d75_u170", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.016623252550180632, -0.0006928280870464343], "duration": 1712, "sigma": 64, "width": 1456}}, {"name": "fc", "t0": 0, "ch": "d76", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d76", "label": "Ym_d76", "pulse_shape": "drag", "parameters": {"amp": [-3.776294814109128e-17, -0.20557191492482194], "beta": -0.6950738099371728, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1872, "ch": "d76", "label": "Xp_d76", "pulse_shape": "drag", "parameters": {"amp": [0.20557191492482194, 0.0], "beta": -0.6950738099371728, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u168", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u170", "label": "CR90p_u170", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1514171122598437, 0.037168527537487145], "duration": 1712, "sigma": 64, "width": 1456}}, {"name": "parametric_pulse", "t0": 2032, "ch": "u170", "label": "CR90m_u170", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1514171122598437, -0.037168527537487166], "duration": 1712, "sigma": 64, "width": 1456}}, {"name": "fc", "t0": 0, "ch": "u173", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [76, 77], "sequence": [{"name": "fc", "t0": 0, "ch": "d76", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d76", "label": "Y90p_d76", "pulse_shape": "drag", "parameters": {"amp": [-0.0012987096283798667, 0.10321413288314152], "beta": -0.7935449964227578, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d76", "label": "CR90p_d76_u173", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.052283106164368945, 0.0011531519403525812], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "d76", "label": "CR90m_d76_u173", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.052283106164368945, -0.0011531519403525747], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 1664, "ch": "d76", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1664, "ch": "d76", "label": "X90p_d76", "pulse_shape": "drag", "parameters": {"amp": [0.10321413288314152, 0.0012987096283798725], "beta": -0.7935449964227578, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d77", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d77", "label": "X90p_d77", "pulse_shape": "drag", "parameters": {"amp": [0.09837299208037871, 0.0021223511285101354], "beta": -2.3124803053390233, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 832, "ch": "d77", "label": "Xp_d77", "pulse_shape": "drag", "parameters": {"amp": [0.19536561901965938, 0.0], "beta": -2.2445099176216177, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1664, "ch": "d77", "label": "Y90m_d77", "pulse_shape": "drag", "parameters": {"amp": [0.002122351128510123, -0.09837299208037871], "beta": -2.3124803053390233, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u161", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u168", "phase": -3.141592653589793}, {"name": "fc", "t0": 1664, "ch": "u168", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u171", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u173", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u173", "label": "CR90p_u173", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.14124995856768294, -0.33159303953003705], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "u173", "label": "CR90m_u173", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.14124995856768296, 0.33159303953003705], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 1664, "ch": "u173", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u175", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [77, 71], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d71", "label": "X90p_d71", "pulse_shape": "drag", "parameters": {"amp": [0.09843274010937189, 0.0005495208125857818], "beta": -0.4419617673478976, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d71", "label": "CR90p_d71_u172", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03624178906934047, -0.0007968957487180161], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d71", "label": "CR90m_d71_u172", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03624178906934047, 0.0007968957487180206], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "d77", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d77", "label": "Ym_d77", "pulse_shape": "drag", "parameters": {"amp": [-3.5888081999380065e-17, -0.19536561901965938], "beta": -2.2445099176216177, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d77", "label": "Xp_d77", "pulse_shape": "drag", "parameters": {"amp": [0.19536561901965938, 0.0], "beta": -2.2445099176216177, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u161", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u171", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u172", "label": "CR90p_u172", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.09104024582059264, -0.1759640145955839], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u172", "label": "CR90m_u172", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09104024582059267, 0.1759640145955839], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "u175", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [77, 76], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d76", "label": "X90p_d76", "pulse_shape": "drag", "parameters": {"amp": [0.10321413288314152, 0.0012987096283798725], "beta": -0.7935449964227578, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d76", "label": "CR90p_d76_u173", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.052283106164368945, 0.0011531519403525812], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "d76", "label": "CR90m_d76_u173", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.052283106164368945, -0.0011531519403525747], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 0, "ch": "d77", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d77", "label": "Ym_d77", "pulse_shape": "drag", "parameters": {"amp": [-3.5888081999380065e-17, -0.19536561901965938], "beta": -2.2445099176216177, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 832, "ch": "d77", "label": "Xp_d77", "pulse_shape": "drag", "parameters": {"amp": [0.19536561901965938, 0.0], "beta": -2.2445099176216177, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u161", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u171", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u173", "label": "CR90p_u173", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.14124995856768294, -0.33159303953003705], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "u173", "label": "CR90m_u173", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.14124995856768296, 0.33159303953003705], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 0, "ch": "u175", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [77, 78], "sequence": [{"name": "fc", "t0": 0, "ch": "d77", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d77", "label": "Y90p_d77", "pulse_shape": "drag", "parameters": {"amp": [-0.0021223511285101346, 0.09837299208037871], "beta": -2.3124803053390233, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d77", "label": "CR90p_d77_u175", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.016486583753148678, 0.0016538010827680514], "duration": 1824, "sigma": 64, "width": 1568}}, {"name": "parametric_pulse", "t0": 2144, "ch": "d77", "label": "CR90m_d77_u175", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.016486583753148678, -0.0016538010827680495], "duration": 1824, "sigma": 64, "width": 1568}}, {"name": "fc", "t0": 3968, "ch": "d77", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 3968, "ch": "d77", "label": "X90p_d77", "pulse_shape": "drag", "parameters": {"amp": [0.09837299208037871, 0.0021223511285101354], "beta": -2.3124803053390233, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d78", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d78", "label": "X90p_d78", "pulse_shape": "drag", "parameters": {"amp": [0.09895619432987299, 0.0012046853440808632], "beta": -0.2422062980127582, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1984, "ch": "d78", "label": "Xp_d78", "pulse_shape": "drag", "parameters": {"amp": [0.19731296155872652, 0.0], "beta": -0.15755450058163398, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 3968, "ch": "d78", "label": "Y90m_d78", "pulse_shape": "drag", "parameters": {"amp": [0.001204685344080815, -0.09895619432987299], "beta": -0.2422062980127582, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u161", "phase": -3.141592653589793}, {"name": "fc", "t0": 3968, "ch": "u161", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u171", "phase": -3.141592653589793}, {"name": "fc", "t0": 3968, "ch": "u171", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u174", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u175", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u175", "label": "CR90p_u175", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1225022427925677, -0.027020241062366137], "duration": 1824, "sigma": 64, "width": 1568}}, {"name": "parametric_pulse", "t0": 2144, "ch": "u175", "label": "CR90m_u175", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1225022427925677, 0.02702024106236615], "duration": 1824, "sigma": 64, "width": 1568}}, {"name": "fc", "t0": 3968, "ch": "u175", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u177", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [78, 77], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d77", "label": "X90p_d77", "pulse_shape": "drag", "parameters": {"amp": [0.09837299208037871, 0.0021223511285101354], "beta": -2.3124803053390233, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d77", "label": "CR90p_d77_u175", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.016486583753148678, 0.0016538010827680514], "duration": 1824, "sigma": 64, "width": 1568}}, {"name": "parametric_pulse", "t0": 2144, "ch": "d77", "label": "CR90m_d77_u175", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.016486583753148678, -0.0016538010827680495], "duration": 1824, "sigma": 64, "width": 1568}}, {"name": "fc", "t0": 0, "ch": "d78", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d78", "label": "Ym_d78", "pulse_shape": "drag", "parameters": {"amp": [-3.6245803020476874e-17, -0.19731296155872652], "beta": -0.15755450058163398, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1984, "ch": "d78", "label": "Xp_d78", "pulse_shape": "drag", "parameters": {"amp": [0.19731296155872652, 0.0], "beta": -0.15755450058163398, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u174", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u175", "label": "CR90p_u175", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1225022427925677, -0.027020241062366137], "duration": 1824, "sigma": 64, "width": 1568}}, {"name": "parametric_pulse", "t0": 2144, "ch": "u175", "label": "CR90m_u175", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1225022427925677, 0.02702024106236615], "duration": 1824, "sigma": 64, "width": 1568}}, {"name": "fc", "t0": 0, "ch": "u177", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [78, 79], "sequence": [{"name": "fc", "t0": 0, "ch": "d78", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d78", "label": "Ym_d78", "pulse_shape": "drag", "parameters": {"amp": [-3.6245803020476874e-17, -0.19731296155872652], "beta": -0.15755450058163398, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1440, "ch": "d78", "label": "Xp_d78", "pulse_shape": "drag", "parameters": {"amp": [0.19731296155872652, 0.0], "beta": -0.15755450058163398, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d79", "label": "X90p_d79", "pulse_shape": "drag", "parameters": {"amp": [0.09696160423316746, 0.0006260748978533891], "beta": 1.114335770860557, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d79", "label": "CR90p_d79_u176", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.024424768602406978, 2.7291190530967326e-05], "duration": 1280, "sigma": 64, "width": 1024}}, {"name": "parametric_pulse", "t0": 1600, "ch": "d79", "label": "CR90m_d79_u176", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.024424768602406978, -2.7291190530964334e-05], "duration": 1280, "sigma": 64, "width": 1024}}, {"name": "fc", "t0": 0, "ch": "u174", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u176", "label": "CR90p_u176", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10546072126888481, 0.0072017517853453505], "duration": 1280, "sigma": 64, "width": 1024}}, {"name": "parametric_pulse", "t0": 1600, "ch": "u176", "label": "CR90m_u176", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.10546072126888481, -0.0072017517853453636], "duration": 1280, "sigma": 64, "width": 1024}}, {"name": "fc", "t0": 0, "ch": "u177", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [79, 78], "sequence": [{"name": "fc", "t0": 0, "ch": "d78", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d78", "label": "X90p_d78", "pulse_shape": "drag", "parameters": {"amp": [0.09895619432987299, 0.0012046853440808632], "beta": -0.2422062980127582, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1440, "ch": "d78", "label": "Xp_d78", "pulse_shape": "drag", "parameters": {"amp": [0.19731296155872652, 0.0], "beta": -0.15755450058163398, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2880, "ch": "d78", "label": "Y90m_d78", "pulse_shape": "drag", "parameters": {"amp": [0.001204685344080815, -0.09895619432987299], "beta": -0.2422062980127582, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d79", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d79", "label": "Y90p_d79", "pulse_shape": "drag", "parameters": {"amp": [-0.0006260748978533786, 0.09696160423316746], "beta": 1.114335770860557, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d79", "label": "CR90p_d79_u176", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.024424768602406978, 2.7291190530967326e-05], "duration": 1280, "sigma": 64, "width": 1024}}, {"name": "parametric_pulse", "t0": 1600, "ch": "d79", "label": "CR90m_d79_u176", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.024424768602406978, -2.7291190530964334e-05], "duration": 1280, "sigma": 64, "width": 1024}}, {"name": "fc", "t0": 2880, "ch": "d79", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2880, "ch": "d79", "label": "X90p_d79", "pulse_shape": "drag", "parameters": {"amp": [0.09696160423316746, 0.0006260748978533891], "beta": 1.114335770860557, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u174", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u176", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u176", "label": "CR90p_u176", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10546072126888481, 0.0072017517853453505], "duration": 1280, "sigma": 64, "width": 1024}}, {"name": "parametric_pulse", "t0": 1600, "ch": "u176", "label": "CR90m_u176", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.10546072126888481, -0.0072017517853453636], "duration": 1280, "sigma": 64, "width": 1024}}, {"name": "fc", "t0": 2880, "ch": "u176", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u177", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u180", "phase": -3.141592653589793}, {"name": "fc", "t0": 2880, "ch": "u180", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u206", "phase": -3.141592653589793}, {"name": "fc", "t0": 2880, "ch": "u206", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [79, 80], "sequence": [{"name": "fc", "t0": 0, "ch": "d79", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d79", "label": "Y90p_d79", "pulse_shape": "drag", "parameters": {"amp": [-0.0006260748978533786, 0.09696160423316746], "beta": 1.114335770860557, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d79", "label": "CR90p_d79_u180", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0628220999208214, -0.00018379218295989854], "duration": 544, "sigma": 64, "width": 288}}, {"name": "parametric_pulse", "t0": 864, "ch": "d79", "label": "CR90m_d79_u180", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0628220999208214, 0.00018379218295990624], "duration": 544, "sigma": 64, "width": 288}}, {"name": "fc", "t0": 1408, "ch": "d79", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1408, "ch": "d79", "label": "X90p_d79", "pulse_shape": "drag", "parameters": {"amp": [0.09696160423316746, 0.0006260748978533891], "beta": 1.114335770860557, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d80", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d80", "label": "X90p_d80", "pulse_shape": "drag", "parameters": {"amp": [0.10029474208151824, -0.002268973889537971], "beta": 3.4219549112407, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 704, "ch": "d80", "label": "Xp_d80", "pulse_shape": "drag", "parameters": {"amp": [0.20033318015227528, 0.0], "beta": 3.4623927657007654, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1408, "ch": "d80", "label": "Y90m_d80", "pulse_shape": "drag", "parameters": {"amp": [-0.002268973889538016, -0.10029474208151824], "beta": 3.4219549112407, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u176", "phase": -3.141592653589793}, {"name": "fc", "t0": 1408, "ch": "u176", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u178", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u180", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u180", "label": "CR90p_u180", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.4630698963505046, 0.05286150192904086], "duration": 544, "sigma": 64, "width": 288}}, {"name": "parametric_pulse", "t0": 864, "ch": "u180", "label": "CR90m_u180", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.4630698963505046, -0.05286150192904092], "duration": 544, "sigma": 64, "width": 288}}, {"name": "fc", "t0": 1408, "ch": "u180", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u183", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u206", "phase": -3.141592653589793}, {"name": "fc", "t0": 1408, "ch": "u206", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [79, 91], "sequence": [{"name": "fc", "t0": 0, "ch": "d79", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d79", "label": "Y90p_d79", "pulse_shape": "drag", "parameters": {"amp": [-0.0006260748978533786, 0.09696160423316746], "beta": 1.114335770860557, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d79", "label": "CR90p_d79_u206", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04058577889062387, 0.002104454762834204], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "d79", "label": "CR90m_d79_u206", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04058577889062387, -0.0021044547628341994], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 1824, "ch": "d79", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1824, "ch": "d79", "label": "X90p_d79", "pulse_shape": "drag", "parameters": {"amp": [0.09696160423316746, 0.0006260748978533891], "beta": 1.114335770860557, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d91", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d91", "label": "X90p_d91", "pulse_shape": "drag", "parameters": {"amp": [0.10107236724205125, -0.0002966579815657475], "beta": 1.427438470869819, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 912, "ch": "d91", "label": "Xp_d91", "pulse_shape": "drag", "parameters": {"amp": [0.20092100687175435, 0.0], "beta": 1.483548874665953, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1824, "ch": "d91", "label": "Y90m_d91", "pulse_shape": "drag", "parameters": {"amp": [-0.00029665798156580105, -0.10107236724205125], "beta": 1.427438470869819, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u176", "phase": -3.141592653589793}, {"name": "fc", "t0": 1824, "ch": "u176", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u179", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u180", "phase": -3.141592653589793}, {"name": "fc", "t0": 1824, "ch": "u180", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u206", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u206", "label": "CR90p_u206", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1434710456119989, -0.05559552705502408], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "u206", "label": "CR90m_u206", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1434710456119989, 0.05559552705502406], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 1824, "ch": "u206", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u221", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [80, 79], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d79", "label": "X90p_d79", "pulse_shape": "drag", "parameters": {"amp": [0.09696160423316746, 0.0006260748978533891], "beta": 1.114335770860557, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d79", "label": "CR90p_d79_u180", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0628220999208214, -0.00018379218295989854], "duration": 544, "sigma": 64, "width": 288}}, {"name": "parametric_pulse", "t0": 864, "ch": "d79", "label": "CR90m_d79_u180", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0628220999208214, 0.00018379218295990624], "duration": 544, "sigma": 64, "width": 288}}, {"name": "fc", "t0": 0, "ch": "d80", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d80", "label": "Ym_d80", "pulse_shape": "drag", "parameters": {"amp": [-3.6800608175474097e-17, -0.20033318015227528], "beta": 3.4623927657007654, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 704, "ch": "d80", "label": "Xp_d80", "pulse_shape": "drag", "parameters": {"amp": [0.20033318015227528, 0.0], "beta": 3.4623927657007654, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u178", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u180", "label": "CR90p_u180", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.4630698963505046, 0.05286150192904086], "duration": 544, "sigma": 64, "width": 288}}, {"name": "parametric_pulse", "t0": 864, "ch": "u180", "label": "CR90m_u180", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.4630698963505046, -0.05286150192904092], "duration": 544, "sigma": 64, "width": 288}}, {"name": "fc", "t0": 0, "ch": "u183", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [80, 81], "sequence": [{"name": "fc", "t0": 0, "ch": "d80", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d80", "label": "Ym_d80", "pulse_shape": "drag", "parameters": {"amp": [-3.6800608175474097e-17, -0.20033318015227528], "beta": 3.4623927657007654, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1216, "ch": "d80", "label": "Xp_d80", "pulse_shape": "drag", "parameters": {"amp": [0.20033318015227528, 0.0], "beta": 3.4623927657007654, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d81", "label": "X90p_d81", "pulse_shape": "drag", "parameters": {"amp": [0.09525406276346755, 0.001357441029031795], "beta": 0.07410235913307432, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d81", "label": "CR90p_d81_u181", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.028275404812218265, 0.0013872457022558952], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "parametric_pulse", "t0": 1376, "ch": "d81", "label": "CR90m_d81_u181", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.028275404812218265, -0.0013872457022558917], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "fc", "t0": 0, "ch": "u178", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u181", "label": "CR90p_u181", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.24415734435362657, 0.05693384054252692], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "parametric_pulse", "t0": 1376, "ch": "u181", "label": "CR90m_u181", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.24415734435362657, -0.056933840542526946], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "fc", "t0": 0, "ch": "u183", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [81, 72], "sequence": [{"name": "fc", "t0": 0, "ch": "d72", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d72", "label": "X90p_d72", "pulse_shape": "drag", "parameters": {"amp": [0.0955035129685456, 0.0008297541854273995], "beta": -0.11133125902076414, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 832, "ch": "d72", "label": "Xp_d72", "pulse_shape": "drag", "parameters": {"amp": [0.19032083364880062, 0.0], "beta": -0.14119562982423, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1664, "ch": "d72", "label": "Y90m_d72", "pulse_shape": "drag", "parameters": {"amp": [0.0008297541854274209, -0.0955035129685456], "beta": -0.11133125902076414, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d81", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d81", "label": "Y90p_d81", "pulse_shape": "drag", "parameters": {"amp": [-0.0013574410290317816, 0.09525406276346755], "beta": 0.07410235913307432, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d81", "label": "CR90p_d81_u163", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0486456046631631, 0.0005296847941802075], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "d81", "label": "CR90m_d81_u163", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0486456046631631, -0.0005296847941802015], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 1664, "ch": "d81", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1664, "ch": "d81", "label": "X90p_d81", "pulse_shape": "drag", "parameters": {"amp": [0.09525406276346755, 0.001357441029031795], "beta": 0.07410235913307432, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u140", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u163", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u163", "label": "CR90p_u163", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3587633608268012, 0.1944425704420019], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "u163", "label": "CR90m_u163", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3587633608268012, -0.19444257044200194], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 1664, "ch": "u163", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u181", "phase": -3.141592653589793}, {"name": "fc", "t0": 1664, "ch": "u181", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u182", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u185", "phase": -3.141592653589793}, {"name": "fc", "t0": 1664, "ch": "u185", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [81, 80], "sequence": [{"name": "fc", "t0": 0, "ch": "d80", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d80", "label": "X90p_d80", "pulse_shape": "drag", "parameters": {"amp": [0.10029474208151824, -0.002268973889537971], "beta": 3.4219549112407, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1216, "ch": "d80", "label": "Xp_d80", "pulse_shape": "drag", "parameters": {"amp": [0.20033318015227528, 0.0], "beta": 3.4623927657007654, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2432, "ch": "d80", "label": "Y90m_d80", "pulse_shape": "drag", "parameters": {"amp": [-0.002268973889538016, -0.10029474208151824], "beta": 3.4219549112407, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d81", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d81", "label": "Y90p_d81", "pulse_shape": "drag", "parameters": {"amp": [-0.0013574410290317816, 0.09525406276346755], "beta": 0.07410235913307432, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d81", "label": "CR90p_d81_u181", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.028275404812218265, 0.0013872457022558952], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "parametric_pulse", "t0": 1376, "ch": "d81", "label": "CR90m_d81_u181", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.028275404812218265, -0.0013872457022558917], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "fc", "t0": 2432, "ch": "d81", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2432, "ch": "d81", "label": "X90p_d81", "pulse_shape": "drag", "parameters": {"amp": [0.09525406276346755, 0.001357441029031795], "beta": 0.07410235913307432, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u163", "phase": -3.141592653589793}, {"name": "fc", "t0": 2432, "ch": "u163", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u178", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u181", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u181", "label": "CR90p_u181", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.24415734435362657, 0.05693384054252692], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "parametric_pulse", "t0": 1376, "ch": "u181", "label": "CR90m_u181", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.24415734435362657, -0.056933840542526946], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "fc", "t0": 2432, "ch": "u181", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u183", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u185", "phase": -3.141592653589793}, {"name": "fc", "t0": 2432, "ch": "u185", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [81, 82], "sequence": [{"name": "fc", "t0": 0, "ch": "d81", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d81", "label": "Y90p_d81", "pulse_shape": "drag", "parameters": {"amp": [-0.0013574410290317816, 0.09525406276346755], "beta": 0.07410235913307432, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d81", "label": "CR90p_d81_u185", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03135857710172182, 0.0010981765458558184], "duration": 960, "sigma": 64, "width": 704}}, {"name": "parametric_pulse", "t0": 1280, "ch": "d81", "label": "CR90m_d81_u185", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03135857710172182, -0.0010981765458558145], "duration": 960, "sigma": 64, "width": 704}}, {"name": "fc", "t0": 2240, "ch": "d81", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2240, "ch": "d81", "label": "X90p_d81", "pulse_shape": "drag", "parameters": {"amp": [0.09525406276346755, 0.001357441029031795], "beta": 0.07410235913307432, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d82", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d82", "label": "X90p_d82", "pulse_shape": "drag", "parameters": {"amp": [0.09553747877114199, 0.0005659537038867093], "beta": -1.1682258932255576, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d82", "label": "Xp_d82", "pulse_shape": "drag", "parameters": {"amp": [0.19019240750868696, 0.0], "beta": -1.142302739004336, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2240, "ch": "d82", "label": "Y90m_d82", "pulse_shape": "drag", "parameters": {"amp": [0.0005659537038866851, -0.09553747877114199], "beta": -1.1682258932255576, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u163", "phase": -3.141592653589793}, {"name": "fc", "t0": 2240, "ch": "u163", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u181", "phase": -3.141592653589793}, {"name": "fc", "t0": 2240, "ch": "u181", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u184", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u185", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u185", "label": "CR90p_u185", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.14657336277152896, -0.24824571502805015], "duration": 960, "sigma": 64, "width": 704}}, {"name": "parametric_pulse", "t0": 1280, "ch": "u185", "label": "CR90m_u185", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.14657336277152894, 0.24824571502805018], "duration": 960, "sigma": 64, "width": 704}}, {"name": "fc", "t0": 2240, "ch": "u185", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u187", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [82, 81], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d81", "label": "X90p_d81", "pulse_shape": "drag", "parameters": {"amp": [0.09525406276346755, 0.001357441029031795], "beta": 0.07410235913307432, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d81", "label": "CR90p_d81_u185", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03135857710172182, 0.0010981765458558184], "duration": 960, "sigma": 64, "width": 704}}, {"name": "parametric_pulse", "t0": 1280, "ch": "d81", "label": "CR90m_d81_u185", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03135857710172182, -0.0010981765458558145], "duration": 960, "sigma": 64, "width": 704}}, {"name": "fc", "t0": 0, "ch": "d82", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d82", "label": "Ym_d82", "pulse_shape": "drag", "parameters": {"amp": [-3.493777846164637e-17, -0.19019240750868696], "beta": -1.142302739004336, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d82", "label": "Xp_d82", "pulse_shape": "drag", "parameters": {"amp": [0.19019240750868696, 0.0], "beta": -1.142302739004336, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u184", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u185", "label": "CR90p_u185", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.14657336277152896, -0.24824571502805015], "duration": 960, "sigma": 64, "width": 704}}, {"name": "parametric_pulse", "t0": 1280, "ch": "u185", "label": "CR90m_u185", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.14657336277152894, 0.24824571502805018], "duration": 960, "sigma": 64, "width": 704}}, {"name": "fc", "t0": 0, "ch": "u187", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [82, 83], "sequence": [{"name": "fc", "t0": 0, "ch": "d82", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d82", "label": "Ym_d82", "pulse_shape": "drag", "parameters": {"amp": [-3.493777846164637e-17, -0.19019240750868696], "beta": -1.142302739004336, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 976, "ch": "d82", "label": "Xp_d82", "pulse_shape": "drag", "parameters": {"amp": [0.19019240750868696, 0.0], "beta": -1.142302739004336, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d83", "label": "X90p_d83", "pulse_shape": "drag", "parameters": {"amp": [0.11744434732299569, 0.0033816411028132964], "beta": -2.4411666847517735, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d83", "label": "CR90p_d83_u186", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.044723038926073835, 0.00042560928812601575], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1136, "ch": "d83", "label": "CR90m_d83_u186", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.044723038926073835, -0.00042560928812601027], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 0, "ch": "u184", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u186", "label": "CR90p_u186", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.016060384027917683, -0.08675579458684607], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1136, "ch": "u186", "label": "CR90m_u186", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.016060384027917672, 0.08675579458684607], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 0, "ch": "u187", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [83, 82], "sequence": [{"name": "fc", "t0": 0, "ch": "d82", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d82", "label": "X90p_d82", "pulse_shape": "drag", "parameters": {"amp": [0.09553747877114199, 0.0005659537038867093], "beta": -1.1682258932255576, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 976, "ch": "d82", "label": "Xp_d82", "pulse_shape": "drag", "parameters": {"amp": [0.19019240750868696, 0.0], "beta": -1.142302739004336, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1952, "ch": "d82", "label": "Y90m_d82", "pulse_shape": "drag", "parameters": {"amp": [0.0005659537038866851, -0.09553747877114199], "beta": -1.1682258932255576, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d83", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d83", "label": "Y90p_d83", "pulse_shape": "drag", "parameters": {"amp": [-0.003381641102813286, 0.1174443473229957], "beta": -2.4411666847517735, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d83", "label": "CR90p_d83_u186", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.044723038926073835, 0.00042560928812601575], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1136, "ch": "d83", "label": "CR90m_d83_u186", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.044723038926073835, -0.00042560928812601027], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 1952, "ch": "d83", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1952, "ch": "d83", "label": "X90p_d83", "pulse_shape": "drag", "parameters": {"amp": [0.11744434732299569, 0.0033816411028132964], "beta": -2.4411666847517735, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u184", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u186", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u186", "label": "CR90p_u186", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.016060384027917683, -0.08675579458684607], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1136, "ch": "u186", "label": "CR90m_u186", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.016060384027917672, 0.08675579458684607], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 1952, "ch": "u186", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u187", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u190", "phase": -3.141592653589793}, {"name": "fc", "t0": 1952, "ch": "u190", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u208", "phase": -3.141592653589793}, {"name": "fc", "t0": 1952, "ch": "u208", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [83, 84], "sequence": [{"name": "fc", "t0": 0, "ch": "d83", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d83", "label": "Ym_d83", "pulse_shape": "drag", "parameters": {"amp": [-4.3161271774502616e-17, -0.2349590200459059], "beta": -2.383490572308523, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1104, "ch": "d83", "label": "Xp_d83", "pulse_shape": "drag", "parameters": {"amp": [0.2349590200459059, 0.0], "beta": -2.383490572308523, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d84", "label": "X90p_d84", "pulse_shape": "drag", "parameters": {"amp": [0.09391782394367892, 0.0011165093384873067], "beta": 1.1689305126709633, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d84", "label": "CR90p_d84_u188", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.033023696946550565, 0.0006301728507335845], "duration": 944, "sigma": 64, "width": 688}}, {"name": "parametric_pulse", "t0": 1264, "ch": "d84", "label": "CR90m_d84_u188", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.033023696946550565, -0.0006301728507335805], "duration": 944, "sigma": 64, "width": 688}}, {"name": "fc", "t0": 0, "ch": "u186", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u188", "label": "CR90p_u188", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.27976548501056436, -0.2579426015539064], "duration": 944, "sigma": 64, "width": 688}}, {"name": "parametric_pulse", "t0": 1264, "ch": "u188", "label": "CR90m_u188", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2797654850105643, 0.25794260155390647], "duration": 944, "sigma": 64, "width": 688}}, {"name": "fc", "t0": 0, "ch": "u190", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u208", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [83, 92], "sequence": [{"name": "fc", "t0": 0, "ch": "d83", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d83", "label": "Y90p_d83", "pulse_shape": "drag", "parameters": {"amp": [-0.003381641102813286, 0.1174443473229957], "beta": -2.4411666847517735, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d83", "label": "CR90p_d83_u208", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05014357667429161, 0.0035530662887827383], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "d83", "label": "CR90m_d83_u208", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05014357667429161, -0.0035530662887827322], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 1824, "ch": "d83", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1824, "ch": "d83", "label": "X90p_d83", "pulse_shape": "drag", "parameters": {"amp": [0.11744434732299569, 0.0033816411028132964], "beta": -2.4411666847517735, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d92", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d92", "label": "X90p_d92", "pulse_shape": "drag", "parameters": {"amp": [0.09282376624555454, 0.0007908016478509532], "beta": -0.2265881189016976, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 912, "ch": "d92", "label": "Xp_d92", "pulse_shape": "drag", "parameters": {"amp": [0.18475661288842973, 0.0], "beta": -0.2637105605238698, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1824, "ch": "d92", "label": "Y90m_d92", "pulse_shape": "drag", "parameters": {"amp": [0.0007908016478508987, -0.09282376624555454], "beta": -0.2265881189016976, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u186", "phase": -3.141592653589793}, {"name": "fc", "t0": 1824, "ch": "u186", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u189", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u190", "phase": -3.141592653589793}, {"name": "fc", "t0": 1824, "ch": "u190", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u208", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u208", "label": "CR90p_u208", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.10863215946298939, -0.22058987534869823], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "u208", "label": "CR90m_u208", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10863215946298936, 0.22058987534869823], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 1824, "ch": "u208", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u231", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [84, 83], "sequence": [{"name": "fc", "t0": 0, "ch": "d83", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d83", "label": "X90p_d83", "pulse_shape": "drag", "parameters": {"amp": [0.11744434732299569, 0.0033816411028132964], "beta": -2.4411666847517735, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1104, "ch": "d83", "label": "Xp_d83", "pulse_shape": "drag", "parameters": {"amp": [0.2349590200459059, 0.0], "beta": -2.383490572308523, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2208, "ch": "d83", "label": "Y90m_d83", "pulse_shape": "drag", "parameters": {"amp": [0.0033816411028132457, -0.1174443473229957], "beta": -2.4411666847517735, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d84", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d84", "label": "Y90p_d84", "pulse_shape": "drag", "parameters": {"amp": [-0.001116509338487298, 0.09391782394367892], "beta": 1.1689305126709633, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d84", "label": "CR90p_d84_u188", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.033023696946550565, 0.0006301728507335845], "duration": 944, "sigma": 64, "width": 688}}, {"name": "parametric_pulse", "t0": 1264, "ch": "d84", "label": "CR90m_d84_u188", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.033023696946550565, -0.0006301728507335805], "duration": 944, "sigma": 64, "width": 688}}, {"name": "fc", "t0": 2208, "ch": "d84", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2208, "ch": "d84", "label": "X90p_d84", "pulse_shape": "drag", "parameters": {"amp": [0.09391782394367892, 0.0011165093384873067], "beta": 1.1689305126709633, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u186", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u188", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u188", "label": "CR90p_u188", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.27976548501056436, -0.2579426015539064], "duration": 944, "sigma": 64, "width": 688}}, {"name": "parametric_pulse", "t0": 1264, "ch": "u188", "label": "CR90m_u188", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2797654850105643, 0.25794260155390647], "duration": 944, "sigma": 64, "width": 688}}, {"name": "fc", "t0": 2208, "ch": "u188", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u190", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u193", "phase": -3.141592653589793}, {"name": "fc", "t0": 2208, "ch": "u193", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u208", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [84, 85], "sequence": [{"name": "fc", "t0": 0, "ch": "d84", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d84", "label": "Y90p_d84", "pulse_shape": "drag", "parameters": {"amp": [-0.001116509338487298, 0.09391782394367892], "beta": 1.1689305126709633, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d84", "label": "CR90p_d84_u193", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04317264298375878, 0.0011623412056248933], "duration": 736, "sigma": 64, "width": 480}}, {"name": "parametric_pulse", "t0": 1056, "ch": "d84", "label": "CR90m_d84_u193", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04317264298375878, -0.001162341205624888], "duration": 736, "sigma": 64, "width": 480}}, {"name": "fc", "t0": 1792, "ch": "d84", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1792, "ch": "d84", "label": "X90p_d84", "pulse_shape": "drag", "parameters": {"amp": [0.09391782394367892, 0.0011165093384873067], "beta": 1.1689305126709633, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d85", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d85", "label": "X90p_d85", "pulse_shape": "drag", "parameters": {"amp": [0.16899085938555627, 0.00203275014469085], "beta": -1.431441662592734, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 896, "ch": "d85", "label": "Xp_d85", "pulse_shape": "drag", "parameters": {"amp": [0.3386251967328379, 0.0], "beta": -1.4074626024840975, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1792, "ch": "d85", "label": "Y90m_d85", "pulse_shape": "drag", "parameters": {"amp": [0.002032750144690767, -0.16899085938555627], "beta": -1.431441662592734, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u165", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u188", "phase": -3.141592653589793}, {"name": "fc", "t0": 1792, "ch": "u188", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u191", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u193", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u193", "label": "CR90p_u193", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.5615556074652782, -0.027865773480484125], "duration": 736, "sigma": 64, "width": 480}}, {"name": "parametric_pulse", "t0": 1056, "ch": "u193", "label": "CR90m_u193", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.5615556074652782, 0.027865773480484055], "duration": 736, "sigma": 64, "width": 480}}, {"name": "fc", "t0": 1792, "ch": "u193", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u195", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [85, 73], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d73", "label": "X90p_d73", "pulse_shape": "drag", "parameters": {"amp": [0.09726692800811326, 0.0003699418974938183], "beta": 1.4135897153745198, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d73", "label": "CR90p_d73_u192", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03867002386823023, 2.0564337986456414e-05], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d73", "label": "CR90m_d73_u192", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03867002386823023, -2.0564337986451677e-05], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "d85", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d85", "label": "Ym_d85", "pulse_shape": "drag", "parameters": {"amp": [-6.22044394934269e-17, -0.3386251967328379], "beta": -1.4074626024840975, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d85", "label": "Xp_d85", "pulse_shape": "drag", "parameters": {"amp": [0.3386251967328379, 0.0], "beta": -1.4074626024840975, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u165", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u191", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u192", "label": "CR90p_u192", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.22353555485221158, 0.23810965185583038], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u192", "label": "CR90m_u192", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2235355548522116, -0.23810965185583036], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "u195", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [85, 84], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d84", "label": "X90p_d84", "pulse_shape": "drag", "parameters": {"amp": [0.09391782394367892, 0.0011165093384873067], "beta": 1.1689305126709633, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d84", "label": "CR90p_d84_u193", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04317264298375878, 0.0011623412056248933], "duration": 736, "sigma": 64, "width": 480}}, {"name": "parametric_pulse", "t0": 1056, "ch": "d84", "label": "CR90m_d84_u193", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04317264298375878, -0.001162341205624888], "duration": 736, "sigma": 64, "width": 480}}, {"name": "fc", "t0": 0, "ch": "d85", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d85", "label": "Ym_d85", "pulse_shape": "drag", "parameters": {"amp": [-6.22044394934269e-17, -0.3386251967328379], "beta": -1.4074626024840975, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 896, "ch": "d85", "label": "Xp_d85", "pulse_shape": "drag", "parameters": {"amp": [0.3386251967328379, 0.0], "beta": -1.4074626024840975, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u165", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u191", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u193", "label": "CR90p_u193", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.5615556074652782, -0.027865773480484125], "duration": 736, "sigma": 64, "width": 480}}, {"name": "parametric_pulse", "t0": 1056, "ch": "u193", "label": "CR90m_u193", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.5615556074652782, 0.027865773480484055], "duration": 736, "sigma": 64, "width": 480}}, {"name": "fc", "t0": 0, "ch": "u195", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [85, 86], "sequence": [{"name": "fc", "t0": 0, "ch": "d85", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d85", "label": "Ym_d85", "pulse_shape": "drag", "parameters": {"amp": [-6.22044394934269e-17, -0.3386251967328379], "beta": -1.4074626024840975, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 976, "ch": "d85", "label": "Xp_d85", "pulse_shape": "drag", "parameters": {"amp": [0.3386251967328379, 0.0], "beta": -1.4074626024840975, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d86", "label": "X90p_d86", "pulse_shape": "drag", "parameters": {"amp": [0.09620749342851234, 0.001736389081355557], "beta": 0.07944776716149475, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d86", "label": "CR90p_d86_u194", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03605657705702495, 0.0010911749186313464], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1136, "ch": "d86", "label": "CR90m_d86_u194", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03605657705702495, -0.001091174918631342], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 0, "ch": "u165", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u191", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u194", "label": "CR90p_u194", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07317358726684056, 0.46463094229803026], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1136, "ch": "u194", "label": "CR90m_u194", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07317358726684062, -0.46463094229803026], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 0, "ch": "u195", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [86, 85], "sequence": [{"name": "fc", "t0": 0, "ch": "d85", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d85", "label": "X90p_d85", "pulse_shape": "drag", "parameters": {"amp": [0.16899085938555627, 0.00203275014469085], "beta": -1.431441662592734, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 976, "ch": "d85", "label": "Xp_d85", "pulse_shape": "drag", "parameters": {"amp": [0.3386251967328379, 0.0], "beta": -1.4074626024840975, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1952, "ch": "d85", "label": "Y90m_d85", "pulse_shape": "drag", "parameters": {"amp": [0.002032750144690767, -0.16899085938555627], "beta": -1.431441662592734, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d86", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d86", "label": "Y90p_d86", "pulse_shape": "drag", "parameters": {"amp": [-0.0017363890813555552, 0.09620749342851234], "beta": 0.07944776716149475, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d86", "label": "CR90p_d86_u194", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03605657705702495, 0.0010911749186313464], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1136, "ch": "d86", "label": "CR90m_d86_u194", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03605657705702495, -0.001091174918631342], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 1952, "ch": "d86", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1952, "ch": "d86", "label": "X90p_d86", "pulse_shape": "drag", "parameters": {"amp": [0.09620749342851234, 0.001736389081355557], "beta": 0.07944776716149475, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u165", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u191", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u194", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u194", "label": "CR90p_u194", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07317358726684056, 0.46463094229803026], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1136, "ch": "u194", "label": "CR90m_u194", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07317358726684062, -0.46463094229803026], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 1952, "ch": "u194", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u195", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u197", "phase": -3.141592653589793}, {"name": "fc", "t0": 1952, "ch": "u197", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [86, 87], "sequence": [{"name": "fc", "t0": 0, "ch": "d86", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d86", "label": "Y90p_d86", "pulse_shape": "drag", "parameters": {"amp": [-0.0017363890813555552, 0.09620749342851234], "beta": 0.07944776716149475, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d86", "label": "CR90p_d86_u197", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02485821845580124, 0.0005939382766298716], "duration": 1248, "sigma": 64, "width": 992}}, {"name": "parametric_pulse", "t0": 1568, "ch": "d86", "label": "CR90m_d86_u197", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.02485821845580124, -0.0005939382766298686], "duration": 1248, "sigma": 64, "width": 992}}, {"name": "fc", "t0": 2816, "ch": "d86", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2816, "ch": "d86", "label": "X90p_d86", "pulse_shape": "drag", "parameters": {"amp": [0.09620749342851234, 0.001736389081355557], "beta": 0.07944776716149475, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d87", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d87", "label": "X90p_d87", "pulse_shape": "drag", "parameters": {"amp": [0.09540118268366199, 0.001353740845194476], "beta": -1.3468689009116281, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1408, "ch": "d87", "label": "Xp_d87", "pulse_shape": "drag", "parameters": {"amp": [0.19002126407755132, 0.0], "beta": -1.3581246798010616, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2816, "ch": "d87", "label": "Y90m_d87", "pulse_shape": "drag", "parameters": {"amp": [0.0013537408451944624, -0.09540118268366199], "beta": -1.3468689009116281, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u194", "phase": -3.141592653589793}, {"name": "fc", "t0": 2816, "ch": "u194", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u196", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u197", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u197", "label": "CR90p_u197", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.01130426301828431, -0.10348198445403374], "duration": 1248, "sigma": 64, "width": 992}}, {"name": "parametric_pulse", "t0": 1568, "ch": "u197", "label": "CR90m_u197", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.011304263018284298, 0.10348198445403374], "duration": 1248, "sigma": 64, "width": 992}}, {"name": "fc", "t0": 2816, "ch": "u197", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u200", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u210", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [87, 86], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d86", "label": "X90p_d86", "pulse_shape": "drag", "parameters": {"amp": [0.09620749342851234, 0.001736389081355557], "beta": 0.07944776716149475, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d86", "label": "CR90p_d86_u197", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02485821845580124, 0.0005939382766298716], "duration": 1248, "sigma": 64, "width": 992}}, {"name": "parametric_pulse", "t0": 1568, "ch": "d86", "label": "CR90m_d86_u197", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.02485821845580124, -0.0005939382766298686], "duration": 1248, "sigma": 64, "width": 992}}, {"name": "fc", "t0": 0, "ch": "d87", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d87", "label": "Ym_d87", "pulse_shape": "drag", "parameters": {"amp": [-3.490633992337607e-17, -0.19002126407755132], "beta": -1.3581246798010616, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1408, "ch": "d87", "label": "Xp_d87", "pulse_shape": "drag", "parameters": {"amp": [0.19002126407755132, 0.0], "beta": -1.3581246798010616, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u196", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u197", "label": "CR90p_u197", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.01130426301828431, -0.10348198445403374], "duration": 1248, "sigma": 64, "width": 992}}, {"name": "parametric_pulse", "t0": 1568, "ch": "u197", "label": "CR90m_u197", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.011304263018284298, 0.10348198445403374], "duration": 1248, "sigma": 64, "width": 992}}, {"name": "fc", "t0": 0, "ch": "u200", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u210", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [87, 88], "sequence": [{"name": "fc", "t0": 0, "ch": "d87", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d87", "label": "Ym_d87", "pulse_shape": "drag", "parameters": {"amp": [-3.490633992337607e-17, -0.19002126407755132], "beta": -1.3581246798010616, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d87", "label": "Xp_d87", "pulse_shape": "drag", "parameters": {"amp": [0.19002126407755132, 0.0], "beta": -1.3581246798010616, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d88", "label": "X90p_d88", "pulse_shape": "drag", "parameters": {"amp": [0.12250181382326165, 0.0007941507626496026], "beta": 1.2432618822145132, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d88", "label": "CR90p_d88_u198", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05035701343516787, 0.001090203963762919], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d88", "label": "CR90m_d88_u198", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05035701343516787, -0.0010902039637629129], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "u196", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u198", "label": "CR90p_u198", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.11671172785536288, 0.21657930880760334], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u198", "label": "CR90m_u198", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.11671172785536285, -0.21657930880760337], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "u200", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u210", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [87, 93], "sequence": [{"name": "fc", "t0": 0, "ch": "d87", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d87", "label": "Y90p_d87", "pulse_shape": "drag", "parameters": {"amp": [-0.001353740845194474, 0.09540118268366199], "beta": -1.3468689009116281, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d87", "label": "CR90p_d87_u210", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03433814393152401, 0.0011270973586679648], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 1152, "ch": "d87", "label": "CR90m_d87_u210", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03433814393152401, -0.0011270973586679606], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 1984, "ch": "d87", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1984, "ch": "d87", "label": "X90p_d87", "pulse_shape": "drag", "parameters": {"amp": [0.09540118268366199, 0.001353740845194476], "beta": -1.3468689009116281, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d93", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d93", "label": "X90p_d93", "pulse_shape": "drag", "parameters": {"amp": [0.10230879838953898, 0.00040432861161719105], "beta": -0.36095013350960314, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 992, "ch": "d93", "label": "Xp_d93", "pulse_shape": "drag", "parameters": {"amp": [0.20445894820001206, 0.0], "beta": -0.39816060042008256, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1984, "ch": "d93", "label": "Y90m_d93", "pulse_shape": "drag", "parameters": {"amp": [0.000404328611617205, -0.10230879838953898], "beta": -0.36095013350960314, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u196", "phase": -3.141592653589793}, {"name": "fc", "t0": 1984, "ch": "u196", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u199", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u200", "phase": -3.141592653589793}, {"name": "fc", "t0": 1984, "ch": "u200", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u210", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u210", "label": "CR90p_u210", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.14509510436710293, 0.22527856018638592], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 1152, "ch": "u210", "label": "CR90m_u210", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.14509510436710296, -0.2252785601863859], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 1984, "ch": "u210", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u241", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [88, 87], "sequence": [{"name": "fc", "t0": 0, "ch": "d87", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d87", "label": "X90p_d87", "pulse_shape": "drag", "parameters": {"amp": [0.09540118268366199, 0.001353740845194476], "beta": -1.3468689009116281, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d87", "label": "Xp_d87", "pulse_shape": "drag", "parameters": {"amp": [0.19002126407755132, 0.0], "beta": -1.3581246798010616, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1920, "ch": "d87", "label": "Y90m_d87", "pulse_shape": "drag", "parameters": {"amp": [0.0013537408451944624, -0.09540118268366199], "beta": -1.3468689009116281, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d88", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d88", "label": "Y90p_d88", "pulse_shape": "drag", "parameters": {"amp": [-0.0007941507626496026, 0.12250181382326165], "beta": 1.2432618822145132, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d88", "label": "CR90p_d88_u198", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05035701343516787, 0.001090203963762919], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d88", "label": "CR90m_d88_u198", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05035701343516787, -0.0010902039637629129], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "d88", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1920, "ch": "d88", "label": "X90p_d88", "pulse_shape": "drag", "parameters": {"amp": [0.12250181382326165, 0.0007941507626496026], "beta": 1.2432618822145132, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u196", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u198", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u198", "label": "CR90p_u198", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.11671172785536288, 0.21657930880760334], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u198", "label": "CR90m_u198", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.11671172785536285, -0.21657930880760337], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "u198", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u200", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u203", "phase": -3.141592653589793}, {"name": "fc", "t0": 1920, "ch": "u203", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u210", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [88, 89], "sequence": [{"name": "fc", "t0": 0, "ch": "d88", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d88", "label": "Ym_d88", "pulse_shape": "drag", "parameters": {"amp": [-4.5075336057819714e-17, -0.24537870069532386], "beta": 1.1892984033939984, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1200, "ch": "d88", "label": "Xp_d88", "pulse_shape": "drag", "parameters": {"amp": [0.24537870069532386, 0.0], "beta": 1.1892984033939984, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d89", "label": "X90p_d89", "pulse_shape": "drag", "parameters": {"amp": [0.09726740528530739, 0.0009725962114104623], "beta": 0.8053259211720791, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d89", "label": "CR90p_d89_u201", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.030066467960298788, 0.0007910279576854016], "duration": 1040, "sigma": 64, "width": 784}}, {"name": "parametric_pulse", "t0": 1360, "ch": "d89", "label": "CR90m_d89_u201", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.030066467960298788, -0.0007910279576853979], "duration": 1040, "sigma": 64, "width": 784}}, {"name": "fc", "t0": 0, "ch": "u198", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u201", "label": "CR90p_u201", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.29907565617967613, 0.11137216280439989], "duration": 1040, "sigma": 64, "width": 784}}, {"name": "parametric_pulse", "t0": 1360, "ch": "u201", "label": "CR90m_u201", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.29907565617967613, -0.11137216280439985], "duration": 1040, "sigma": 64, "width": 784}}, {"name": "fc", "t0": 0, "ch": "u203", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [89, 74], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d74", "label": "X90p_d74", "pulse_shape": "drag", "parameters": {"amp": [0.1198761178291242, 0.000977520844465389], "beta": -0.15100947323751712, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d74", "label": "CR90p_d74_u202", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05595382355156643, 0.0014542153615567056], "duration": 704, "sigma": 64, "width": 448}}, {"name": "parametric_pulse", "t0": 1024, "ch": "d74", "label": "CR90m_d74_u202", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05595382355156643, -0.0014542153615566987], "duration": 704, "sigma": 64, "width": 448}}, {"name": "fc", "t0": 0, "ch": "d89", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d89", "label": "Ym_d89", "pulse_shape": "drag", "parameters": {"amp": [-3.557102599515987e-17, -0.1936396465218968], "beta": 0.7702300337344413, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 864, "ch": "d89", "label": "Xp_d89", "pulse_shape": "drag", "parameters": {"amp": [0.1936396465218968, 0.0], "beta": 0.7702300337344413, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u167", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u201", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u202", "label": "CR90p_u202", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0767022699586629, 0.3225329679100912], "duration": 704, "sigma": 64, "width": 448}}, {"name": "parametric_pulse", "t0": 1024, "ch": "u202", "label": "CR90m_u202", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07670226995866294, -0.3225329679100912], "duration": 704, "sigma": 64, "width": 448}}]}, {"name": "cx", "qubits": [89, 88], "sequence": [{"name": "fc", "t0": 0, "ch": "d88", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d88", "label": "X90p_d88", "pulse_shape": "drag", "parameters": {"amp": [0.12250181382326165, 0.0007941507626496026], "beta": 1.2432618822145132, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1200, "ch": "d88", "label": "Xp_d88", "pulse_shape": "drag", "parameters": {"amp": [0.24537870069532386, 0.0], "beta": 1.1892984033939984, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2400, "ch": "d88", "label": "Y90m_d88", "pulse_shape": "drag", "parameters": {"amp": [0.0007941507626495332, -0.12250181382326165], "beta": 1.2432618822145132, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d89", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d89", "label": "Y90p_d89", "pulse_shape": "drag", "parameters": {"amp": [-0.0009725962114104651, 0.09726740528530739], "beta": 0.8053259211720791, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d89", "label": "CR90p_d89_u201", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.030066467960298788, 0.0007910279576854016], "duration": 1040, "sigma": 64, "width": 784}}, {"name": "parametric_pulse", "t0": 1360, "ch": "d89", "label": "CR90m_d89_u201", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.030066467960298788, -0.0007910279576853979], "duration": 1040, "sigma": 64, "width": 784}}, {"name": "fc", "t0": 2400, "ch": "d89", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2400, "ch": "d89", "label": "X90p_d89", "pulse_shape": "drag", "parameters": {"amp": [0.09726740528530739, 0.0009725962114104623], "beta": 0.8053259211720791, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u167", "phase": -3.141592653589793}, {"name": "fc", "t0": 2400, "ch": "u167", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u198", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u201", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u201", "label": "CR90p_u201", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.29907565617967613, 0.11137216280439989], "duration": 1040, "sigma": 64, "width": 784}}, {"name": "parametric_pulse", "t0": 1360, "ch": "u201", "label": "CR90m_u201", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.29907565617967613, -0.11137216280439985], "duration": 1040, "sigma": 64, "width": 784}}, {"name": "fc", "t0": 2400, "ch": "u201", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u203", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [90, 75], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d75", "label": "X90p_d75", "pulse_shape": "drag", "parameters": {"amp": [0.10513108234978502, -9.860245197807804e-05], "beta": 1.9938042604922348, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d75", "label": "CR90p_d75_u204", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04763357671213976, -0.0022164222553254123], "duration": 768, "sigma": 64, "width": 512}}, {"name": "parametric_pulse", "t0": 1088, "ch": "d75", "label": "CR90m_d75_u204", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04763357671213976, 0.002216422255325418], "duration": 768, "sigma": 64, "width": 512}}, {"name": "fc", "t0": 0, "ch": "d90", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d90", "label": "Ym_d90", "pulse_shape": "drag", "parameters": {"amp": [-3.561179481974138e-17, -0.1938615816660265], "beta": 2.735915636805241, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 928, "ch": "d90", "label": "Xp_d90", "pulse_shape": "drag", "parameters": {"amp": [0.1938615816660265, 0.0], "beta": 2.735915636805241, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u169", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u204", "label": "CR90p_u204", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.15074636973003705, 0.1562673720112814], "duration": 768, "sigma": 64, "width": 512}}, {"name": "parametric_pulse", "t0": 1088, "ch": "u204", "label": "CR90m_u204", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.15074636973003708, -0.15626737201128138], "duration": 768, "sigma": 64, "width": 512}}, {"name": "fc", "t0": 0, "ch": "u212", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [90, 94], "sequence": [{"name": "fc", "t0": 0, "ch": "d90", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d90", "label": "Ym_d90", "pulse_shape": "drag", "parameters": {"amp": [-3.561179481974138e-17, -0.1938615816660265], "beta": 2.735915636805241, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 832, "ch": "d90", "label": "Xp_d90", "pulse_shape": "drag", "parameters": {"amp": [0.1938615816660265, 0.0], "beta": 2.735915636805241, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d94", "label": "X90p_d94", "pulse_shape": "drag", "parameters": {"amp": [0.08971516334025903, -0.00044448104660772765], "beta": 2.460717547562178, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d94", "label": "CR90p_d94_u205", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04447370646471114, -0.0013891676687168852], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "d94", "label": "CR90m_d94_u205", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04447370646471114, 0.0013891676687168906], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 0, "ch": "u169", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u205", "label": "CR90p_u205", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2401596455293127, 0.03715182519993906], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "u205", "label": "CR90m_u205", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2401596455293127, -0.037151825199939086], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 0, "ch": "u212", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [91, 79], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d79", "label": "X90p_d79", "pulse_shape": "drag", "parameters": {"amp": [0.09696160423316746, 0.0006260748978533891], "beta": 1.114335770860557, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d79", "label": "CR90p_d79_u206", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04058577889062387, 0.002104454762834204], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "d79", "label": "CR90m_d79_u206", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04058577889062387, -0.0021044547628341994], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 0, "ch": "d91", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d91", "label": "Ym_d91", "pulse_shape": "drag", "parameters": {"amp": [-3.6908590192043596e-17, -0.20092100687175435], "beta": 1.483548874665953, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 912, "ch": "d91", "label": "Xp_d91", "pulse_shape": "drag", "parameters": {"amp": [0.20092100687175435, 0.0], "beta": 1.483548874665953, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u179", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u206", "label": "CR90p_u206", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1434710456119989, -0.05559552705502408], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "u206", "label": "CR90m_u206", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1434710456119989, 0.05559552705502406], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 0, "ch": "u221", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [91, 98], "sequence": [{"name": "fc", "t0": 0, "ch": "d91", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d91", "label": "Ym_d91", "pulse_shape": "drag", "parameters": {"amp": [-3.6908590192043596e-17, -0.20092100687175435], "beta": 1.483548874665953, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 944, "ch": "d91", "label": "Xp_d91", "pulse_shape": "drag", "parameters": {"amp": [0.20092100687175435, 0.0], "beta": 1.483548874665953, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d98", "label": "X90p_d98", "pulse_shape": "drag", "parameters": {"amp": [0.10218423827643879, 0.0018282182637454594], "beta": -1.5997615707595416, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d98", "label": "CR90p_d98_u207", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.038379523932772316, 0.0007512499131379693], "duration": 784, "sigma": 64, "width": 528}}, {"name": "parametric_pulse", "t0": 1104, "ch": "d98", "label": "CR90m_d98_u207", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.038379523932772316, -0.0007512499131379646], "duration": 784, "sigma": 64, "width": 528}}, {"name": "fc", "t0": 0, "ch": "u179", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u207", "label": "CR90p_u207", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.18662152241626387, 0.19785622748532508], "duration": 784, "sigma": 64, "width": 528}}, {"name": "parametric_pulse", "t0": 1104, "ch": "u207", "label": "CR90m_u207", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1866215224162639, -0.19785622748532505], "duration": 784, "sigma": 64, "width": 528}}, {"name": "fc", "t0": 0, "ch": "u221", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [92, 83], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d83", "label": "X90p_d83", "pulse_shape": "drag", "parameters": {"amp": [0.11744434732299569, 0.0033816411028132964], "beta": -2.4411666847517735, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d83", "label": "CR90p_d83_u208", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05014357667429161, 0.0035530662887827383], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "d83", "label": "CR90m_d83_u208", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05014357667429161, -0.0035530662887827322], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 0, "ch": "d92", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d92", "label": "Ym_d92", "pulse_shape": "drag", "parameters": {"amp": [-3.393923918926831e-17, -0.18475661288842973], "beta": -0.2637105605238698, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 912, "ch": "d92", "label": "Xp_d92", "pulse_shape": "drag", "parameters": {"amp": [0.18475661288842973, 0.0], "beta": -0.2637105605238698, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u189", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u208", "label": "CR90p_u208", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.10863215946298939, -0.22058987534869823], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "u208", "label": "CR90m_u208", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10863215946298936, 0.22058987534869823], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 0, "ch": "u231", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [92, 102], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d102", "label": "X90p_d102", "pulse_shape": "drag", "parameters": {"amp": [0.09280782807052618, 0.00012725154288438745], "beta": 1.7621621418459679, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d102", "label": "CR90p_d102_u209", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02819424739837163, 0.00042641012420197017], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "parametric_pulse", "t0": 1376, "ch": "d102", "label": "CR90m_d102_u209", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.02819424739837163, -0.0004264101242019667], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "fc", "t0": 0, "ch": "d92", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d92", "label": "Ym_d92", "pulse_shape": "drag", "parameters": {"amp": [-3.393923918926831e-17, -0.18475661288842973], "beta": -0.2637105605238698, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1216, "ch": "d92", "label": "Xp_d92", "pulse_shape": "drag", "parameters": {"amp": [0.18475661288842973, 0.0], "beta": -0.2637105605238698, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u189", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u209", "label": "CR90p_u209", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.17931403679234717, 0.1362443305177181], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "parametric_pulse", "t0": 1376, "ch": "u209", "label": "CR90m_u209", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.17931403679234714, -0.13624433051771812], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "fc", "t0": 0, "ch": "u231", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [93, 87], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d87", "label": "X90p_d87", "pulse_shape": "drag", "parameters": {"amp": [0.09540118268366199, 0.001353740845194476], "beta": -1.3468689009116281, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d87", "label": "CR90p_d87_u210", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03433814393152401, 0.0011270973586679648], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 1152, "ch": "d87", "label": "CR90m_d87_u210", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03433814393152401, -0.0011270973586679606], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 0, "ch": "d93", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d93", "label": "Ym_d93", "pulse_shape": "drag", "parameters": {"amp": [-3.755849947052689e-17, -0.20445894820001206], "beta": -0.39816060042008256, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 992, "ch": "d93", "label": "Xp_d93", "pulse_shape": "drag", "parameters": {"amp": [0.20445894820001206, 0.0], "beta": -0.39816060042008256, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u199", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u210", "label": "CR90p_u210", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.14509510436710293, 0.22527856018638592], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 1152, "ch": "u210", "label": "CR90m_u210", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.14509510436710296, -0.2252785601863859], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 0, "ch": "u241", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [93, 106], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d106", "label": "X90p_d106", "pulse_shape": "drag", "parameters": {"amp": [0.2340725571848802, 0.000882118180690507], "beta": 1.3163761456265402, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d106", "label": "CR90p_d106_u211", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09308877592716634, -0.0011508040154974755], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 1152, "ch": "d106", "label": "CR90m_d106_u211", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.09308877592716634, 0.001150804015497487], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 0, "ch": "d93", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d93", "label": "Ym_d93", "pulse_shape": "drag", "parameters": {"amp": [-3.755849947052689e-17, -0.20445894820001206], "beta": -0.39816060042008256, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 992, "ch": "d93", "label": "Xp_d93", "pulse_shape": "drag", "parameters": {"amp": [0.20445894820001206, 0.0], "beta": -0.39816060042008256, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u199", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u211", "label": "CR90p_u211", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3004450891946286, 0.13854613738889088], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 1152, "ch": "u211", "label": "CR90m_u211", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3004450891946286, -0.13854613738889085], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 0, "ch": "u241", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [94, 90], "sequence": [{"name": "fc", "t0": 0, "ch": "d90", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d90", "label": "X90p_d90", "pulse_shape": "drag", "parameters": {"amp": [0.09743303031530948, -0.0006859479590268138], "beta": 2.769047420942697, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 832, "ch": "d90", "label": "Xp_d90", "pulse_shape": "drag", "parameters": {"amp": [0.1938615816660265, 0.0], "beta": 2.735915636805241, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1664, "ch": "d90", "label": "Y90m_d90", "pulse_shape": "drag", "parameters": {"amp": [-0.0006859479590268495, -0.09743303031530948], "beta": 2.769047420942697, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d94", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d94", "label": "Y90p_d94", "pulse_shape": "drag", "parameters": {"amp": [0.0004444810466077245, 0.08971516334025903], "beta": 2.460717547562178, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d94", "label": "CR90p_d94_u205", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04447370646471114, -0.0013891676687168852], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "d94", "label": "CR90m_d94_u205", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04447370646471114, 0.0013891676687168906], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 1664, "ch": "d94", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1664, "ch": "d94", "label": "X90p_d94", "pulse_shape": "drag", "parameters": {"amp": [0.08971516334025903, -0.00044448104660772765], "beta": 2.460717547562178, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u169", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u205", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u205", "label": "CR90p_u205", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2401596455293127, 0.03715182519993906], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "u205", "label": "CR90m_u205", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2401596455293127, -0.037151825199939086], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 1664, "ch": "u205", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u212", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u214", "phase": -3.141592653589793}, {"name": "fc", "t0": 1664, "ch": "u214", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [94, 95], "sequence": [{"name": "fc", "t0": 0, "ch": "d94", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d94", "label": "Y90p_d94", "pulse_shape": "drag", "parameters": {"amp": [0.0004444810466077245, 0.08971516334025903], "beta": 2.460717547562178, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d94", "label": "CR90p_d94_u214", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0452972322693027, -0.0004511374982178081], "duration": 656, "sigma": 64, "width": 400}}, {"name": "parametric_pulse", "t0": 976, "ch": "d94", "label": "CR90m_d94_u214", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0452972322693027, 0.00045113749821781363], "duration": 656, "sigma": 64, "width": 400}}, {"name": "fc", "t0": 1632, "ch": "d94", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1632, "ch": "d94", "label": "X90p_d94", "pulse_shape": "drag", "parameters": {"amp": [0.08971516334025903, -0.00044448104660772765], "beta": 2.460717547562178, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d95", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d95", "label": "X90p_d95", "pulse_shape": "drag", "parameters": {"amp": [0.09848634248280833, -0.0005741240833263148], "beta": 2.63712329789596, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 816, "ch": "d95", "label": "Xp_d95", "pulse_shape": "drag", "parameters": {"amp": [0.19616201999665323, 0.0], "beta": 2.5805876794583575, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1632, "ch": "d95", "label": "Y90m_d95", "pulse_shape": "drag", "parameters": {"amp": [-0.0005741240833263528, -0.09848634248280833], "beta": 2.63712329789596, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u205", "phase": -3.141592653589793}, {"name": "fc", "t0": 1632, "ch": "u205", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u213", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u214", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u214", "label": "CR90p_u214", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0007050929773406143, 0.19547411191145522], "duration": 656, "sigma": 64, "width": 400}}, {"name": "parametric_pulse", "t0": 976, "ch": "u214", "label": "CR90m_u214", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0007050929773406383, -0.19547411191145522], "duration": 656, "sigma": 64, "width": 400}}, {"name": "fc", "t0": 1632, "ch": "u214", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u216", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [95, 94], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d94", "label": "X90p_d94", "pulse_shape": "drag", "parameters": {"amp": [0.08971516334025903, -0.00044448104660772765], "beta": 2.460717547562178, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d94", "label": "CR90p_d94_u214", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0452972322693027, -0.0004511374982178081], "duration": 656, "sigma": 64, "width": 400}}, {"name": "parametric_pulse", "t0": 976, "ch": "d94", "label": "CR90m_d94_u214", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0452972322693027, 0.00045113749821781363], "duration": 656, "sigma": 64, "width": 400}}, {"name": "fc", "t0": 0, "ch": "d95", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d95", "label": "Ym_d95", "pulse_shape": "drag", "parameters": {"amp": [-3.603437848547707e-17, -0.19616201999665323], "beta": 2.5805876794583575, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 816, "ch": "d95", "label": "Xp_d95", "pulse_shape": "drag", "parameters": {"amp": [0.19616201999665323, 0.0], "beta": 2.5805876794583575, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u213", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u214", "label": "CR90p_u214", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0007050929773406143, 0.19547411191145522], "duration": 656, "sigma": 64, "width": 400}}, {"name": "parametric_pulse", "t0": 976, "ch": "u214", "label": "CR90m_u214", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0007050929773406383, -0.19547411191145522], "duration": 656, "sigma": 64, "width": 400}}, {"name": "fc", "t0": 0, "ch": "u216", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [95, 96], "sequence": [{"name": "fc", "t0": 0, "ch": "d95", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d95", "label": "Ym_d95", "pulse_shape": "drag", "parameters": {"amp": [-3.603437848547707e-17, -0.19616201999665323], "beta": 2.5805876794583575, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 784, "ch": "d95", "label": "Xp_d95", "pulse_shape": "drag", "parameters": {"amp": [0.19616201999665323, 0.0], "beta": 2.5805876794583575, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d96", "label": "X90p_d96", "pulse_shape": "drag", "parameters": {"amp": [0.09767648357444118, 0.00047412566842150336], "beta": 1.3065160560100524, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d96", "label": "CR90p_d96_u215", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0526417708650231, -0.0003542538572852252], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "d96", "label": "CR90m_d96_u215", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0526417708650231, 0.00035425385728523164], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 0, "ch": "u213", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u215", "label": "CR90p_u215", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.22506583868933744, 0.22287726247623654], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "u215", "label": "CR90m_u215", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.22506583868933747, -0.22287726247623652], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 0, "ch": "u216", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [96, 95], "sequence": [{"name": "fc", "t0": 0, "ch": "d95", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d95", "label": "X90p_d95", "pulse_shape": "drag", "parameters": {"amp": [0.09848634248280833, -0.0005741240833263148], "beta": 2.63712329789596, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 784, "ch": "d95", "label": "Xp_d95", "pulse_shape": "drag", "parameters": {"amp": [0.19616201999665323, 0.0], "beta": 2.5805876794583575, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1568, "ch": "d95", "label": "Y90m_d95", "pulse_shape": "drag", "parameters": {"amp": [-0.0005741240833263528, -0.09848634248280833], "beta": 2.63712329789596, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d96", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d96", "label": "Y90p_d96", "pulse_shape": "drag", "parameters": {"amp": [-0.0004741256684215076, 0.09767648357444118], "beta": 1.3065160560100524, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d96", "label": "CR90p_d96_u215", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0526417708650231, -0.0003542538572852252], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "d96", "label": "CR90m_d96_u215", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0526417708650231, 0.00035425385728523164], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 1568, "ch": "d96", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1568, "ch": "d96", "label": "X90p_d96", "pulse_shape": "drag", "parameters": {"amp": [0.09767648357444118, 0.00047412566842150336], "beta": 1.3065160560100524, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u213", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u215", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u215", "label": "CR90p_u215", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.22506583868933744, 0.22287726247623654], "duration": 624, "sigma": 64, "width": 368}}, {"name": "parametric_pulse", "t0": 944, "ch": "u215", "label": "CR90m_u215", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.22506583868933747, -0.22287726247623652], "duration": 624, "sigma": 64, "width": 368}}, {"name": "fc", "t0": 1568, "ch": "u215", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u216", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u219", "phase": -3.141592653589793}, {"name": "fc", "t0": 1568, "ch": "u219", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u248", "phase": -3.141592653589793}, {"name": "fc", "t0": 1568, "ch": "u248", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [96, 97], "sequence": [{"name": "fc", "t0": 0, "ch": "d96", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d96", "label": "Ym_d96", "pulse_shape": "drag", "parameters": {"amp": [-3.559302417316357e-17, -0.19375939902533434], "beta": 1.2979133549753845, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 816, "ch": "d96", "label": "Xp_d96", "pulse_shape": "drag", "parameters": {"amp": [0.19375939902533434, 0.0], "beta": 1.2979133549753845, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d97", "label": "X90p_d97", "pulse_shape": "drag", "parameters": {"amp": [0.0957320722288601, 0.0012289531972143827], "beta": 0.41998562836761755, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d97", "label": "CR90p_d97_u217", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.049644187667259934, 0.0011401844862341261], "duration": 656, "sigma": 64, "width": 400}}, {"name": "parametric_pulse", "t0": 976, "ch": "d97", "label": "CR90m_d97_u217", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.049644187667259934, -0.00114018448623412], "duration": 656, "sigma": 64, "width": 400}}, {"name": "fc", "t0": 0, "ch": "u215", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u217", "label": "CR90p_u217", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.20925638769432536, 0.3654936474030647], "duration": 656, "sigma": 64, "width": 400}}, {"name": "parametric_pulse", "t0": 976, "ch": "u217", "label": "CR90m_u217", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2092563876943253, -0.3654936474030647], "duration": 656, "sigma": 64, "width": 400}}, {"name": "fc", "t0": 0, "ch": "u219", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u248", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [96, 109], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d109", "label": "X90p_d109", "pulse_shape": "drag", "parameters": {"amp": [0.19207425632704692, -0.14688495849428293], "beta": -24.17131021666903, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d109", "label": "CR90p_d109_u218", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0372456624763039, 0.0], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "d109", "label": "CR90m_d109_u218", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0372456624763039, 4.561278133372825e-18], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 0, "ch": "d96", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d96", "label": "Ym_d96", "pulse_shape": "drag", "parameters": {"amp": [-3.559302417316357e-17, -0.19375939902533434], "beta": 1.2979133549753845, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 800, "ch": "d96", "label": "Xp_d96", "pulse_shape": "drag", "parameters": {"amp": [0.19375939902533434, 0.0], "beta": 1.2979133549753845, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u215", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u218", "label": "CR90p_u218", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.9886490595268318, 0.15024325973803626], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "u218", "label": "CR90m_u218", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.9886490595268318, -0.1502432597380362], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 0, "ch": "u219", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u248", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [97, 96], "sequence": [{"name": "fc", "t0": 0, "ch": "d96", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d96", "label": "X90p_d96", "pulse_shape": "drag", "parameters": {"amp": [0.09767648357444118, 0.00047412566842150336], "beta": 1.3065160560100524, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 816, "ch": "d96", "label": "Xp_d96", "pulse_shape": "drag", "parameters": {"amp": [0.19375939902533434, 0.0], "beta": 1.2979133549753845, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1632, "ch": "d96", "label": "Y90m_d96", "pulse_shape": "drag", "parameters": {"amp": [0.00047412566842151735, -0.09767648357444118], "beta": 1.3065160560100524, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d97", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d97", "label": "Y90p_d97", "pulse_shape": "drag", "parameters": {"amp": [-0.001228953197214375, 0.0957320722288601], "beta": 0.41998562836761755, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d97", "label": "CR90p_d97_u217", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.049644187667259934, 0.0011401844862341261], "duration": 656, "sigma": 64, "width": 400}}, {"name": "parametric_pulse", "t0": 976, "ch": "d97", "label": "CR90m_d97_u217", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.049644187667259934, -0.00114018448623412], "duration": 656, "sigma": 64, "width": 400}}, {"name": "fc", "t0": 1632, "ch": "d97", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1632, "ch": "d97", "label": "X90p_d97", "pulse_shape": "drag", "parameters": {"amp": [0.0957320722288601, 0.0012289531972143827], "beta": 0.41998562836761755, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u215", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u217", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u217", "label": "CR90p_u217", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.20925638769432536, 0.3654936474030647], "duration": 656, "sigma": 64, "width": 400}}, {"name": "parametric_pulse", "t0": 976, "ch": "u217", "label": "CR90m_u217", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2092563876943253, -0.3654936474030647], "duration": 656, "sigma": 64, "width": 400}}, {"name": "fc", "t0": 1632, "ch": "u217", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u219", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u222", "phase": -3.141592653589793}, {"name": "fc", "t0": 1632, "ch": "u222", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u248", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [97, 98], "sequence": [{"name": "fc", "t0": 0, "ch": "d97", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d97", "label": "Ym_d97", "pulse_shape": "drag", "parameters": {"amp": [-3.500616457402387e-17, -0.1905646841652441], "beta": 0.41335027143071795, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2064, "ch": "d97", "label": "Xp_d97", "pulse_shape": "drag", "parameters": {"amp": [0.1905646841652441, 0.0], "beta": 0.41335027143071795, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d98", "label": "X90p_d98", "pulse_shape": "drag", "parameters": {"amp": [0.10218423827643879, 0.0018282182637454594], "beta": -1.5997615707595416, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d98", "label": "CR90p_d98_u220", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.01443292851820027, 0.0003839284730244503], "duration": 1904, "sigma": 64, "width": 1648}}, {"name": "parametric_pulse", "t0": 2224, "ch": "d98", "label": "CR90m_d98_u220", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.01443292851820027, -0.0003839284730244485], "duration": 1904, "sigma": 64, "width": 1648}}, {"name": "fc", "t0": 0, "ch": "u217", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u220", "label": "CR90p_u220", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.08294050783868326, 0.040915651891999964], "duration": 1904, "sigma": 64, "width": 1648}}, {"name": "parametric_pulse", "t0": 2224, "ch": "u220", "label": "CR90m_u220", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.08294050783868326, -0.04091565189199996], "duration": 1904, "sigma": 64, "width": 1648}}, {"name": "fc", "t0": 0, "ch": "u222", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [98, 91], "sequence": [{"name": "fc", "t0": 0, "ch": "d91", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d91", "label": "X90p_d91", "pulse_shape": "drag", "parameters": {"amp": [0.10107236724205125, -0.0002966579815657475], "beta": 1.427438470869819, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 944, "ch": "d91", "label": "Xp_d91", "pulse_shape": "drag", "parameters": {"amp": [0.20092100687175435, 0.0], "beta": 1.483548874665953, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1888, "ch": "d91", "label": "Y90m_d91", "pulse_shape": "drag", "parameters": {"amp": [-0.00029665798156580105, -0.10107236724205125], "beta": 1.427438470869819, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d98", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d98", "label": "Y90p_d98", "pulse_shape": "drag", "parameters": {"amp": [-0.001828218263745443, 0.10218423827643879], "beta": -1.5997615707595416, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d98", "label": "CR90p_d98_u207", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.038379523932772316, 0.0007512499131379693], "duration": 784, "sigma": 64, "width": 528}}, {"name": "parametric_pulse", "t0": 1104, "ch": "d98", "label": "CR90m_d98_u207", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.038379523932772316, -0.0007512499131379646], "duration": 784, "sigma": 64, "width": 528}}, {"name": "fc", "t0": 1888, "ch": "d98", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1888, "ch": "d98", "label": "X90p_d98", "pulse_shape": "drag", "parameters": {"amp": [0.10218423827643879, 0.0018282182637454594], "beta": -1.5997615707595416, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u179", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u207", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u207", "label": "CR90p_u207", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.18662152241626387, 0.19785622748532508], "duration": 784, "sigma": 64, "width": 528}}, {"name": "parametric_pulse", "t0": 1104, "ch": "u207", "label": "CR90m_u207", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1866215224162639, -0.19785622748532505], "duration": 784, "sigma": 64, "width": 528}}, {"name": "fc", "t0": 1888, "ch": "u207", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u220", "phase": -3.141592653589793}, {"name": "fc", "t0": 1888, "ch": "u220", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u221", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u224", "phase": -3.141592653589793}, {"name": "fc", "t0": 1888, "ch": "u224", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [98, 97], "sequence": [{"name": "fc", "t0": 0, "ch": "d97", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d97", "label": "X90p_d97", "pulse_shape": "drag", "parameters": {"amp": [0.0957320722288601, 0.0012289531972143827], "beta": 0.41998562836761755, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2064, "ch": "d97", "label": "Xp_d97", "pulse_shape": "drag", "parameters": {"amp": [0.1905646841652441, 0.0], "beta": 0.41335027143071795, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 4128, "ch": "d97", "label": "Y90m_d97", "pulse_shape": "drag", "parameters": {"amp": [0.0012289531972143844, -0.0957320722288601], "beta": 0.41998562836761755, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d98", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d98", "label": "Y90p_d98", "pulse_shape": "drag", "parameters": {"amp": [-0.001828218263745443, 0.10218423827643879], "beta": -1.5997615707595416, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d98", "label": "CR90p_d98_u220", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.01443292851820027, 0.0003839284730244503], "duration": 1904, "sigma": 64, "width": 1648}}, {"name": "parametric_pulse", "t0": 2224, "ch": "d98", "label": "CR90m_d98_u220", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.01443292851820027, -0.0003839284730244485], "duration": 1904, "sigma": 64, "width": 1648}}, {"name": "fc", "t0": 4128, "ch": "d98", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 4128, "ch": "d98", "label": "X90p_d98", "pulse_shape": "drag", "parameters": {"amp": [0.10218423827643879, 0.0018282182637454594], "beta": -1.5997615707595416, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u207", "phase": -3.141592653589793}, {"name": "fc", "t0": 4128, "ch": "u207", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u217", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u220", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u220", "label": "CR90p_u220", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.08294050783868326, 0.040915651891999964], "duration": 1904, "sigma": 64, "width": 1648}}, {"name": "parametric_pulse", "t0": 2224, "ch": "u220", "label": "CR90m_u220", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.08294050783868326, -0.04091565189199996], "duration": 1904, "sigma": 64, "width": 1648}}, {"name": "fc", "t0": 4128, "ch": "u220", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u222", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u224", "phase": -3.141592653589793}, {"name": "fc", "t0": 4128, "ch": "u224", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [98, 99], "sequence": [{"name": "fc", "t0": 0, "ch": "d98", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d98", "label": "Y90p_d98", "pulse_shape": "drag", "parameters": {"amp": [-0.001828218263745443, 0.10218423827643879], "beta": -1.5997615707595416, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d98", "label": "CR90p_d98_u224", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04911537601368482, 0.007411542626047507], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "d98", "label": "CR90m_d98_u224", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04911537601368482, -0.007411542626047501], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 1664, "ch": "d98", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1664, "ch": "d98", "label": "X90p_d98", "pulse_shape": "drag", "parameters": {"amp": [0.10218423827643879, 0.0018282182637454594], "beta": -1.5997615707595416, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d99", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d99", "label": "X90p_d99", "pulse_shape": "drag", "parameters": {"amp": [0.09599416123111482, 0.0009936889738237894], "beta": -0.19096031251702314, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 832, "ch": "d99", "label": "Xp_d99", "pulse_shape": "drag", "parameters": {"amp": [0.19023319876658581, 0.0], "beta": -0.2385490869245208, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1664, "ch": "d99", "label": "Y90m_d99", "pulse_shape": "drag", "parameters": {"amp": [0.0009936889738237302, -0.09599416123111482], "beta": -0.19096031251702314, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u207", "phase": -3.141592653589793}, {"name": "fc", "t0": 1664, "ch": "u207", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u220", "phase": -3.141592653589793}, {"name": "fc", "t0": 1664, "ch": "u220", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u223", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u224", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u224", "label": "CR90p_u224", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3074750400151816, -0.13849715146510516], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "u224", "label": "CR90m_u224", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3074750400151816, 0.1384971514651052], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 1664, "ch": "u224", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u226", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [99, 98], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d98", "label": "X90p_d98", "pulse_shape": "drag", "parameters": {"amp": [0.10218423827643879, 0.0018282182637454594], "beta": -1.5997615707595416, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d98", "label": "CR90p_d98_u224", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04911537601368482, 0.007411542626047507], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "d98", "label": "CR90m_d98_u224", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04911537601368482, -0.007411542626047501], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 0, "ch": "d99", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d99", "label": "Ym_d99", "pulse_shape": "drag", "parameters": {"amp": [-3.494527169415923e-17, -0.19023319876658581], "beta": -0.2385490869245208, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 832, "ch": "d99", "label": "Xp_d99", "pulse_shape": "drag", "parameters": {"amp": [0.19023319876658581, 0.0], "beta": -0.2385490869245208, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u223", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u224", "label": "CR90p_u224", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3074750400151816, -0.13849715146510516], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "u224", "label": "CR90m_u224", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3074750400151816, 0.1384971514651052], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 0, "ch": "u226", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [99, 100], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d100", "label": "X90p_d100", "pulse_shape": "drag", "parameters": {"amp": [0.09286805059295689, -1.6278293033287982e-05], "beta": 1.5855060534313825, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d100", "label": "CR90p_d100_u225", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.019234676431160936, 0.0007345129994195085], "duration": 1488, "sigma": 64, "width": 1232}}, {"name": "parametric_pulse", "t0": 1808, "ch": "d100", "label": "CR90m_d100_u225", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.019234676431160936, -0.0007345129994195061], "duration": 1488, "sigma": 64, "width": 1232}}, {"name": "fc", "t0": 0, "ch": "d99", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d99", "label": "Ym_d99", "pulse_shape": "drag", "parameters": {"amp": [-3.494527169415923e-17, -0.19023319876658581], "beta": -0.2385490869245208, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1648, "ch": "d99", "label": "Xp_d99", "pulse_shape": "drag", "parameters": {"amp": [0.19023319876658581, 0.0], "beta": -0.2385490869245208, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u223", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u225", "label": "CR90p_u225", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.01670900289980562, 0.1467211402786008], "duration": 1488, "sigma": 64, "width": 1232}}, {"name": "parametric_pulse", "t0": 1808, "ch": "u225", "label": "CR90m_u225", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.016709002899805637, -0.1467211402786008], "duration": 1488, "sigma": 64, "width": 1232}}, {"name": "fc", "t0": 0, "ch": "u226", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [100, 99], "sequence": [{"name": "fc", "t0": 0, "ch": "d100", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d100", "label": "Y90p_d100", "pulse_shape": "drag", "parameters": {"amp": [1.6278293033291834e-05, 0.09286805059295689], "beta": 1.5855060534313825, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d100", "label": "CR90p_d100_u225", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.019234676431160936, 0.0007345129994195085], "duration": 1488, "sigma": 64, "width": 1232}}, {"name": "parametric_pulse", "t0": 1808, "ch": "d100", "label": "CR90m_d100_u225", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.019234676431160936, -0.0007345129994195061], "duration": 1488, "sigma": 64, "width": 1232}}, {"name": "fc", "t0": 3296, "ch": "d100", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 3296, "ch": "d100", "label": "X90p_d100", "pulse_shape": "drag", "parameters": {"amp": [0.09286805059295689, -1.6278293033287982e-05], "beta": 1.5855060534313825, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d99", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d99", "label": "X90p_d99", "pulse_shape": "drag", "parameters": {"amp": [0.09599416123111482, 0.0009936889738237894], "beta": -0.19096031251702314, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1648, "ch": "d99", "label": "Xp_d99", "pulse_shape": "drag", "parameters": {"amp": [0.19023319876658581, 0.0], "beta": -0.2385490869245208, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 3296, "ch": "d99", "label": "Y90m_d99", "pulse_shape": "drag", "parameters": {"amp": [0.0009936889738237302, -0.09599416123111482], "beta": -0.19096031251702314, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u223", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u225", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u225", "label": "CR90p_u225", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.01670900289980562, 0.1467211402786008], "duration": 1488, "sigma": 64, "width": 1232}}, {"name": "parametric_pulse", "t0": 1808, "ch": "u225", "label": "CR90m_u225", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.016709002899805637, -0.1467211402786008], "duration": 1488, "sigma": 64, "width": 1232}}, {"name": "fc", "t0": 3296, "ch": "u225", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u226", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u229", "phase": -3.141592653589793}, {"name": "fc", "t0": 3296, "ch": "u229", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u249", "phase": -3.141592653589793}, {"name": "fc", "t0": 3296, "ch": "u249", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [100, 101], "sequence": [{"name": "fc", "t0": 0, "ch": "d100", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d100", "label": "Y90p_d100", "pulse_shape": "drag", "parameters": {"amp": [1.6278293033291834e-05, 0.09286805059295689], "beta": 1.5855060534313825, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d100", "label": "CR90p_d100_u229", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04281621122756376, -0.00029704974060674], "duration": 704, "sigma": 64, "width": 448}}, {"name": "parametric_pulse", "t0": 1024, "ch": "d100", "label": "CR90m_d100_u229", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04281621122756376, 0.0002970497406067453], "duration": 704, "sigma": 64, "width": 448}}, {"name": "fc", "t0": 1728, "ch": "d100", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1728, "ch": "d100", "label": "X90p_d100", "pulse_shape": "drag", "parameters": {"amp": [0.09286805059295689, -1.6278293033287982e-05], "beta": 1.5855060534313825, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d101", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d101", "label": "X90p_d101", "pulse_shape": "drag", "parameters": {"amp": [0.09798289653724473, 0.0013677843278568425], "beta": 0.3050475654669881, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 864, "ch": "d101", "label": "Xp_d101", "pulse_shape": "drag", "parameters": {"amp": [0.1958845347638961, 0.0], "beta": 0.35497451754651177, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1728, "ch": "d101", "label": "Y90m_d101", "pulse_shape": "drag", "parameters": {"amp": [0.0013677843278568638, -0.09798289653724473], "beta": 0.3050475654669881, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u225", "phase": -3.141592653589793}, {"name": "fc", "t0": 1728, "ch": "u225", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u227", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u229", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u229", "label": "CR90p_u229", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.01377514442989737, 0.21859294568727994], "duration": 704, "sigma": 64, "width": 448}}, {"name": "parametric_pulse", "t0": 1024, "ch": "u229", "label": "CR90m_u229", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.013775144429897345, -0.21859294568727994], "duration": 704, "sigma": 64, "width": 448}}, {"name": "fc", "t0": 1728, "ch": "u229", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u232", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u249", "phase": -3.141592653589793}, {"name": "fc", "t0": 1728, "ch": "u249", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [100, 110], "sequence": [{"name": "fc", "t0": 0, "ch": "d100", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d100", "label": "Y90p_d100", "pulse_shape": "drag", "parameters": {"amp": [1.6278293033291834e-05, 0.09286805059295689], "beta": 1.5855060534313825, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d100", "label": "CR90p_d100_u249", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.01805993096797078, 0.0006457121050452622], "duration": 1632, "sigma": 64, "width": 1376}}, {"name": "parametric_pulse", "t0": 1952, "ch": "d100", "label": "CR90m_d100_u249", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.01805993096797078, -0.00064571210504526], "duration": 1632, "sigma": 64, "width": 1376}}, {"name": "fc", "t0": 3584, "ch": "d100", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 3584, "ch": "d100", "label": "X90p_d100", "pulse_shape": "drag", "parameters": {"amp": [0.09286805059295689, -1.6278293033287982e-05], "beta": 1.5855060534313825, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d110", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d110", "label": "X90p_d110", "pulse_shape": "drag", "parameters": {"amp": [0.09405707609750691, 0.0006320498272647392], "beta": 0.5112846912623613, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1792, "ch": "d110", "label": "Xp_d110", "pulse_shape": "drag", "parameters": {"amp": [0.18715248754184835, 0.0], "beta": 0.5284865854010989, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 3584, "ch": "d110", "label": "Y90m_d110", "pulse_shape": "drag", "parameters": {"amp": [0.0006320498272647295, -0.09405707609750691], "beta": 0.5112846912623613, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u225", "phase": -3.141592653589793}, {"name": "fc", "t0": 3584, "ch": "u225", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u228", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u229", "phase": -3.141592653589793}, {"name": "fc", "t0": 3584, "ch": "u229", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u249", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u249", "label": "CR90p_u249", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0037203215514044095, -0.07737968416628876], "duration": 1632, "sigma": 64, "width": 1376}}, {"name": "parametric_pulse", "t0": 1952, "ch": "u249", "label": "CR90m_u249", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.003720321551404419, 0.07737968416628876], "duration": 1632, "sigma": 64, "width": 1376}}, {"name": "fc", "t0": 3584, "ch": "u249", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u264", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [101, 100], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d100", "label": "X90p_d100", "pulse_shape": "drag", "parameters": {"amp": [0.09286805059295689, -1.6278293033287982e-05], "beta": 1.5855060534313825, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d100", "label": "CR90p_d100_u229", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04281621122756376, -0.00029704974060674], "duration": 704, "sigma": 64, "width": 448}}, {"name": "parametric_pulse", "t0": 1024, "ch": "d100", "label": "CR90m_d100_u229", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04281621122756376, 0.0002970497406067453], "duration": 704, "sigma": 64, "width": 448}}, {"name": "fc", "t0": 0, "ch": "d101", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d101", "label": "Ym_d101", "pulse_shape": "drag", "parameters": {"amp": [-3.5983405275161067e-17, -0.1958845347638961], "beta": 0.35497451754651177, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 864, "ch": "d101", "label": "Xp_d101", "pulse_shape": "drag", "parameters": {"amp": [0.1958845347638961, 0.0], "beta": 0.35497451754651177, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u227", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u229", "label": "CR90p_u229", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.01377514442989737, 0.21859294568727994], "duration": 704, "sigma": 64, "width": 448}}, {"name": "parametric_pulse", "t0": 1024, "ch": "u229", "label": "CR90m_u229", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.013775144429897345, -0.21859294568727994], "duration": 704, "sigma": 64, "width": 448}}, {"name": "fc", "t0": 0, "ch": "u232", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [101, 102], "sequence": [{"name": "fc", "t0": 0, "ch": "d101", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d101", "label": "Ym_d101", "pulse_shape": "drag", "parameters": {"amp": [-3.5983405275161067e-17, -0.1958845347638961], "beta": 0.35497451754651177, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 816, "ch": "d101", "label": "Xp_d101", "pulse_shape": "drag", "parameters": {"amp": [0.1958845347638961, 0.0], "beta": 0.35497451754651177, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d102", "label": "X90p_d102", "pulse_shape": "drag", "parameters": {"amp": [0.09280782807052618, 0.00012725154288438745], "beta": 1.7621621418459679, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d102", "label": "CR90p_d102_u230", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04786773524029457, -0.00017875117867463682], "duration": 656, "sigma": 64, "width": 400}}, {"name": "parametric_pulse", "t0": 976, "ch": "d102", "label": "CR90m_d102_u230", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04786773524029457, 0.00017875117867464268], "duration": 656, "sigma": 64, "width": 400}}, {"name": "fc", "t0": 0, "ch": "u227", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u230", "label": "CR90p_u230", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2708261364897573, 0.29335620329756623], "duration": 656, "sigma": 64, "width": 400}}, {"name": "parametric_pulse", "t0": 976, "ch": "u230", "label": "CR90m_u230", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.27082613648975723, -0.2933562032975663], "duration": 656, "sigma": 64, "width": 400}}, {"name": "fc", "t0": 0, "ch": "u232", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [102, 92], "sequence": [{"name": "fc", "t0": 0, "ch": "d102", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d102", "label": "Y90p_d102", "pulse_shape": "drag", "parameters": {"amp": [-0.00012725154288438574, 0.09280782807052618], "beta": 1.7621621418459679, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d102", "label": "CR90p_d102_u209", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02819424739837163, 0.00042641012420197017], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "parametric_pulse", "t0": 1376, "ch": "d102", "label": "CR90m_d102_u209", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.02819424739837163, -0.0004264101242019667], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "fc", "t0": 2432, "ch": "d102", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2432, "ch": "d102", "label": "X90p_d102", "pulse_shape": "drag", "parameters": {"amp": [0.09280782807052618, 0.00012725154288438745], "beta": 1.7621621418459679, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d92", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d92", "label": "X90p_d92", "pulse_shape": "drag", "parameters": {"amp": [0.09282376624555454, 0.0007908016478509532], "beta": -0.2265881189016976, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1216, "ch": "d92", "label": "Xp_d92", "pulse_shape": "drag", "parameters": {"amp": [0.18475661288842973, 0.0], "beta": -0.2637105605238698, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2432, "ch": "d92", "label": "Y90m_d92", "pulse_shape": "drag", "parameters": {"amp": [0.0007908016478508987, -0.09282376624555454], "beta": -0.2265881189016976, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u189", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u209", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u209", "label": "CR90p_u209", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.17931403679234717, 0.1362443305177181], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "parametric_pulse", "t0": 1376, "ch": "u209", "label": "CR90m_u209", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.17931403679234714, -0.13624433051771812], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "fc", "t0": 2432, "ch": "u209", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u230", "phase": -3.141592653589793}, {"name": "fc", "t0": 2432, "ch": "u230", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u231", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u234", "phase": -3.141592653589793}, {"name": "fc", "t0": 2432, "ch": "u234", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [102, 101], "sequence": [{"name": "fc", "t0": 0, "ch": "d101", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d101", "label": "X90p_d101", "pulse_shape": "drag", "parameters": {"amp": [0.09798289653724473, 0.0013677843278568425], "beta": 0.3050475654669881, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 816, "ch": "d101", "label": "Xp_d101", "pulse_shape": "drag", "parameters": {"amp": [0.1958845347638961, 0.0], "beta": 0.35497451754651177, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1632, "ch": "d101", "label": "Y90m_d101", "pulse_shape": "drag", "parameters": {"amp": [0.0013677843278568638, -0.09798289653724473], "beta": 0.3050475654669881, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d102", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d102", "label": "Y90p_d102", "pulse_shape": "drag", "parameters": {"amp": [-0.00012725154288438574, 0.09280782807052618], "beta": 1.7621621418459679, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d102", "label": "CR90p_d102_u230", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04786773524029457, -0.00017875117867463682], "duration": 656, "sigma": 64, "width": 400}}, {"name": "parametric_pulse", "t0": 976, "ch": "d102", "label": "CR90m_d102_u230", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04786773524029457, 0.00017875117867464268], "duration": 656, "sigma": 64, "width": 400}}, {"name": "fc", "t0": 1632, "ch": "d102", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1632, "ch": "d102", "label": "X90p_d102", "pulse_shape": "drag", "parameters": {"amp": [0.09280782807052618, 0.00012725154288438745], "beta": 1.7621621418459679, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u209", "phase": -3.141592653589793}, {"name": "fc", "t0": 1632, "ch": "u209", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u227", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u230", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u230", "label": "CR90p_u230", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2708261364897573, 0.29335620329756623], "duration": 656, "sigma": 64, "width": 400}}, {"name": "parametric_pulse", "t0": 976, "ch": "u230", "label": "CR90m_u230", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.27082613648975723, -0.2933562032975663], "duration": 656, "sigma": 64, "width": 400}}, {"name": "fc", "t0": 1632, "ch": "u230", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u232", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u234", "phase": -3.141592653589793}, {"name": "fc", "t0": 1632, "ch": "u234", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [102, 103], "sequence": [{"name": "fc", "t0": 0, "ch": "d102", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d102", "label": "Y90p_d102", "pulse_shape": "drag", "parameters": {"amp": [-0.00012725154288438574, 0.09280782807052618], "beta": 1.7621621418459679, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d102", "label": "CR90p_d102_u234", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.051654148383179, -0.0024394020786574367], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "d102", "label": "CR90m_d102_u234", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.051654148383179, 0.002439402078657443], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 1600, "ch": "d102", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1600, "ch": "d102", "label": "X90p_d102", "pulse_shape": "drag", "parameters": {"amp": [0.09280782807052618, 0.00012725154288438745], "beta": 1.7621621418459679, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d103", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d103", "label": "X90p_d103", "pulse_shape": "drag", "parameters": {"amp": [0.10004285606747597, 0.0001435082948910189], "beta": 0.994768299051259, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 800, "ch": "d103", "label": "Xp_d103", "pulse_shape": "drag", "parameters": {"amp": [0.1994918391492852, 0.0], "beta": 1.0259225886613978, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1600, "ch": "d103", "label": "Y90m_d103", "pulse_shape": "drag", "parameters": {"amp": [0.0001435082948909743, -0.10004285606747597], "beta": 0.994768299051259, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u209", "phase": -3.141592653589793}, {"name": "fc", "t0": 1600, "ch": "u209", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u230", "phase": -3.141592653589793}, {"name": "fc", "t0": 1600, "ch": "u230", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u233", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u234", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u234", "label": "CR90p_u234", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3185405978919419, -0.06546753906184447], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "u234", "label": "CR90m_u234", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3185405978919419, 0.0654675390618445], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 1600, "ch": "u234", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u236", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [103, 102], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d102", "label": "X90p_d102", "pulse_shape": "drag", "parameters": {"amp": [0.09280782807052618, 0.00012725154288438745], "beta": 1.7621621418459679, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d102", "label": "CR90p_d102_u234", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.051654148383179, -0.0024394020786574367], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "d102", "label": "CR90m_d102_u234", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.051654148383179, 0.002439402078657443], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 0, "ch": "d103", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d103", "label": "Ym_d103", "pulse_shape": "drag", "parameters": {"amp": [-3.6646056340528614e-17, -0.1994918391492852], "beta": 1.0259225886613978, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 800, "ch": "d103", "label": "Xp_d103", "pulse_shape": "drag", "parameters": {"amp": [0.1994918391492852, 0.0], "beta": 1.0259225886613978, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u233", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u234", "label": "CR90p_u234", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3185405978919419, -0.06546753906184447], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "u234", "label": "CR90m_u234", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3185405978919419, 0.0654675390618445], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 0, "ch": "u236", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [103, 104], "sequence": [{"name": "fc", "t0": 0, "ch": "d103", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d103", "label": "Ym_d103", "pulse_shape": "drag", "parameters": {"amp": [-3.6646056340528614e-17, -0.1994918391492852], "beta": 1.0259225886613978, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1072, "ch": "d103", "label": "Xp_d103", "pulse_shape": "drag", "parameters": {"amp": [0.1994918391492852, 0.0], "beta": 1.0259225886613978, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d104", "label": "X90p_d104", "pulse_shape": "drag", "parameters": {"amp": [0.08700777525125503, 0.0020309815836197535], "beta": -2.0467291689580347, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d104", "label": "CR90p_d104_u235", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.029787690682670447, 0.0018037306439592092], "duration": 912, "sigma": 64, "width": 656}}, {"name": "parametric_pulse", "t0": 1232, "ch": "d104", "label": "CR90m_d104_u235", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.029787690682670447, -0.0018037306439592055], "duration": 912, "sigma": 64, "width": 656}}, {"name": "fc", "t0": 0, "ch": "u233", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u235", "label": "CR90p_u235", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1579804372727787, -0.09694258782934104], "duration": 912, "sigma": 64, "width": 656}}, {"name": "parametric_pulse", "t0": 1232, "ch": "u235", "label": "CR90m_u235", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1579804372727787, 0.09694258782934102], "duration": 912, "sigma": 64, "width": 656}}, {"name": "fc", "t0": 0, "ch": "u236", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [104, 103], "sequence": [{"name": "fc", "t0": 0, "ch": "d103", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d103", "label": "X90p_d103", "pulse_shape": "drag", "parameters": {"amp": [0.10004285606747597, 0.0001435082948910189], "beta": 0.994768299051259, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1072, "ch": "d103", "label": "Xp_d103", "pulse_shape": "drag", "parameters": {"amp": [0.1994918391492852, 0.0], "beta": 1.0259225886613978, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2144, "ch": "d103", "label": "Y90m_d103", "pulse_shape": "drag", "parameters": {"amp": [0.0001435082948909743, -0.10004285606747597], "beta": 0.994768299051259, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d104", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d104", "label": "Y90p_d104", "pulse_shape": "drag", "parameters": {"amp": [-0.002030981583619742, 0.08700777525125503], "beta": -2.0467291689580347, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d104", "label": "CR90p_d104_u235", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.029787690682670447, 0.0018037306439592092], "duration": 912, "sigma": 64, "width": 656}}, {"name": "parametric_pulse", "t0": 1232, "ch": "d104", "label": "CR90m_d104_u235", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.029787690682670447, -0.0018037306439592055], "duration": 912, "sigma": 64, "width": 656}}, {"name": "fc", "t0": 2144, "ch": "d104", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2144, "ch": "d104", "label": "X90p_d104", "pulse_shape": "drag", "parameters": {"amp": [0.08700777525125503, 0.0020309815836197535], "beta": -2.0467291689580347, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u233", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u235", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u235", "label": "CR90p_u235", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1579804372727787, -0.09694258782934104], "duration": 912, "sigma": 64, "width": 656}}, {"name": "parametric_pulse", "t0": 1232, "ch": "u235", "label": "CR90m_u235", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1579804372727787, 0.09694258782934102], "duration": 912, "sigma": 64, "width": 656}}, {"name": "fc", "t0": 2144, "ch": "u235", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u236", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u239", "phase": -3.141592653589793}, {"name": "fc", "t0": 2144, "ch": "u239", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u251", "phase": -3.141592653589793}, {"name": "fc", "t0": 2144, "ch": "u251", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [104, 105], "sequence": [{"name": "fc", "t0": 0, "ch": "d104", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d104", "label": "Ym_d104", "pulse_shape": "drag", "parameters": {"amp": [-3.178071605332641e-17, -0.17300616022760404], "beta": -2.0659785937864563, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1472, "ch": "d104", "label": "Xp_d104", "pulse_shape": "drag", "parameters": {"amp": [0.17300616022760404, 0.0], "beta": -2.0659785937864563, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d105", "label": "X90p_d105", "pulse_shape": "drag", "parameters": {"amp": [0.09839388118930452, 0.0018365692163619825], "beta": -1.2455570289445705, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d105", "label": "CR90p_d105_u237", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02403541199821856, 0.0017792753762781192], "duration": 1312, "sigma": 64, "width": 1056}}, {"name": "parametric_pulse", "t0": 1632, "ch": "d105", "label": "CR90m_d105_u237", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.02403541199821856, -0.0017792753762781162], "duration": 1312, "sigma": 64, "width": 1056}}, {"name": "fc", "t0": 0, "ch": "u235", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u237", "label": "CR90p_u237", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07114251715529674, -0.17401851347456468], "duration": 1312, "sigma": 64, "width": 1056}}, {"name": "parametric_pulse", "t0": 1632, "ch": "u237", "label": "CR90m_u237", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07114251715529671, 0.17401851347456468], "duration": 1312, "sigma": 64, "width": 1056}}, {"name": "fc", "t0": 0, "ch": "u239", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u251", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [104, 111], "sequence": [{"name": "fc", "t0": 0, "ch": "d104", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d104", "label": "Y90p_d104", "pulse_shape": "drag", "parameters": {"amp": [-0.002030981583619742, 0.08700777525125503], "beta": -2.0467291689580347, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d104", "label": "CR90p_d104_u251", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03185155148882096, 0.002229727991210291], "duration": 848, "sigma": 64, "width": 592}}, {"name": "parametric_pulse", "t0": 1168, "ch": "d104", "label": "CR90m_d104_u251", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03185155148882096, -0.002229727991210287], "duration": 848, "sigma": 64, "width": 592}}, {"name": "fc", "t0": 2016, "ch": "d104", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2016, "ch": "d104", "label": "X90p_d104", "pulse_shape": "drag", "parameters": {"amp": [0.08700777525125503, 0.0020309815836197535], "beta": -2.0467291689580347, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d111", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d111", "label": "X90p_d111", "pulse_shape": "drag", "parameters": {"amp": [0.09928509819457172, 0.0026558698988240178], "beta": -2.6212470204846188, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1008, "ch": "d111", "label": "Xp_d111", "pulse_shape": "drag", "parameters": {"amp": [0.1981259032779367, 0.0], "beta": -2.676305761695517, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2016, "ch": "d111", "label": "Y90m_d111", "pulse_shape": "drag", "parameters": {"amp": [0.002655869898823981, -0.09928509819457172], "beta": -2.6212470204846188, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u235", "phase": -3.141592653589793}, {"name": "fc", "t0": 2016, "ch": "u235", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u238", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u239", "phase": -3.141592653589793}, {"name": "fc", "t0": 2016, "ch": "u239", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u251", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u251", "label": "CR90p_u251", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07423865279466707, 0.12561683596212814], "duration": 848, "sigma": 64, "width": 592}}, {"name": "parametric_pulse", "t0": 1168, "ch": "u251", "label": "CR90m_u251", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07423865279466706, -0.12561683596212814], "duration": 848, "sigma": 64, "width": 592}}, {"name": "fc", "t0": 2016, "ch": "u251", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u273", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [105, 104], "sequence": [{"name": "fc", "t0": 0, "ch": "d104", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d104", "label": "X90p_d104", "pulse_shape": "drag", "parameters": {"amp": [0.08700777525125503, 0.0020309815836197535], "beta": -2.0467291689580347, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1472, "ch": "d104", "label": "Xp_d104", "pulse_shape": "drag", "parameters": {"amp": [0.17300616022760404, 0.0], "beta": -2.0659785937864563, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2944, "ch": "d104", "label": "Y90m_d104", "pulse_shape": "drag", "parameters": {"amp": [0.00203098158361977, -0.08700777525125503], "beta": -2.0467291689580347, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d105", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d105", "label": "Y90p_d105", "pulse_shape": "drag", "parameters": {"amp": [-0.0018365692163619792, 0.09839388118930452], "beta": -1.2455570289445705, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d105", "label": "CR90p_d105_u237", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02403541199821856, 0.0017792753762781192], "duration": 1312, "sigma": 64, "width": 1056}}, {"name": "parametric_pulse", "t0": 1632, "ch": "d105", "label": "CR90m_d105_u237", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.02403541199821856, -0.0017792753762781162], "duration": 1312, "sigma": 64, "width": 1056}}, {"name": "fc", "t0": 2944, "ch": "d105", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2944, "ch": "d105", "label": "X90p_d105", "pulse_shape": "drag", "parameters": {"amp": [0.09839388118930452, 0.0018365692163619825], "beta": -1.2455570289445705, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u235", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u237", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u237", "label": "CR90p_u237", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07114251715529674, -0.17401851347456468], "duration": 1312, "sigma": 64, "width": 1056}}, {"name": "parametric_pulse", "t0": 1632, "ch": "u237", "label": "CR90m_u237", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07114251715529671, 0.17401851347456468], "duration": 1312, "sigma": 64, "width": 1056}}, {"name": "fc", "t0": 2944, "ch": "u237", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u239", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u242", "phase": -3.141592653589793}, {"name": "fc", "t0": 2944, "ch": "u242", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u251", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [105, 106], "sequence": [{"name": "fc", "t0": 0, "ch": "d105", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d105", "label": "Y90p_d105", "pulse_shape": "drag", "parameters": {"amp": [-0.0018365692163619792, 0.09839388118930452], "beta": -1.2455570289445705, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d105", "label": "CR90p_d105_u242", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.048270949527674425, 0.002959226292200444], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "d105", "label": "CR90m_d105_u242", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.048270949527674425, -0.002959226292200438], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 1664, "ch": "d105", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1664, "ch": "d105", "label": "X90p_d105", "pulse_shape": "drag", "parameters": {"amp": [0.09839388118930452, 0.0018365692163619825], "beta": -1.2455570289445705, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d106", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d106", "label": "X90p_d106", "pulse_shape": "drag", "parameters": {"amp": [0.2340725571848802, 0.000882118180690507], "beta": 1.3163761456265402, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 832, "ch": "d106", "label": "Xp_d106", "pulse_shape": "drag", "parameters": {"amp": [0.4711996739728987, 0.0], "beta": 1.511559332849906, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1664, "ch": "d106", "label": "Y90m_d106", "pulse_shape": "drag", "parameters": {"amp": [0.0008821181806904726, -0.2340725571848802], "beta": 1.3163761456265402, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u211", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u237", "phase": -3.141592653589793}, {"name": "fc", "t0": 1664, "ch": "u237", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u240", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u242", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u242", "label": "CR90p_u242", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.38981346295688185, 0.40798609332025126], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "u242", "label": "CR90m_u242", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3898134629568819, -0.4079860933202512], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 1664, "ch": "u242", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u244", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [106, 93], "sequence": [{"name": "fc", "t0": 0, "ch": "d106", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d106", "label": "Y90p_d106", "pulse_shape": "drag", "parameters": {"amp": [-0.0008821181806905012, 0.2340725571848802], "beta": 1.3163761456265402, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d106", "label": "CR90p_d106_u211", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09308877592716634, -0.0011508040154974755], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 1152, "ch": "d106", "label": "CR90m_d106_u211", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.09308877592716634, 0.001150804015497487], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 1984, "ch": "d106", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1984, "ch": "d106", "label": "X90p_d106", "pulse_shape": "drag", "parameters": {"amp": [0.2340725571848802, 0.000882118180690507], "beta": 1.3163761456265402, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d93", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d93", "label": "X90p_d93", "pulse_shape": "drag", "parameters": {"amp": [0.10230879838953898, 0.00040432861161719105], "beta": -0.36095013350960314, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 992, "ch": "d93", "label": "Xp_d93", "pulse_shape": "drag", "parameters": {"amp": [0.20445894820001206, 0.0], "beta": -0.39816060042008256, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1984, "ch": "d93", "label": "Y90m_d93", "pulse_shape": "drag", "parameters": {"amp": [0.000404328611617205, -0.10230879838953898], "beta": -0.36095013350960314, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u199", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u211", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u211", "label": "CR90p_u211", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3004450891946286, 0.13854613738889088], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 1152, "ch": "u211", "label": "CR90m_u211", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3004450891946286, -0.13854613738889085], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 1984, "ch": "u211", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u240", "phase": -3.141592653589793}, {"name": "fc", "t0": 1984, "ch": "u240", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u241", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u244", "phase": -3.141592653589793}, {"name": "fc", "t0": 1984, "ch": "u244", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [106, 105], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d105", "label": "X90p_d105", "pulse_shape": "drag", "parameters": {"amp": [0.09839388118930452, 0.0018365692163619825], "beta": -1.2455570289445705, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d105", "label": "CR90p_d105_u242", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.048270949527674425, 0.002959226292200444], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "d105", "label": "CR90m_d105_u242", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.048270949527674425, -0.002959226292200438], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 0, "ch": "d106", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d106", "label": "Ym_d106", "pulse_shape": "drag", "parameters": {"amp": [-8.6557975873528e-17, -0.4711996739728987], "beta": 1.511559332849906, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 832, "ch": "d106", "label": "Xp_d106", "pulse_shape": "drag", "parameters": {"amp": [0.4711996739728987, 0.0], "beta": 1.511559332849906, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u211", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u240", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u242", "label": "CR90p_u242", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.38981346295688185, 0.40798609332025126], "duration": 672, "sigma": 64, "width": 416}}, {"name": "parametric_pulse", "t0": 992, "ch": "u242", "label": "CR90m_u242", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3898134629568819, -0.4079860933202512], "duration": 672, "sigma": 64, "width": 416}}, {"name": "fc", "t0": 0, "ch": "u244", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [106, 107], "sequence": [{"name": "fc", "t0": 0, "ch": "d106", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d106", "label": "Y90p_d106", "pulse_shape": "drag", "parameters": {"amp": [-0.0008821181806905012, 0.2340725571848802], "beta": 1.3163761456265402, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d106", "label": "CR90p_d106_u244", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09896355989672437, -0.0004742261876444146], "duration": 784, "sigma": 64, "width": 528}}, {"name": "parametric_pulse", "t0": 1104, "ch": "d106", "label": "CR90m_d106_u244", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.09896355989672437, 0.00047422618764442675], "duration": 784, "sigma": 64, "width": 528}}, {"name": "fc", "t0": 1888, "ch": "d106", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1888, "ch": "d106", "label": "X90p_d106", "pulse_shape": "drag", "parameters": {"amp": [0.2340725571848802, 0.000882118180690507], "beta": 1.3163761456265402, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d107", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d107", "label": "X90p_d107", "pulse_shape": "drag", "parameters": {"amp": [0.09876358814320617, -0.0006605757392407573], "beta": 2.4747959167703035, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 944, "ch": "d107", "label": "Xp_d107", "pulse_shape": "drag", "parameters": {"amp": [0.19668673606378975, 0.0], "beta": 2.4711617640428996, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1888, "ch": "d107", "label": "Y90m_d107", "pulse_shape": "drag", "parameters": {"amp": [-0.0006605757392407545, -0.09876358814320617], "beta": 2.4747959167703035, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u211", "phase": -3.141592653589793}, {"name": "fc", "t0": 1888, "ch": "u211", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u240", "phase": -3.141592653589793}, {"name": "fc", "t0": 1888, "ch": "u240", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u243", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u244", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u244", "label": "CR90p_u244", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1319518092372793, 0.26146995010365265], "duration": 784, "sigma": 64, "width": 528}}, {"name": "parametric_pulse", "t0": 1104, "ch": "u244", "label": "CR90m_u244", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.13195180923727928, -0.26146995010365265], "duration": 784, "sigma": 64, "width": 528}}, {"name": "fc", "t0": 1888, "ch": "u244", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u246", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [107, 106], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d106", "label": "X90p_d106", "pulse_shape": "drag", "parameters": {"amp": [0.2340725571848802, 0.000882118180690507], "beta": 1.3163761456265402, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d106", "label": "CR90p_d106_u244", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09896355989672437, -0.0004742261876444146], "duration": 784, "sigma": 64, "width": 528}}, {"name": "parametric_pulse", "t0": 1104, "ch": "d106", "label": "CR90m_d106_u244", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.09896355989672437, 0.00047422618764442675], "duration": 784, "sigma": 64, "width": 528}}, {"name": "fc", "t0": 0, "ch": "d107", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d107", "label": "Ym_d107", "pulse_shape": "drag", "parameters": {"amp": [-3.613076726328906e-17, -0.19668673606378975], "beta": 2.4711617640428996, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 944, "ch": "d107", "label": "Xp_d107", "pulse_shape": "drag", "parameters": {"amp": [0.19668673606378975, 0.0], "beta": 2.4711617640428996, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u243", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u244", "label": "CR90p_u244", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1319518092372793, 0.26146995010365265], "duration": 784, "sigma": 64, "width": 528}}, {"name": "parametric_pulse", "t0": 1104, "ch": "u244", "label": "CR90m_u244", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.13195180923727928, -0.26146995010365265], "duration": 784, "sigma": 64, "width": 528}}, {"name": "fc", "t0": 0, "ch": "u246", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [107, 108], "sequence": [{"name": "fc", "t0": 0, "ch": "d107", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d107", "label": "Y90p_d107", "pulse_shape": "drag", "parameters": {"amp": [0.0006605757392407644, 0.09876358814320617], "beta": 2.4747959167703035, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d107", "label": "CR90p_d107_u246", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.030804666891693522, -0.0006746551510393057], "duration": 1008, "sigma": 64, "width": 752}}, {"name": "parametric_pulse", "t0": 1328, "ch": "d107", "label": "CR90m_d107_u246", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.030804666891693522, 0.0006746551510393094], "duration": 1008, "sigma": 64, "width": 752}}, {"name": "fc", "t0": 2336, "ch": "d107", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2336, "ch": "d107", "label": "X90p_d107", "pulse_shape": "drag", "parameters": {"amp": [0.09876358814320617, -0.0006605757392407573], "beta": 2.4747959167703035, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d108", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d108", "label": "X90p_d108", "pulse_shape": "drag", "parameters": {"amp": [0.08972659471386776, -8.84424837326488e-05], "beta": 3.1690249247672555, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1168, "ch": "d108", "label": "Xp_d108", "pulse_shape": "drag", "parameters": {"amp": [0.17871008597168905, 0.0], "beta": 3.07597752427346, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2336, "ch": "d108", "label": "Y90m_d108", "pulse_shape": "drag", "parameters": {"amp": [-8.844248373270262e-05, -0.08972659471386776], "beta": 3.1690249247672555, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u243", "phase": -3.141592653589793}, {"name": "fc", "t0": 2336, "ch": "u243", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u245", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u246", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u246", "label": "CR90p_u246", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.15092547133469109, -0.12183857708824425], "duration": 1008, "sigma": 64, "width": 752}}, {"name": "parametric_pulse", "t0": 1328, "ch": "u246", "label": "CR90m_u246", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.15092547133469106, 0.12183857708824426], "duration": 1008, "sigma": 64, "width": 752}}, {"name": "fc", "t0": 2336, "ch": "u246", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u253", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [108, 107], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d107", "label": "X90p_d107", "pulse_shape": "drag", "parameters": {"amp": [0.09876358814320617, -0.0006605757392407573], "beta": 2.4747959167703035, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d107", "label": "CR90p_d107_u246", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.030804666891693522, -0.0006746551510393057], "duration": 1008, "sigma": 64, "width": 752}}, {"name": "parametric_pulse", "t0": 1328, "ch": "d107", "label": "CR90m_d107_u246", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.030804666891693522, 0.0006746551510393094], "duration": 1008, "sigma": 64, "width": 752}}, {"name": "fc", "t0": 0, "ch": "d108", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d108", "label": "Ym_d108", "pulse_shape": "drag", "parameters": {"amp": [-3.2828510214086593e-17, -0.17871008597168905], "beta": 3.07597752427346, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1168, "ch": "d108", "label": "Xp_d108", "pulse_shape": "drag", "parameters": {"amp": [0.17871008597168905, 0.0], "beta": 3.07597752427346, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u245", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u246", "label": "CR90p_u246", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.15092547133469109, -0.12183857708824425], "duration": 1008, "sigma": 64, "width": 752}}, {"name": "parametric_pulse", "t0": 1328, "ch": "u246", "label": "CR90m_u246", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.15092547133469106, 0.12183857708824426], "duration": 1008, "sigma": 64, "width": 752}}, {"name": "fc", "t0": 0, "ch": "u253", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [108, 112], "sequence": [{"name": "fc", "t0": 0, "ch": "d108", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d108", "label": "Ym_d108", "pulse_shape": "drag", "parameters": {"amp": [-3.2828510214086593e-17, -0.17871008597168905], "beta": 3.07597752427346, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1216, "ch": "d108", "label": "Xp_d108", "pulse_shape": "drag", "parameters": {"amp": [0.17871008597168905, 0.0], "beta": 3.07597752427346, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d112", "label": "X90p_d112", "pulse_shape": "drag", "parameters": {"amp": [0.11453459690114216, 0.0027065677630154477], "beta": -1.7492738153883627, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d112", "label": "CR90p_d112_u247", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03237011861223734, 0.0015342561479528027], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "parametric_pulse", "t0": 1376, "ch": "d112", "label": "CR90m_d112_u247", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03237011861223734, -0.0015342561479527988], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "fc", "t0": 0, "ch": "u245", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u247", "label": "CR90p_u247", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0026246945371229406, -0.09322912547100155], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "parametric_pulse", "t0": 1376, "ch": "u247", "label": "CR90m_u247", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.002624694537122952, 0.09322912547100155], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "fc", "t0": 0, "ch": "u253", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [109, 96], "sequence": [{"name": "fc", "t0": 0, "ch": "d109", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d109", "label": "Y90p_d109", "pulse_shape": "drag", "parameters": {"amp": [0.14688495849428293, 0.19207425632704692], "beta": -24.17131021666903, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d109", "label": "CR90p_d109_u218", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0372456624763039, 0.0], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "d109", "label": "CR90m_d109_u218", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0372456624763039, 4.561278133372825e-18], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 1600, "ch": "d109", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1600, "ch": "d109", "label": "X90p_d109", "pulse_shape": "drag", "parameters": {"amp": [0.19207425632704692, -0.14688495849428293], "beta": -24.17131021666903, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d96", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d96", "label": "X90p_d96", "pulse_shape": "drag", "parameters": {"amp": [0.09767648357444118, 0.00047412566842150336], "beta": 1.3065160560100524, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 800, "ch": "d96", "label": "Xp_d96", "pulse_shape": "drag", "parameters": {"amp": [0.19375939902533434, 0.0], "beta": 1.2979133549753845, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1600, "ch": "d96", "label": "Y90m_d96", "pulse_shape": "drag", "parameters": {"amp": [0.00047412566842151735, -0.09767648357444118], "beta": 1.3065160560100524, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u215", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u218", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u218", "label": "CR90p_u218", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.9886490595268318, 0.15024325973803626], "duration": 640, "sigma": 64, "width": 384}}, {"name": "parametric_pulse", "t0": 960, "ch": "u218", "label": "CR90m_u218", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.9886490595268318, -0.1502432597380362], "duration": 640, "sigma": 64, "width": 384}}, {"name": "fc", "t0": 1600, "ch": "u218", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u219", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u248", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [110, 100], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d100", "label": "X90p_d100", "pulse_shape": "drag", "parameters": {"amp": [0.09286805059295689, -1.6278293033287982e-05], "beta": 1.5855060534313825, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d100", "label": "CR90p_d100_u249", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.01805993096797078, 0.0006457121050452622], "duration": 1632, "sigma": 64, "width": 1376}}, {"name": "parametric_pulse", "t0": 1952, "ch": "d100", "label": "CR90m_d100_u249", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.01805993096797078, -0.00064571210504526], "duration": 1632, "sigma": 64, "width": 1376}}, {"name": "fc", "t0": 0, "ch": "d110", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d110", "label": "Ym_d110", "pulse_shape": "drag", "parameters": {"amp": [-3.437935422308842e-17, -0.18715248754184835], "beta": 0.5284865854010989, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1792, "ch": "d110", "label": "Xp_d110", "pulse_shape": "drag", "parameters": {"amp": [0.18715248754184835, 0.0], "beta": 0.5284865854010989, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u228", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u249", "label": "CR90p_u249", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0037203215514044095, -0.07737968416628876], "duration": 1632, "sigma": 64, "width": 1376}}, {"name": "parametric_pulse", "t0": 1952, "ch": "u249", "label": "CR90m_u249", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.003720321551404419, 0.07737968416628876], "duration": 1632, "sigma": 64, "width": 1376}}, {"name": "fc", "t0": 0, "ch": "u264", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [110, 118], "sequence": [{"name": "fc", "t0": 0, "ch": "d110", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d110", "label": "Ym_d110", "pulse_shape": "drag", "parameters": {"amp": [-3.437935422308842e-17, -0.18715248754184835], "beta": 0.5284865854010989, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 912, "ch": "d110", "label": "Xp_d110", "pulse_shape": "drag", "parameters": {"amp": [0.18715248754184835, 0.0], "beta": 0.5284865854010989, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d118", "label": "X90p_d118", "pulse_shape": "drag", "parameters": {"amp": [0.09489014560334184, -0.0008221646433828774], "beta": 1.763686405224966, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d118", "label": "CR90p_d118_u250", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.041988103836021466, -0.0013000855660416887], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "d118", "label": "CR90m_d118_u250", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.041988103836021466, 0.0013000855660416939], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 0, "ch": "u228", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u250", "label": "CR90p_u250", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3120089551018814, 0.062040859884562816], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "u250", "label": "CR90m_u250", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3120089551018814, -0.06204085988456286], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 0, "ch": "u264", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [111, 104], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d104", "label": "X90p_d104", "pulse_shape": "drag", "parameters": {"amp": [0.08700777525125503, 0.0020309815836197535], "beta": -2.0467291689580347, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d104", "label": "CR90p_d104_u251", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03185155148882096, 0.002229727991210291], "duration": 848, "sigma": 64, "width": 592}}, {"name": "parametric_pulse", "t0": 1168, "ch": "d104", "label": "CR90m_d104_u251", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03185155148882096, -0.002229727991210287], "duration": 848, "sigma": 64, "width": 592}}, {"name": "fc", "t0": 0, "ch": "d111", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d111", "label": "Ym_d111", "pulse_shape": "drag", "parameters": {"amp": [-3.6395137991625485e-17, -0.1981259032779367], "beta": -2.676305761695517, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1008, "ch": "d111", "label": "Xp_d111", "pulse_shape": "drag", "parameters": {"amp": [0.1981259032779367, 0.0], "beta": -2.676305761695517, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u238", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u251", "label": "CR90p_u251", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07423865279466707, 0.12561683596212814], "duration": 848, "sigma": 64, "width": 592}}, {"name": "parametric_pulse", "t0": 1168, "ch": "u251", "label": "CR90m_u251", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07423865279466706, -0.12561683596212814], "duration": 848, "sigma": 64, "width": 592}}, {"name": "fc", "t0": 0, "ch": "u273", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [111, 122], "sequence": [{"name": "fc", "t0": 0, "ch": "d111", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d111", "label": "Ym_d111", "pulse_shape": "drag", "parameters": {"amp": [-3.6395137991625485e-17, -0.1981259032779367], "beta": -2.676305761695517, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d111", "label": "Xp_d111", "pulse_shape": "drag", "parameters": {"amp": [0.1981259032779367, 0.0], "beta": -2.676305761695517, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d122", "label": "X90p_d122", "pulse_shape": "drag", "parameters": {"amp": [0.10409183397772535, -0.0006774914612654833], "beta": 3.435893473504987, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d122", "label": "CR90p_d122_u252", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.039036016654228595, -0.002442095044280834], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d122", "label": "CR90m_d122_u252", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.039036016654228595, 0.0024420950442808386], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "u238", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u252", "label": "CR90p_u252", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2616718227428166, -0.1516662076659304], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u252", "label": "CR90m_u252", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2616718227428166, 0.15166620766593042], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "u273", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [112, 108], "sequence": [{"name": "fc", "t0": 0, "ch": "d108", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d108", "label": "X90p_d108", "pulse_shape": "drag", "parameters": {"amp": [0.08972659471386776, -8.84424837326488e-05], "beta": 3.1690249247672555, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1216, "ch": "d108", "label": "Xp_d108", "pulse_shape": "drag", "parameters": {"amp": [0.17871008597168905, 0.0], "beta": 3.07597752427346, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2432, "ch": "d108", "label": "Y90m_d108", "pulse_shape": "drag", "parameters": {"amp": [-8.844248373270262e-05, -0.08972659471386776], "beta": 3.1690249247672555, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d112", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d112", "label": "Y90p_d112", "pulse_shape": "drag", "parameters": {"amp": [-0.0027065677630154317, 0.11453459690114216], "beta": -1.7492738153883627, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d112", "label": "CR90p_d112_u247", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03237011861223734, 0.0015342561479528027], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "parametric_pulse", "t0": 1376, "ch": "d112", "label": "CR90m_d112_u247", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03237011861223734, -0.0015342561479527988], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "fc", "t0": 2432, "ch": "d112", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2432, "ch": "d112", "label": "X90p_d112", "pulse_shape": "drag", "parameters": {"amp": [0.11453459690114216, 0.0027065677630154477], "beta": -1.7492738153883627, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u245", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u247", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u247", "label": "CR90p_u247", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0026246945371229406, -0.09322912547100155], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "parametric_pulse", "t0": 1376, "ch": "u247", "label": "CR90m_u247", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.002624694537122952, 0.09322912547100155], "duration": 1056, "sigma": 64, "width": 800}}, {"name": "fc", "t0": 2432, "ch": "u247", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u253", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u282", "phase": -3.141592653589793}, {"name": "fc", "t0": 2432, "ch": "u282", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [112, 126], "sequence": [{"name": "fc", "t0": 0, "ch": "d112", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d112", "label": "Ym_d112", "pulse_shape": "drag", "parameters": {"amp": [-4.231652692565255e-17, -0.2303604432729228], "beta": -1.8888616433235965, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 848, "ch": "d112", "label": "Xp_d112", "pulse_shape": "drag", "parameters": {"amp": [0.2303604432729228, 0.0], "beta": -1.8888616433235965, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d126", "label": "X90p_d126", "pulse_shape": "drag", "parameters": {"amp": [0.1001629152186539, 0.0017571453497949366], "beta": -1.1484610957632373, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d126", "label": "CR90p_d126_u254", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0487589395102775, 0.0022895599399613163], "duration": 688, "sigma": 64, "width": 432}}, {"name": "parametric_pulse", "t0": 1008, "ch": "d126", "label": "CR90m_d126_u254", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0487589395102775, -0.00228955993996131], "duration": 688, "sigma": 64, "width": 432}}, {"name": "fc", "t0": 0, "ch": "u247", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u254", "label": "CR90p_u254", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.17513537119557554, 0.16284631686948764], "duration": 688, "sigma": 64, "width": 432}}, {"name": "parametric_pulse", "t0": 1008, "ch": "u254", "label": "CR90m_u254", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.17513537119557557, -0.1628463168694876], "duration": 688, "sigma": 64, "width": 432}}, {"name": "fc", "t0": 0, "ch": "u282", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [113, 114], "sequence": [{"name": "fc", "t0": 0, "ch": "d113", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d113", "label": "Ym_d113", "pulse_shape": "drag", "parameters": {"amp": [-3.481588230759132e-17, -0.18952883575265128], "beta": 0.5749791058819511, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2368, "ch": "d113", "label": "Xp_d113", "pulse_shape": "drag", "parameters": {"amp": [0.18952883575265128, 0.0], "beta": 0.5749791058819511, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d114", "label": "X90p_d114", "pulse_shape": "drag", "parameters": {"amp": [0.1141834306232801, -0.00023659007060058528], "beta": -0.017471954668736134, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d114", "label": "CR90p_d114_u255", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.01330634440004235, 0.0006398274925371004], "duration": 2208, "sigma": 64, "width": 1952}}, {"name": "parametric_pulse", "t0": 2528, "ch": "d114", "label": "CR90m_d114_u255", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.01330634440004235, -0.0006398274925370988], "duration": 2208, "sigma": 64, "width": 1952}}, {"name": "parametric_pulse", "t0": 160, "ch": "u255", "label": "CR90p_u255", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06468625524488283, -0.13410256256393654], "duration": 2208, "sigma": 64, "width": 1952}}, {"name": "parametric_pulse", "t0": 2528, "ch": "u255", "label": "CR90m_u255", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06468625524488282, 0.13410256256393654], "duration": 2208, "sigma": 64, "width": 1952}}, {"name": "fc", "t0": 0, "ch": "u256", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [114, 113], "sequence": [{"name": "fc", "t0": 0, "ch": "d113", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d113", "label": "X90p_d113", "pulse_shape": "drag", "parameters": {"amp": [0.09515217699159603, 0.0006845248757220929], "beta": 0.6460427787265419, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2368, "ch": "d113", "label": "Xp_d113", "pulse_shape": "drag", "parameters": {"amp": [0.18952883575265128, 0.0], "beta": 0.5749791058819511, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 4736, "ch": "d113", "label": "Y90m_d113", "pulse_shape": "drag", "parameters": {"amp": [0.0006845248757220607, -0.09515217699159603], "beta": 0.6460427787265419, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d114", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d114", "label": "Y90p_d114", "pulse_shape": "drag", "parameters": {"amp": [0.00023659007060058726, 0.1141834306232801], "beta": -0.017471954668736134, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d114", "label": "CR90p_d114_u255", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.01330634440004235, 0.0006398274925371004], "duration": 2208, "sigma": 64, "width": 1952}}, {"name": "parametric_pulse", "t0": 2528, "ch": "d114", "label": "CR90m_d114_u255", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.01330634440004235, -0.0006398274925370988], "duration": 2208, "sigma": 64, "width": 1952}}, {"name": "fc", "t0": 4736, "ch": "d114", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 4736, "ch": "d114", "label": "X90p_d114", "pulse_shape": "drag", "parameters": {"amp": [0.1141834306232801, -0.00023659007060058528], "beta": -0.017471954668736134, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u255", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u255", "label": "CR90p_u255", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06468625524488283, -0.13410256256393654], "duration": 2208, "sigma": 64, "width": 1952}}, {"name": "parametric_pulse", "t0": 2528, "ch": "u255", "label": "CR90m_u255", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06468625524488282, 0.13410256256393654], "duration": 2208, "sigma": 64, "width": 1952}}, {"name": "fc", "t0": 4736, "ch": "u255", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u256", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u258", "phase": -3.141592653589793}, {"name": "fc", "t0": 4736, "ch": "u258", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [114, 115], "sequence": [{"name": "fc", "t0": 0, "ch": "d114", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d114", "label": "Y90p_d114", "pulse_shape": "drag", "parameters": {"amp": [0.00023659007060058726, 0.1141834306232801], "beta": -0.017471954668736134, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d114", "label": "CR90p_d114_u258", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.025986513949473156, 0.0001767999284956981], "duration": 1136, "sigma": 64, "width": 880}}, {"name": "parametric_pulse", "t0": 1456, "ch": "d114", "label": "CR90m_d114_u258", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.025986513949473156, -0.00017679992849569493], "duration": 1136, "sigma": 64, "width": 880}}, {"name": "fc", "t0": 2592, "ch": "d114", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2592, "ch": "d114", "label": "X90p_d114", "pulse_shape": "drag", "parameters": {"amp": [0.1141834306232801, -0.00023659007060058528], "beta": -0.017471954668736134, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d115", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d115", "label": "X90p_d115", "pulse_shape": "drag", "parameters": {"amp": [0.10306134463503398, -0.001577351162994342], "beta": 3.8690869867615976, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1296, "ch": "d115", "label": "Xp_d115", "pulse_shape": "drag", "parameters": {"amp": [0.2066955603968319, 0.0], "beta": 3.8470464784655554, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2592, "ch": "d115", "label": "Y90m_d115", "pulse_shape": "drag", "parameters": {"amp": [-0.0015773511629943958, -0.10306134463503398], "beta": 3.8690869867615976, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u255", "phase": -3.141592653589793}, {"name": "fc", "t0": 2592, "ch": "u255", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u257", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u258", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u258", "label": "CR90p_u258", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.4127990346499818, 0.2573284950506808], "duration": 1136, "sigma": 64, "width": 880}}, {"name": "parametric_pulse", "t0": 1456, "ch": "u258", "label": "CR90m_u258", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.41279903464998174, -0.25732849505068084], "duration": 1136, "sigma": 64, "width": 880}}, {"name": "fc", "t0": 2592, "ch": "u258", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u260", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [115, 114], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d114", "label": "X90p_d114", "pulse_shape": "drag", "parameters": {"amp": [0.1141834306232801, -0.00023659007060058528], "beta": -0.017471954668736134, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d114", "label": "CR90p_d114_u258", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.025986513949473156, 0.0001767999284956981], "duration": 1136, "sigma": 64, "width": 880}}, {"name": "parametric_pulse", "t0": 1456, "ch": "d114", "label": "CR90m_d114_u258", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.025986513949473156, -0.00017679992849569493], "duration": 1136, "sigma": 64, "width": 880}}, {"name": "fc", "t0": 0, "ch": "d115", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d115", "label": "Ym_d115", "pulse_shape": "drag", "parameters": {"amp": [-3.796935846569229e-17, -0.2066955603968319], "beta": 3.8470464784655554, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1296, "ch": "d115", "label": "Xp_d115", "pulse_shape": "drag", "parameters": {"amp": [0.2066955603968319, 0.0], "beta": 3.8470464784655554, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u257", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u258", "label": "CR90p_u258", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.4127990346499818, 0.2573284950506808], "duration": 1136, "sigma": 64, "width": 880}}, {"name": "parametric_pulse", "t0": 1456, "ch": "u258", "label": "CR90m_u258", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.41279903464998174, -0.25732849505068084], "duration": 1136, "sigma": 64, "width": 880}}, {"name": "fc", "t0": 0, "ch": "u260", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [115, 116], "sequence": [{"name": "fc", "t0": 0, "ch": "d115", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d115", "label": "Ym_d115", "pulse_shape": "drag", "parameters": {"amp": [-3.796935846569229e-17, -0.2066955603968319], "beta": 3.8470464784655554, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d115", "label": "Xp_d115", "pulse_shape": "drag", "parameters": {"amp": [0.2066955603968319, 0.0], "beta": 3.8470464784655554, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d116", "label": "X90p_d116", "pulse_shape": "drag", "parameters": {"amp": [0.09725103241420763, 0.000600959687711378], "beta": 1.685728397533417, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d116", "label": "CR90p_d116_u259", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03989786735685105, 4.915782491086549e-05], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d116", "label": "CR90m_d116_u259", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03989786735685105, -4.9157824910860605e-05], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "u257", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u259", "label": "CR90p_u259", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1701937319946833, 0.2193184902806021], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u259", "label": "CR90m_u259", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.17019373199468332, -0.21931849028060207], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 0, "ch": "u260", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [116, 115], "sequence": [{"name": "fc", "t0": 0, "ch": "d115", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d115", "label": "X90p_d115", "pulse_shape": "drag", "parameters": {"amp": [0.10306134463503398, -0.001577351162994342], "beta": 3.8690869867615976, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d115", "label": "Xp_d115", "pulse_shape": "drag", "parameters": {"amp": [0.2066955603968319, 0.0], "beta": 3.8470464784655554, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1920, "ch": "d115", "label": "Y90m_d115", "pulse_shape": "drag", "parameters": {"amp": [-0.0015773511629943958, -0.10306134463503398], "beta": 3.8690869867615976, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d116", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d116", "label": "Y90p_d116", "pulse_shape": "drag", "parameters": {"amp": [-0.0006009596877113776, 0.09725103241420763], "beta": 1.685728397533417, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d116", "label": "CR90p_d116_u259", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03989786735685105, 4.915782491086549e-05], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d116", "label": "CR90m_d116_u259", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03989786735685105, -4.9157824910860605e-05], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "d116", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1920, "ch": "d116", "label": "X90p_d116", "pulse_shape": "drag", "parameters": {"amp": [0.09725103241420763, 0.000600959687711378], "beta": 1.685728397533417, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u257", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u259", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u259", "label": "CR90p_u259", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1701937319946833, 0.2193184902806021], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u259", "label": "CR90m_u259", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.17019373199468332, -0.21931849028060207], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "u259", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u260", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u262", "phase": -3.141592653589793}, {"name": "fc", "t0": 1920, "ch": "u262", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [116, 117], "sequence": [{"name": "fc", "t0": 0, "ch": "d116", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d116", "label": "Y90p_d116", "pulse_shape": "drag", "parameters": {"amp": [-0.0006009596877113776, 0.09725103241420763], "beta": 1.685728397533417, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d116", "label": "CR90p_d116_u262", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06280453977609736, -0.0025168241845499933], "duration": 544, "sigma": 64, "width": 288}}, {"name": "parametric_pulse", "t0": 864, "ch": "d116", "label": "CR90m_d116_u262", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06280453977609736, 0.002516824184550001], "duration": 544, "sigma": 64, "width": 288}}, {"name": "fc", "t0": 1408, "ch": "d116", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1408, "ch": "d116", "label": "X90p_d116", "pulse_shape": "drag", "parameters": {"amp": [0.09725103241420763, 0.000600959687711378], "beta": 1.685728397533417, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d117", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d117", "label": "X90p_d117", "pulse_shape": "drag", "parameters": {"amp": [0.09625996504512489, 0.0014745417112859616], "beta": -1.4286884224206786, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 704, "ch": "d117", "label": "Xp_d117", "pulse_shape": "drag", "parameters": {"amp": [0.19313503992499995, 0.0], "beta": -1.433759770697568, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1408, "ch": "d117", "label": "Y90m_d117", "pulse_shape": "drag", "parameters": {"amp": [0.0014745417112859258, -0.09625996504512489], "beta": -1.4286884224206786, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u259", "phase": -3.141592653589793}, {"name": "fc", "t0": 1408, "ch": "u259", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u261", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u262", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u262", "label": "CR90p_u262", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3586701972734523, 0.3336988824688082], "duration": 544, "sigma": 64, "width": 288}}, {"name": "parametric_pulse", "t0": 864, "ch": "u262", "label": "CR90m_u262", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.35867019727345223, -0.33369888246880824], "duration": 544, "sigma": 64, "width": 288}}, {"name": "fc", "t0": 1408, "ch": "u262", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u265", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [117, 116], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d116", "label": "X90p_d116", "pulse_shape": "drag", "parameters": {"amp": [0.09725103241420763, 0.000600959687711378], "beta": 1.685728397533417, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d116", "label": "CR90p_d116_u262", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06280453977609736, -0.0025168241845499933], "duration": 544, "sigma": 64, "width": 288}}, {"name": "parametric_pulse", "t0": 864, "ch": "d116", "label": "CR90m_d116_u262", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06280453977609736, 0.002516824184550001], "duration": 544, "sigma": 64, "width": 288}}, {"name": "fc", "t0": 0, "ch": "d117", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d117", "label": "Ym_d117", "pulse_shape": "drag", "parameters": {"amp": [-3.5478331267102114e-17, -0.19313503992499995], "beta": -1.433759770697568, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 704, "ch": "d117", "label": "Xp_d117", "pulse_shape": "drag", "parameters": {"amp": [0.19313503992499995, 0.0], "beta": -1.433759770697568, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u261", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u262", "label": "CR90p_u262", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3586701972734523, 0.3336988824688082], "duration": 544, "sigma": 64, "width": 288}}, {"name": "parametric_pulse", "t0": 864, "ch": "u262", "label": "CR90m_u262", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.35867019727345223, -0.33369888246880824], "duration": 544, "sigma": 64, "width": 288}}, {"name": "fc", "t0": 0, "ch": "u265", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [117, 118], "sequence": [{"name": "fc", "t0": 0, "ch": "d117", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d117", "label": "Ym_d117", "pulse_shape": "drag", "parameters": {"amp": [-3.5478331267102114e-17, -0.19313503992499995], "beta": -1.433759770697568, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 976, "ch": "d117", "label": "Xp_d117", "pulse_shape": "drag", "parameters": {"amp": [0.19313503992499995, 0.0], "beta": -1.433759770697568, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d118", "label": "X90p_d118", "pulse_shape": "drag", "parameters": {"amp": [0.09489014560334184, -0.0008221646433828774], "beta": 1.763686405224966, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d118", "label": "CR90p_d118_u263", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03766917445976725, -0.0006397637551880159], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1136, "ch": "d118", "label": "CR90m_d118_u263", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03766917445976725, 0.0006397637551880205], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 0, "ch": "u261", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u263", "label": "CR90p_u263", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1006894733614995, 0.3006379038958417], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1136, "ch": "u263", "label": "CR90m_u263", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.10068947336149946, -0.3006379038958417], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 0, "ch": "u265", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [118, 110], "sequence": [{"name": "fc", "t0": 0, "ch": "d110", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d110", "label": "X90p_d110", "pulse_shape": "drag", "parameters": {"amp": [0.09405707609750691, 0.0006320498272647392], "beta": 0.5112846912623613, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 912, "ch": "d110", "label": "Xp_d110", "pulse_shape": "drag", "parameters": {"amp": [0.18715248754184835, 0.0], "beta": 0.5284865854010989, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1824, "ch": "d110", "label": "Y90m_d110", "pulse_shape": "drag", "parameters": {"amp": [0.0006320498272647295, -0.09405707609750691], "beta": 0.5112846912623613, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d118", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d118", "label": "Y90p_d118", "pulse_shape": "drag", "parameters": {"amp": [0.0008221646433828873, 0.09489014560334184], "beta": 1.763686405224966, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d118", "label": "CR90p_d118_u250", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.041988103836021466, -0.0013000855660416887], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "d118", "label": "CR90m_d118_u250", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.041988103836021466, 0.0013000855660416939], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 1824, "ch": "d118", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1824, "ch": "d118", "label": "X90p_d118", "pulse_shape": "drag", "parameters": {"amp": [0.09489014560334184, -0.0008221646433828774], "beta": 1.763686405224966, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u228", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u250", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u250", "label": "CR90p_u250", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3120089551018814, 0.062040859884562816], "duration": 752, "sigma": 64, "width": 496}}, {"name": "parametric_pulse", "t0": 1072, "ch": "u250", "label": "CR90m_u250", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3120089551018814, -0.06204085988456286], "duration": 752, "sigma": 64, "width": 496}}, {"name": "fc", "t0": 1824, "ch": "u250", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u263", "phase": -3.141592653589793}, {"name": "fc", "t0": 1824, "ch": "u263", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u264", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u267", "phase": -3.141592653589793}, {"name": "fc", "t0": 1824, "ch": "u267", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [118, 117], "sequence": [{"name": "fc", "t0": 0, "ch": "d117", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d117", "label": "X90p_d117", "pulse_shape": "drag", "parameters": {"amp": [0.09625996504512489, 0.0014745417112859616], "beta": -1.4286884224206786, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 976, "ch": "d117", "label": "Xp_d117", "pulse_shape": "drag", "parameters": {"amp": [0.19313503992499995, 0.0], "beta": -1.433759770697568, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1952, "ch": "d117", "label": "Y90m_d117", "pulse_shape": "drag", "parameters": {"amp": [0.0014745417112859258, -0.09625996504512489], "beta": -1.4286884224206786, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d118", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d118", "label": "Y90p_d118", "pulse_shape": "drag", "parameters": {"amp": [0.0008221646433828873, 0.09489014560334184], "beta": 1.763686405224966, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d118", "label": "CR90p_d118_u263", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03766917445976725, -0.0006397637551880159], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1136, "ch": "d118", "label": "CR90m_d118_u263", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03766917445976725, 0.0006397637551880205], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 1952, "ch": "d118", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1952, "ch": "d118", "label": "X90p_d118", "pulse_shape": "drag", "parameters": {"amp": [0.09489014560334184, -0.0008221646433828774], "beta": 1.763686405224966, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u250", "phase": -3.141592653589793}, {"name": "fc", "t0": 1952, "ch": "u250", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u261", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u263", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u263", "label": "CR90p_u263", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1006894733614995, 0.3006379038958417], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1136, "ch": "u263", "label": "CR90m_u263", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.10068947336149946, -0.3006379038958417], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 1952, "ch": "u263", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u265", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u267", "phase": -3.141592653589793}, {"name": "fc", "t0": 1952, "ch": "u267", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [118, 119], "sequence": [{"name": "fc", "t0": 0, "ch": "d118", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d118", "label": "Y90p_d118", "pulse_shape": "drag", "parameters": {"amp": [0.0008221646433828873, 0.09489014560334184], "beta": 1.763686405224966, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d118", "label": "CR90p_d118_u267", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.016608363482762453, 0.0004934223440765488], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "parametric_pulse", "t0": 2064, "ch": "d118", "label": "CR90m_d118_u267", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.016608363482762453, -0.0004934223440765467], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "fc", "t0": 3808, "ch": "d118", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 3808, "ch": "d118", "label": "X90p_d118", "pulse_shape": "drag", "parameters": {"amp": [0.09489014560334184, -0.0008221646433828774], "beta": 1.763686405224966, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d119", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d119", "label": "X90p_d119", "pulse_shape": "drag", "parameters": {"amp": [0.08774202500798196, -0.00018800827547832045], "beta": 0.9855750131576994, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1904, "ch": "d119", "label": "Xp_d119", "pulse_shape": "drag", "parameters": {"amp": [0.17542101067062513, 0.0], "beta": 1.5471603921643602, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 3808, "ch": "d119", "label": "Y90m_d119", "pulse_shape": "drag", "parameters": {"amp": [-0.00018800827547833787, -0.08774202500798196], "beta": 0.9855750131576994, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u250", "phase": -3.141592653589793}, {"name": "fc", "t0": 3808, "ch": "u250", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u263", "phase": -3.141592653589793}, {"name": "fc", "t0": 3808, "ch": "u263", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u266", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u267", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u267", "label": "CR90p_u267", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07002443696732702, -0.1091241512426652], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "parametric_pulse", "t0": 2064, "ch": "u267", "label": "CR90m_u267", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.070024436967327, 0.10912415124266521], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "fc", "t0": 3808, "ch": "u267", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u269", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [119, 118], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d118", "label": "X90p_d118", "pulse_shape": "drag", "parameters": {"amp": [0.09489014560334184, -0.0008221646433828774], "beta": 1.763686405224966, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d118", "label": "CR90p_d118_u267", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.016608363482762453, 0.0004934223440765488], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "parametric_pulse", "t0": 2064, "ch": "d118", "label": "CR90m_d118_u267", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.016608363482762453, -0.0004934223440765467], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "fc", "t0": 0, "ch": "d119", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d119", "label": "Ym_d119", "pulse_shape": "drag", "parameters": {"amp": [-3.222431688314621e-17, -0.17542101067062513], "beta": 1.5471603921643602, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1904, "ch": "d119", "label": "Xp_d119", "pulse_shape": "drag", "parameters": {"amp": [0.17542101067062513, 0.0], "beta": 1.5471603921643602, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u266", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u267", "label": "CR90p_u267", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07002443696732702, -0.1091241512426652], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "parametric_pulse", "t0": 2064, "ch": "u267", "label": "CR90m_u267", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.070024436967327, 0.10912415124266521], "duration": 1744, "sigma": 64, "width": 1488}}, {"name": "fc", "t0": 0, "ch": "u269", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [119, 120], "sequence": [{"name": "fc", "t0": 0, "ch": "d119", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d119", "label": "Ym_d119", "pulse_shape": "drag", "parameters": {"amp": [-3.222431688314621e-17, -0.17542101067062513], "beta": 1.5471603921643602, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2544, "ch": "d119", "label": "Xp_d119", "pulse_shape": "drag", "parameters": {"amp": [0.17542101067062513, 0.0], "beta": 1.5471603921643602, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d120", "label": "X90p_d120", "pulse_shape": "drag", "parameters": {"amp": [0.09987209387944325, 0.0019796791068846134], "beta": -1.5818946782086862, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d120", "label": "CR90p_d120_u268", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.011023340179548887, 0.0014367460530407099], "duration": 2384, "sigma": 64, "width": 2128}}, {"name": "parametric_pulse", "t0": 2704, "ch": "d120", "label": "CR90m_d120_u268", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.011023340179548887, -0.0014367460530407086], "duration": 2384, "sigma": 64, "width": 2128}}, {"name": "fc", "t0": 0, "ch": "u266", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u268", "label": "CR90p_u268", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07317643302601858, -0.04575120780112167], "duration": 2384, "sigma": 64, "width": 2128}}, {"name": "parametric_pulse", "t0": 2704, "ch": "u268", "label": "CR90m_u268", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07317643302601858, 0.04575120780112168], "duration": 2384, "sigma": 64, "width": 2128}}, {"name": "fc", "t0": 0, "ch": "u269", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [120, 119], "sequence": [{"name": "fc", "t0": 0, "ch": "d119", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d119", "label": "X90p_d119", "pulse_shape": "drag", "parameters": {"amp": [0.08774202500798196, -0.00018800827547832045], "beta": 0.9855750131576994, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2544, "ch": "d119", "label": "Xp_d119", "pulse_shape": "drag", "parameters": {"amp": [0.17542101067062513, 0.0], "beta": 1.5471603921643602, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 5088, "ch": "d119", "label": "Y90m_d119", "pulse_shape": "drag", "parameters": {"amp": [-0.00018800827547833787, -0.08774202500798196], "beta": 0.9855750131576994, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d120", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d120", "label": "Y90p_d120", "pulse_shape": "drag", "parameters": {"amp": [-0.0019796791068845995, 0.09987209387944325], "beta": -1.5818946782086862, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d120", "label": "CR90p_d120_u268", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.011023340179548887, 0.0014367460530407099], "duration": 2384, "sigma": 64, "width": 2128}}, {"name": "parametric_pulse", "t0": 2704, "ch": "d120", "label": "CR90m_d120_u268", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.011023340179548887, -0.0014367460530407086], "duration": 2384, "sigma": 64, "width": 2128}}, {"name": "fc", "t0": 5088, "ch": "d120", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 5088, "ch": "d120", "label": "X90p_d120", "pulse_shape": "drag", "parameters": {"amp": [0.09987209387944325, 0.0019796791068846134], "beta": -1.5818946782086862, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u266", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u268", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u268", "label": "CR90p_u268", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07317643302601858, -0.04575120780112167], "duration": 2384, "sigma": 64, "width": 2128}}, {"name": "parametric_pulse", "t0": 2704, "ch": "u268", "label": "CR90m_u268", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07317643302601858, 0.04575120780112168], "duration": 2384, "sigma": 64, "width": 2128}}, {"name": "fc", "t0": 5088, "ch": "u268", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u269", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u271", "phase": -3.141592653589793}, {"name": "fc", "t0": 5088, "ch": "u271", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [120, 121], "sequence": [{"name": "fc", "t0": 0, "ch": "d120", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d120", "label": "Y90p_d120", "pulse_shape": "drag", "parameters": {"amp": [-0.0019796791068845995, 0.09987209387944325], "beta": -1.5818946782086862, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d120", "label": "CR90p_d120_u271", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03388534045286905, 0.001320322625238648], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 1152, "ch": "d120", "label": "CR90m_d120_u271", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03388534045286905, -0.001320322625238644], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 1984, "ch": "d120", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1984, "ch": "d120", "label": "X90p_d120", "pulse_shape": "drag", "parameters": {"amp": [0.09987209387944325, 0.0019796791068846134], "beta": -1.5818946782086862, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d121", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d121", "label": "X90p_d121", "pulse_shape": "drag", "parameters": {"amp": [0.11884320129366582, 0.0017860284598160065], "beta": -1.7336332363377709, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 992, "ch": "d121", "label": "Xp_d121", "pulse_shape": "drag", "parameters": {"amp": [0.2376722985114399, 0.0], "beta": -1.2796016139293105, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1984, "ch": "d121", "label": "Y90m_d121", "pulse_shape": "drag", "parameters": {"amp": [0.0017860284598159712, -0.11884320129366582], "beta": -1.7336332363377709, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u268", "phase": -3.141592653589793}, {"name": "fc", "t0": 1984, "ch": "u268", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u270", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u271", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u271", "label": "CR90p_u271", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.053903447882308754, 0.39667074086143805], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 1152, "ch": "u271", "label": "CR90m_u271", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0539034478823088, -0.39667074086143805], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 1984, "ch": "u271", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u274", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [121, 120], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d120", "label": "X90p_d120", "pulse_shape": "drag", "parameters": {"amp": [0.09987209387944325, 0.0019796791068846134], "beta": -1.5818946782086862, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d120", "label": "CR90p_d120_u271", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03388534045286905, 0.001320322625238648], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 1152, "ch": "d120", "label": "CR90m_d120_u271", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03388534045286905, -0.001320322625238644], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 0, "ch": "d121", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d121", "label": "Ym_d121", "pulse_shape": "drag", "parameters": {"amp": [-4.365969294270436e-17, -0.2376722985114399], "beta": -1.2796016139293105, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 992, "ch": "d121", "label": "Xp_d121", "pulse_shape": "drag", "parameters": {"amp": [0.2376722985114399, 0.0], "beta": -1.2796016139293105, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u270", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u271", "label": "CR90p_u271", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.053903447882308754, 0.39667074086143805], "duration": 832, "sigma": 64, "width": 576}}, {"name": "parametric_pulse", "t0": 1152, "ch": "u271", "label": "CR90m_u271", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0539034478823088, -0.39667074086143805], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 0, "ch": "u274", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [121, 122], "sequence": [{"name": "fc", "t0": 0, "ch": "d121", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d121", "label": "Y90p_d121", "pulse_shape": "drag", "parameters": {"amp": [-0.0017860284598160121, 0.11884320129366582], "beta": -1.7336332363377709, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d121", "label": "CR90p_d121_u274", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.022590325342511187, 0.00232356709898199], "duration": 1664, "sigma": 64, "width": 1408}}, {"name": "parametric_pulse", "t0": 1984, "ch": "d121", "label": "CR90m_d121_u274", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.022590325342511187, -0.0023235670989819874], "duration": 1664, "sigma": 64, "width": 1408}}, {"name": "fc", "t0": 3648, "ch": "d121", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 3648, "ch": "d121", "label": "X90p_d121", "pulse_shape": "drag", "parameters": {"amp": [0.11884320129366582, 0.0017860284598160065], "beta": -1.7336332363377709, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d122", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d122", "label": "X90p_d122", "pulse_shape": "drag", "parameters": {"amp": [0.10409183397772535, -0.0006774914612654833], "beta": 3.435893473504987, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1824, "ch": "d122", "label": "Xp_d122", "pulse_shape": "drag", "parameters": {"amp": [0.2079317867688985, 0.0], "beta": 3.3754975505433507, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 3648, "ch": "d122", "label": "Y90m_d122", "pulse_shape": "drag", "parameters": {"amp": [-0.0006774914612655461, -0.10409183397772535], "beta": 3.435893473504987, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u252", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u270", "phase": -3.141592653589793}, {"name": "fc", "t0": 3648, "ch": "u270", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u272", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u274", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u274", "label": "CR90p_u274", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05696881736554441, 0.017797241816534286], "duration": 1664, "sigma": 64, "width": 1408}}, {"name": "parametric_pulse", "t0": 1984, "ch": "u274", "label": "CR90m_u274", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05696881736554441, -0.01779724181653428], "duration": 1664, "sigma": 64, "width": 1408}}, {"name": "fc", "t0": 3648, "ch": "u274", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u276", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [122, 111], "sequence": [{"name": "fc", "t0": 0, "ch": "d111", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d111", "label": "X90p_d111", "pulse_shape": "drag", "parameters": {"amp": [0.09928509819457172, 0.0026558698988240178], "beta": -2.6212470204846188, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 960, "ch": "d111", "label": "Xp_d111", "pulse_shape": "drag", "parameters": {"amp": [0.1981259032779367, 0.0], "beta": -2.676305761695517, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1920, "ch": "d111", "label": "Y90m_d111", "pulse_shape": "drag", "parameters": {"amp": [0.002655869898823981, -0.09928509819457172], "beta": -2.6212470204846188, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d122", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d122", "label": "Y90p_d122", "pulse_shape": "drag", "parameters": {"amp": [0.000677491461265487, 0.10409183397772535], "beta": 3.435893473504987, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d122", "label": "CR90p_d122_u252", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.039036016654228595, -0.002442095044280834], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d122", "label": "CR90m_d122_u252", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.039036016654228595, 0.0024420950442808386], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "d122", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1920, "ch": "d122", "label": "X90p_d122", "pulse_shape": "drag", "parameters": {"amp": [0.10409183397772535, -0.0006774914612654833], "beta": 3.435893473504987, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u238", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u252", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u252", "label": "CR90p_u252", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2616718227428166, -0.1516662076659304], "duration": 800, "sigma": 64, "width": 544}}, {"name": "parametric_pulse", "t0": 1120, "ch": "u252", "label": "CR90m_u252", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2616718227428166, 0.15166620766593042], "duration": 800, "sigma": 64, "width": 544}}, {"name": "fc", "t0": 1920, "ch": "u252", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u272", "phase": -3.141592653589793}, {"name": "fc", "t0": 1920, "ch": "u272", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u273", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u276", "phase": -3.141592653589793}, {"name": "fc", "t0": 1920, "ch": "u276", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [122, 121], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d121", "label": "X90p_d121", "pulse_shape": "drag", "parameters": {"amp": [0.11884320129366582, 0.0017860284598160065], "beta": -1.7336332363377709, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d121", "label": "CR90p_d121_u274", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.022590325342511187, 0.00232356709898199], "duration": 1664, "sigma": 64, "width": 1408}}, {"name": "parametric_pulse", "t0": 1984, "ch": "d121", "label": "CR90m_d121_u274", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.022590325342511187, -0.0023235670989819874], "duration": 1664, "sigma": 64, "width": 1408}}, {"name": "fc", "t0": 0, "ch": "d122", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d122", "label": "Ym_d122", "pulse_shape": "drag", "parameters": {"amp": [-3.819644956612823e-17, -0.2079317867688985], "beta": 3.3754975505433507, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1824, "ch": "d122", "label": "Xp_d122", "pulse_shape": "drag", "parameters": {"amp": [0.2079317867688985, 0.0], "beta": 3.3754975505433507, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u252", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u272", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u274", "label": "CR90p_u274", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05696881736554441, 0.017797241816534286], "duration": 1664, "sigma": 64, "width": 1408}}, {"name": "parametric_pulse", "t0": 1984, "ch": "u274", "label": "CR90m_u274", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05696881736554441, -0.01779724181653428], "duration": 1664, "sigma": 64, "width": 1408}}, {"name": "fc", "t0": 0, "ch": "u276", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [122, 123], "sequence": [{"name": "fc", "t0": 0, "ch": "d122", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d122", "label": "Ym_d122", "pulse_shape": "drag", "parameters": {"amp": [-3.819644956612823e-17, -0.2079317867688985], "beta": 3.3754975505433507, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1264, "ch": "d122", "label": "Xp_d122", "pulse_shape": "drag", "parameters": {"amp": [0.2079317867688985, 0.0], "beta": 3.3754975505433507, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d123", "label": "X90p_d123", "pulse_shape": "drag", "parameters": {"amp": [0.09329460825304652, -0.0008636369169964813], "beta": 2.131163429421772, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d123", "label": "CR90p_d123_u275", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.026059713303754298, -0.000308862100038335], "duration": 1104, "sigma": 64, "width": 848}}, {"name": "parametric_pulse", "t0": 1424, "ch": "d123", "label": "CR90m_d123_u275", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.026059713303754298, 0.0003088621000383382], "duration": 1104, "sigma": 64, "width": 848}}, {"name": "fc", "t0": 0, "ch": "u252", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u272", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u275", "label": "CR90p_u275", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2289916016053229, -0.020284598591996265], "duration": 1104, "sigma": 64, "width": 848}}, {"name": "parametric_pulse", "t0": 1424, "ch": "u275", "label": "CR90m_u275", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2289916016053229, 0.020284598591996238], "duration": 1104, "sigma": 64, "width": 848}}, {"name": "fc", "t0": 0, "ch": "u276", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [123, 122], "sequence": [{"name": "fc", "t0": 0, "ch": "d122", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d122", "label": "X90p_d122", "pulse_shape": "drag", "parameters": {"amp": [0.10409183397772535, -0.0006774914612654833], "beta": 3.435893473504987, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1264, "ch": "d122", "label": "Xp_d122", "pulse_shape": "drag", "parameters": {"amp": [0.2079317867688985, 0.0], "beta": 3.3754975505433507, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2528, "ch": "d122", "label": "Y90m_d122", "pulse_shape": "drag", "parameters": {"amp": [-0.0006774914612655461, -0.10409183397772535], "beta": 3.435893473504987, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d123", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d123", "label": "Y90p_d123", "pulse_shape": "drag", "parameters": {"amp": [0.0008636369169964804, 0.09329460825304652], "beta": 2.131163429421772, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d123", "label": "CR90p_d123_u275", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.026059713303754298, -0.000308862100038335], "duration": 1104, "sigma": 64, "width": 848}}, {"name": "parametric_pulse", "t0": 1424, "ch": "d123", "label": "CR90m_d123_u275", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.026059713303754298, 0.0003088621000383382], "duration": 1104, "sigma": 64, "width": 848}}, {"name": "fc", "t0": 2528, "ch": "d123", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2528, "ch": "d123", "label": "X90p_d123", "pulse_shape": "drag", "parameters": {"amp": [0.09329460825304652, -0.0008636369169964813], "beta": 2.131163429421772, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u252", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u272", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u275", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u275", "label": "CR90p_u275", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2289916016053229, -0.020284598591996265], "duration": 1104, "sigma": 64, "width": 848}}, {"name": "parametric_pulse", "t0": 1424, "ch": "u275", "label": "CR90m_u275", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2289916016053229, 0.020284598591996238], "duration": 1104, "sigma": 64, "width": 848}}, {"name": "fc", "t0": 2528, "ch": "u275", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u276", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u278", "phase": -3.141592653589793}, {"name": "fc", "t0": 2528, "ch": "u278", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [123, 124], "sequence": [{"name": "fc", "t0": 0, "ch": "d123", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d123", "label": "Y90p_d123", "pulse_shape": "drag", "parameters": {"amp": [0.0008636369169964804, 0.09329460825304652], "beta": 2.131163429421772, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d123", "label": "CR90p_d123_u278", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03248953885370992, -0.00029109432428530986], "duration": 960, "sigma": 64, "width": 704}}, {"name": "parametric_pulse", "t0": 1280, "ch": "d123", "label": "CR90m_d123_u278", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03248953885370992, 0.0002910943242853138], "duration": 960, "sigma": 64, "width": 704}}, {"name": "fc", "t0": 2240, "ch": "d123", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2240, "ch": "d123", "label": "X90p_d123", "pulse_shape": "drag", "parameters": {"amp": [0.09329460825304652, -0.0008636369169964813], "beta": 2.131163429421772, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d124", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d124", "label": "X90p_d124", "pulse_shape": "drag", "parameters": {"amp": [0.10243328753335434, 0.0009627883639966985], "beta": -0.7811557457980061, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d124", "label": "Xp_d124", "pulse_shape": "drag", "parameters": {"amp": [0.20735148288248262, 0.0], "beta": -0.9719461286793764, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2240, "ch": "d124", "label": "Y90m_d124", "pulse_shape": "drag", "parameters": {"amp": [0.0009627883639966611, -0.10243328753335434], "beta": -0.7811557457980061, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u275", "phase": -3.141592653589793}, {"name": "fc", "t0": 2240, "ch": "u275", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u277", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u278", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u278", "label": "CR90p_u278", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.32657096406793507, -0.053128266124164956], "duration": 960, "sigma": 64, "width": 704}}, {"name": "parametric_pulse", "t0": 1280, "ch": "u278", "label": "CR90m_u278", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.32657096406793507, 0.053128266124164915], "duration": 960, "sigma": 64, "width": 704}}, {"name": "fc", "t0": 2240, "ch": "u278", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u280", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [124, 123], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d123", "label": "X90p_d123", "pulse_shape": "drag", "parameters": {"amp": [0.09329460825304652, -0.0008636369169964813], "beta": 2.131163429421772, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d123", "label": "CR90p_d123_u278", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03248953885370992, -0.00029109432428530986], "duration": 960, "sigma": 64, "width": 704}}, {"name": "parametric_pulse", "t0": 1280, "ch": "d123", "label": "CR90m_d123_u278", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03248953885370992, 0.0002910943242853138], "duration": 960, "sigma": 64, "width": 704}}, {"name": "fc", "t0": 0, "ch": "d124", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d124", "label": "Ym_d124", "pulse_shape": "drag", "parameters": {"amp": [-3.8089849471573427e-17, -0.20735148288248262], "beta": -0.9719461286793764, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d124", "label": "Xp_d124", "pulse_shape": "drag", "parameters": {"amp": [0.20735148288248262, 0.0], "beta": -0.9719461286793764, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u277", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u278", "label": "CR90p_u278", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.32657096406793507, -0.053128266124164956], "duration": 960, "sigma": 64, "width": 704}}, {"name": "parametric_pulse", "t0": 1280, "ch": "u278", "label": "CR90m_u278", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.32657096406793507, 0.053128266124164915], "duration": 960, "sigma": 64, "width": 704}}, {"name": "fc", "t0": 0, "ch": "u280", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [124, 125], "sequence": [{"name": "fc", "t0": 0, "ch": "d124", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d124", "label": "Y90p_d124", "pulse_shape": "drag", "parameters": {"amp": [-0.0009627883639966965, 0.10243328753335434], "beta": -0.7811557457980061, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d124", "label": "CR90p_d124_u280", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.016290013301563742, 0.0004737641260987436], "duration": 1536, "sigma": 64, "width": 1280}}, {"name": "parametric_pulse", "t0": 1856, "ch": "d124", "label": "CR90m_d124_u280", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.016290013301563742, -0.0004737641260987416], "duration": 1536, "sigma": 64, "width": 1280}}, {"name": "fc", "t0": 3392, "ch": "d124", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 3392, "ch": "d124", "label": "X90p_d124", "pulse_shape": "drag", "parameters": {"amp": [0.10243328753335434, 0.0009627883639966985], "beta": -0.7811557457980061, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d125", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d125", "label": "X90p_d125", "pulse_shape": "drag", "parameters": {"amp": [0.09622370358957406, 0.0008727947182993097], "beta": 1.0872434992939308, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1696, "ch": "d125", "label": "Xp_d125", "pulse_shape": "drag", "parameters": {"amp": [0.1915843174069768, 0.0], "beta": 0.9852723237098834, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 3392, "ch": "d125", "label": "Y90m_d125", "pulse_shape": "drag", "parameters": {"amp": [0.0008727947182993295, -0.09622370358957406], "beta": 1.0872434992939308, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u277", "phase": -3.141592653589793}, {"name": "fc", "t0": 3392, "ch": "u277", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u279", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u280", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u280", "label": "CR90p_u280", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.26048947350489327, -0.34533052327141717], "duration": 1536, "sigma": 64, "width": 1280}}, {"name": "parametric_pulse", "t0": 1856, "ch": "u280", "label": "CR90m_u280", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2604894735048933, 0.3453305232714171], "duration": 1536, "sigma": 64, "width": 1280}}, {"name": "fc", "t0": 3392, "ch": "u280", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u283", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [125, 124], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d124", "label": "X90p_d124", "pulse_shape": "drag", "parameters": {"amp": [0.10243328753335434, 0.0009627883639966985], "beta": -0.7811557457980061, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d124", "label": "CR90p_d124_u280", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.016290013301563742, 0.0004737641260987436], "duration": 1536, "sigma": 64, "width": 1280}}, {"name": "parametric_pulse", "t0": 1856, "ch": "d124", "label": "CR90m_d124_u280", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.016290013301563742, -0.0004737641260987416], "duration": 1536, "sigma": 64, "width": 1280}}, {"name": "fc", "t0": 0, "ch": "d125", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d125", "label": "Ym_d125", "pulse_shape": "drag", "parameters": {"amp": [-3.51934681618927e-17, -0.1915843174069768], "beta": 0.9852723237098834, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1696, "ch": "d125", "label": "Xp_d125", "pulse_shape": "drag", "parameters": {"amp": [0.1915843174069768, 0.0], "beta": 0.9852723237098834, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u279", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u280", "label": "CR90p_u280", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.26048947350489327, -0.34533052327141717], "duration": 1536, "sigma": 64, "width": 1280}}, {"name": "parametric_pulse", "t0": 1856, "ch": "u280", "label": "CR90m_u280", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2604894735048933, 0.3453305232714171], "duration": 1536, "sigma": 64, "width": 1280}}, {"name": "fc", "t0": 0, "ch": "u283", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [125, 126], "sequence": [{"name": "fc", "t0": 0, "ch": "d125", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d125", "label": "Y90p_d125", "pulse_shape": "drag", "parameters": {"amp": [-0.0008727947182992986, 0.09622370358957406], "beta": 1.0872434992939308, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d125", "label": "CR90p_d125_u283", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03415698330085852, 0.0006419085873482752], "duration": 896, "sigma": 64, "width": 640}}, {"name": "parametric_pulse", "t0": 1216, "ch": "d125", "label": "CR90m_d125_u283", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03415698330085852, -0.000641908587348271], "duration": 896, "sigma": 64, "width": 640}}, {"name": "fc", "t0": 2112, "ch": "d125", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2112, "ch": "d125", "label": "X90p_d125", "pulse_shape": "drag", "parameters": {"amp": [0.09622370358957406, 0.0008727947182993097], "beta": 1.0872434992939308, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d126", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d126", "label": "X90p_d126", "pulse_shape": "drag", "parameters": {"amp": [0.1001629152186539, 0.0017571453497949366], "beta": -1.1484610957632373, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1056, "ch": "d126", "label": "Xp_d126", "pulse_shape": "drag", "parameters": {"amp": [0.20026658537558523, 0.0], "beta": -1.212916472332336, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 2112, "ch": "d126", "label": "Y90m_d126", "pulse_shape": "drag", "parameters": {"amp": [0.0017571453497948822, -0.1001629152186539], "beta": -1.1484610957632373, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u254", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u279", "phase": -3.141592653589793}, {"name": "fc", "t0": 2112, "ch": "u279", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u281", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u283", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u283", "label": "CR90p_u283", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.29465523298866586, 0.06791265085877872], "duration": 896, "sigma": 64, "width": 640}}, {"name": "parametric_pulse", "t0": 1216, "ch": "u283", "label": "CR90m_u283", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.29465523298866586, -0.06791265085877876], "duration": 896, "sigma": 64, "width": 640}}, {"name": "fc", "t0": 2112, "ch": "u283", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [126, 112], "sequence": [{"name": "fc", "t0": 0, "ch": "d112", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d112", "label": "X90p_d112", "pulse_shape": "drag", "parameters": {"amp": [0.11453459690114216, 0.0027065677630154477], "beta": -1.7492738153883627, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 848, "ch": "d112", "label": "Xp_d112", "pulse_shape": "drag", "parameters": {"amp": [0.2303604432729228, 0.0], "beta": -1.8888616433235965, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1696, "ch": "d112", "label": "Y90m_d112", "pulse_shape": "drag", "parameters": {"amp": [0.0027065677630154425, -0.11453459690114216], "beta": -1.7492738153883627, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "d126", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d126", "label": "Y90p_d126", "pulse_shape": "drag", "parameters": {"amp": [-0.0017571453497949388, 0.1001629152186539], "beta": -1.1484610957632373, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d126", "label": "CR90p_d126_u254", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0487589395102775, 0.0022895599399613163], "duration": 688, "sigma": 64, "width": 432}}, {"name": "parametric_pulse", "t0": 1008, "ch": "d126", "label": "CR90m_d126_u254", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0487589395102775, -0.00228955993996131], "duration": 688, "sigma": 64, "width": 432}}, {"name": "fc", "t0": 1696, "ch": "d126", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1696, "ch": "d126", "label": "X90p_d126", "pulse_shape": "drag", "parameters": {"amp": [0.1001629152186539, 0.0017571453497949366], "beta": -1.1484610957632373, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u247", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u254", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u254", "label": "CR90p_u254", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.17513537119557554, 0.16284631686948764], "duration": 688, "sigma": 64, "width": 432}}, {"name": "parametric_pulse", "t0": 1008, "ch": "u254", "label": "CR90m_u254", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.17513537119557557, -0.1628463168694876], "duration": 688, "sigma": 64, "width": 432}}, {"name": "fc", "t0": 1696, "ch": "u254", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u281", "phase": -3.141592653589793}, {"name": "fc", "t0": 1696, "ch": "u281", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u282", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [126, 125], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d125", "label": "X90p_d125", "pulse_shape": "drag", "parameters": {"amp": [0.09622370358957406, 0.0008727947182993097], "beta": 1.0872434992939308, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d125", "label": "CR90p_d125_u283", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03415698330085852, 0.0006419085873482752], "duration": 896, "sigma": 64, "width": 640}}, {"name": "parametric_pulse", "t0": 1216, "ch": "d125", "label": "CR90m_d125_u283", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03415698330085852, -0.000641908587348271], "duration": 896, "sigma": 64, "width": 640}}, {"name": "fc", "t0": 0, "ch": "d126", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d126", "label": "Ym_d126", "pulse_shape": "drag", "parameters": {"amp": [-3.678837491345708e-17, -0.20026658537558523], "beta": -1.212916472332336, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1056, "ch": "d126", "label": "Xp_d126", "pulse_shape": "drag", "parameters": {"amp": [0.20026658537558523, 0.0], "beta": -1.212916472332336, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u254", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u281", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u283", "label": "CR90p_u283", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.29465523298866586, 0.06791265085877872], "duration": 896, "sigma": 64, "width": 640}}, {"name": "parametric_pulse", "t0": 1216, "ch": "u283", "label": "CR90m_u283", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.29465523298866586, -0.06791265085877876], "duration": 896, "sigma": 64, "width": 640}}]}, {"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": "id", "qubits": [27], "sequence": [{"name": "QId_d27", "t0": 0, "ch": "d27"}]}, {"name": "id", "qubits": [28], "sequence": [{"name": "QId_d28", "t0": 0, "ch": "d28"}]}, {"name": "id", "qubits": [29], "sequence": [{"name": "QId_d29", "t0": 0, "ch": "d29"}]}, {"name": "id", "qubits": [30], "sequence": [{"name": "QId_d30", "t0": 0, "ch": "d30"}]}, {"name": "id", "qubits": [31], "sequence": [{"name": "QId_d31", "t0": 0, "ch": "d31"}]}, {"name": "id", "qubits": [32], "sequence": [{"name": "QId_d32", "t0": 0, "ch": "d32"}]}, {"name": "id", "qubits": [33], "sequence": [{"name": "QId_d33", "t0": 0, "ch": "d33"}]}, {"name": "id", "qubits": [34], "sequence": [{"name": "QId_d34", "t0": 0, "ch": "d34"}]}, {"name": "id", "qubits": [35], "sequence": [{"name": "QId_d35", "t0": 0, "ch": "d35"}]}, {"name": "id", "qubits": [36], "sequence": [{"name": "QId_d36", "t0": 0, "ch": "d36"}]}, {"name": "id", "qubits": [37], "sequence": [{"name": "QId_d37", "t0": 0, "ch": "d37"}]}, {"name": "id", "qubits": [38], "sequence": [{"name": "QId_d38", "t0": 0, "ch": "d38"}]}, {"name": "id", "qubits": [39], "sequence": [{"name": "QId_d39", "t0": 0, "ch": "d39"}]}, {"name": "id", "qubits": [40], "sequence": [{"name": "QId_d40", "t0": 0, "ch": "d40"}]}, {"name": "id", "qubits": [41], "sequence": [{"name": "QId_d41", "t0": 0, "ch": "d41"}]}, {"name": "id", "qubits": [42], "sequence": [{"name": "QId_d42", "t0": 0, "ch": "d42"}]}, {"name": "id", "qubits": [43], "sequence": [{"name": "QId_d43", "t0": 0, "ch": "d43"}]}, {"name": "id", "qubits": [44], "sequence": [{"name": "QId_d44", "t0": 0, "ch": "d44"}]}, {"name": "id", "qubits": [45], "sequence": [{"name": "QId_d45", "t0": 0, "ch": "d45"}]}, {"name": "id", "qubits": [46], "sequence": [{"name": "QId_d46", "t0": 0, "ch": "d46"}]}, {"name": "id", "qubits": [47], "sequence": [{"name": "QId_d47", "t0": 0, "ch": "d47"}]}, {"name": "id", "qubits": [48], "sequence": [{"name": "QId_d48", "t0": 0, "ch": "d48"}]}, {"name": "id", "qubits": [49], "sequence": [{"name": "QId_d49", "t0": 0, "ch": "d49"}]}, {"name": "id", "qubits": [50], "sequence": [{"name": "QId_d50", "t0": 0, "ch": "d50"}]}, {"name": "id", "qubits": [51], "sequence": [{"name": "QId_d51", "t0": 0, "ch": "d51"}]}, {"name": "id", "qubits": [52], "sequence": [{"name": "QId_d52", "t0": 0, "ch": "d52"}]}, {"name": "id", "qubits": [53], "sequence": [{"name": "QId_d53", "t0": 0, "ch": "d53"}]}, {"name": "id", "qubits": [54], "sequence": [{"name": "QId_d54", "t0": 0, "ch": "d54"}]}, {"name": "id", "qubits": [55], "sequence": [{"name": "QId_d55", "t0": 0, "ch": "d55"}]}, {"name": "id", "qubits": [56], "sequence": [{"name": "QId_d56", "t0": 0, "ch": "d56"}]}, {"name": "id", "qubits": [57], "sequence": [{"name": "QId_d57", "t0": 0, "ch": "d57"}]}, {"name": "id", "qubits": [58], "sequence": [{"name": "QId_d58", "t0": 0, "ch": "d58"}]}, {"name": "id", "qubits": [59], "sequence": [{"name": "QId_d59", "t0": 0, "ch": "d59"}]}, {"name": "id", "qubits": [60], "sequence": [{"name": "QId_d60", "t0": 0, "ch": "d60"}]}, {"name": "id", "qubits": [61], "sequence": [{"name": "QId_d61", "t0": 0, "ch": "d61"}]}, {"name": "id", "qubits": [62], "sequence": [{"name": "QId_d62", "t0": 0, "ch": "d62"}]}, {"name": "id", "qubits": [63], "sequence": [{"name": "QId_d63", "t0": 0, "ch": "d63"}]}, {"name": "id", "qubits": [64], "sequence": [{"name": "QId_d64", "t0": 0, "ch": "d64"}]}, {"name": "id", "qubits": [65], "sequence": [{"name": "QId_d65", "t0": 0, "ch": "d65"}]}, {"name": "id", "qubits": [66], "sequence": [{"name": "QId_d66", "t0": 0, "ch": "d66"}]}, {"name": "id", "qubits": [67], "sequence": [{"name": "QId_d67", "t0": 0, "ch": "d67"}]}, {"name": "id", "qubits": [68], "sequence": [{"name": "QId_d68", "t0": 0, "ch": "d68"}]}, {"name": "id", "qubits": [69], "sequence": [{"name": "QId_d69", "t0": 0, "ch": "d69"}]}, {"name": "id", "qubits": [70], "sequence": [{"name": "QId_d70", "t0": 0, "ch": "d70"}]}, {"name": "id", "qubits": [71], "sequence": [{"name": "QId_d71", "t0": 0, "ch": "d71"}]}, {"name": "id", "qubits": [72], "sequence": [{"name": "QId_d72", "t0": 0, "ch": "d72"}]}, {"name": "id", "qubits": [73], "sequence": [{"name": "QId_d73", "t0": 0, "ch": "d73"}]}, {"name": "id", "qubits": [74], "sequence": [{"name": "QId_d74", "t0": 0, "ch": "d74"}]}, {"name": "id", "qubits": [75], "sequence": [{"name": "QId_d75", "t0": 0, "ch": "d75"}]}, {"name": "id", "qubits": [76], "sequence": [{"name": "QId_d76", "t0": 0, "ch": "d76"}]}, {"name": "id", "qubits": [77], "sequence": [{"name": "QId_d77", "t0": 0, "ch": "d77"}]}, {"name": "id", "qubits": [78], "sequence": [{"name": "QId_d78", "t0": 0, "ch": "d78"}]}, {"name": "id", "qubits": [79], "sequence": [{"name": "QId_d79", "t0": 0, "ch": "d79"}]}, {"name": "id", "qubits": [80], "sequence": [{"name": "QId_d80", "t0": 0, "ch": "d80"}]}, {"name": "id", "qubits": [81], "sequence": [{"name": "QId_d81", "t0": 0, "ch": "d81"}]}, {"name": "id", "qubits": [82], "sequence": [{"name": "QId_d82", "t0": 0, "ch": "d82"}]}, {"name": "id", "qubits": [83], "sequence": [{"name": "QId_d83", "t0": 0, "ch": "d83"}]}, {"name": "id", "qubits": [84], "sequence": [{"name": "QId_d84", "t0": 0, "ch": "d84"}]}, {"name": "id", "qubits": [85], "sequence": [{"name": "QId_d85", "t0": 0, "ch": "d85"}]}, {"name": "id", "qubits": [86], "sequence": [{"name": "QId_d86", "t0": 0, "ch": "d86"}]}, {"name": "id", "qubits": [87], "sequence": [{"name": "QId_d87", "t0": 0, "ch": "d87"}]}, {"name": "id", "qubits": [88], "sequence": [{"name": "QId_d88", "t0": 0, "ch": "d88"}]}, {"name": "id", "qubits": [89], "sequence": [{"name": "QId_d89", "t0": 0, "ch": "d89"}]}, {"name": "id", "qubits": [90], "sequence": [{"name": "QId_d90", "t0": 0, "ch": "d90"}]}, {"name": "id", "qubits": [91], "sequence": [{"name": "QId_d91", "t0": 0, "ch": "d91"}]}, {"name": "id", "qubits": [92], "sequence": [{"name": "QId_d92", "t0": 0, "ch": "d92"}]}, {"name": "id", "qubits": [93], "sequence": [{"name": "QId_d93", "t0": 0, "ch": "d93"}]}, {"name": "id", "qubits": [94], "sequence": [{"name": "QId_d94", "t0": 0, "ch": "d94"}]}, {"name": "id", "qubits": [95], "sequence": [{"name": "QId_d95", "t0": 0, "ch": "d95"}]}, {"name": "id", "qubits": [96], "sequence": [{"name": "QId_d96", "t0": 0, "ch": "d96"}]}, {"name": "id", "qubits": [97], "sequence": [{"name": "QId_d97", "t0": 0, "ch": "d97"}]}, {"name": "id", "qubits": [98], "sequence": [{"name": "QId_d98", "t0": 0, "ch": "d98"}]}, {"name": "id", "qubits": [99], "sequence": [{"name": "QId_d99", "t0": 0, "ch": "d99"}]}, {"name": "id", "qubits": [100], "sequence": [{"name": "QId_d100", "t0": 0, "ch": "d100"}]}, {"name": "id", "qubits": [101], "sequence": [{"name": "QId_d101", "t0": 0, "ch": "d101"}]}, {"name": "id", "qubits": [102], "sequence": [{"name": "QId_d102", "t0": 0, "ch": "d102"}]}, {"name": "id", "qubits": [103], "sequence": [{"name": "QId_d103", "t0": 0, "ch": "d103"}]}, {"name": "id", "qubits": [104], "sequence": [{"name": "QId_d104", "t0": 0, "ch": "d104"}]}, {"name": "id", "qubits": [105], "sequence": [{"name": "QId_d105", "t0": 0, "ch": "d105"}]}, {"name": "id", "qubits": [106], "sequence": [{"name": "QId_d106", "t0": 0, "ch": "d106"}]}, {"name": "id", "qubits": [107], "sequence": [{"name": "QId_d107", "t0": 0, "ch": "d107"}]}, {"name": "id", "qubits": [108], "sequence": [{"name": "QId_d108", "t0": 0, "ch": "d108"}]}, {"name": "id", "qubits": [109], "sequence": [{"name": "QId_d109", "t0": 0, "ch": "d109"}]}, {"name": "id", "qubits": [110], "sequence": [{"name": "QId_d110", "t0": 0, "ch": "d110"}]}, {"name": "id", "qubits": [111], "sequence": [{"name": "QId_d111", "t0": 0, "ch": "d111"}]}, {"name": "id", "qubits": [112], "sequence": [{"name": "QId_d112", "t0": 0, "ch": "d112"}]}, {"name": "id", "qubits": [113], "sequence": [{"name": "QId_d113", "t0": 0, "ch": "d113"}]}, {"name": "id", "qubits": [114], "sequence": [{"name": "QId_d114", "t0": 0, "ch": "d114"}]}, {"name": "id", "qubits": [115], "sequence": [{"name": "QId_d115", "t0": 0, "ch": "d115"}]}, {"name": "id", "qubits": [116], "sequence": [{"name": "QId_d116", "t0": 0, "ch": "d116"}]}, {"name": "id", "qubits": [117], "sequence": [{"name": "QId_d117", "t0": 0, "ch": "d117"}]}, {"name": "id", "qubits": [118], "sequence": [{"name": "QId_d118", "t0": 0, "ch": "d118"}]}, {"name": "id", "qubits": [119], "sequence": [{"name": "QId_d119", "t0": 0, "ch": "d119"}]}, {"name": "id", "qubits": [120], "sequence": [{"name": "QId_d120", "t0": 0, "ch": "d120"}]}, {"name": "id", "qubits": [121], "sequence": [{"name": "QId_d121", "t0": 0, "ch": "d121"}]}, {"name": "id", "qubits": [122], "sequence": [{"name": "QId_d122", "t0": 0, "ch": "d122"}]}, {"name": "id", "qubits": [123], "sequence": [{"name": "QId_d123", "t0": 0, "ch": "d123"}]}, {"name": "id", "qubits": [124], "sequence": [{"name": "QId_d124", "t0": 0, "ch": "d124"}]}, {"name": "id", "qubits": [125], "sequence": [{"name": "QId_d125", "t0": 0, "ch": "d125"}]}, {"name": "id", "qubits": [126], "sequence": [{"name": "QId_d126", "t0": 0, "ch": "d126"}]}, {"name": "measure", "qubits": [0], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m0", "label": "M_m0", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.27932117839201226, -0.1094517213281622], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m0", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m0", "label": "M_m0", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.27932117839201226, -0.1094517213281622], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m0", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m1", "label": "M_m1", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1676123868901787, -0.1717733616163375], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m1", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m10", "label": "M_m10", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02952619687361329, -0.29854347036600987], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m10", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m100", "label": "M_m100", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0075902942209569715, -0.29990396368444233], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m100", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m101", "label": "M_m101", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2955541135468939, 0.05145644726863405], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m101", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m102", "label": "M_m102", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2953863934488235, 0.05241067224618326], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m102", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m103", "label": "M_m103", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.026938111323388175, 0.2987881158251257], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m103", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m104", "label": "M_m104", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2730949511439439, 0.12417386061360458], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m104", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m105", "label": "M_m105", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.14567752162773756, -0.2622557143179154], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m105", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m106", "label": "M_m106", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3669951964140067, 0.30230158237932636], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m106", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m107", "label": "M_m107", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.24000043167938112, 0.179999424426054], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m107", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m108", "label": "M_m108", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0739261558255142, -0.29074890108968904], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m108", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m109", "label": "M_m109", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03945985301051285, -0.24078812263147178], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m109", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m11", "label": "M_m11", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.29246226101400635, 0.06682683504831873], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m11", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m110", "label": "M_m110", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2821087433296958, 0.10205222651632735], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m110", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m111", "label": "M_m111", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2237986096644118, 0.19978534058402844], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m111", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m112", "label": "M_m112", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.15637241036193275, 0.2560227905433407], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m112", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m113", "label": "M_m113", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.24757864266475293, -0.16942495594297366], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m113", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m114", "label": "M_m114", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10905063477587666, 0.2794780117558059], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m114", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m115", "label": "M_m115", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.10491067459711433, -0.2810582686127174], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m115", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m116", "label": "M_m116", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1287400582490323, 0.2709723185161831], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m116", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m117", "label": "M_m117", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.064012705762845, -0.2930910669074024], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m117", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m118", "label": "M_m118", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.210918338401372, 0.21333882564128903], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m118", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m119", "label": "M_m119", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.14771727976376142, 0.26111224647494924], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m119", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m12", "label": "M_m12", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.20705032409768578, -0.2944998527861148], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m12", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m120", "label": "M_m120", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2614599091066749, -0.14710103986692036], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m120", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m121", "label": "M_m121", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.28347026908807577, -0.09820695771244474], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m121", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m122", "label": "M_m122", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09426489298223056, -0.284805424721947], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m122", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m123", "label": "M_m123", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10217112693770465, 0.28206570302019957], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m123", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m124", "label": "M_m124", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.026152301025696018, 0.29885792134568123], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m124", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m125", "label": "M_m125", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.18984167859413034, -0.23229321356544816], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m125", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m126", "label": "M_m126", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.246444623490296, 0.17107030003108728], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m126", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m13", "label": "M_m13", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.003289138926036338, 0.2999819687333311], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m13", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m14", "label": "M_m14", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.18477362613017545, -0.23634446701098405], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m14", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m15", "label": "M_m15", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2719258825920292, 0.1267135129989929], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m15", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m16", "label": "M_m16", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.23346871891663035, 0.18839415406914156], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m16", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m17", "label": "M_m17", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.26521596213967175, 0.05060131842480222], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m17", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m18", "label": "M_m18", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.29986883217656213, -0.00887037141639547], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m18", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m19", "label": "M_m19", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0129154282441024, 0.2997218572498032], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m19", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m2", "label": "M_m2", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.17024330518887293, -0.2470166331208655], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m2", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m20", "label": "M_m20", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.16061613736603683, -0.25338203649354146], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m20", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m21", "label": "M_m21", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.17484251331708262, 0.24378288606250806], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m21", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m22", "label": "M_m22", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.299681933084228, 0.013810828465383642], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m22", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m23", "label": "M_m23", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.17779324047625583, -0.35831489452847515], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m23", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m24", "label": "M_m24", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2291121132321878, -0.1936688915915025], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m24", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m25", "label": "M_m25", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2864351617056307, -0.08919023566887342], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m25", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m26", "label": "M_m26", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.022986974060449108, 0.2991180352695976], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m26", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m27", "label": "M_m27", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1399768841122649, 0.1274251781015886], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m27", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m28", "label": "M_m28", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.25274178531848895, -0.16162174963173379], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m28", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m29", "label": "M_m29", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2918488351256777, 0.06945687464740251], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m29", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m3", "label": "M_m3", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.20162507681649808, -0.13018190503576618], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m3", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m30", "label": "M_m30", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.16491517929848834, -0.25060523465591744], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m30", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m31", "label": "M_m31", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2593894434975319, 0.15072198446822782], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m31", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m32", "label": "M_m32", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.028400487046228245, -0.2986526616917], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m32", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m33", "label": "M_m33", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.22627041468348993, 0.19698146978576817], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m33", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m34", "label": "M_m34", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1714085685377328, 0.24620946901336946], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m34", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m35", "label": "M_m35", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1402954932078006, -0.26517385728155773], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m35", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m36", "label": "M_m36", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2933489403221412, 0.06282037258626243], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m36", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m37", "label": "M_m37", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.21171052642283594, 0.17077076155409537], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m37", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m38", "label": "M_m38", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.26736872531553996, -0.1360660307466317], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m38", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m39", "label": "M_m39", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05628172913214406, 0.2946733224536893], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m39", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m4", "label": "M_m4", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.38840128581911393, 0.09562657148543498], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m4", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m40", "label": "M_m40", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04851756389813192, 0.29605074901677025], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m40", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m41", "label": "M_m41", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2587157857166209, -0.1518754167764865], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m41", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m42", "label": "M_m42", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07271483554201087, 0.29105420919838676], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m42", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m43", "label": "M_m43", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2997874419384487, 0.01129113174138184], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m43", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m44", "label": "M_m44", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03586549786567346, 0.29784839442717725], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m44", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m45", "label": "M_m45", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05764006448879852, -0.2944106366382287], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m45", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m46", "label": "M_m46", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.01071679188690437, 0.299808522846921], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m46", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m47", "label": "M_m47", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.12053496305290365, -0.27472044460111655], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m47", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m48", "label": "M_m48", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.22864563253632963, 0.1942193984185455], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m48", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m49", "label": "M_m49", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2989119091229712, -0.025527839400556297], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m49", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m5", "label": "M_m5", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.24087113385881026, 0.1788325945502416], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m5", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m50", "label": "M_m50", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2918913842192984, 0.06927784507721013], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m50", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m51", "label": "M_m51", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.29525647098436497, 0.05313771110857947], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m51", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m52", "label": "M_m52", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.29951557939401097, -0.017041646055175913], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m52", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m53", "label": "M_m53", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.12186504020992557, -0.0727922693328984], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m53", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m54", "label": "M_m54", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1549374651742024, 0.2568937170998793], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m54", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m55", "label": "M_m55", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.18126853156855258, 0.23904334222684526], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m55", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m56", "label": "M_m56", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.23102241471580118, 0.19138611208465564], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m56", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m57", "label": "M_m57", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.24571481065404013, 0.17211691324576212], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m57", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m58", "label": "M_m58", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07457928838798482, 0.2905820533748459], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m58", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m59", "label": "M_m59", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.17156285309146846, 0.24610198584959692], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m59", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m6", "label": "M_m6", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.29924725206404185, -0.02123869421880268], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m6", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m60", "label": "M_m60", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2895794147218866, -0.07838215721278415], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m60", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m61", "label": "M_m61", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.23325414135870787, -0.18865976131388462], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m61", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m62", "label": "M_m62", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.23069047400849965, -0.19178609230529137], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m62", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m63", "label": "M_m63", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.08740875800440126, 0.28698381317441585], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m63", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m64", "label": "M_m64", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.042455892555944987, 0.2969806343640576], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m64", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m65", "label": "M_m65", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.20653345948520832, -0.21758660370774624], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m65", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m66", "label": "M_m66", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.29094650956339607, 0.07314457309244944], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m66", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m67", "label": "M_m67", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.19355558263325157, 0.35005176250306547], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m67", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m68", "label": "M_m68", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.09446494905832074, -0.28473913218841007], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m68", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m69", "label": "M_m69", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.27269924552018676, -0.12504047941655097], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m69", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m7", "label": "M_m7", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.24331754012456205, -0.1754895286555073], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m7", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m70", "label": "M_m70", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.15029361988882964, 0.25963787824720796], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m70", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m71", "label": "M_m71", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.29973359177068665, -0.01264017263502988], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m71", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m72", "label": "M_m72", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2419128347844929, 0.17742091299091728], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m72", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m73", "label": "M_m73", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.29085091991647616, 0.0735237538741022], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m73", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m74", "label": "M_m74", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.016640872003987773, -0.29953811339952535], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m74", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m75", "label": "M_m75", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.14697000643949554, -0.2615335871492888], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m75", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m76", "label": "M_m76", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.22168373587225906, -0.2021294665547764], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m76", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m77", "label": "M_m77", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.010407588116963745, 0.29981941583157623], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m77", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m78", "label": "M_m78", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.08697664807843185, -0.2871150687251378], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m78", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m79", "label": "M_m79", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.099481238872394, 0.28302558738109473], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m79", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m8", "label": "M_m8", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2414682203020401, 0.17802555598611516], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m8", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m80", "label": "M_m80", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2999836347972946, 0.0031335050348400176], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m80", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m81", "label": "M_m81", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1262541730739084, 0.27213945649505433], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m81", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m82", "label": "M_m82", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.23827165285231558, -0.18228170354433712], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m82", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m83", "label": "M_m83", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.27010451454117573, -0.13055095259888294], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m83", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m84", "label": "M_m84", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.12380296760296089, -0.2732632891785873], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m84", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m85", "label": "M_m85", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.17824363425466666, 0.24130728718314456], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m85", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m86", "label": "M_m86", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.17340282041675806, 0.24480903143371477], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m86", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m87", "label": "M_m87", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.22967072762916402, -0.19300610578499933], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m87", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m88", "label": "M_m88", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1846959775719798, 0.23640515195048253], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m88", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m89", "label": "M_m89", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2838832313274208, -0.09700675734763047], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m89", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m9", "label": "M_m9", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.19610341085083066, 0.2270318309239264], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m9", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m90", "label": "M_m90", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.17611001630461867, 0.24286881676573246], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m90", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m91", "label": "M_m91", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.004165190210915895, 0.2999710839239457], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m91", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m92", "label": "M_m92", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2875981234055808, 0.08536579768026721], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m92", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m93", "label": "M_m93", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03020232877695489, 0.29847582705547315], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m93", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m94", "label": "M_m94", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.15736872759593304, -0.25541159639851324], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m94", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m95", "label": "M_m95", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1043995418944848, 0.28124853004455275], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m95", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m96", "label": "M_m96", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.24231509289911038, 0.17687112752876172], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m96", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m97", "label": "M_m97", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.17411116972661347, 0.24430575223770395], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m97", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m98", "label": "M_m98", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10679763250407308, 0.28034668839050864], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m98", "duration": 1648}, {"name": "parametric_pulse", "t0": 0, "ch": "m99", "label": "M_m99", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.28643172311697024, -0.08920127797427177], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m99", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [1], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m1", "label": "M_m1", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1676123868901787, -0.1717733616163375], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m1", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [2], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m2", "label": "M_m2", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.17024330518887293, -0.2470166331208655], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m2", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [3], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m3", "label": "M_m3", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.20162507681649808, -0.13018190503576618], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m3", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [4], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m4", "label": "M_m4", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.38840128581911393, 0.09562657148543498], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m4", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [5], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m5", "label": "M_m5", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.24087113385881026, 0.1788325945502416], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m5", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [6], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m6", "label": "M_m6", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.29924725206404185, -0.02123869421880268], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m6", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [7], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m7", "label": "M_m7", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.24331754012456205, -0.1754895286555073], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m7", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [8], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m8", "label": "M_m8", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2414682203020401, 0.17802555598611516], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m8", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [9], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m9", "label": "M_m9", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.19610341085083066, 0.2270318309239264], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m9", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [10], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m10", "label": "M_m10", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.02952619687361329, -0.29854347036600987], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m10", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [11], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m11", "label": "M_m11", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.29246226101400635, 0.06682683504831873], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m11", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [12], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m12", "label": "M_m12", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.20705032409768578, -0.2944998527861148], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m12", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [13], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m13", "label": "M_m13", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.003289138926036338, 0.2999819687333311], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m13", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [14], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m14", "label": "M_m14", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.18477362613017545, -0.23634446701098405], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m14", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [15], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m15", "label": "M_m15", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2719258825920292, 0.1267135129989929], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m15", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [16], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m16", "label": "M_m16", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.23346871891663035, 0.18839415406914156], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m16", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [17], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m17", "label": "M_m17", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.26521596213967175, 0.05060131842480222], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m17", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [18], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m18", "label": "M_m18", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.29986883217656213, -0.00887037141639547], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m18", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [19], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m19", "label": "M_m19", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0129154282441024, 0.2997218572498032], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m19", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [20], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m20", "label": "M_m20", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.16061613736603683, -0.25338203649354146], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m20", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [21], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m21", "label": "M_m21", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.17484251331708262, 0.24378288606250806], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m21", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [22], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m22", "label": "M_m22", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.299681933084228, 0.013810828465383642], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m22", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [23], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m23", "label": "M_m23", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.17779324047625583, -0.35831489452847515], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m23", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [24], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m24", "label": "M_m24", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2291121132321878, -0.1936688915915025], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m24", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [25], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m25", "label": "M_m25", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2864351617056307, -0.08919023566887342], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m25", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [26], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m26", "label": "M_m26", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.022986974060449108, 0.2991180352695976], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m26", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [27], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m27", "label": "M_m27", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1399768841122649, 0.1274251781015886], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m27", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [28], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m28", "label": "M_m28", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.25274178531848895, -0.16162174963173379], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m28", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [29], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m29", "label": "M_m29", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2918488351256777, 0.06945687464740251], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m29", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [30], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m30", "label": "M_m30", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.16491517929848834, -0.25060523465591744], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m30", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [31], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m31", "label": "M_m31", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2593894434975319, 0.15072198446822782], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m31", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [32], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m32", "label": "M_m32", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.028400487046228245, -0.2986526616917], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m32", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [33], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m33", "label": "M_m33", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.22627041468348993, 0.19698146978576817], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m33", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [34], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m34", "label": "M_m34", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1714085685377328, 0.24620946901336946], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m34", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [35], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m35", "label": "M_m35", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1402954932078006, -0.26517385728155773], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m35", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [36], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m36", "label": "M_m36", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2933489403221412, 0.06282037258626243], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m36", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [37], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m37", "label": "M_m37", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.21171052642283594, 0.17077076155409537], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m37", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [38], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m38", "label": "M_m38", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.26736872531553996, -0.1360660307466317], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m38", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [39], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m39", "label": "M_m39", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05628172913214406, 0.2946733224536893], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m39", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [40], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m40", "label": "M_m40", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04851756389813192, 0.29605074901677025], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m40", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [41], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m41", "label": "M_m41", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2587157857166209, -0.1518754167764865], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m41", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [42], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m42", "label": "M_m42", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07271483554201087, 0.29105420919838676], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m42", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [43], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m43", "label": "M_m43", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2997874419384487, 0.01129113174138184], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m43", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [44], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m44", "label": "M_m44", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03586549786567346, 0.29784839442717725], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m44", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [45], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m45", "label": "M_m45", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05764006448879852, -0.2944106366382287], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m45", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [46], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m46", "label": "M_m46", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.01071679188690437, 0.299808522846921], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m46", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [47], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m47", "label": "M_m47", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.12053496305290365, -0.27472044460111655], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m47", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [48], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m48", "label": "M_m48", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.22864563253632963, 0.1942193984185455], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m48", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [49], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m49", "label": "M_m49", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2989119091229712, -0.025527839400556297], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m49", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [50], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m50", "label": "M_m50", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2918913842192984, 0.06927784507721013], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m50", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [51], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m51", "label": "M_m51", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.29525647098436497, 0.05313771110857947], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m51", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [52], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m52", "label": "M_m52", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.29951557939401097, -0.017041646055175913], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m52", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [53], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m53", "label": "M_m53", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.12186504020992557, -0.0727922693328984], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m53", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [54], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m54", "label": "M_m54", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1549374651742024, 0.2568937170998793], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m54", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [55], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m55", "label": "M_m55", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.18126853156855258, 0.23904334222684526], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m55", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [56], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m56", "label": "M_m56", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.23102241471580118, 0.19138611208465564], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m56", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [57], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m57", "label": "M_m57", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.24571481065404013, 0.17211691324576212], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m57", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [58], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m58", "label": "M_m58", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07457928838798482, 0.2905820533748459], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m58", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [59], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m59", "label": "M_m59", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.17156285309146846, 0.24610198584959692], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m59", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [60], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m60", "label": "M_m60", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2895794147218866, -0.07838215721278415], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m60", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [61], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m61", "label": "M_m61", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.23325414135870787, -0.18865976131388462], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m61", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [62], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m62", "label": "M_m62", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.23069047400849965, -0.19178609230529137], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m62", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [63], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m63", "label": "M_m63", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.08740875800440126, 0.28698381317441585], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m63", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [64], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m64", "label": "M_m64", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.042455892555944987, 0.2969806343640576], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m64", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [65], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m65", "label": "M_m65", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.20653345948520832, -0.21758660370774624], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m65", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [66], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m66", "label": "M_m66", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.29094650956339607, 0.07314457309244944], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m66", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [67], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m67", "label": "M_m67", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.19355558263325157, 0.35005176250306547], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m67", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [68], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m68", "label": "M_m68", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.09446494905832074, -0.28473913218841007], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m68", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [69], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m69", "label": "M_m69", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.27269924552018676, -0.12504047941655097], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m69", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [70], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m70", "label": "M_m70", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.15029361988882964, 0.25963787824720796], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m70", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [71], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m71", "label": "M_m71", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.29973359177068665, -0.01264017263502988], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m71", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [72], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m72", "label": "M_m72", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2419128347844929, 0.17742091299091728], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m72", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [73], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m73", "label": "M_m73", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.29085091991647616, 0.0735237538741022], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m73", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [74], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m74", "label": "M_m74", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.016640872003987773, -0.29953811339952535], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m74", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [75], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m75", "label": "M_m75", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.14697000643949554, -0.2615335871492888], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m75", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [76], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m76", "label": "M_m76", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.22168373587225906, -0.2021294665547764], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m76", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [77], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m77", "label": "M_m77", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.010407588116963745, 0.29981941583157623], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m77", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [78], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m78", "label": "M_m78", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.08697664807843185, -0.2871150687251378], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m78", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [79], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m79", "label": "M_m79", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.099481238872394, 0.28302558738109473], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m79", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [80], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m80", "label": "M_m80", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2999836347972946, 0.0031335050348400176], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m80", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [81], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m81", "label": "M_m81", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1262541730739084, 0.27213945649505433], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m81", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [82], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m82", "label": "M_m82", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.23827165285231558, -0.18228170354433712], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m82", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [83], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m83", "label": "M_m83", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.27010451454117573, -0.13055095259888294], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m83", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [84], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m84", "label": "M_m84", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.12380296760296089, -0.2732632891785873], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m84", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [85], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m85", "label": "M_m85", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.17824363425466666, 0.24130728718314456], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m85", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [86], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m86", "label": "M_m86", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.17340282041675806, 0.24480903143371477], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m86", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [87], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m87", "label": "M_m87", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.22967072762916402, -0.19300610578499933], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m87", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [88], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m88", "label": "M_m88", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1846959775719798, 0.23640515195048253], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m88", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [89], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m89", "label": "M_m89", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2838832313274208, -0.09700675734763047], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m89", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [90], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m90", "label": "M_m90", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.17611001630461867, 0.24286881676573246], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m90", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [91], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m91", "label": "M_m91", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.004165190210915895, 0.2999710839239457], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m91", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [92], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m92", "label": "M_m92", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2875981234055808, 0.08536579768026721], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m92", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [93], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m93", "label": "M_m93", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03020232877695489, 0.29847582705547315], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m93", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [94], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m94", "label": "M_m94", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.15736872759593304, -0.25541159639851324], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m94", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [95], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m95", "label": "M_m95", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1043995418944848, 0.28124853004455275], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m95", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [96], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m96", "label": "M_m96", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.24231509289911038, 0.17687112752876172], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m96", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [97], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m97", "label": "M_m97", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.17411116972661347, 0.24430575223770395], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m97", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [98], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m98", "label": "M_m98", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10679763250407308, 0.28034668839050864], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m98", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [99], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m99", "label": "M_m99", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.28643172311697024, -0.08920127797427177], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m99", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [100], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m100", "label": "M_m100", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0075902942209569715, -0.29990396368444233], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m100", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [101], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m101", "label": "M_m101", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2955541135468939, 0.05145644726863405], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m101", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [102], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m102", "label": "M_m102", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2953863934488235, 0.05241067224618326], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m102", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [103], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m103", "label": "M_m103", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.026938111323388175, 0.2987881158251257], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m103", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [104], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m104", "label": "M_m104", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2730949511439439, 0.12417386061360458], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m104", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [105], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m105", "label": "M_m105", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.14567752162773756, -0.2622557143179154], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m105", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [106], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m106", "label": "M_m106", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3669951964140067, 0.30230158237932636], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m106", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [107], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m107", "label": "M_m107", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.24000043167938112, 0.179999424426054], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m107", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [108], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m108", "label": "M_m108", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0739261558255142, -0.29074890108968904], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m108", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [109], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m109", "label": "M_m109", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03945985301051285, -0.24078812263147178], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m109", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [110], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m110", "label": "M_m110", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2821087433296958, 0.10205222651632735], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m110", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [111], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m111", "label": "M_m111", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2237986096644118, 0.19978534058402844], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m111", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [112], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m112", "label": "M_m112", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.15637241036193275, 0.2560227905433407], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m112", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [113], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m113", "label": "M_m113", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.24757864266475293, -0.16942495594297366], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m113", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [114], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m114", "label": "M_m114", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10905063477587666, 0.2794780117558059], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m114", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [115], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m115", "label": "M_m115", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.10491067459711433, -0.2810582686127174], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m115", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [116], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m116", "label": "M_m116", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1287400582490323, 0.2709723185161831], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m116", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [117], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m117", "label": "M_m117", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.064012705762845, -0.2930910669074024], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m117", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [118], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m118", "label": "M_m118", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.210918338401372, 0.21333882564128903], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m118", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [119], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m119", "label": "M_m119", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.14771727976376142, 0.26111224647494924], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m119", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [120], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m120", "label": "M_m120", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2614599091066749, -0.14710103986692036], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m120", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [121], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m121", "label": "M_m121", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.28347026908807577, -0.09820695771244474], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m121", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [122], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m122", "label": "M_m122", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.09426489298223056, -0.284805424721947], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m122", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [123], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m123", "label": "M_m123", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.10217112693770465, 0.28206570302019957], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m123", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [124], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m124", "label": "M_m124", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.026152301025696018, 0.29885792134568123], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m124", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [125], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m125", "label": "M_m125", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.18984167859413034, -0.23229321356544816], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m125", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "measure", "qubits": [126], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "m126", "label": "M_m126", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.246444623490296, 0.17107030003108728], "duration": 2240, "sigma": 64, "width": 1984}}, {"name": "delay", "t0": 2240, "ch": "m126", "duration": 1648}, {"name": "acquire", "t0": 0, "duration": 2240, "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126], "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, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126]}]}, {"name": "rz", "qubits": [0], "sequence": [{"name": "fc", "t0": 0, "ch": "d0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u28", "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": "rz", "qubits": [2], "sequence": [{"name": "fc", "t0": 0, "ch": "d2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u3", "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": "u5", "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": "u11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u30", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u7", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [5], "sequence": [{"name": "fc", "t0": 0, "ch": "d5", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u13", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u9", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [6], "sequence": [{"name": "fc", "t0": 0, "ch": "d6", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u12", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u15", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [7], "sequence": [{"name": "fc", "t0": 0, "ch": "d7", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u14", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u17", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [8], "sequence": [{"name": "fc", "t0": 0, "ch": "d8", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u16", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u32", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [9], "sequence": [{"name": "fc", "t0": 0, "ch": "d9", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u20", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [10], "sequence": [{"name": "fc", "t0": 0, "ch": "d10", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u19", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u22", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [11], "sequence": [{"name": "fc", "t0": 0, "ch": "d11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u21", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u24", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [12], "sequence": [{"name": "fc", "t0": 0, "ch": "d12", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u23", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u27", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u34", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [13], "sequence": [{"name": "fc", "t0": 0, "ch": "d13", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u25", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [14], "sequence": [{"name": "fc", "t0": 0, "ch": "d14", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u1", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u36", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [15], "sequence": [{"name": "fc", "t0": 0, "ch": "d15", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u10", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u45", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [16], "sequence": [{"name": "fc", "t0": 0, "ch": "d16", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u18", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u55", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [17], "sequence": [{"name": "fc", "t0": 0, "ch": "d17", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u26", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u65", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [18], "sequence": [{"name": "fc", "t0": 0, "ch": "d18", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u29", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u38", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [19], "sequence": [{"name": "fc", "t0": 0, "ch": "d19", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u37", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u40", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [20], "sequence": [{"name": "fc", "t0": 0, "ch": "d20", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u39", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u43", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u72", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [21], "sequence": [{"name": "fc", "t0": 0, "ch": "d21", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u41", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u46", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [22], "sequence": [{"name": "fc", "t0": 0, "ch": "d22", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u31", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u44", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u48", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [23], "sequence": [{"name": "fc", "t0": 0, "ch": "d23", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u47", "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": "fc", "t0": 0, "ch": "u74", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [25], "sequence": [{"name": "fc", "t0": 0, "ch": "d25", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u51", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u56", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [26], "sequence": [{"name": "fc", "t0": 0, "ch": "d26", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u33", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u54", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u58", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [27], "sequence": [{"name": "fc", "t0": 0, "ch": "d27", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u57", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u60", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [28], "sequence": [{"name": "fc", "t0": 0, "ch": "d28", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u59", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u63", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u76", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [29], "sequence": [{"name": "fc", "t0": 0, "ch": "d29", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u61", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u66", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [30], "sequence": [{"name": "fc", "t0": 0, "ch": "d30", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u35", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u64", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u68", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [31], "sequence": [{"name": "fc", "t0": 0, "ch": "d31", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u67", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u70", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [32], "sequence": [{"name": "fc", "t0": 0, "ch": "d32", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u69", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u78", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [33], "sequence": [{"name": "fc", "t0": 0, "ch": "d33", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u42", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u84", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [34], "sequence": [{"name": "fc", "t0": 0, "ch": "d34", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u52", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u94", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [35], "sequence": [{"name": "fc", "t0": 0, "ch": "d35", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u104", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u62", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [36], "sequence": [{"name": "fc", "t0": 0, "ch": "d36", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u114", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u71", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [37], "sequence": [{"name": "fc", "t0": 0, "ch": "d37", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u116", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u82", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [38], "sequence": [{"name": "fc", "t0": 0, "ch": "d38", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u80", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u85", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [39], "sequence": [{"name": "fc", "t0": 0, "ch": "d39", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u73", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u83", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u87", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [40], "sequence": [{"name": "fc", "t0": 0, "ch": "d40", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u86", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u89", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [41], "sequence": [{"name": "fc", "t0": 0, "ch": "d41", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u118", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u88", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u92", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [42], "sequence": [{"name": "fc", "t0": 0, "ch": "d42", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u90", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u95", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [43], "sequence": [{"name": "fc", "t0": 0, "ch": "d43", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u75", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u93", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u97", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [44], "sequence": [{"name": "fc", "t0": 0, "ch": "d44", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u96", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u99", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [45], "sequence": [{"name": "fc", "t0": 0, "ch": "d45", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u102", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u120", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u98", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [46], "sequence": [{"name": "fc", "t0": 0, "ch": "d46", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u100", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u105", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [47], "sequence": [{"name": "fc", "t0": 0, "ch": "d47", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u103", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u107", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u77", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [48], "sequence": [{"name": "fc", "t0": 0, "ch": "d48", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u106", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u109", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [49], "sequence": [{"name": "fc", "t0": 0, "ch": "d49", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u108", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u112", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u122", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [50], "sequence": [{"name": "fc", "t0": 0, "ch": "d50", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u110", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u115", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [51], "sequence": [{"name": "fc", "t0": 0, "ch": "d51", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u113", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u79", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [52], "sequence": [{"name": "fc", "t0": 0, "ch": "d52", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u124", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u81", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [53], "sequence": [{"name": "fc", "t0": 0, "ch": "d53", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u133", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u91", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [54], "sequence": [{"name": "fc", "t0": 0, "ch": "d54", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u101", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u143", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [55], "sequence": [{"name": "fc", "t0": 0, "ch": "d55", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u111", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u153", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [56], "sequence": [{"name": "fc", "t0": 0, "ch": "d56", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u117", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u126", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [57], "sequence": [{"name": "fc", "t0": 0, "ch": "d57", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u125", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u128", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [58], "sequence": [{"name": "fc", "t0": 0, "ch": "d58", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u127", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u131", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u160", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [59], "sequence": [{"name": "fc", "t0": 0, "ch": "d59", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u129", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u134", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [60], "sequence": [{"name": "fc", "t0": 0, "ch": "d60", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u119", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u132", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u136", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [61], "sequence": [{"name": "fc", "t0": 0, "ch": "d61", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u135", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u138", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [62], "sequence": [{"name": "fc", "t0": 0, "ch": "d62", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u137", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u141", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u162", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [63], "sequence": [{"name": "fc", "t0": 0, "ch": "d63", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u139", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u144", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [64], "sequence": [{"name": "fc", "t0": 0, "ch": "d64", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u121", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u142", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u146", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [65], "sequence": [{"name": "fc", "t0": 0, "ch": "d65", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u145", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u148", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [66], "sequence": [{"name": "fc", "t0": 0, "ch": "d66", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u147", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u151", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u164", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [67], "sequence": [{"name": "fc", "t0": 0, "ch": "d67", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u149", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u154", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [68], "sequence": [{"name": "fc", "t0": 0, "ch": "d68", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u123", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u152", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u156", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [69], "sequence": [{"name": "fc", "t0": 0, "ch": "d69", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u155", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u158", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [70], "sequence": [{"name": "fc", "t0": 0, "ch": "d70", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u157", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u166", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [71], "sequence": [{"name": "fc", "t0": 0, "ch": "d71", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u130", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u172", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [72], "sequence": [{"name": "fc", "t0": 0, "ch": "d72", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u140", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u182", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [73], "sequence": [{"name": "fc", "t0": 0, "ch": "d73", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u150", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u192", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [74], "sequence": [{"name": "fc", "t0": 0, "ch": "d74", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u159", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u202", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [75], "sequence": [{"name": "fc", "t0": 0, "ch": "d75", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u170", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u204", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [76], "sequence": [{"name": "fc", "t0": 0, "ch": "d76", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u168", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u173", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [77], "sequence": [{"name": "fc", "t0": 0, "ch": "d77", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u161", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u171", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u175", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [78], "sequence": [{"name": "fc", "t0": 0, "ch": "d78", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u174", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u177", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [79], "sequence": [{"name": "fc", "t0": 0, "ch": "d79", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u176", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u180", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u206", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [80], "sequence": [{"name": "fc", "t0": 0, "ch": "d80", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u178", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u183", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [81], "sequence": [{"name": "fc", "t0": 0, "ch": "d81", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u163", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u181", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u185", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [82], "sequence": [{"name": "fc", "t0": 0, "ch": "d82", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u184", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u187", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [83], "sequence": [{"name": "fc", "t0": 0, "ch": "d83", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u186", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u190", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u208", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [84], "sequence": [{"name": "fc", "t0": 0, "ch": "d84", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u188", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u193", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [85], "sequence": [{"name": "fc", "t0": 0, "ch": "d85", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u165", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u191", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u195", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [86], "sequence": [{"name": "fc", "t0": 0, "ch": "d86", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u194", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u197", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [87], "sequence": [{"name": "fc", "t0": 0, "ch": "d87", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u196", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u200", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u210", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [88], "sequence": [{"name": "fc", "t0": 0, "ch": "d88", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u198", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u203", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [89], "sequence": [{"name": "fc", "t0": 0, "ch": "d89", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u167", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u201", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [90], "sequence": [{"name": "fc", "t0": 0, "ch": "d90", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u169", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u212", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [91], "sequence": [{"name": "fc", "t0": 0, "ch": "d91", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u179", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u221", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [92], "sequence": [{"name": "fc", "t0": 0, "ch": "d92", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u189", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u231", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [93], "sequence": [{"name": "fc", "t0": 0, "ch": "d93", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u199", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u241", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [94], "sequence": [{"name": "fc", "t0": 0, "ch": "d94", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u205", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u214", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [95], "sequence": [{"name": "fc", "t0": 0, "ch": "d95", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u213", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u216", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [96], "sequence": [{"name": "fc", "t0": 0, "ch": "d96", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u215", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u219", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u248", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [97], "sequence": [{"name": "fc", "t0": 0, "ch": "d97", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u217", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u222", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [98], "sequence": [{"name": "fc", "t0": 0, "ch": "d98", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u207", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u220", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u224", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [99], "sequence": [{"name": "fc", "t0": 0, "ch": "d99", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u223", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u226", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [100], "sequence": [{"name": "fc", "t0": 0, "ch": "d100", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u225", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u229", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u249", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [101], "sequence": [{"name": "fc", "t0": 0, "ch": "d101", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u227", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u232", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [102], "sequence": [{"name": "fc", "t0": 0, "ch": "d102", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u209", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u230", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u234", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [103], "sequence": [{"name": "fc", "t0": 0, "ch": "d103", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u233", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u236", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [104], "sequence": [{"name": "fc", "t0": 0, "ch": "d104", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u235", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u239", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u251", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [105], "sequence": [{"name": "fc", "t0": 0, "ch": "d105", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u237", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u242", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [106], "sequence": [{"name": "fc", "t0": 0, "ch": "d106", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u211", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u240", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u244", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [107], "sequence": [{"name": "fc", "t0": 0, "ch": "d107", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u243", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u246", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [108], "sequence": [{"name": "fc", "t0": 0, "ch": "d108", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u245", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u253", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [109], "sequence": [{"name": "fc", "t0": 0, "ch": "d109", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u218", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [110], "sequence": [{"name": "fc", "t0": 0, "ch": "d110", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u228", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u264", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [111], "sequence": [{"name": "fc", "t0": 0, "ch": "d111", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u238", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u273", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [112], "sequence": [{"name": "fc", "t0": 0, "ch": "d112", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u247", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u282", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [113], "sequence": [{"name": "fc", "t0": 0, "ch": "d113", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u256", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [114], "sequence": [{"name": "fc", "t0": 0, "ch": "d114", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u255", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u258", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [115], "sequence": [{"name": "fc", "t0": 0, "ch": "d115", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u257", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u260", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [116], "sequence": [{"name": "fc", "t0": 0, "ch": "d116", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u259", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u262", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [117], "sequence": [{"name": "fc", "t0": 0, "ch": "d117", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u261", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u265", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [118], "sequence": [{"name": "fc", "t0": 0, "ch": "d118", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u250", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u263", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u267", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [119], "sequence": [{"name": "fc", "t0": 0, "ch": "d119", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u266", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u269", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [120], "sequence": [{"name": "fc", "t0": 0, "ch": "d120", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u268", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u271", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [121], "sequence": [{"name": "fc", "t0": 0, "ch": "d121", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u270", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u274", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [122], "sequence": [{"name": "fc", "t0": 0, "ch": "d122", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u252", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u272", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u276", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [123], "sequence": [{"name": "fc", "t0": 0, "ch": "d123", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u275", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u278", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [124], "sequence": [{"name": "fc", "t0": 0, "ch": "d124", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u277", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u280", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [125], "sequence": [{"name": "fc", "t0": 0, "ch": "d125", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u279", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u283", "phase": "-(P0)"}]}, {"name": "rz", "qubits": [126], "sequence": [{"name": "fc", "t0": 0, "ch": "d126", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u254", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u281", "phase": "-(P0)"}]}, {"name": "sx", "qubits": [0], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "X90p_d0", "pulse_shape": "drag", "parameters": {"amp": [0.09728209426170822, 0.001975135740732707], "beta": -2.3019214793895904, "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.10638496648367338, 0.0015547838132457532], "beta": -0.28484248854103933, "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.1477775342467566, 0.000927550518651574], "beta": 0.18306791118865184, "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.1392633903465627, -0.000660743939739058], "beta": 2.31736591143808, "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.1054780518897047, -5.828969373965889e-05], "beta": 1.185879763851856, "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.14459494637817813, 0.0018373244858420805], "beta": 0.5363032545144716, "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.07561148941072868, 0.001215415507143674], "beta": 0.5534597651532466, "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.09848029480623005, 0.0015633483865749366], "beta": -0.3949669959890538, "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.09368124420338951, 0.001379194387390647], "beta": -0.42142455572411086, "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.12935536112710258, -0.0015553081498054482], "beta": 0.3926782249530035, "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.12226850679503899, 0.0009728222483080352], "beta": -1.0035305592449417, "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.0965492053359095, 0.001462623500846168], "beta": -0.09318466583520002, "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.1411151894421111, 0.0016022747979090887], "beta": 0.5233579158789275, "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.1006313679680152, 0.001920958731107576], "beta": -0.054820210899730354, "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.0997639294205537, 0.0009177538819246977], "beta": 0.29379454298510066, "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.09650300361020016, 0.001628361203891289], "beta": -0.9887921785211227, "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.10014577319325092, 0.0011746805802234992], "beta": -0.5844127608981904, "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.0979722505683425, 0.0015733702439471957], "beta": -0.4233679463109371, "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.12482178554522665, 0.0014011390312256725], "beta": -0.063620137374164, "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.10218576437493715, 0.0024164259426144967], "beta": -1.0348577584111769, "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.10547829975820261, 0.0019050880991815444], "beta": -0.5067821802819922, "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.09756024919220983, 0.0006249762950963058], "beta": 1.1101749738435711, "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.10452897318719664, 0.0004032729900171576], "beta": 1.628318054634379, "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.11259097245717699, 0.0017474463098071482], "beta": -0.8192925427610356, "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.12008616562884425, -0.00019569291853983403], "beta": 0.0737359797208475, "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.19349250192396455, 0.0006473554137496782], "beta": 0.8501523480808286, "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.12370745592779968, 0.0023081177405813074], "beta": -1.9921354121480892, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [27], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d27", "label": "X90p_d27", "pulse_shape": "drag", "parameters": {"amp": [0.0975304567213684, 0.0019139994718727436], "beta": -1.1805954740326357, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [28], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d28", "label": "X90p_d28", "pulse_shape": "drag", "parameters": {"amp": [0.09338563445466869, 0.00033341233559143143], "beta": 0.5634615459559276, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [29], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d29", "label": "X90p_d29", "pulse_shape": "drag", "parameters": {"amp": [0.09877234192398036, 0.0020614535062876906], "beta": -1.3799289543722217, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [30], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d30", "label": "X90p_d30", "pulse_shape": "drag", "parameters": {"amp": [0.0998203943189428, -0.0008913257066435659], "beta": 1.9815355924298044, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [31], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d31", "label": "X90p_d31", "pulse_shape": "drag", "parameters": {"amp": [0.088832157763875, 0.0011055588213696723], "beta": -0.08666964349488815, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [32], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d32", "label": "X90p_d32", "pulse_shape": "drag", "parameters": {"amp": [0.08863224981973591, 0.001253267673417812], "beta": -1.2669442943495863, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [33], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d33", "label": "X90p_d33", "pulse_shape": "drag", "parameters": {"amp": [0.0996688040038656, 0.0007876057703022679], "beta": 0.6275186917690918, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [34], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d34", "label": "X90p_d34", "pulse_shape": "drag", "parameters": {"amp": [0.1031016977628983, 0.0006833613539886323], "beta": 0.5245085704395506, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [35], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d35", "label": "X90p_d35", "pulse_shape": "drag", "parameters": {"amp": [0.09543579625182948, 0.002042956899134053], "beta": -1.5020529715515876, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [36], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d36", "label": "X90p_d36", "pulse_shape": "drag", "parameters": {"amp": [0.09604187125716661, 0.002171430094789102], "beta": -1.356253373528273, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [37], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d37", "label": "X90p_d37", "pulse_shape": "drag", "parameters": {"amp": [0.00868838285789024, -0.09455783388557376], "beta": -1.5480729069919235, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [38], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d38", "label": "X90p_d38", "pulse_shape": "drag", "parameters": {"amp": [0.09617623246264881, 0.0006124725782723429], "beta": 1.3557810403870874, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [39], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d39", "label": "X90p_d39", "pulse_shape": "drag", "parameters": {"amp": [0.09616073209644509, 0.0016850437409281819], "beta": -0.8536808799302869, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [40], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d40", "label": "X90p_d40", "pulse_shape": "drag", "parameters": {"amp": [0.10407740229347077, -0.00020678038318438586], "beta": 2.2937256852428485, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [41], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d41", "label": "X90p_d41", "pulse_shape": "drag", "parameters": {"amp": [0.1167061478055803, -0.0008502982254150733], "beta": 1.6810119998778095, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [42], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d42", "label": "X90p_d42", "pulse_shape": "drag", "parameters": {"amp": [0.11130987573324137, 0.001264518089987534], "beta": -0.6884140873882535, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [43], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d43", "label": "X90p_d43", "pulse_shape": "drag", "parameters": {"amp": [0.09044746229702674, 0.0029863123798981508], "beta": -2.1778628135701905, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [44], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d44", "label": "X90p_d44", "pulse_shape": "drag", "parameters": {"amp": [0.09619830100875673, -0.0007263830957272626], "beta": 1.5870927210118877, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [45], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d45", "label": "X90p_d45", "pulse_shape": "drag", "parameters": {"amp": [0.09912252983507365, 0.0007938306920316289], "beta": 0.6062390717479786, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [46], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d46", "label": "X90p_d46", "pulse_shape": "drag", "parameters": {"amp": [0.0933462200261285, 0.001642806907055986], "beta": 0.032701912718651575, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [47], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d47", "label": "X90p_d47", "pulse_shape": "drag", "parameters": {"amp": [0.11396167254498489, -0.0003247278126238997], "beta": 1.1839405884152225, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [48], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d48", "label": "X90p_d48", "pulse_shape": "drag", "parameters": {"amp": [0.09984166958938402, 0.0014443545255074816], "beta": 0.011127899545718467, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [49], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d49", "label": "X90p_d49", "pulse_shape": "drag", "parameters": {"amp": [0.10071169403389009, -0.0002931327059855909], "beta": 1.6229136926277805, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [50], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d50", "label": "X90p_d50", "pulse_shape": "drag", "parameters": {"amp": [0.0962750652116885, 0.0011921871260471115], "beta": -0.9595096305449423, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [51], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d51", "label": "X90p_d51", "pulse_shape": "drag", "parameters": {"amp": [0.09834851113603359, 0.0017618162023445008], "beta": -1.687806463213027, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [52], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d52", "label": "X90p_d52", "pulse_shape": "drag", "parameters": {"amp": [0.09269374168645778, 9.479147153851943e-05], "beta": 1.6356768795321304, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [53], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d53", "label": "X90p_d53", "pulse_shape": "drag", "parameters": {"amp": [0.1135499885157783, 0.0021683182524991603], "beta": -1.147433978287251, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [54], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d54", "label": "X90p_d54", "pulse_shape": "drag", "parameters": {"amp": [0.07602813059040985, -9.300376883827832e-05], "beta": 0.7148241595332547, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [55], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d55", "label": "X90p_d55", "pulse_shape": "drag", "parameters": {"amp": [0.0960424795080809, 0.0007979783114878937], "beta": -0.3225929689724514, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [56], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d56", "label": "X90p_d56", "pulse_shape": "drag", "parameters": {"amp": [0.09648382789817259, 0.0018494218536374148], "beta": -1.878949570843616, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [57], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d57", "label": "X90p_d57", "pulse_shape": "drag", "parameters": {"amp": [0.09702946655500636, 0.001549001315399112], "beta": -1.2776729790590766, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [58], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d58", "label": "X90p_d58", "pulse_shape": "drag", "parameters": {"amp": [0.11851841072866011, -0.00016336988848341012], "beta": 1.679116280234777, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [59], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d59", "label": "X90p_d59", "pulse_shape": "drag", "parameters": {"amp": [0.09559374711496173, 0.0007505483946901862], "beta": 0.4579455937135979, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [60], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d60", "label": "X90p_d60", "pulse_shape": "drag", "parameters": {"amp": [0.09469310232356903, 0.0012371261739891075], "beta": -0.9902472702399228, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [61], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d61", "label": "X90p_d61", "pulse_shape": "drag", "parameters": {"amp": [0.13559960005611674, 0.0007206927680335045], "beta": 0.9063938971915719, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [62], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d62", "label": "X90p_d62", "pulse_shape": "drag", "parameters": {"amp": [0.08126354415594338, 0.0011258441606146754], "beta": 0.07795727230674765, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [63], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d63", "label": "X90p_d63", "pulse_shape": "drag", "parameters": {"amp": [0.09579814893537118, 0.0009677048540111488], "beta": 0.24532288593439402, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [64], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d64", "label": "X90p_d64", "pulse_shape": "drag", "parameters": {"amp": [0.08382418622965596, 3.803805038136307e-05], "beta": 0.19218474042267178, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [65], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d65", "label": "X90p_d65", "pulse_shape": "drag", "parameters": {"amp": [0.10453536510892569, -0.0011380216202906517], "beta": 3.914999018535003, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [66], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d66", "label": "X90p_d66", "pulse_shape": "drag", "parameters": {"amp": [0.10003690588645268, 0.0009704992045627891], "beta": -1.56723348443864, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [67], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d67", "label": "X90p_d67", "pulse_shape": "drag", "parameters": {"amp": [0.13497171221478987, -0.0015293073332990558], "beta": 2.3517476260527217, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [68], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d68", "label": "X90p_d68", "pulse_shape": "drag", "parameters": {"amp": [0.09509979238321963, 0.0008452552253863645], "beta": -0.03889942945742053, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [69], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d69", "label": "X90p_d69", "pulse_shape": "drag", "parameters": {"amp": [0.09801059311430563, 0.0009211124509229749], "beta": 0.9954120580123458, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [70], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d70", "label": "X90p_d70", "pulse_shape": "drag", "parameters": {"amp": [0.09797541640384796, 0.002416946030692584], "beta": -2.16583570401465, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [71], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d71", "label": "X90p_d71", "pulse_shape": "drag", "parameters": {"amp": [0.09843274010937189, 0.0005495208125857818], "beta": -0.4419617673478976, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [72], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d72", "label": "X90p_d72", "pulse_shape": "drag", "parameters": {"amp": [0.0955035129685456, 0.0008297541854273995], "beta": -0.11133125902076414, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [73], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d73", "label": "X90p_d73", "pulse_shape": "drag", "parameters": {"amp": [0.09726692800811326, 0.0003699418974938183], "beta": 1.4135897153745198, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [74], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d74", "label": "X90p_d74", "pulse_shape": "drag", "parameters": {"amp": [0.1198761178291242, 0.000977520844465389], "beta": -0.15100947323751712, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [75], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d75", "label": "X90p_d75", "pulse_shape": "drag", "parameters": {"amp": [0.10513108234978502, -9.860245197807804e-05], "beta": 1.9938042604922348, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [76], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d76", "label": "X90p_d76", "pulse_shape": "drag", "parameters": {"amp": [0.10321413288314152, 0.0012987096283798725], "beta": -0.7935449964227578, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [77], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d77", "label": "X90p_d77", "pulse_shape": "drag", "parameters": {"amp": [0.09837299208037871, 0.0021223511285101354], "beta": -2.3124803053390233, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [78], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d78", "label": "X90p_d78", "pulse_shape": "drag", "parameters": {"amp": [0.09895619432987299, 0.0012046853440808632], "beta": -0.2422062980127582, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [79], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d79", "label": "X90p_d79", "pulse_shape": "drag", "parameters": {"amp": [0.09696160423316746, 0.0006260748978533891], "beta": 1.114335770860557, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [80], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d80", "label": "X90p_d80", "pulse_shape": "drag", "parameters": {"amp": [0.10029474208151824, -0.002268973889537971], "beta": 3.4219549112407, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [81], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d81", "label": "X90p_d81", "pulse_shape": "drag", "parameters": {"amp": [0.09525406276346755, 0.001357441029031795], "beta": 0.07410235913307432, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [82], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d82", "label": "X90p_d82", "pulse_shape": "drag", "parameters": {"amp": [0.09553747877114199, 0.0005659537038867093], "beta": -1.1682258932255576, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [83], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d83", "label": "X90p_d83", "pulse_shape": "drag", "parameters": {"amp": [0.11744434732299569, 0.0033816411028132964], "beta": -2.4411666847517735, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [84], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d84", "label": "X90p_d84", "pulse_shape": "drag", "parameters": {"amp": [0.09391782394367892, 0.0011165093384873067], "beta": 1.1689305126709633, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [85], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d85", "label": "X90p_d85", "pulse_shape": "drag", "parameters": {"amp": [0.16899085938555627, 0.00203275014469085], "beta": -1.431441662592734, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [86], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d86", "label": "X90p_d86", "pulse_shape": "drag", "parameters": {"amp": [0.09620749342851234, 0.001736389081355557], "beta": 0.07944776716149475, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [87], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d87", "label": "X90p_d87", "pulse_shape": "drag", "parameters": {"amp": [0.09540118268366199, 0.001353740845194476], "beta": -1.3468689009116281, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [88], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d88", "label": "X90p_d88", "pulse_shape": "drag", "parameters": {"amp": [0.12250181382326165, 0.0007941507626496026], "beta": 1.2432618822145132, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [89], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d89", "label": "X90p_d89", "pulse_shape": "drag", "parameters": {"amp": [0.09726740528530739, 0.0009725962114104623], "beta": 0.8053259211720791, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [90], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d90", "label": "X90p_d90", "pulse_shape": "drag", "parameters": {"amp": [0.09743303031530948, -0.0006859479590268138], "beta": 2.769047420942697, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [91], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d91", "label": "X90p_d91", "pulse_shape": "drag", "parameters": {"amp": [0.10107236724205125, -0.0002966579815657475], "beta": 1.427438470869819, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [92], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d92", "label": "X90p_d92", "pulse_shape": "drag", "parameters": {"amp": [0.09282376624555454, 0.0007908016478509532], "beta": -0.2265881189016976, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [93], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d93", "label": "X90p_d93", "pulse_shape": "drag", "parameters": {"amp": [0.10230879838953898, 0.00040432861161719105], "beta": -0.36095013350960314, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [94], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d94", "label": "X90p_d94", "pulse_shape": "drag", "parameters": {"amp": [0.08971516334025903, -0.00044448104660772765], "beta": 2.460717547562178, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [95], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d95", "label": "X90p_d95", "pulse_shape": "drag", "parameters": {"amp": [0.09848634248280833, -0.0005741240833263148], "beta": 2.63712329789596, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [96], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d96", "label": "X90p_d96", "pulse_shape": "drag", "parameters": {"amp": [0.09767648357444118, 0.00047412566842150336], "beta": 1.3065160560100524, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [97], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d97", "label": "X90p_d97", "pulse_shape": "drag", "parameters": {"amp": [0.0957320722288601, 0.0012289531972143827], "beta": 0.41998562836761755, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [98], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d98", "label": "X90p_d98", "pulse_shape": "drag", "parameters": {"amp": [0.10218423827643879, 0.0018282182637454594], "beta": -1.5997615707595416, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [99], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d99", "label": "X90p_d99", "pulse_shape": "drag", "parameters": {"amp": [0.09599416123111482, 0.0009936889738237894], "beta": -0.19096031251702314, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [100], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d100", "label": "X90p_d100", "pulse_shape": "drag", "parameters": {"amp": [0.09286805059295689, -1.6278293033287982e-05], "beta": 1.5855060534313825, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [101], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d101", "label": "X90p_d101", "pulse_shape": "drag", "parameters": {"amp": [0.09798289653724473, 0.0013677843278568425], "beta": 0.3050475654669881, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [102], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d102", "label": "X90p_d102", "pulse_shape": "drag", "parameters": {"amp": [0.09280782807052618, 0.00012725154288438745], "beta": 1.7621621418459679, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [103], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d103", "label": "X90p_d103", "pulse_shape": "drag", "parameters": {"amp": [0.10004285606747597, 0.0001435082948910189], "beta": 0.994768299051259, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [104], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d104", "label": "X90p_d104", "pulse_shape": "drag", "parameters": {"amp": [0.08700777525125503, 0.0020309815836197535], "beta": -2.0467291689580347, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [105], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d105", "label": "X90p_d105", "pulse_shape": "drag", "parameters": {"amp": [0.09839388118930452, 0.0018365692163619825], "beta": -1.2455570289445705, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [106], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d106", "label": "X90p_d106", "pulse_shape": "drag", "parameters": {"amp": [0.2340725571848802, 0.000882118180690507], "beta": 1.3163761456265402, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [107], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d107", "label": "X90p_d107", "pulse_shape": "drag", "parameters": {"amp": [0.09876358814320617, -0.0006605757392407573], "beta": 2.4747959167703035, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [108], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d108", "label": "X90p_d108", "pulse_shape": "drag", "parameters": {"amp": [0.08972659471386776, -8.84424837326488e-05], "beta": 3.1690249247672555, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [109], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d109", "label": "X90p_d109", "pulse_shape": "drag", "parameters": {"amp": [0.19207425632704692, -0.14688495849428293], "beta": -24.17131021666903, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [110], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d110", "label": "X90p_d110", "pulse_shape": "drag", "parameters": {"amp": [0.09405707609750691, 0.0006320498272647392], "beta": 0.5112846912623613, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [111], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d111", "label": "X90p_d111", "pulse_shape": "drag", "parameters": {"amp": [0.09928509819457172, 0.0026558698988240178], "beta": -2.6212470204846188, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [112], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d112", "label": "X90p_d112", "pulse_shape": "drag", "parameters": {"amp": [0.11453459690114216, 0.0027065677630154477], "beta": -1.7492738153883627, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [113], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d113", "label": "X90p_d113", "pulse_shape": "drag", "parameters": {"amp": [0.09515217699159603, 0.0006845248757220929], "beta": 0.6460427787265419, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [114], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d114", "label": "X90p_d114", "pulse_shape": "drag", "parameters": {"amp": [0.1141834306232801, -0.00023659007060058528], "beta": -0.017471954668736134, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [115], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d115", "label": "X90p_d115", "pulse_shape": "drag", "parameters": {"amp": [0.10306134463503398, -0.001577351162994342], "beta": 3.8690869867615976, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [116], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d116", "label": "X90p_d116", "pulse_shape": "drag", "parameters": {"amp": [0.09725103241420763, 0.000600959687711378], "beta": 1.685728397533417, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [117], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d117", "label": "X90p_d117", "pulse_shape": "drag", "parameters": {"amp": [0.09625996504512489, 0.0014745417112859616], "beta": -1.4286884224206786, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [118], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d118", "label": "X90p_d118", "pulse_shape": "drag", "parameters": {"amp": [0.09489014560334184, -0.0008221646433828774], "beta": 1.763686405224966, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [119], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d119", "label": "X90p_d119", "pulse_shape": "drag", "parameters": {"amp": [0.08774202500798196, -0.00018800827547832045], "beta": 0.9855750131576994, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [120], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d120", "label": "X90p_d120", "pulse_shape": "drag", "parameters": {"amp": [0.09987209387944325, 0.0019796791068846134], "beta": -1.5818946782086862, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [121], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d121", "label": "X90p_d121", "pulse_shape": "drag", "parameters": {"amp": [0.11884320129366582, 0.0017860284598160065], "beta": -1.7336332363377709, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [122], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d122", "label": "X90p_d122", "pulse_shape": "drag", "parameters": {"amp": [0.10409183397772535, -0.0006774914612654833], "beta": 3.435893473504987, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [123], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d123", "label": "X90p_d123", "pulse_shape": "drag", "parameters": {"amp": [0.09329460825304652, -0.0008636369169964813], "beta": 2.131163429421772, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [124], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d124", "label": "X90p_d124", "pulse_shape": "drag", "parameters": {"amp": [0.10243328753335434, 0.0009627883639966985], "beta": -0.7811557457980061, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [125], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d125", "label": "X90p_d125", "pulse_shape": "drag", "parameters": {"amp": [0.09622370358957406, 0.0008727947182993097], "beta": 1.0872434992939308, "duration": 160, "sigma": 40}}]}, {"name": "sx", "qubits": [126], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d126", "label": "X90p_d126", "pulse_shape": "drag", "parameters": {"amp": [0.1001629152186539, 0.0017571453497949366], "beta": -1.1484610957632373, "duration": 160, "sigma": 40}}]}, {"name": "u1", "qubits": [0], "sequence": [{"name": "fc", "t0": 0, "ch": "d0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u28", "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": "u1", "qubits": [2], "sequence": [{"name": "fc", "t0": 0, "ch": "d2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u3", "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": "u5", "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": "u11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u30", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u7", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [5], "sequence": [{"name": "fc", "t0": 0, "ch": "d5", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u13", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u9", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [6], "sequence": [{"name": "fc", "t0": 0, "ch": "d6", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u12", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u15", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [7], "sequence": [{"name": "fc", "t0": 0, "ch": "d7", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u14", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u17", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [8], "sequence": [{"name": "fc", "t0": 0, "ch": "d8", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u16", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u32", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [9], "sequence": [{"name": "fc", "t0": 0, "ch": "d9", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u20", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [10], "sequence": [{"name": "fc", "t0": 0, "ch": "d10", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u19", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u22", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [11], "sequence": [{"name": "fc", "t0": 0, "ch": "d11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u21", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u24", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [12], "sequence": [{"name": "fc", "t0": 0, "ch": "d12", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u23", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u27", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u34", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [13], "sequence": [{"name": "fc", "t0": 0, "ch": "d13", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u25", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [14], "sequence": [{"name": "fc", "t0": 0, "ch": "d14", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u1", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u36", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [15], "sequence": [{"name": "fc", "t0": 0, "ch": "d15", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u10", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u45", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [16], "sequence": [{"name": "fc", "t0": 0, "ch": "d16", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u18", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u55", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [17], "sequence": [{"name": "fc", "t0": 0, "ch": "d17", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u26", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u65", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [18], "sequence": [{"name": "fc", "t0": 0, "ch": "d18", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u29", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u38", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [19], "sequence": [{"name": "fc", "t0": 0, "ch": "d19", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u37", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u40", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [20], "sequence": [{"name": "fc", "t0": 0, "ch": "d20", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u39", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u43", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u72", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [21], "sequence": [{"name": "fc", "t0": 0, "ch": "d21", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u41", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u46", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [22], "sequence": [{"name": "fc", "t0": 0, "ch": "d22", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u31", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u44", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u48", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [23], "sequence": [{"name": "fc", "t0": 0, "ch": "d23", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u47", "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": "fc", "t0": 0, "ch": "u74", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [25], "sequence": [{"name": "fc", "t0": 0, "ch": "d25", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u51", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u56", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [26], "sequence": [{"name": "fc", "t0": 0, "ch": "d26", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u33", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u54", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u58", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [27], "sequence": [{"name": "fc", "t0": 0, "ch": "d27", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u57", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u60", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [28], "sequence": [{"name": "fc", "t0": 0, "ch": "d28", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u59", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u63", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u76", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [29], "sequence": [{"name": "fc", "t0": 0, "ch": "d29", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u61", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u66", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [30], "sequence": [{"name": "fc", "t0": 0, "ch": "d30", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u35", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u64", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u68", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [31], "sequence": [{"name": "fc", "t0": 0, "ch": "d31", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u67", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u70", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [32], "sequence": [{"name": "fc", "t0": 0, "ch": "d32", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u69", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u78", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [33], "sequence": [{"name": "fc", "t0": 0, "ch": "d33", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u42", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u84", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [34], "sequence": [{"name": "fc", "t0": 0, "ch": "d34", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u52", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u94", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [35], "sequence": [{"name": "fc", "t0": 0, "ch": "d35", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u104", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u62", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [36], "sequence": [{"name": "fc", "t0": 0, "ch": "d36", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u114", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u71", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [37], "sequence": [{"name": "fc", "t0": 0, "ch": "d37", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u116", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u82", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [38], "sequence": [{"name": "fc", "t0": 0, "ch": "d38", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u80", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u85", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [39], "sequence": [{"name": "fc", "t0": 0, "ch": "d39", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u73", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u83", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u87", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [40], "sequence": [{"name": "fc", "t0": 0, "ch": "d40", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u86", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u89", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [41], "sequence": [{"name": "fc", "t0": 0, "ch": "d41", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u118", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u88", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u92", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [42], "sequence": [{"name": "fc", "t0": 0, "ch": "d42", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u90", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u95", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [43], "sequence": [{"name": "fc", "t0": 0, "ch": "d43", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u75", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u93", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u97", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [44], "sequence": [{"name": "fc", "t0": 0, "ch": "d44", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u96", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u99", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [45], "sequence": [{"name": "fc", "t0": 0, "ch": "d45", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u102", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u120", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u98", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [46], "sequence": [{"name": "fc", "t0": 0, "ch": "d46", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u100", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u105", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [47], "sequence": [{"name": "fc", "t0": 0, "ch": "d47", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u103", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u107", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u77", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [48], "sequence": [{"name": "fc", "t0": 0, "ch": "d48", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u106", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u109", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [49], "sequence": [{"name": "fc", "t0": 0, "ch": "d49", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u108", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u112", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u122", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [50], "sequence": [{"name": "fc", "t0": 0, "ch": "d50", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u110", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u115", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [51], "sequence": [{"name": "fc", "t0": 0, "ch": "d51", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u113", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u79", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [52], "sequence": [{"name": "fc", "t0": 0, "ch": "d52", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u124", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u81", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [53], "sequence": [{"name": "fc", "t0": 0, "ch": "d53", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u133", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u91", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [54], "sequence": [{"name": "fc", "t0": 0, "ch": "d54", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u101", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u143", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [55], "sequence": [{"name": "fc", "t0": 0, "ch": "d55", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u111", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u153", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [56], "sequence": [{"name": "fc", "t0": 0, "ch": "d56", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u117", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u126", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [57], "sequence": [{"name": "fc", "t0": 0, "ch": "d57", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u125", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u128", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [58], "sequence": [{"name": "fc", "t0": 0, "ch": "d58", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u127", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u131", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u160", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [59], "sequence": [{"name": "fc", "t0": 0, "ch": "d59", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u129", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u134", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [60], "sequence": [{"name": "fc", "t0": 0, "ch": "d60", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u119", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u132", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u136", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [61], "sequence": [{"name": "fc", "t0": 0, "ch": "d61", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u135", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u138", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [62], "sequence": [{"name": "fc", "t0": 0, "ch": "d62", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u137", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u141", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u162", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [63], "sequence": [{"name": "fc", "t0": 0, "ch": "d63", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u139", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u144", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [64], "sequence": [{"name": "fc", "t0": 0, "ch": "d64", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u121", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u142", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u146", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [65], "sequence": [{"name": "fc", "t0": 0, "ch": "d65", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u145", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u148", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [66], "sequence": [{"name": "fc", "t0": 0, "ch": "d66", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u147", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u151", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u164", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [67], "sequence": [{"name": "fc", "t0": 0, "ch": "d67", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u149", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u154", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [68], "sequence": [{"name": "fc", "t0": 0, "ch": "d68", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u123", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u152", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u156", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [69], "sequence": [{"name": "fc", "t0": 0, "ch": "d69", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u155", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u158", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [70], "sequence": [{"name": "fc", "t0": 0, "ch": "d70", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u157", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u166", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [71], "sequence": [{"name": "fc", "t0": 0, "ch": "d71", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u130", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u172", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [72], "sequence": [{"name": "fc", "t0": 0, "ch": "d72", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u140", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u182", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [73], "sequence": [{"name": "fc", "t0": 0, "ch": "d73", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u150", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u192", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [74], "sequence": [{"name": "fc", "t0": 0, "ch": "d74", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u159", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u202", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [75], "sequence": [{"name": "fc", "t0": 0, "ch": "d75", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u170", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u204", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [76], "sequence": [{"name": "fc", "t0": 0, "ch": "d76", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u168", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u173", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [77], "sequence": [{"name": "fc", "t0": 0, "ch": "d77", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u161", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u171", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u175", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [78], "sequence": [{"name": "fc", "t0": 0, "ch": "d78", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u174", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u177", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [79], "sequence": [{"name": "fc", "t0": 0, "ch": "d79", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u176", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u180", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u206", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [80], "sequence": [{"name": "fc", "t0": 0, "ch": "d80", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u178", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u183", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [81], "sequence": [{"name": "fc", "t0": 0, "ch": "d81", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u163", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u181", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u185", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [82], "sequence": [{"name": "fc", "t0": 0, "ch": "d82", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u184", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u187", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [83], "sequence": [{"name": "fc", "t0": 0, "ch": "d83", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u186", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u190", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u208", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [84], "sequence": [{"name": "fc", "t0": 0, "ch": "d84", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u188", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u193", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [85], "sequence": [{"name": "fc", "t0": 0, "ch": "d85", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u165", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u191", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u195", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [86], "sequence": [{"name": "fc", "t0": 0, "ch": "d86", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u194", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u197", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [87], "sequence": [{"name": "fc", "t0": 0, "ch": "d87", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u196", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u200", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u210", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [88], "sequence": [{"name": "fc", "t0": 0, "ch": "d88", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u198", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u203", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [89], "sequence": [{"name": "fc", "t0": 0, "ch": "d89", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u167", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u201", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [90], "sequence": [{"name": "fc", "t0": 0, "ch": "d90", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u169", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u212", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [91], "sequence": [{"name": "fc", "t0": 0, "ch": "d91", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u179", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u221", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [92], "sequence": [{"name": "fc", "t0": 0, "ch": "d92", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u189", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u231", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [93], "sequence": [{"name": "fc", "t0": 0, "ch": "d93", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u199", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u241", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [94], "sequence": [{"name": "fc", "t0": 0, "ch": "d94", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u205", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u214", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [95], "sequence": [{"name": "fc", "t0": 0, "ch": "d95", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u213", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u216", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [96], "sequence": [{"name": "fc", "t0": 0, "ch": "d96", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u215", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u219", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u248", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [97], "sequence": [{"name": "fc", "t0": 0, "ch": "d97", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u217", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u222", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [98], "sequence": [{"name": "fc", "t0": 0, "ch": "d98", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u207", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u220", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u224", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [99], "sequence": [{"name": "fc", "t0": 0, "ch": "d99", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u223", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u226", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [100], "sequence": [{"name": "fc", "t0": 0, "ch": "d100", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u225", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u229", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u249", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [101], "sequence": [{"name": "fc", "t0": 0, "ch": "d101", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u227", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u232", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [102], "sequence": [{"name": "fc", "t0": 0, "ch": "d102", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u209", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u230", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u234", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [103], "sequence": [{"name": "fc", "t0": 0, "ch": "d103", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u233", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u236", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [104], "sequence": [{"name": "fc", "t0": 0, "ch": "d104", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u235", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u239", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u251", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [105], "sequence": [{"name": "fc", "t0": 0, "ch": "d105", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u237", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u242", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [106], "sequence": [{"name": "fc", "t0": 0, "ch": "d106", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u211", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u240", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u244", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [107], "sequence": [{"name": "fc", "t0": 0, "ch": "d107", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u243", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u246", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [108], "sequence": [{"name": "fc", "t0": 0, "ch": "d108", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u245", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u253", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [109], "sequence": [{"name": "fc", "t0": 0, "ch": "d109", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u218", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [110], "sequence": [{"name": "fc", "t0": 0, "ch": "d110", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u228", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u264", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [111], "sequence": [{"name": "fc", "t0": 0, "ch": "d111", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u238", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u273", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [112], "sequence": [{"name": "fc", "t0": 0, "ch": "d112", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u247", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u282", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [113], "sequence": [{"name": "fc", "t0": 0, "ch": "d113", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u256", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [114], "sequence": [{"name": "fc", "t0": 0, "ch": "d114", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u255", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u258", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [115], "sequence": [{"name": "fc", "t0": 0, "ch": "d115", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u257", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u260", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [116], "sequence": [{"name": "fc", "t0": 0, "ch": "d116", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u259", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u262", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [117], "sequence": [{"name": "fc", "t0": 0, "ch": "d117", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u261", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u265", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [118], "sequence": [{"name": "fc", "t0": 0, "ch": "d118", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u250", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u263", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u267", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [119], "sequence": [{"name": "fc", "t0": 0, "ch": "d119", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u266", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u269", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [120], "sequence": [{"name": "fc", "t0": 0, "ch": "d120", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u268", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u271", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [121], "sequence": [{"name": "fc", "t0": 0, "ch": "d121", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u270", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u274", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [122], "sequence": [{"name": "fc", "t0": 0, "ch": "d122", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u252", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u272", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u276", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [123], "sequence": [{"name": "fc", "t0": 0, "ch": "d123", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u275", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u278", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [124], "sequence": [{"name": "fc", "t0": 0, "ch": "d124", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u277", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u280", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [125], "sequence": [{"name": "fc", "t0": 0, "ch": "d125", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u279", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u283", "phase": "-(P0)"}]}, {"name": "u1", "qubits": [126], "sequence": [{"name": "fc", "t0": 0, "ch": "d126", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u254", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u281", "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.0019751357407327037, 0.09728209426170822], "beta": -2.3019214793895904, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u2", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u28", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u28", "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.0015547838132457445, 0.10638496648367338], "beta": -0.28484248854103933, "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": "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.0009275505186515704, 0.1477775342467566], "beta": 0.18306791118865184, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u3", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u3", "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.0006607439397390516, 0.1392633903465627], "beta": 2.31736591143808, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d3", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u5", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u5", "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": [5.828969373966866e-05, 0.1054780518897047], "beta": 1.185879763851856, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u11", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u30", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u30", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u7", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u7", "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.0018373244858420695, 0.14459494637817813], "beta": 0.5363032545144716, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d5", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u13", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u13", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u9", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u9", "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.0012154155071436694, 0.07561148941072868], "beta": 0.5534597651532466, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d6", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u12", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u12", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u15", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u15", "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.0015633483865749348, 0.09848029480623005], "beta": -0.3949669959890538, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d7", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u14", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u14", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u17", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u17", "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.0013791943873906459, 0.09368124420338951], "beta": -0.42142455572411086, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d8", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u16", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u16", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u32", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u32", "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.0015553081498054443, 0.12935536112710258], "beta": 0.3926782249530035, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d9", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u20", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u20", "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.0009728222483080371, 0.12226850679503899], "beta": -1.0035305592449417, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d10", "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": [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.0014626235008461574, 0.0965492053359095], "beta": -0.09318466583520002, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u21", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u21", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u24", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u24", "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.001602274797909092, 0.1411151894421111], "beta": 0.5233579158789275, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d12", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u23", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u23", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u27", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u27", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u34", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u34", "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.001920958731107575, 0.1006313679680152], "beta": -0.054820210899730354, "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": "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.0009177538819246887, 0.0997639294205537], "beta": 0.29379454298510066, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d14", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u1", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u1", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u36", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u36", "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.0016283612038912917, 0.09650300361020016], "beta": -0.9887921785211227, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d15", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u10", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u10", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u45", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u45", "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.0011746805802234862, 0.10014577319325092], "beta": -0.5844127608981904, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d16", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u18", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u18", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u55", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u55", "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.0015733702439471794, 0.0979722505683425], "beta": -0.4233679463109371, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d17", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u26", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u26", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u65", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u65", "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.0014011390312256553, 0.12482178554522665], "beta": -0.063620137374164, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d18", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u29", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u29", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u38", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u38", "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.002416425942614491, 0.10218576437493715], "beta": -1.0348577584111769, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d19", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u37", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u37", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u40", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u40", "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.0019050880991815411, 0.10547829975820261], "beta": -0.5067821802819922, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d20", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u39", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u39", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u43", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u43", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u72", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u72", "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.0006249762950962998, 0.09756024919220983], "beta": 1.1101749738435711, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d21", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u41", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u41", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u46", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u46", "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.00040327299001715076, 0.10452897318719664], "beta": 1.628318054634379, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d22", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u31", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u31", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u44", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u44", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u48", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u48", "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.0017474463098071404, 0.11259097245717699], "beta": -0.8192925427610356, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d23", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u47", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u47", "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.00019569291853984685, 0.12008616562884425], "beta": 0.0737359797208475, "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": "fc", "t0": 0, "ch": "u74", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u74", "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.0006473554137496753, 0.19349250192396455], "beta": 0.8501523480808286, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d25", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u51", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u51", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u56", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u56", "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.002308117740581313, 0.12370745592779968], "beta": -1.9921354121480892, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d26", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u33", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u33", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u54", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u54", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u58", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u58", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [27], "sequence": [{"name": "fc", "t0": 0, "ch": "d27", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d27", "label": "Y90p_d27", "pulse_shape": "drag", "parameters": {"amp": [-0.001913999471872748, 0.0975304567213684], "beta": -1.1805954740326357, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d27", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u57", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u57", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u60", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u60", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [28], "sequence": [{"name": "fc", "t0": 0, "ch": "d28", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d28", "label": "Y90p_d28", "pulse_shape": "drag", "parameters": {"amp": [-0.0003334123355914212, 0.09338563445466869], "beta": 0.5634615459559276, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d28", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u59", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u59", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u63", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u63", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u76", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u76", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [29], "sequence": [{"name": "fc", "t0": 0, "ch": "d29", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d29", "label": "Y90p_d29", "pulse_shape": "drag", "parameters": {"amp": [-0.0020614535062876953, 0.09877234192398036], "beta": -1.3799289543722217, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d29", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u61", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u61", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u66", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u66", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [30], "sequence": [{"name": "fc", "t0": 0, "ch": "d30", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d30", "label": "Y90p_d30", "pulse_shape": "drag", "parameters": {"amp": [0.0008913257066435639, 0.0998203943189428], "beta": 1.9815355924298044, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d30", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u35", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u35", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u64", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u64", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u68", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u68", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [31], "sequence": [{"name": "fc", "t0": 0, "ch": "d31", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d31", "label": "Y90p_d31", "pulse_shape": "drag", "parameters": {"amp": [-0.0011055588213696656, 0.088832157763875], "beta": -0.08666964349488815, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d31", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u67", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u67", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u70", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u70", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [32], "sequence": [{"name": "fc", "t0": 0, "ch": "d32", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d32", "label": "Y90p_d32", "pulse_shape": "drag", "parameters": {"amp": [-0.0012532676734178134, 0.08863224981973591], "beta": -1.2669442943495863, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d32", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u69", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u69", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u78", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u78", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [33], "sequence": [{"name": "fc", "t0": 0, "ch": "d33", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d33", "label": "Y90p_d33", "pulse_shape": "drag", "parameters": {"amp": [-0.0007876057703022663, 0.0996688040038656], "beta": 0.6275186917690918, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d33", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u42", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u42", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u84", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u84", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [34], "sequence": [{"name": "fc", "t0": 0, "ch": "d34", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d34", "label": "Y90p_d34", "pulse_shape": "drag", "parameters": {"amp": [-0.000683361353988623, 0.1031016977628983], "beta": 0.5245085704395506, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d34", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u52", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u52", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u94", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u94", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [35], "sequence": [{"name": "fc", "t0": 0, "ch": "d35", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d35", "label": "Y90p_d35", "pulse_shape": "drag", "parameters": {"amp": [-0.0020429568991340535, 0.09543579625182948], "beta": -1.5020529715515876, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d35", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u104", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u104", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u62", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u62", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [36], "sequence": [{"name": "fc", "t0": 0, "ch": "d36", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d36", "label": "Y90p_d36", "pulse_shape": "drag", "parameters": {"amp": [-0.0021714300947891017, 0.09604187125716661], "beta": -1.356253373528273, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d36", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u114", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u114", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u71", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u71", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [37], "sequence": [{"name": "fc", "t0": 0, "ch": "d37", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d37", "label": "Y90p_d37", "pulse_shape": "drag", "parameters": {"amp": [0.09455783388557376, 0.008688382857890233], "beta": -1.5480729069919235, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d37", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u116", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u116", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u82", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u82", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [38], "sequence": [{"name": "fc", "t0": 0, "ch": "d38", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d38", "label": "Y90p_d38", "pulse_shape": "drag", "parameters": {"amp": [-0.0006124725782723275, 0.09617623246264881], "beta": 1.3557810403870874, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d38", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u80", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u80", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u85", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u85", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [39], "sequence": [{"name": "fc", "t0": 0, "ch": "d39", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d39", "label": "Y90p_d39", "pulse_shape": "drag", "parameters": {"amp": [-0.0016850437409281801, 0.09616073209644509], "beta": -0.8536808799302869, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d39", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u73", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u73", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u83", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u83", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u87", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u87", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [40], "sequence": [{"name": "fc", "t0": 0, "ch": "d40", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d40", "label": "Y90p_d40", "pulse_shape": "drag", "parameters": {"amp": [0.00020678038318439092, 0.10407740229347077], "beta": 2.2937256852428485, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d40", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u86", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u86", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u89", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u89", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [41], "sequence": [{"name": "fc", "t0": 0, "ch": "d41", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d41", "label": "Y90p_d41", "pulse_shape": "drag", "parameters": {"amp": [0.0008502982254150679, 0.1167061478055803], "beta": 1.6810119998778095, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d41", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u118", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u118", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u88", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u88", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u92", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u92", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [42], "sequence": [{"name": "fc", "t0": 0, "ch": "d42", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d42", "label": "Y90p_d42", "pulse_shape": "drag", "parameters": {"amp": [-0.0012645180899875158, 0.11130987573324137], "beta": -0.6884140873882535, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d42", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u90", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u90", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u95", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u95", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [43], "sequence": [{"name": "fc", "t0": 0, "ch": "d43", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d43", "label": "Y90p_d43", "pulse_shape": "drag", "parameters": {"amp": [-0.0029863123798981356, 0.09044746229702674], "beta": -2.1778628135701905, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d43", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u75", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u75", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u93", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u93", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u97", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u97", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [44], "sequence": [{"name": "fc", "t0": 0, "ch": "d44", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d44", "label": "Y90p_d44", "pulse_shape": "drag", "parameters": {"amp": [0.0007263830957272703, 0.09619830100875673], "beta": 1.5870927210118877, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d44", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u96", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u96", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u99", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u99", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [45], "sequence": [{"name": "fc", "t0": 0, "ch": "d45", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d45", "label": "Y90p_d45", "pulse_shape": "drag", "parameters": {"amp": [-0.0007938306920316266, 0.09912252983507365], "beta": 0.6062390717479786, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d45", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u102", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u102", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u120", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u120", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u98", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u98", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [46], "sequence": [{"name": "fc", "t0": 0, "ch": "d46", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d46", "label": "Y90p_d46", "pulse_shape": "drag", "parameters": {"amp": [-0.0016428069070559743, 0.0933462200261285], "beta": 0.032701912718651575, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d46", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u100", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u100", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u105", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u105", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [47], "sequence": [{"name": "fc", "t0": 0, "ch": "d47", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d47", "label": "Y90p_d47", "pulse_shape": "drag", "parameters": {"amp": [0.00032472781262389474, 0.11396167254498489], "beta": 1.1839405884152225, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d47", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u103", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u103", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u107", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u107", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u77", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u77", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [48], "sequence": [{"name": "fc", "t0": 0, "ch": "d48", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d48", "label": "Y90p_d48", "pulse_shape": "drag", "parameters": {"amp": [-0.0014443545255074827, 0.09984166958938402], "beta": 0.011127899545718467, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d48", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u106", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u106", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u109", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u109", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [49], "sequence": [{"name": "fc", "t0": 0, "ch": "d49", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d49", "label": "Y90p_d49", "pulse_shape": "drag", "parameters": {"amp": [0.00029313270598560395, 0.10071169403389009], "beta": 1.6229136926277805, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d49", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u108", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u108", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u112", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u112", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u122", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u122", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [50], "sequence": [{"name": "fc", "t0": 0, "ch": "d50", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d50", "label": "Y90p_d50", "pulse_shape": "drag", "parameters": {"amp": [-0.001192187126047115, 0.0962750652116885], "beta": -0.9595096305449423, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d50", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u110", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u110", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u115", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u115", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [51], "sequence": [{"name": "fc", "t0": 0, "ch": "d51", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d51", "label": "Y90p_d51", "pulse_shape": "drag", "parameters": {"amp": [-0.0017618162023444873, 0.09834851113603359], "beta": -1.687806463213027, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d51", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u113", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u113", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u79", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u79", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [52], "sequence": [{"name": "fc", "t0": 0, "ch": "d52", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d52", "label": "Y90p_d52", "pulse_shape": "drag", "parameters": {"amp": [-9.479147153852331e-05, 0.09269374168645778], "beta": 1.6356768795321304, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d52", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u124", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u124", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u81", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u81", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [53], "sequence": [{"name": "fc", "t0": 0, "ch": "d53", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d53", "label": "Y90p_d53", "pulse_shape": "drag", "parameters": {"amp": [-0.0021683182524991408, 0.1135499885157783], "beta": -1.147433978287251, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d53", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u133", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u133", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u91", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u91", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [54], "sequence": [{"name": "fc", "t0": 0, "ch": "d54", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d54", "label": "Y90p_d54", "pulse_shape": "drag", "parameters": {"amp": [9.300376883828117e-05, 0.07602813059040985], "beta": 0.7148241595332547, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d54", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u101", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u101", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u143", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u143", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [55], "sequence": [{"name": "fc", "t0": 0, "ch": "d55", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d55", "label": "Y90p_d55", "pulse_shape": "drag", "parameters": {"amp": [-0.0007979783114878939, 0.0960424795080809], "beta": -0.3225929689724514, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d55", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u111", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u111", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u153", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u153", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [56], "sequence": [{"name": "fc", "t0": 0, "ch": "d56", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d56", "label": "Y90p_d56", "pulse_shape": "drag", "parameters": {"amp": [-0.0018494218536374005, 0.09648382789817259], "beta": -1.878949570843616, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d56", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u117", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u117", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u126", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u126", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [57], "sequence": [{"name": "fc", "t0": 0, "ch": "d57", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d57", "label": "Y90p_d57", "pulse_shape": "drag", "parameters": {"amp": [-0.0015490013153991158, 0.09702946655500636], "beta": -1.2776729790590766, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d57", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u125", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u125", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u128", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u128", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [58], "sequence": [{"name": "fc", "t0": 0, "ch": "d58", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d58", "label": "Y90p_d58", "pulse_shape": "drag", "parameters": {"amp": [0.00016336988848340695, 0.11851841072866011], "beta": 1.679116280234777, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d58", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u127", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u127", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u131", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u131", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u160", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u160", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [59], "sequence": [{"name": "fc", "t0": 0, "ch": "d59", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d59", "label": "Y90p_d59", "pulse_shape": "drag", "parameters": {"amp": [-0.0007505483946901887, 0.09559374711496173], "beta": 0.4579455937135979, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d59", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u129", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u129", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u134", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u134", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [60], "sequence": [{"name": "fc", "t0": 0, "ch": "d60", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d60", "label": "Y90p_d60", "pulse_shape": "drag", "parameters": {"amp": [-0.0012371261739890956, 0.09469310232356903], "beta": -0.9902472702399228, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d60", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u119", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u119", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u132", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u132", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u136", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u136", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [61], "sequence": [{"name": "fc", "t0": 0, "ch": "d61", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d61", "label": "Y90p_d61", "pulse_shape": "drag", "parameters": {"amp": [-0.000720692768033511, 0.13559960005611674], "beta": 0.9063938971915719, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d61", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u135", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u135", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u138", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u138", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [62], "sequence": [{"name": "fc", "t0": 0, "ch": "d62", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d62", "label": "Y90p_d62", "pulse_shape": "drag", "parameters": {"amp": [-0.0011258441606146691, 0.08126354415594338], "beta": 0.07795727230674765, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d62", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u137", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u137", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u141", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u141", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u162", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u162", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [63], "sequence": [{"name": "fc", "t0": 0, "ch": "d63", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d63", "label": "Y90p_d63", "pulse_shape": "drag", "parameters": {"amp": [-0.0009677048540111384, 0.09579814893537118], "beta": 0.24532288593439402, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d63", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u139", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u139", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u144", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u144", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [64], "sequence": [{"name": "fc", "t0": 0, "ch": "d64", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d64", "label": "Y90p_d64", "pulse_shape": "drag", "parameters": {"amp": [-3.8038050381356765e-05, 0.08382418622965596], "beta": 0.19218474042267178, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d64", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u121", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u121", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u142", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u142", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u146", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u146", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [65], "sequence": [{"name": "fc", "t0": 0, "ch": "d65", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d65", "label": "Y90p_d65", "pulse_shape": "drag", "parameters": {"amp": [0.0011380216202906506, 0.10453536510892569], "beta": 3.914999018535003, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d65", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u145", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u145", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u148", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u148", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [66], "sequence": [{"name": "fc", "t0": 0, "ch": "d66", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d66", "label": "Y90p_d66", "pulse_shape": "drag", "parameters": {"amp": [-0.0009704992045627742, 0.10003690588645268], "beta": -1.56723348443864, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d66", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u147", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u147", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u151", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u151", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u164", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u164", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [67], "sequence": [{"name": "fc", "t0": 0, "ch": "d67", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d67", "label": "Y90p_d67", "pulse_shape": "drag", "parameters": {"amp": [0.0015293073332990576, 0.13497171221478987], "beta": 2.3517476260527217, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d67", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u149", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u149", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u154", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u154", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [68], "sequence": [{"name": "fc", "t0": 0, "ch": "d68", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d68", "label": "Y90p_d68", "pulse_shape": "drag", "parameters": {"amp": [-0.0008452552253863496, 0.09509979238321963], "beta": -0.03889942945742053, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d68", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u123", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u123", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u152", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u152", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u156", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u156", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [69], "sequence": [{"name": "fc", "t0": 0, "ch": "d69", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d69", "label": "Y90p_d69", "pulse_shape": "drag", "parameters": {"amp": [-0.0009211124509229689, 0.09801059311430563], "beta": 0.9954120580123458, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d69", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u155", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u155", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u158", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u158", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [70], "sequence": [{"name": "fc", "t0": 0, "ch": "d70", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d70", "label": "Y90p_d70", "pulse_shape": "drag", "parameters": {"amp": [-0.0024169460306925684, 0.09797541640384796], "beta": -2.16583570401465, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d70", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u157", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u157", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u166", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u166", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [71], "sequence": [{"name": "fc", "t0": 0, "ch": "d71", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d71", "label": "Y90p_d71", "pulse_shape": "drag", "parameters": {"amp": [-0.0005495208125857689, 0.09843274010937189], "beta": -0.4419617673478976, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d71", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u130", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u130", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u172", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u172", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [72], "sequence": [{"name": "fc", "t0": 0, "ch": "d72", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d72", "label": "Y90p_d72", "pulse_shape": "drag", "parameters": {"amp": [-0.0008297541854273901, 0.0955035129685456], "beta": -0.11133125902076414, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d72", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u140", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u140", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u182", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u182", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [73], "sequence": [{"name": "fc", "t0": 0, "ch": "d73", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d73", "label": "Y90p_d73", "pulse_shape": "drag", "parameters": {"amp": [-0.0003699418974938029, 0.09726692800811326], "beta": 1.4135897153745198, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d73", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u150", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u150", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u192", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u192", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [74], "sequence": [{"name": "fc", "t0": 0, "ch": "d74", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d74", "label": "Y90p_d74", "pulse_shape": "drag", "parameters": {"amp": [-0.0009775208444653923, 0.1198761178291242], "beta": -0.15100947323751712, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d74", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u159", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u159", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u202", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u202", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [75], "sequence": [{"name": "fc", "t0": 0, "ch": "d75", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d75", "label": "Y90p_d75", "pulse_shape": "drag", "parameters": {"amp": [9.860245197808967e-05, 0.10513108234978502], "beta": 1.9938042604922348, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d75", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u170", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u170", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u204", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u204", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [76], "sequence": [{"name": "fc", "t0": 0, "ch": "d76", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d76", "label": "Y90p_d76", "pulse_shape": "drag", "parameters": {"amp": [-0.0012987096283798667, 0.10321413288314152], "beta": -0.7935449964227578, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d76", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u168", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u168", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u173", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u173", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [77], "sequence": [{"name": "fc", "t0": 0, "ch": "d77", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d77", "label": "Y90p_d77", "pulse_shape": "drag", "parameters": {"amp": [-0.0021223511285101346, 0.09837299208037871], "beta": -2.3124803053390233, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d77", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u161", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u161", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u171", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u171", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u175", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u175", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [78], "sequence": [{"name": "fc", "t0": 0, "ch": "d78", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d78", "label": "Y90p_d78", "pulse_shape": "drag", "parameters": {"amp": [-0.0012046853440808494, 0.09895619432987299], "beta": -0.2422062980127582, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d78", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u174", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u174", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u177", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u177", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [79], "sequence": [{"name": "fc", "t0": 0, "ch": "d79", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d79", "label": "Y90p_d79", "pulse_shape": "drag", "parameters": {"amp": [-0.0006260748978533786, 0.09696160423316746], "beta": 1.114335770860557, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d79", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u176", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u176", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u180", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u180", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u206", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u206", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [80], "sequence": [{"name": "fc", "t0": 0, "ch": "d80", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d80", "label": "Y90p_d80", "pulse_shape": "drag", "parameters": {"amp": [0.0022689738895379816, 0.10029474208151824], "beta": 3.4219549112407, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d80", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u178", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u178", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u183", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u183", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [81], "sequence": [{"name": "fc", "t0": 0, "ch": "d81", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d81", "label": "Y90p_d81", "pulse_shape": "drag", "parameters": {"amp": [-0.0013574410290317816, 0.09525406276346755], "beta": 0.07410235913307432, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d81", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u163", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u163", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u181", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u181", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u185", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u185", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [82], "sequence": [{"name": "fc", "t0": 0, "ch": "d82", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d82", "label": "Y90p_d82", "pulse_shape": "drag", "parameters": {"amp": [-0.0005659537038866968, 0.09553747877114199], "beta": -1.1682258932255576, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d82", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u184", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u184", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u187", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u187", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [83], "sequence": [{"name": "fc", "t0": 0, "ch": "d83", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d83", "label": "Y90p_d83", "pulse_shape": "drag", "parameters": {"amp": [-0.003381641102813286, 0.1174443473229957], "beta": -2.4411666847517735, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d83", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u186", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u186", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u190", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u190", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u208", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u208", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [84], "sequence": [{"name": "fc", "t0": 0, "ch": "d84", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d84", "label": "Y90p_d84", "pulse_shape": "drag", "parameters": {"amp": [-0.001116509338487298, 0.09391782394367892], "beta": 1.1689305126709633, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d84", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u188", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u188", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u193", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u193", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [85], "sequence": [{"name": "fc", "t0": 0, "ch": "d85", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d85", "label": "Y90p_d85", "pulse_shape": "drag", "parameters": {"amp": [-0.002032750144690825, 0.16899085938555627], "beta": -1.431441662592734, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d85", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u165", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u165", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u191", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u191", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u195", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u195", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [86], "sequence": [{"name": "fc", "t0": 0, "ch": "d86", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d86", "label": "Y90p_d86", "pulse_shape": "drag", "parameters": {"amp": [-0.0017363890813555552, 0.09620749342851234], "beta": 0.07944776716149475, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d86", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u194", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u194", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u197", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u197", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [87], "sequence": [{"name": "fc", "t0": 0, "ch": "d87", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d87", "label": "Y90p_d87", "pulse_shape": "drag", "parameters": {"amp": [-0.001353740845194474, 0.09540118268366199], "beta": -1.3468689009116281, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d87", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u196", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u196", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u200", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u200", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u210", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u210", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [88], "sequence": [{"name": "fc", "t0": 0, "ch": "d88", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d88", "label": "Y90p_d88", "pulse_shape": "drag", "parameters": {"amp": [-0.0007941507626496026, 0.12250181382326165], "beta": 1.2432618822145132, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d88", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u198", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u198", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u203", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u203", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [89], "sequence": [{"name": "fc", "t0": 0, "ch": "d89", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d89", "label": "Y90p_d89", "pulse_shape": "drag", "parameters": {"amp": [-0.0009725962114104651, 0.09726740528530739], "beta": 0.8053259211720791, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d89", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u167", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u167", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u201", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u201", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [90], "sequence": [{"name": "fc", "t0": 0, "ch": "d90", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d90", "label": "Y90p_d90", "pulse_shape": "drag", "parameters": {"amp": [0.0006859479590268158, 0.09743303031530948], "beta": 2.769047420942697, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d90", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u169", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u169", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u212", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u212", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [91], "sequence": [{"name": "fc", "t0": 0, "ch": "d91", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d91", "label": "Y90p_d91", "pulse_shape": "drag", "parameters": {"amp": [0.0002966579815657438, 0.10107236724205125], "beta": 1.427438470869819, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d91", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u179", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u179", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u221", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u221", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [92], "sequence": [{"name": "fc", "t0": 0, "ch": "d92", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d92", "label": "Y90p_d92", "pulse_shape": "drag", "parameters": {"amp": [-0.0007908016478509512, 0.09282376624555454], "beta": -0.2265881189016976, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d92", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u189", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u189", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u231", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u231", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [93], "sequence": [{"name": "fc", "t0": 0, "ch": "d93", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d93", "label": "Y90p_d93", "pulse_shape": "drag", "parameters": {"amp": [-0.0004043286116171948, 0.10230879838953898], "beta": -0.36095013350960314, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d93", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u199", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u199", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u241", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u241", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [94], "sequence": [{"name": "fc", "t0": 0, "ch": "d94", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d94", "label": "Y90p_d94", "pulse_shape": "drag", "parameters": {"amp": [0.0004444810466077245, 0.08971516334025903], "beta": 2.460717547562178, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d94", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u205", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u205", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u214", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u214", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [95], "sequence": [{"name": "fc", "t0": 0, "ch": "d95", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d95", "label": "Y90p_d95", "pulse_shape": "drag", "parameters": {"amp": [0.0005741240833263189, 0.09848634248280833], "beta": 2.63712329789596, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d95", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u213", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u213", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u216", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u216", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [96], "sequence": [{"name": "fc", "t0": 0, "ch": "d96", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d96", "label": "Y90p_d96", "pulse_shape": "drag", "parameters": {"amp": [-0.0004741256684215076, 0.09767648357444118], "beta": 1.3065160560100524, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d96", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u215", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u215", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u219", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u219", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u248", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u248", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [97], "sequence": [{"name": "fc", "t0": 0, "ch": "d97", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d97", "label": "Y90p_d97", "pulse_shape": "drag", "parameters": {"amp": [-0.001228953197214375, 0.0957320722288601], "beta": 0.41998562836761755, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d97", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u217", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u217", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u222", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u222", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [98], "sequence": [{"name": "fc", "t0": 0, "ch": "d98", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d98", "label": "Y90p_d98", "pulse_shape": "drag", "parameters": {"amp": [-0.001828218263745443, 0.10218423827643879], "beta": -1.5997615707595416, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d98", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u207", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u207", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u220", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u220", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u224", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u224", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [99], "sequence": [{"name": "fc", "t0": 0, "ch": "d99", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d99", "label": "Y90p_d99", "pulse_shape": "drag", "parameters": {"amp": [-0.0009936889738237846, 0.09599416123111482], "beta": -0.19096031251702314, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d99", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u223", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u223", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u226", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u226", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [100], "sequence": [{"name": "fc", "t0": 0, "ch": "d100", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d100", "label": "Y90p_d100", "pulse_shape": "drag", "parameters": {"amp": [1.6278293033291834e-05, 0.09286805059295689], "beta": 1.5855060534313825, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d100", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u225", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u225", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u229", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u229", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u249", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u249", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [101], "sequence": [{"name": "fc", "t0": 0, "ch": "d101", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d101", "label": "Y90p_d101", "pulse_shape": "drag", "parameters": {"amp": [-0.0013677843278568323, 0.09798289653724473], "beta": 0.3050475654669881, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d101", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u227", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u227", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u232", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u232", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [102], "sequence": [{"name": "fc", "t0": 0, "ch": "d102", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d102", "label": "Y90p_d102", "pulse_shape": "drag", "parameters": {"amp": [-0.00012725154288438574, 0.09280782807052618], "beta": 1.7621621418459679, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d102", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u209", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u209", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u230", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u230", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u234", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u234", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [103], "sequence": [{"name": "fc", "t0": 0, "ch": "d103", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d103", "label": "Y90p_d103", "pulse_shape": "drag", "parameters": {"amp": [-0.00014350829489100878, 0.10004285606747597], "beta": 0.994768299051259, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d103", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u233", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u233", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u236", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u236", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [104], "sequence": [{"name": "fc", "t0": 0, "ch": "d104", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d104", "label": "Y90p_d104", "pulse_shape": "drag", "parameters": {"amp": [-0.002030981583619742, 0.08700777525125503], "beta": -2.0467291689580347, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d104", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u235", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u235", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u239", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u239", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u251", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u251", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [105], "sequence": [{"name": "fc", "t0": 0, "ch": "d105", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d105", "label": "Y90p_d105", "pulse_shape": "drag", "parameters": {"amp": [-0.0018365692163619792, 0.09839388118930452], "beta": -1.2455570289445705, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d105", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u237", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u237", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u242", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u242", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [106], "sequence": [{"name": "fc", "t0": 0, "ch": "d106", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d106", "label": "Y90p_d106", "pulse_shape": "drag", "parameters": {"amp": [-0.0008821181806905012, 0.2340725571848802], "beta": 1.3163761456265402, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d106", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u211", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u211", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u240", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u240", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u244", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u244", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [107], "sequence": [{"name": "fc", "t0": 0, "ch": "d107", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d107", "label": "Y90p_d107", "pulse_shape": "drag", "parameters": {"amp": [0.0006605757392407644, 0.09876358814320617], "beta": 2.4747959167703035, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d107", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u243", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u243", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u246", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u246", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [108], "sequence": [{"name": "fc", "t0": 0, "ch": "d108", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d108", "label": "Y90p_d108", "pulse_shape": "drag", "parameters": {"amp": [8.844248373265177e-05, 0.08972659471386776], "beta": 3.1690249247672555, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d108", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u245", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u245", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u253", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u253", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [109], "sequence": [{"name": "fc", "t0": 0, "ch": "d109", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d109", "label": "Y90p_d109", "pulse_shape": "drag", "parameters": {"amp": [0.14688495849428293, 0.19207425632704692], "beta": -24.17131021666903, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d109", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u218", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u218", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [110], "sequence": [{"name": "fc", "t0": 0, "ch": "d110", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d110", "label": "Y90p_d110", "pulse_shape": "drag", "parameters": {"amp": [-0.000632049827264741, 0.09405707609750691], "beta": 0.5112846912623613, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d110", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u228", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u228", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u264", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u264", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [111], "sequence": [{"name": "fc", "t0": 0, "ch": "d111", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d111", "label": "Y90p_d111", "pulse_shape": "drag", "parameters": {"amp": [-0.002655869898824015, 0.09928509819457172], "beta": -2.6212470204846188, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d111", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u238", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u238", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u273", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u273", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [112], "sequence": [{"name": "fc", "t0": 0, "ch": "d112", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d112", "label": "Y90p_d112", "pulse_shape": "drag", "parameters": {"amp": [-0.0027065677630154317, 0.11453459690114216], "beta": -1.7492738153883627, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d112", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u247", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u247", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u282", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u282", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [113], "sequence": [{"name": "fc", "t0": 0, "ch": "d113", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d113", "label": "Y90p_d113", "pulse_shape": "drag", "parameters": {"amp": [-0.0006845248757220934, 0.09515217699159603], "beta": 0.6460427787265419, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d113", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u256", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u256", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [114], "sequence": [{"name": "fc", "t0": 0, "ch": "d114", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d114", "label": "Y90p_d114", "pulse_shape": "drag", "parameters": {"amp": [0.00023659007060058726, 0.1141834306232801], "beta": -0.017471954668736134, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d114", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u255", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u255", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u258", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u258", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [115], "sequence": [{"name": "fc", "t0": 0, "ch": "d115", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d115", "label": "Y90p_d115", "pulse_shape": "drag", "parameters": {"amp": [0.0015773511629943375, 0.10306134463503398], "beta": 3.8690869867615976, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d115", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u257", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u257", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u260", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u260", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [116], "sequence": [{"name": "fc", "t0": 0, "ch": "d116", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d116", "label": "Y90p_d116", "pulse_shape": "drag", "parameters": {"amp": [-0.0006009596877113776, 0.09725103241420763], "beta": 1.685728397533417, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d116", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u259", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u259", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u262", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u262", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [117], "sequence": [{"name": "fc", "t0": 0, "ch": "d117", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d117", "label": "Y90p_d117", "pulse_shape": "drag", "parameters": {"amp": [-0.0014745417112859587, 0.09625996504512489], "beta": -1.4286884224206786, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d117", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u261", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u261", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u265", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u265", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [118], "sequence": [{"name": "fc", "t0": 0, "ch": "d118", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d118", "label": "Y90p_d118", "pulse_shape": "drag", "parameters": {"amp": [0.0008221646433828873, 0.09489014560334184], "beta": 1.763686405224966, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d118", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u250", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u250", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u263", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u263", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u267", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u267", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [119], "sequence": [{"name": "fc", "t0": 0, "ch": "d119", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d119", "label": "Y90p_d119", "pulse_shape": "drag", "parameters": {"amp": [0.00018800827547832714, 0.08774202500798196], "beta": 0.9855750131576994, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d119", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u266", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u266", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u269", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u269", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [120], "sequence": [{"name": "fc", "t0": 0, "ch": "d120", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d120", "label": "Y90p_d120", "pulse_shape": "drag", "parameters": {"amp": [-0.0019796791068845995, 0.09987209387944325], "beta": -1.5818946782086862, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d120", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u268", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u268", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u271", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u271", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [121], "sequence": [{"name": "fc", "t0": 0, "ch": "d121", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d121", "label": "Y90p_d121", "pulse_shape": "drag", "parameters": {"amp": [-0.0017860284598160121, 0.11884320129366582], "beta": -1.7336332363377709, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d121", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u270", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u270", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u274", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u274", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [122], "sequence": [{"name": "fc", "t0": 0, "ch": "d122", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d122", "label": "Y90p_d122", "pulse_shape": "drag", "parameters": {"amp": [0.000677491461265487, 0.10409183397772535], "beta": 3.435893473504987, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d122", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u252", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u252", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u272", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u272", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u276", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u276", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [123], "sequence": [{"name": "fc", "t0": 0, "ch": "d123", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d123", "label": "Y90p_d123", "pulse_shape": "drag", "parameters": {"amp": [0.0008636369169964804, 0.09329460825304652], "beta": 2.131163429421772, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d123", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u275", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u275", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u278", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u278", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [124], "sequence": [{"name": "fc", "t0": 0, "ch": "d124", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d124", "label": "Y90p_d124", "pulse_shape": "drag", "parameters": {"amp": [-0.0009627883639966965, 0.10243328753335434], "beta": -0.7811557457980061, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d124", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u277", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u277", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u280", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u280", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [125], "sequence": [{"name": "fc", "t0": 0, "ch": "d125", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d125", "label": "Y90p_d125", "pulse_shape": "drag", "parameters": {"amp": [-0.0008727947182992986, 0.09622370358957406], "beta": 1.0872434992939308, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d125", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u279", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u279", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u283", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u283", "phase": "-(P0)"}]}, {"name": "u2", "qubits": [126], "sequence": [{"name": "fc", "t0": 0, "ch": "d126", "phase": "-(P1)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d126", "label": "Y90p_d126", "pulse_shape": "drag", "parameters": {"amp": [-0.0017571453497949388, 0.1001629152186539], "beta": -1.1484610957632373, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d126", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u254", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u254", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u281", "phase": "-(P1)"}, {"name": "fc", "t0": 160, "ch": "u281", "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.09728209426170822, 0.001975135740732707], "beta": -2.3019214793895904, "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.09728209426170822, -0.0019751357407326977], "beta": -2.3019214793895904, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d0", "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": "u28", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u28", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u28", "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.10638496648367338, 0.0015547838132457532], "beta": -0.28484248854103933, "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.10638496648367338, -0.0015547838132457619], "beta": -0.28484248854103933, "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": "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.1477775342467566, 0.000927550518651574], "beta": 0.18306791118865184, "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.1477775342467566, -0.0009275505186515616], "beta": 0.18306791118865184, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d2", "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": "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.1392633903465627, -0.000660743939739058], "beta": 2.31736591143808, "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.1392633903465627, 0.0006607439397390911], "beta": 2.31736591143808, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d3", "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": "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.1054780518897047, -5.828969373965889e-05], "beta": 1.185879763851856, "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.1054780518897047, 5.8289693739651687e-05], "beta": 1.185879763851856, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d4", "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": "u30", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u30", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u30", "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": [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.14459494637817813, 0.0018373244858420805], "beta": 0.5363032545144716, "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.14459494637817813, -0.0018373244858420604], "beta": 0.5363032545144716, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d5", "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": "u9", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u9", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u9", "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.07561148941072868, 0.001215415507143674], "beta": 0.5534597651532466, "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.07561148941072868, -0.001215415507143648], "beta": 0.5534597651532466, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d6", "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": "u15", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u15", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u15", "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.09848029480623005, 0.0015633483865749366], "beta": -0.3949669959890538, "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.09848029480623005, -0.001563348386574907], "beta": -0.3949669959890538, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d7", "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": "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": [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.09368124420338951, 0.001379194387390647], "beta": -0.42142455572411086, "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.09368124420338951, -0.0013791943873906194], "beta": -0.42142455572411086, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d8", "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": "u32", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u32", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u32", "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.12935536112710258, -0.0015553081498054482], "beta": 0.3926782249530035, "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.12935536112710258, 0.0015553081498054522], "beta": 0.3926782249530035, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d9", "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": "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.12226850679503899, 0.0009728222483080352], "beta": -1.0035305592449417, "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.12226850679503899, -0.0009728222483080297], "beta": -1.0035305592449417, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d10", "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": [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.0965492053359095, 0.001462623500846168], "beta": -0.09318466583520002, "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.0965492053359095, -0.001462623500846173], "beta": -0.09318466583520002, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d11", "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": "u24", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u24", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u24", "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.1411151894421111, 0.0016022747979090887], "beta": 0.5233579158789275, "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.1411151894421111, -0.001602274797909052], "beta": 0.5233579158789275, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d12", "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": "u27", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u27", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u27", "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": [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.1006313679680152, 0.001920958731107576], "beta": -0.054820210899730354, "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.1006313679680152, -0.0019209587311075464], "beta": -0.054820210899730354, "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": "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.0997639294205537, 0.0009177538819246977], "beta": 0.29379454298510066, "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.0997639294205537, -0.0009177538819246826], "beta": 0.29379454298510066, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d14", "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": "fc", "t0": 0, "ch": "u36", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u36", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u36", "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.09650300361020016, 0.001628361203891289], "beta": -0.9887921785211227, "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.09650300361020016, -0.0016283612038912856], "beta": -0.9887921785211227, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d15", "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": "u45", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u45", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u45", "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.10014577319325092, 0.0011746805802234992], "beta": -0.5844127608981904, "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.10014577319325092, -0.00117468058022348], "beta": -0.5844127608981904, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d16", "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": "u55", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u55", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u55", "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.0979722505683425, 0.0015733702439471957], "beta": -0.4233679463109371, "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.0979722505683425, -0.0015733702439471734], "beta": -0.4233679463109371, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d17", "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": "u65", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u65", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u65", "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.12482178554522665, 0.0014011390312256725], "beta": -0.063620137374164, "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.12482178554522665, -0.001401139031225648], "beta": -0.063620137374164, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d18", "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": "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": [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.10218576437493715, 0.0024164259426144967], "beta": -1.0348577584111769, "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.10218576437493715, -0.002416425942614462], "beta": -1.0348577584111769, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d19", "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": "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": [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.10547829975820261, 0.0019050880991815444], "beta": -0.5067821802819922, "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.10547829975820261, -0.001905088099181511], "beta": -0.5067821802819922, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d20", "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": "u43", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u43", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u43", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u72", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u72", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u72", "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.09756024919220983, 0.0006249762950963058], "beta": 1.1101749738435711, "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.09756024919220983, -0.0006249762950962937], "beta": 1.1101749738435711, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d21", "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": "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": [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.10452897318719664, 0.0004032729900171576], "beta": 1.628318054634379, "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.10452897318719664, -0.00040327299001714437], "beta": 1.628318054634379, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d22", "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": "u44", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u44", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u44", "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": [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.11259097245717699, 0.0017474463098071482], "beta": -0.8192925427610356, "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.11259097245717699, -0.0017474463098071332], "beta": -0.8192925427610356, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d23", "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": "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.12008616562884425, -0.00019569291853983403], "beta": 0.0737359797208475, "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.12008616562884425, 0.0001956929185398542], "beta": 0.0737359797208475, "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": "fc", "t0": 0, "ch": "u74", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u74", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u74", "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.19349250192396455, 0.0006473554137496782], "beta": 0.8501523480808286, "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.19349250192396455, -0.0006473554137496206], "beta": 0.8501523480808286, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d25", "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": "u56", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u56", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u56", "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.12370745592779968, 0.0023081177405813074], "beta": -1.9921354121480892, "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.12370745592779968, -0.0023081177405813056], "beta": -1.9921354121480892, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d26", "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": "u54", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u54", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u54", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u58", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u58", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u58", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [27], "sequence": [{"name": "fc", "t0": 0, "ch": "d27", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d27", "label": "X90p_d27", "pulse_shape": "drag", "parameters": {"amp": [0.0975304567213684, 0.0019139994718727436], "beta": -1.1805954740326357, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d27", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d27", "label": "X90m_d27", "pulse_shape": "drag", "parameters": {"amp": [-0.0975304567213684, -0.0019139994718727418], "beta": -1.1805954740326357, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d27", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u57", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u57", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u57", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u60", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u60", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u60", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [28], "sequence": [{"name": "fc", "t0": 0, "ch": "d28", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d28", "label": "X90p_d28", "pulse_shape": "drag", "parameters": {"amp": [0.09338563445466869, 0.00033341233559143143], "beta": 0.5634615459559276, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d28", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d28", "label": "X90m_d28", "pulse_shape": "drag", "parameters": {"amp": [-0.09338563445466869, -0.00033341233559143615], "beta": 0.5634615459559276, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d28", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u59", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u59", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u59", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u63", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u63", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u63", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u76", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u76", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u76", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [29], "sequence": [{"name": "fc", "t0": 0, "ch": "d29", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d29", "label": "X90p_d29", "pulse_shape": "drag", "parameters": {"amp": [0.09877234192398036, 0.0020614535062876906], "beta": -1.3799289543722217, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d29", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d29", "label": "X90m_d29", "pulse_shape": "drag", "parameters": {"amp": [-0.09877234192398036, -0.002061453506287667], "beta": -1.3799289543722217, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d29", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u61", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u61", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u61", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u66", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u66", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u66", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [30], "sequence": [{"name": "fc", "t0": 0, "ch": "d30", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d30", "label": "X90p_d30", "pulse_shape": "drag", "parameters": {"amp": [0.0998203943189428, -0.0008913257066435659], "beta": 1.9815355924298044, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d30", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d30", "label": "X90m_d30", "pulse_shape": "drag", "parameters": {"amp": [-0.0998203943189428, 0.0008913257066435699], "beta": 1.9815355924298044, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d30", "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": "u64", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u64", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u64", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u68", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u68", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u68", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [31], "sequence": [{"name": "fc", "t0": 0, "ch": "d31", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d31", "label": "X90p_d31", "pulse_shape": "drag", "parameters": {"amp": [0.088832157763875, 0.0011055588213696723], "beta": -0.08666964349488815, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d31", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d31", "label": "X90m_d31", "pulse_shape": "drag", "parameters": {"amp": [-0.088832157763875, -0.00110555882136968], "beta": -0.08666964349488815, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d31", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u67", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u67", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u67", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u70", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u70", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u70", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [32], "sequence": [{"name": "fc", "t0": 0, "ch": "d32", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d32", "label": "X90p_d32", "pulse_shape": "drag", "parameters": {"amp": [0.08863224981973591, 0.001253267673417812], "beta": -1.2669442943495863, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d32", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d32", "label": "X90m_d32", "pulse_shape": "drag", "parameters": {"amp": [-0.08863224981973591, -0.0012532676734177885], "beta": -1.2669442943495863, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d32", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u69", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u69", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u69", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u78", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u78", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u78", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [33], "sequence": [{"name": "fc", "t0": 0, "ch": "d33", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d33", "label": "X90p_d33", "pulse_shape": "drag", "parameters": {"amp": [0.0996688040038656, 0.0007876057703022679], "beta": 0.6275186917690918, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d33", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d33", "label": "X90m_d33", "pulse_shape": "drag", "parameters": {"amp": [-0.0996688040038656, -0.0007876057703022603], "beta": 0.6275186917690918, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d33", "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": "u84", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u84", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u84", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [34], "sequence": [{"name": "fc", "t0": 0, "ch": "d34", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d34", "label": "X90p_d34", "pulse_shape": "drag", "parameters": {"amp": [0.1031016977628983, 0.0006833613539886323], "beta": 0.5245085704395506, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d34", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d34", "label": "X90m_d34", "pulse_shape": "drag", "parameters": {"amp": [-0.1031016977628983, -0.0006833613539886166], "beta": 0.5245085704395506, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d34", "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": "fc", "t0": 0, "ch": "u94", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u94", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u94", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [35], "sequence": [{"name": "fc", "t0": 0, "ch": "d35", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d35", "label": "X90p_d35", "pulse_shape": "drag", "parameters": {"amp": [0.09543579625182948, 0.002042956899134053], "beta": -1.5020529715515876, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d35", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d35", "label": "X90m_d35", "pulse_shape": "drag", "parameters": {"amp": [-0.09543579625182948, -0.0020429568991340266], "beta": -1.5020529715515876, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d35", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u104", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u104", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u104", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u62", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u62", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u62", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [36], "sequence": [{"name": "fc", "t0": 0, "ch": "d36", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d36", "label": "X90p_d36", "pulse_shape": "drag", "parameters": {"amp": [0.09604187125716661, 0.002171430094789102], "beta": -1.356253373528273, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d36", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d36", "label": "X90m_d36", "pulse_shape": "drag", "parameters": {"amp": [-0.09604187125716661, -0.002171430094789096], "beta": -1.356253373528273, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d36", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u114", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u114", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u114", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u71", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u71", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u71", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [37], "sequence": [{"name": "fc", "t0": 0, "ch": "d37", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d37", "label": "X90p_d37", "pulse_shape": "drag", "parameters": {"amp": [0.00868838285789024, -0.09455783388557376], "beta": -1.5480729069919235, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d37", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d37", "label": "X90m_d37", "pulse_shape": "drag", "parameters": {"amp": [-0.008688382857890227, 0.09455783388557376], "beta": -1.5480729069919235, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d37", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u116", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u116", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u116", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u82", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u82", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u82", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [38], "sequence": [{"name": "fc", "t0": 0, "ch": "d38", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d38", "label": "X90p_d38", "pulse_shape": "drag", "parameters": {"amp": [0.09617623246264881, 0.0006124725782723429], "beta": 1.3557810403870874, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d38", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d38", "label": "X90m_d38", "pulse_shape": "drag", "parameters": {"amp": [-0.09617623246264881, -0.000612472578272343], "beta": 1.3557810403870874, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d38", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u80", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u80", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u80", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u85", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u85", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u85", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [39], "sequence": [{"name": "fc", "t0": 0, "ch": "d39", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d39", "label": "X90p_d39", "pulse_shape": "drag", "parameters": {"amp": [0.09616073209644509, 0.0016850437409281819], "beta": -0.8536808799302869, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d39", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d39", "label": "X90m_d39", "pulse_shape": "drag", "parameters": {"amp": [-0.09616073209644509, -0.0016850437409281528], "beta": -0.8536808799302869, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d39", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u73", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u73", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u73", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u83", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u83", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u83", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u87", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u87", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u87", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [40], "sequence": [{"name": "fc", "t0": 0, "ch": "d40", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d40", "label": "X90p_d40", "pulse_shape": "drag", "parameters": {"amp": [0.10407740229347077, -0.00020678038318438586], "beta": 2.2937256852428485, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d40", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d40", "label": "X90m_d40", "pulse_shape": "drag", "parameters": {"amp": [-0.10407740229347077, 0.00020678038318439727], "beta": 2.2937256852428485, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d40", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u86", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u86", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u86", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u89", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u89", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u89", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [41], "sequence": [{"name": "fc", "t0": 0, "ch": "d41", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d41", "label": "X90p_d41", "pulse_shape": "drag", "parameters": {"amp": [0.1167061478055803, -0.0008502982254150733], "beta": 1.6810119998778095, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d41", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d41", "label": "X90m_d41", "pulse_shape": "drag", "parameters": {"amp": [-0.1167061478055803, 0.000850298225415101], "beta": 1.6810119998778095, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d41", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u118", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u118", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u118", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u88", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u88", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u88", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u92", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u92", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u92", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [42], "sequence": [{"name": "fc", "t0": 0, "ch": "d42", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d42", "label": "X90p_d42", "pulse_shape": "drag", "parameters": {"amp": [0.11130987573324137, 0.001264518089987534], "beta": -0.6884140873882535, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d42", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d42", "label": "X90m_d42", "pulse_shape": "drag", "parameters": {"amp": [-0.11130987573324137, -0.001264518089987509], "beta": -0.6884140873882535, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d42", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u90", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u90", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u90", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u95", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u95", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u95", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [43], "sequence": [{"name": "fc", "t0": 0, "ch": "d43", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d43", "label": "X90p_d43", "pulse_shape": "drag", "parameters": {"amp": [0.09044746229702674, 0.0029863123798981508], "beta": -2.1778628135701905, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d43", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d43", "label": "X90m_d43", "pulse_shape": "drag", "parameters": {"amp": [-0.09044746229702674, -0.002986312379898131], "beta": -2.1778628135701905, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d43", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u75", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u75", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u75", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u93", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u93", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u93", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u97", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u97", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u97", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [44], "sequence": [{"name": "fc", "t0": 0, "ch": "d44", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d44", "label": "X90p_d44", "pulse_shape": "drag", "parameters": {"amp": [0.09619830100875673, -0.0007263830957272626], "beta": 1.5870927210118877, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d44", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d44", "label": "X90m_d44", "pulse_shape": "drag", "parameters": {"amp": [-0.09619830100875673, 0.0007263830957272763], "beta": 1.5870927210118877, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d44", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u96", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u96", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u96", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u99", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u99", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u99", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [45], "sequence": [{"name": "fc", "t0": 0, "ch": "d45", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d45", "label": "X90p_d45", "pulse_shape": "drag", "parameters": {"amp": [0.09912252983507365, 0.0007938306920316289], "beta": 0.6062390717479786, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d45", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d45", "label": "X90m_d45", "pulse_shape": "drag", "parameters": {"amp": [-0.09912252983507365, -0.0007938306920316206], "beta": 0.6062390717479786, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d45", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u102", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u102", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u102", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u120", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u120", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u120", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u98", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u98", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u98", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [46], "sequence": [{"name": "fc", "t0": 0, "ch": "d46", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d46", "label": "X90p_d46", "pulse_shape": "drag", "parameters": {"amp": [0.0933462200261285, 0.001642806907055986], "beta": 0.032701912718651575, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d46", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d46", "label": "X90m_d46", "pulse_shape": "drag", "parameters": {"amp": [-0.0933462200261285, -0.0016428069070559895], "beta": 0.032701912718651575, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d46", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u100", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u100", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u100", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u105", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u105", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u105", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [47], "sequence": [{"name": "fc", "t0": 0, "ch": "d47", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d47", "label": "X90p_d47", "pulse_shape": "drag", "parameters": {"amp": [0.11396167254498489, -0.0003247278126238997], "beta": 1.1839405884152225, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d47", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d47", "label": "X90m_d47", "pulse_shape": "drag", "parameters": {"amp": [-0.11396167254498489, 0.0003247278126239017], "beta": 1.1839405884152225, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d47", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u103", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u103", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u103", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u107", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u107", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u107", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u77", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u77", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u77", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [48], "sequence": [{"name": "fc", "t0": 0, "ch": "d48", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d48", "label": "X90p_d48", "pulse_shape": "drag", "parameters": {"amp": [0.09984166958938402, 0.0014443545255074816], "beta": 0.011127899545718467, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d48", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d48", "label": "X90m_d48", "pulse_shape": "drag", "parameters": {"amp": [-0.09984166958938402, -0.0014443545255074545], "beta": 0.011127899545718467, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d48", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u106", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u106", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u106", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u109", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u109", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u109", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [49], "sequence": [{"name": "fc", "t0": 0, "ch": "d49", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d49", "label": "X90p_d49", "pulse_shape": "drag", "parameters": {"amp": [0.10071169403389009, -0.0002931327059855909], "beta": 1.6229136926277805, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d49", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d49", "label": "X90m_d49", "pulse_shape": "drag", "parameters": {"amp": [-0.10071169403389009, 0.00029313270598558774], "beta": 1.6229136926277805, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d49", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u108", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u108", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u108", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u112", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u112", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u112", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u122", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u122", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u122", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [50], "sequence": [{"name": "fc", "t0": 0, "ch": "d50", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d50", "label": "X90p_d50", "pulse_shape": "drag", "parameters": {"amp": [0.0962750652116885, 0.0011921871260471115], "beta": -0.9595096305449423, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d50", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d50", "label": "X90m_d50", "pulse_shape": "drag", "parameters": {"amp": [-0.0962750652116885, -0.0011921871260470876], "beta": -0.9595096305449423, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d50", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u110", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u110", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u110", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u115", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u115", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u115", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [51], "sequence": [{"name": "fc", "t0": 0, "ch": "d51", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d51", "label": "X90p_d51", "pulse_shape": "drag", "parameters": {"amp": [0.09834851113603359, 0.0017618162023445008], "beta": -1.687806463213027, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d51", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d51", "label": "X90m_d51", "pulse_shape": "drag", "parameters": {"amp": [-0.09834851113603359, -0.0017618162023445034], "beta": -1.687806463213027, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d51", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u113", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u113", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u113", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u79", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u79", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u79", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [52], "sequence": [{"name": "fc", "t0": 0, "ch": "d52", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d52", "label": "X90p_d52", "pulse_shape": "drag", "parameters": {"amp": [0.09269374168645778, 9.479147153851943e-05], "beta": 1.6356768795321304, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d52", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d52", "label": "X90m_d52", "pulse_shape": "drag", "parameters": {"amp": [-0.09269374168645778, -9.479147153849706e-05], "beta": 1.6356768795321304, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d52", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u124", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u124", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u124", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u81", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u81", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u81", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [53], "sequence": [{"name": "fc", "t0": 0, "ch": "d53", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d53", "label": "X90p_d53", "pulse_shape": "drag", "parameters": {"amp": [0.1135499885157783, 0.0021683182524991603], "beta": -1.147433978287251, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d53", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d53", "label": "X90m_d53", "pulse_shape": "drag", "parameters": {"amp": [-0.1135499885157783, -0.002168318252499134], "beta": -1.147433978287251, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d53", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u133", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u133", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u133", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u91", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u91", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u91", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [54], "sequence": [{"name": "fc", "t0": 0, "ch": "d54", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d54", "label": "X90p_d54", "pulse_shape": "drag", "parameters": {"amp": [0.07602813059040985, -9.300376883827832e-05], "beta": 0.7148241595332547, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d54", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d54", "label": "X90m_d54", "pulse_shape": "drag", "parameters": {"amp": [-0.07602813059040985, 9.300376883828582e-05], "beta": 0.7148241595332547, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d54", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u101", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u101", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u101", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u143", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u143", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u143", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [55], "sequence": [{"name": "fc", "t0": 0, "ch": "d55", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d55", "label": "X90p_d55", "pulse_shape": "drag", "parameters": {"amp": [0.0960424795080809, 0.0007979783114878937], "beta": -0.3225929689724514, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d55", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d55", "label": "X90m_d55", "pulse_shape": "drag", "parameters": {"amp": [-0.0960424795080809, -0.0007979783114878667], "beta": -0.3225929689724514, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d55", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u111", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u111", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u111", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u153", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u153", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u153", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [56], "sequence": [{"name": "fc", "t0": 0, "ch": "d56", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d56", "label": "X90p_d56", "pulse_shape": "drag", "parameters": {"amp": [0.09648382789817259, 0.0018494218536374148], "beta": -1.878949570843616, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d56", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d56", "label": "X90m_d56", "pulse_shape": "drag", "parameters": {"amp": [-0.09648382789817259, -0.001849421853637395], "beta": -1.878949570843616, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d56", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u117", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u117", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u117", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u126", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u126", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u126", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [57], "sequence": [{"name": "fc", "t0": 0, "ch": "d57", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d57", "label": "X90p_d57", "pulse_shape": "drag", "parameters": {"amp": [0.09702946655500636, 0.001549001315399112], "beta": -1.2776729790590766, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d57", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d57", "label": "X90m_d57", "pulse_shape": "drag", "parameters": {"amp": [-0.09702946655500636, -0.0015490013153990883], "beta": -1.2776729790590766, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d57", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u125", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u125", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u125", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u128", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u128", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u128", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [58], "sequence": [{"name": "fc", "t0": 0, "ch": "d58", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d58", "label": "X90p_d58", "pulse_shape": "drag", "parameters": {"amp": [0.11851841072866011, -0.00016336988848341012], "beta": 1.679116280234777, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d58", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d58", "label": "X90m_d58", "pulse_shape": "drag", "parameters": {"amp": [-0.11851841072866011, 0.0001633698884834405], "beta": 1.679116280234777, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d58", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u127", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u127", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u127", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u131", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u131", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u131", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u160", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u160", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u160", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [59], "sequence": [{"name": "fc", "t0": 0, "ch": "d59", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d59", "label": "X90p_d59", "pulse_shape": "drag", "parameters": {"amp": [0.09559374711496173, 0.0007505483946901862], "beta": 0.4579455937135979, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d59", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d59", "label": "X90m_d59", "pulse_shape": "drag", "parameters": {"amp": [-0.09559374711496173, -0.0007505483946901615], "beta": 0.4579455937135979, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d59", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u129", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u129", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u129", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u134", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u134", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u134", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [60], "sequence": [{"name": "fc", "t0": 0, "ch": "d60", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d60", "label": "X90p_d60", "pulse_shape": "drag", "parameters": {"amp": [0.09469310232356903, 0.0012371261739891075], "beta": -0.9902472702399228, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d60", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d60", "label": "X90m_d60", "pulse_shape": "drag", "parameters": {"amp": [-0.09469310232356903, -0.00123712617398909], "beta": -0.9902472702399228, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d60", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u119", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u119", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u119", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u132", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u132", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u132", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u136", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u136", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u136", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [61], "sequence": [{"name": "fc", "t0": 0, "ch": "d61", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d61", "label": "X90p_d61", "pulse_shape": "drag", "parameters": {"amp": [0.13559960005611674, 0.0007206927680335045], "beta": 0.9063938971915719, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d61", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d61", "label": "X90m_d61", "pulse_shape": "drag", "parameters": {"amp": [-0.13559960005611674, -0.0007206927680334727], "beta": 0.9063938971915719, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d61", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u135", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u135", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u135", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u138", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u138", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u138", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [62], "sequence": [{"name": "fc", "t0": 0, "ch": "d62", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d62", "label": "X90p_d62", "pulse_shape": "drag", "parameters": {"amp": [0.08126354415594338, 0.0011258441606146754], "beta": 0.07795727230674765, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d62", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d62", "label": "X90m_d62", "pulse_shape": "drag", "parameters": {"amp": [-0.08126354415594338, -0.0011258441606146641], "beta": 0.07795727230674765, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d62", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u137", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u137", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u137", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u141", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u141", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u141", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u162", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u162", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u162", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [63], "sequence": [{"name": "fc", "t0": 0, "ch": "d63", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d63", "label": "X90p_d63", "pulse_shape": "drag", "parameters": {"amp": [0.09579814893537118, 0.0009677048540111488], "beta": 0.24532288593439402, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d63", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d63", "label": "X90m_d63", "pulse_shape": "drag", "parameters": {"amp": [-0.09579814893537118, -0.0009677048540111539], "beta": 0.24532288593439402, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d63", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u139", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u139", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u139", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u144", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u144", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u144", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [64], "sequence": [{"name": "fc", "t0": 0, "ch": "d64", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d64", "label": "X90p_d64", "pulse_shape": "drag", "parameters": {"amp": [0.08382418622965596, 3.803805038136307e-05], "beta": 0.19218474042267178, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d64", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d64", "label": "X90m_d64", "pulse_shape": "drag", "parameters": {"amp": [-0.08382418622965596, -3.803805038137024e-05], "beta": 0.19218474042267178, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d64", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u121", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u121", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u121", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u142", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u142", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u142", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u146", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u146", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u146", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [65], "sequence": [{"name": "fc", "t0": 0, "ch": "d65", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d65", "label": "X90p_d65", "pulse_shape": "drag", "parameters": {"amp": [0.10453536510892569, -0.0011380216202906517], "beta": 3.914999018535003, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d65", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d65", "label": "X90m_d65", "pulse_shape": "drag", "parameters": {"amp": [-0.10453536510892569, 0.00113802162029068], "beta": 3.914999018535003, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d65", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u145", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u145", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u145", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u148", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u148", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u148", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [66], "sequence": [{"name": "fc", "t0": 0, "ch": "d66", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d66", "label": "X90p_d66", "pulse_shape": "drag", "parameters": {"amp": [0.10003690588645268, 0.0009704992045627891], "beta": -1.56723348443864, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d66", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d66", "label": "X90m_d66", "pulse_shape": "drag", "parameters": {"amp": [-0.10003690588645268, -0.0009704992045627903], "beta": -1.56723348443864, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d66", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u147", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u147", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u147", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u151", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u151", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u151", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u164", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u164", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u164", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [67], "sequence": [{"name": "fc", "t0": 0, "ch": "d67", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d67", "label": "X90p_d67", "pulse_shape": "drag", "parameters": {"amp": [0.13497171221478987, -0.0015293073332990558], "beta": 2.3517476260527217, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d67", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d67", "label": "X90m_d67", "pulse_shape": "drag", "parameters": {"amp": [-0.13497171221478987, 0.0015293073332990658], "beta": 2.3517476260527217, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d67", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u149", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u149", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u149", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u154", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u154", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u154", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [68], "sequence": [{"name": "fc", "t0": 0, "ch": "d68", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d68", "label": "X90p_d68", "pulse_shape": "drag", "parameters": {"amp": [0.09509979238321963, 0.0008452552253863645], "beta": -0.03889942945742053, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d68", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d68", "label": "X90m_d68", "pulse_shape": "drag", "parameters": {"amp": [-0.09509979238321963, -0.0008452552253863649], "beta": -0.03889942945742053, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d68", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u123", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u123", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u123", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u152", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u152", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u152", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u156", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u156", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u156", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [69], "sequence": [{"name": "fc", "t0": 0, "ch": "d69", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d69", "label": "X90p_d69", "pulse_shape": "drag", "parameters": {"amp": [0.09801059311430563, 0.0009211124509229749], "beta": 0.9954120580123458, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d69", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d69", "label": "X90m_d69", "pulse_shape": "drag", "parameters": {"amp": [-0.09801059311430563, -0.0009211124509229847], "beta": 0.9954120580123458, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d69", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u155", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u155", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u155", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u158", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u158", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u158", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [70], "sequence": [{"name": "fc", "t0": 0, "ch": "d70", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d70", "label": "X90p_d70", "pulse_shape": "drag", "parameters": {"amp": [0.09797541640384796, 0.002416946030692584], "beta": -2.16583570401465, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d70", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d70", "label": "X90m_d70", "pulse_shape": "drag", "parameters": {"amp": [-0.09797541640384796, -0.002416946030692584], "beta": -2.16583570401465, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d70", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u157", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u157", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u157", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u166", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u166", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u166", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [71], "sequence": [{"name": "fc", "t0": 0, "ch": "d71", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d71", "label": "X90p_d71", "pulse_shape": "drag", "parameters": {"amp": [0.09843274010937189, 0.0005495208125857818], "beta": -0.4419617673478976, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d71", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d71", "label": "X90m_d71", "pulse_shape": "drag", "parameters": {"amp": [-0.09843274010937189, -0.0005495208125857628], "beta": -0.4419617673478976, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d71", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u130", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u130", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u130", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u172", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u172", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u172", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [72], "sequence": [{"name": "fc", "t0": 0, "ch": "d72", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d72", "label": "X90p_d72", "pulse_shape": "drag", "parameters": {"amp": [0.0955035129685456, 0.0008297541854273995], "beta": -0.11133125902076414, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d72", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d72", "label": "X90m_d72", "pulse_shape": "drag", "parameters": {"amp": [-0.0955035129685456, -0.0008297541854273842], "beta": -0.11133125902076414, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d72", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u140", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u140", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u140", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u182", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u182", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u182", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [73], "sequence": [{"name": "fc", "t0": 0, "ch": "d73", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d73", "label": "X90p_d73", "pulse_shape": "drag", "parameters": {"amp": [0.09726692800811326, 0.0003699418974938183], "beta": 1.4135897153745198, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d73", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d73", "label": "X90m_d73", "pulse_shape": "drag", "parameters": {"amp": [-0.09726692800811326, -0.00036994189749381856], "beta": 1.4135897153745198, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d73", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u150", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u150", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u150", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u192", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u192", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u192", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [74], "sequence": [{"name": "fc", "t0": 0, "ch": "d74", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d74", "label": "X90p_d74", "pulse_shape": "drag", "parameters": {"amp": [0.1198761178291242, 0.000977520844465389], "beta": -0.15100947323751712, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d74", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d74", "label": "X90m_d74", "pulse_shape": "drag", "parameters": {"amp": [-0.1198761178291242, -0.000977520844465385], "beta": -0.15100947323751712, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d74", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u159", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u159", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u159", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u202", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u202", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u202", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [75], "sequence": [{"name": "fc", "t0": 0, "ch": "d75", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d75", "label": "X90p_d75", "pulse_shape": "drag", "parameters": {"amp": [0.10513108234978502, -9.860245197807804e-05], "beta": 1.9938042604922348, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d75", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d75", "label": "X90m_d75", "pulse_shape": "drag", "parameters": {"amp": [-0.10513108234978502, 9.860245197807276e-05], "beta": 1.9938042604922348, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d75", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u170", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u170", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u170", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u204", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u204", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u204", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [76], "sequence": [{"name": "fc", "t0": 0, "ch": "d76", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d76", "label": "X90p_d76", "pulse_shape": "drag", "parameters": {"amp": [0.10321413288314152, 0.0012987096283798725], "beta": -0.7935449964227578, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d76", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d76", "label": "X90m_d76", "pulse_shape": "drag", "parameters": {"amp": [-0.10321413288314152, -0.0012987096283798374], "beta": -0.7935449964227578, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d76", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u168", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u168", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u168", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u173", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u173", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u173", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [77], "sequence": [{"name": "fc", "t0": 0, "ch": "d77", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d77", "label": "X90p_d77", "pulse_shape": "drag", "parameters": {"amp": [0.09837299208037871, 0.0021223511285101354], "beta": -2.3124803053390233, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d77", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d77", "label": "X90m_d77", "pulse_shape": "drag", "parameters": {"amp": [-0.09837299208037871, -0.002122351128510129], "beta": -2.3124803053390233, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d77", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u161", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u161", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u161", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u171", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u171", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u171", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u175", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u175", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u175", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [78], "sequence": [{"name": "fc", "t0": 0, "ch": "d78", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d78", "label": "X90p_d78", "pulse_shape": "drag", "parameters": {"amp": [0.09895619432987299, 0.0012046853440808632], "beta": -0.2422062980127582, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d78", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d78", "label": "X90m_d78", "pulse_shape": "drag", "parameters": {"amp": [-0.09895619432987299, -0.0012046853440808654], "beta": -0.2422062980127582, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d78", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u174", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u174", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u174", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u177", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u177", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u177", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [79], "sequence": [{"name": "fc", "t0": 0, "ch": "d79", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d79", "label": "X90p_d79", "pulse_shape": "drag", "parameters": {"amp": [0.09696160423316746, 0.0006260748978533891], "beta": 1.114335770860557, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d79", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d79", "label": "X90m_d79", "pulse_shape": "drag", "parameters": {"amp": [-0.09696160423316746, -0.0006260748978533942], "beta": 1.114335770860557, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d79", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u176", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u176", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u176", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u180", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u180", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u180", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u206", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u206", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u206", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [80], "sequence": [{"name": "fc", "t0": 0, "ch": "d80", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d80", "label": "X90p_d80", "pulse_shape": "drag", "parameters": {"amp": [0.10029474208151824, -0.002268973889537971], "beta": 3.4219549112407, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d80", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d80", "label": "X90m_d80", "pulse_shape": "drag", "parameters": {"amp": [-0.10029474208151824, 0.002268973889537965], "beta": 3.4219549112407, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d80", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u178", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u178", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u178", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u183", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u183", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u183", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [81], "sequence": [{"name": "fc", "t0": 0, "ch": "d81", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d81", "label": "X90p_d81", "pulse_shape": "drag", "parameters": {"amp": [0.09525406276346755, 0.001357441029031795], "beta": 0.07410235913307432, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d81", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d81", "label": "X90m_d81", "pulse_shape": "drag", "parameters": {"amp": [-0.09525406276346755, -0.0013574410290317757], "beta": 0.07410235913307432, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d81", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u163", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u163", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u163", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u181", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u181", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u181", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u185", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u185", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u185", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [82], "sequence": [{"name": "fc", "t0": 0, "ch": "d82", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d82", "label": "X90p_d82", "pulse_shape": "drag", "parameters": {"amp": [0.09553747877114199, 0.0005659537038867093], "beta": -1.1682258932255576, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d82", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d82", "label": "X90m_d82", "pulse_shape": "drag", "parameters": {"amp": [-0.09553747877114199, -0.0005659537038866909], "beta": -1.1682258932255576, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d82", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u184", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u184", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u184", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u187", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u187", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u187", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [83], "sequence": [{"name": "fc", "t0": 0, "ch": "d83", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d83", "label": "X90p_d83", "pulse_shape": "drag", "parameters": {"amp": [0.11744434732299569, 0.0033816411028132964], "beta": -2.4411666847517735, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d83", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d83", "label": "X90m_d83", "pulse_shape": "drag", "parameters": {"amp": [-0.11744434732299569, -0.0033816411028133046], "beta": -2.4411666847517735, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d83", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u186", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u186", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u186", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u190", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u190", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u190", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u208", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u208", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u208", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [84], "sequence": [{"name": "fc", "t0": 0, "ch": "d84", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d84", "label": "X90p_d84", "pulse_shape": "drag", "parameters": {"amp": [0.09391782394367892, 0.0011165093384873067], "beta": 1.1689305126709633, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d84", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d84", "label": "X90m_d84", "pulse_shape": "drag", "parameters": {"amp": [-0.09391782394367892, -0.0011165093384873132], "beta": 1.1689305126709633, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d84", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u188", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u188", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u188", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u193", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u193", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u193", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [85], "sequence": [{"name": "fc", "t0": 0, "ch": "d85", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d85", "label": "X90p_d85", "pulse_shape": "drag", "parameters": {"amp": [0.16899085938555627, 0.00203275014469085], "beta": -1.431441662592734, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d85", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d85", "label": "X90m_d85", "pulse_shape": "drag", "parameters": {"amp": [-0.16899085938555627, -0.0020327501446908525], "beta": -1.431441662592734, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d85", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u165", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u165", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u165", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u191", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u191", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u191", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u195", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u195", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u195", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [86], "sequence": [{"name": "fc", "t0": 0, "ch": "d86", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d86", "label": "X90p_d86", "pulse_shape": "drag", "parameters": {"amp": [0.09620749342851234, 0.001736389081355557], "beta": 0.07944776716149475, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d86", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d86", "label": "X90m_d86", "pulse_shape": "drag", "parameters": {"amp": [-0.09620749342851236, -0.0017363890813555279], "beta": 0.07944776716149475, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d86", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u194", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u194", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u194", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u197", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u197", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u197", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [87], "sequence": [{"name": "fc", "t0": 0, "ch": "d87", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d87", "label": "X90p_d87", "pulse_shape": "drag", "parameters": {"amp": [0.09540118268366199, 0.001353740845194476], "beta": -1.3468689009116281, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d87", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d87", "label": "X90m_d87", "pulse_shape": "drag", "parameters": {"amp": [-0.09540118268366199, -0.0013537408451944684], "beta": -1.3468689009116281, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d87", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u196", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u196", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u196", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u200", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u200", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u200", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u210", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u210", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u210", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [88], "sequence": [{"name": "fc", "t0": 0, "ch": "d88", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d88", "label": "X90p_d88", "pulse_shape": "drag", "parameters": {"amp": [0.12250181382326165, 0.0007941507626496026], "beta": 1.2432618822145132, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d88", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d88", "label": "X90m_d88", "pulse_shape": "drag", "parameters": {"amp": [-0.12250181382326165, -0.0007941507626495951], "beta": 1.2432618822145132, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d88", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u198", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u198", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u198", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u203", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u203", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u203", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [89], "sequence": [{"name": "fc", "t0": 0, "ch": "d89", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d89", "label": "X90p_d89", "pulse_shape": "drag", "parameters": {"amp": [0.09726740528530739, 0.0009725962114104623], "beta": 0.8053259211720791, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d89", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d89", "label": "X90m_d89", "pulse_shape": "drag", "parameters": {"amp": [-0.09726740528530739, -0.0009725962114104375], "beta": 0.8053259211720791, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d89", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u167", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u167", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u167", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u201", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u201", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u201", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [90], "sequence": [{"name": "fc", "t0": 0, "ch": "d90", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d90", "label": "X90p_d90", "pulse_shape": "drag", "parameters": {"amp": [0.09743303031530948, -0.0006859479590268138], "beta": 2.769047420942697, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d90", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d90", "label": "X90m_d90", "pulse_shape": "drag", "parameters": {"amp": [-0.09743303031530948, 0.0006859479590268434], "beta": 2.769047420942697, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d90", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u169", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u169", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u169", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u212", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u212", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u212", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [91], "sequence": [{"name": "fc", "t0": 0, "ch": "d91", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d91", "label": "X90p_d91", "pulse_shape": "drag", "parameters": {"amp": [0.10107236724205125, -0.0002966579815657475], "beta": 1.427438470869819, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d91", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d91", "label": "X90m_d91", "pulse_shape": "drag", "parameters": {"amp": [-0.10107236724205125, 0.00029665798156575], "beta": 1.427438470869819, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d91", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u179", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u179", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u179", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u221", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u221", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u221", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [92], "sequence": [{"name": "fc", "t0": 0, "ch": "d92", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d92", "label": "X90p_d92", "pulse_shape": "drag", "parameters": {"amp": [0.09282376624555454, 0.0007908016478509532], "beta": -0.2265881189016976, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d92", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d92", "label": "X90m_d92", "pulse_shape": "drag", "parameters": {"amp": [-0.09282376624555454, -0.0007908016478509456], "beta": -0.2265881189016976, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d92", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u189", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u189", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u189", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u231", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u231", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u231", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [93], "sequence": [{"name": "fc", "t0": 0, "ch": "d93", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d93", "label": "X90p_d93", "pulse_shape": "drag", "parameters": {"amp": [0.10230879838953898, 0.00040432861161719105], "beta": -0.36095013350960314, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d93", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d93", "label": "X90m_d93", "pulse_shape": "drag", "parameters": {"amp": [-0.10230879838953898, -0.00040432861161716584], "beta": -0.36095013350960314, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d93", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u199", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u199", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u199", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u241", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u241", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u241", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [94], "sequence": [{"name": "fc", "t0": 0, "ch": "d94", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d94", "label": "X90p_d94", "pulse_shape": "drag", "parameters": {"amp": [0.08971516334025903, -0.00044448104660772765], "beta": 2.460717547562178, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d94", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d94", "label": "X90m_d94", "pulse_shape": "drag", "parameters": {"amp": [-0.08971516334025903, 0.0004444810466077299], "beta": 2.460717547562178, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d94", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u205", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u205", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u205", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u214", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u214", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u214", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [95], "sequence": [{"name": "fc", "t0": 0, "ch": "d95", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d95", "label": "X90p_d95", "pulse_shape": "drag", "parameters": {"amp": [0.09848634248280833, -0.0005741240833263148], "beta": 2.63712329789596, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d95", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d95", "label": "X90m_d95", "pulse_shape": "drag", "parameters": {"amp": [-0.09848634248280833, 0.0005741240833263469], "beta": 2.63712329789596, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d95", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u213", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u213", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u213", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u216", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u216", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u216", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [96], "sequence": [{"name": "fc", "t0": 0, "ch": "d96", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d96", "label": "X90p_d96", "pulse_shape": "drag", "parameters": {"amp": [0.09767648357444118, 0.00047412566842150336], "beta": 1.3065160560100524, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d96", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d96", "label": "X90m_d96", "pulse_shape": "drag", "parameters": {"amp": [-0.09767648357444118, -0.0004741256684214799], "beta": 1.3065160560100524, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d96", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u215", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u215", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u215", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u219", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u219", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u219", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u248", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u248", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u248", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [97], "sequence": [{"name": "fc", "t0": 0, "ch": "d97", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d97", "label": "X90p_d97", "pulse_shape": "drag", "parameters": {"amp": [0.0957320722288601, 0.0012289531972143827], "beta": 0.41998562836761755, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d97", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d97", "label": "X90m_d97", "pulse_shape": "drag", "parameters": {"amp": [-0.0957320722288601, -0.0012289531972143903], "beta": 0.41998562836761755, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d97", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u217", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u217", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u217", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u222", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u222", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u222", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [98], "sequence": [{"name": "fc", "t0": 0, "ch": "d98", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d98", "label": "X90p_d98", "pulse_shape": "drag", "parameters": {"amp": [0.10218423827643879, 0.0018282182637454594], "beta": -1.5997615707595416, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d98", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d98", "label": "X90m_d98", "pulse_shape": "drag", "parameters": {"amp": [-0.10218423827643879, -0.0018282182637454594], "beta": -1.5997615707595416, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d98", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u207", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u207", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u207", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u220", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u220", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u220", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u224", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u224", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u224", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [99], "sequence": [{"name": "fc", "t0": 0, "ch": "d99", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d99", "label": "X90p_d99", "pulse_shape": "drag", "parameters": {"amp": [0.09599416123111482, 0.0009936889738237894], "beta": -0.19096031251702314, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d99", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d99", "label": "X90m_d99", "pulse_shape": "drag", "parameters": {"amp": [-0.09599416123111482, -0.0009936889738237787], "beta": -0.19096031251702314, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d99", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u223", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u223", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u223", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u226", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u226", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u226", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [100], "sequence": [{"name": "fc", "t0": 0, "ch": "d100", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d100", "label": "X90p_d100", "pulse_shape": "drag", "parameters": {"amp": [0.09286805059295689, -1.6278293033287982e-05], "beta": 1.5855060534313825, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d100", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d100", "label": "X90m_d100", "pulse_shape": "drag", "parameters": {"amp": [-0.09286805059295689, 1.6278293033318143e-05], "beta": 1.5855060534313825, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d100", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u225", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u225", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u225", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u229", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u229", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u229", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u249", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u249", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u249", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [101], "sequence": [{"name": "fc", "t0": 0, "ch": "d101", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d101", "label": "X90p_d101", "pulse_shape": "drag", "parameters": {"amp": [0.09798289653724473, 0.0013677843278568425], "beta": 0.3050475654669881, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d101", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d101", "label": "X90m_d101", "pulse_shape": "drag", "parameters": {"amp": [-0.09798289653724473, -0.0013677843278568263], "beta": 0.3050475654669881, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d101", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u227", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u227", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u227", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u232", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u232", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u232", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [102], "sequence": [{"name": "fc", "t0": 0, "ch": "d102", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d102", "label": "X90p_d102", "pulse_shape": "drag", "parameters": {"amp": [0.09280782807052618, 0.00012725154288438745], "beta": 1.7621621418459679, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d102", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d102", "label": "X90m_d102", "pulse_shape": "drag", "parameters": {"amp": [-0.09280782807052618, -0.00012725154288438005], "beta": 1.7621621418459679, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d102", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u209", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u209", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u209", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u230", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u230", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u230", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u234", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u234", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u234", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [103], "sequence": [{"name": "fc", "t0": 0, "ch": "d103", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d103", "label": "X90p_d103", "pulse_shape": "drag", "parameters": {"amp": [0.10004285606747597, 0.0001435082948910189], "beta": 0.994768299051259, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d103", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d103", "label": "X90m_d103", "pulse_shape": "drag", "parameters": {"amp": [-0.10004285606747597, -0.00014350829489102488], "beta": 0.994768299051259, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d103", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u233", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u233", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u233", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u236", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u236", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u236", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [104], "sequence": [{"name": "fc", "t0": 0, "ch": "d104", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d104", "label": "X90p_d104", "pulse_shape": "drag", "parameters": {"amp": [0.08700777525125503, 0.0020309815836197535], "beta": -2.0467291689580347, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d104", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d104", "label": "X90m_d104", "pulse_shape": "drag", "parameters": {"amp": [-0.08700777525125503, -0.0020309815836197366], "beta": -2.0467291689580347, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d104", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u235", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u235", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u235", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u239", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u239", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u239", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u251", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u251", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u251", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [105], "sequence": [{"name": "fc", "t0": 0, "ch": "d105", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d105", "label": "X90p_d105", "pulse_shape": "drag", "parameters": {"amp": [0.09839388118930452, 0.0018365692163619825], "beta": -1.2455570289445705, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d105", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d105", "label": "X90m_d105", "pulse_shape": "drag", "parameters": {"amp": [-0.09839388118930452, -0.0018365692163619732], "beta": -1.2455570289445705, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d105", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u237", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u237", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u237", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u242", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u242", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u242", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [106], "sequence": [{"name": "fc", "t0": 0, "ch": "d106", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d106", "label": "X90p_d106", "pulse_shape": "drag", "parameters": {"amp": [0.2340725571848802, 0.000882118180690507], "beta": 1.3163761456265402, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d106", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d106", "label": "X90m_d106", "pulse_shape": "drag", "parameters": {"amp": [-0.2340725571848802, -0.0008821181806904869], "beta": 1.3163761456265402, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d106", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u211", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u211", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u211", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u240", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u240", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u240", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u244", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u244", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u244", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [107], "sequence": [{"name": "fc", "t0": 0, "ch": "d107", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d107", "label": "X90p_d107", "pulse_shape": "drag", "parameters": {"amp": [0.09876358814320617, -0.0006605757392407573], "beta": 2.4747959167703035, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d107", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d107", "label": "X90m_d107", "pulse_shape": "drag", "parameters": {"amp": [-0.09876358814320617, 0.0006605757392407485], "beta": 2.4747959167703035, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d107", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u243", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u243", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u243", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u246", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u246", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u246", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [108], "sequence": [{"name": "fc", "t0": 0, "ch": "d108", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d108", "label": "X90p_d108", "pulse_shape": "drag", "parameters": {"amp": [0.08972659471386776, -8.84424837326488e-05], "beta": 3.1690249247672555, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d108", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d108", "label": "X90m_d108", "pulse_shape": "drag", "parameters": {"amp": [-0.08972659471386776, 8.844248373265729e-05], "beta": 3.1690249247672555, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d108", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u245", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u245", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u245", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u253", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u253", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u253", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [109], "sequence": [{"name": "fc", "t0": 0, "ch": "d109", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d109", "label": "X90p_d109", "pulse_shape": "drag", "parameters": {"amp": [0.19207425632704692, -0.14688495849428293], "beta": -24.17131021666903, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d109", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d109", "label": "X90m_d109", "pulse_shape": "drag", "parameters": {"amp": [-0.19207425632704692, 0.1468849584942829], "beta": -24.17131021666903, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d109", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u218", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u218", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u218", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [110], "sequence": [{"name": "fc", "t0": 0, "ch": "d110", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d110", "label": "X90p_d110", "pulse_shape": "drag", "parameters": {"amp": [0.09405707609750691, 0.0006320498272647392], "beta": 0.5112846912623613, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d110", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d110", "label": "X90m_d110", "pulse_shape": "drag", "parameters": {"amp": [-0.09405707609750691, -0.0006320498272647353], "beta": 0.5112846912623613, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d110", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u228", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u228", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u228", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u264", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u264", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u264", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [111], "sequence": [{"name": "fc", "t0": 0, "ch": "d111", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d111", "label": "X90p_d111", "pulse_shape": "drag", "parameters": {"amp": [0.09928509819457172, 0.0026558698988240178], "beta": -2.6212470204846188, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d111", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d111", "label": "X90m_d111", "pulse_shape": "drag", "parameters": {"amp": [-0.09928509819457172, -0.002655869898823987], "beta": -2.6212470204846188, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d111", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u238", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u238", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u238", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u273", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u273", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u273", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [112], "sequence": [{"name": "fc", "t0": 0, "ch": "d112", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d112", "label": "X90p_d112", "pulse_shape": "drag", "parameters": {"amp": [0.11453459690114216, 0.0027065677630154477], "beta": -1.7492738153883627, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d112", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d112", "label": "X90m_d112", "pulse_shape": "drag", "parameters": {"amp": [-0.11453459690114216, -0.00270656776301545], "beta": -1.7492738153883627, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d112", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u247", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u247", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u247", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u282", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u282", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u282", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [113], "sequence": [{"name": "fc", "t0": 0, "ch": "d113", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d113", "label": "X90p_d113", "pulse_shape": "drag", "parameters": {"amp": [0.09515217699159603, 0.0006845248757220929], "beta": 0.6460427787265419, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d113", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d113", "label": "X90m_d113", "pulse_shape": "drag", "parameters": {"amp": [-0.09515217699159603, -0.0006845248757220665], "beta": 0.6460427787265419, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d113", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u256", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u256", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u256", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [114], "sequence": [{"name": "fc", "t0": 0, "ch": "d114", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d114", "label": "X90p_d114", "pulse_shape": "drag", "parameters": {"amp": [0.1141834306232801, -0.00023659007060058528], "beta": -0.017471954668736134, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d114", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d114", "label": "X90m_d114", "pulse_shape": "drag", "parameters": {"amp": [-0.1141834306232801, 0.0002365900706006196], "beta": -0.017471954668736134, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d114", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u255", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u255", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u255", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u258", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u258", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u258", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [115], "sequence": [{"name": "fc", "t0": 0, "ch": "d115", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d115", "label": "X90p_d115", "pulse_shape": "drag", "parameters": {"amp": [0.10306134463503398, -0.001577351162994342], "beta": 3.8690869867615976, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d115", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d115", "label": "X90m_d115", "pulse_shape": "drag", "parameters": {"amp": [-0.10306134463503398, 0.0015773511629943438], "beta": 3.8690869867615976, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d115", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u257", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u257", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u257", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u260", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u260", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u260", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [116], "sequence": [{"name": "fc", "t0": 0, "ch": "d116", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d116", "label": "X90p_d116", "pulse_shape": "drag", "parameters": {"amp": [0.09725103241420763, 0.000600959687711378], "beta": 1.685728397533417, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d116", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d116", "label": "X90m_d116", "pulse_shape": "drag", "parameters": {"amp": [-0.09725103241420763, -0.0006009596877113717], "beta": 1.685728397533417, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d116", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u259", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u259", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u259", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u262", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u262", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u262", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [117], "sequence": [{"name": "fc", "t0": 0, "ch": "d117", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d117", "label": "X90p_d117", "pulse_shape": "drag", "parameters": {"amp": [0.09625996504512489, 0.0014745417112859616], "beta": -1.4286884224206786, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d117", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d117", "label": "X90m_d117", "pulse_shape": "drag", "parameters": {"amp": [-0.09625996504512489, -0.0014745417112859316], "beta": -1.4286884224206786, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d117", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u261", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u261", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u261", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u265", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u265", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u265", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [118], "sequence": [{"name": "fc", "t0": 0, "ch": "d118", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d118", "label": "X90p_d118", "pulse_shape": "drag", "parameters": {"amp": [0.09489014560334184, -0.0008221646433828774], "beta": 1.763686405224966, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d118", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d118", "label": "X90m_d118", "pulse_shape": "drag", "parameters": {"amp": [-0.09489014560334184, 0.0008221646433828933], "beta": 1.763686405224966, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d118", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u250", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u250", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u250", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u263", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u263", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u263", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u267", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u267", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u267", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [119], "sequence": [{"name": "fc", "t0": 0, "ch": "d119", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d119", "label": "X90p_d119", "pulse_shape": "drag", "parameters": {"amp": [0.08774202500798196, -0.00018800827547832045], "beta": 0.9855750131576994, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d119", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d119", "label": "X90m_d119", "pulse_shape": "drag", "parameters": {"amp": [-0.08774202500798196, 0.0001880082754783325], "beta": 0.9855750131576994, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d119", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u266", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u266", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u266", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u269", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u269", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u269", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [120], "sequence": [{"name": "fc", "t0": 0, "ch": "d120", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d120", "label": "X90p_d120", "pulse_shape": "drag", "parameters": {"amp": [0.09987209387944325, 0.0019796791068846134], "beta": -1.5818946782086862, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d120", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d120", "label": "X90m_d120", "pulse_shape": "drag", "parameters": {"amp": [-0.09987209387944325, -0.0019796791068846156], "beta": -1.5818946782086862, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d120", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u268", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u268", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u268", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u271", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u271", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u271", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [121], "sequence": [{"name": "fc", "t0": 0, "ch": "d121", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d121", "label": "X90p_d121", "pulse_shape": "drag", "parameters": {"amp": [0.11884320129366582, 0.0017860284598160065], "beta": -1.7336332363377709, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d121", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d121", "label": "X90m_d121", "pulse_shape": "drag", "parameters": {"amp": [-0.11884320129366582, -0.0017860284598159785], "beta": -1.7336332363377709, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d121", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u270", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u270", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u270", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u274", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u274", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u274", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [122], "sequence": [{"name": "fc", "t0": 0, "ch": "d122", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d122", "label": "X90p_d122", "pulse_shape": "drag", "parameters": {"amp": [0.10409183397772535, -0.0006774914612654833], "beta": 3.435893473504987, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d122", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d122", "label": "X90m_d122", "pulse_shape": "drag", "parameters": {"amp": [-0.10409183397772535, 0.0006774914612654934], "beta": 3.435893473504987, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d122", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u252", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u252", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u252", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u272", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u272", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u272", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u276", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u276", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u276", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [123], "sequence": [{"name": "fc", "t0": 0, "ch": "d123", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d123", "label": "X90p_d123", "pulse_shape": "drag", "parameters": {"amp": [0.09329460825304652, -0.0008636369169964813], "beta": 2.131163429421772, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d123", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d123", "label": "X90m_d123", "pulse_shape": "drag", "parameters": {"amp": [-0.09329460825304652, 0.000863636916996486], "beta": 2.131163429421772, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d123", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u275", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u275", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u275", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u278", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u278", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u278", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [124], "sequence": [{"name": "fc", "t0": 0, "ch": "d124", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d124", "label": "X90p_d124", "pulse_shape": "drag", "parameters": {"amp": [0.10243328753335434, 0.0009627883639966985], "beta": -0.7811557457980061, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d124", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d124", "label": "X90m_d124", "pulse_shape": "drag", "parameters": {"amp": [-0.10243328753335434, -0.0009627883639966675], "beta": -0.7811557457980061, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d124", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u277", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u277", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u277", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u280", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u280", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u280", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [125], "sequence": [{"name": "fc", "t0": 0, "ch": "d125", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d125", "label": "X90p_d125", "pulse_shape": "drag", "parameters": {"amp": [0.09622370358957406, 0.0008727947182993097], "beta": 1.0872434992939308, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d125", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d125", "label": "X90m_d125", "pulse_shape": "drag", "parameters": {"amp": [-0.09622370358957406, -0.0008727947182992926], "beta": 1.0872434992939308, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d125", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u279", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u279", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u279", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u283", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u283", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u283", "phase": "-(P1)"}]}, {"name": "u3", "qubits": [126], "sequence": [{"name": "fc", "t0": 0, "ch": "d126", "phase": "-(P2)"}, {"name": "parametric_pulse", "t0": 0, "ch": "d126", "label": "X90p_d126", "pulse_shape": "drag", "parameters": {"amp": [0.1001629152186539, 0.0017571453497949366], "beta": -1.1484610957632373, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 160, "ch": "d126", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 160, "ch": "d126", "label": "X90m_d126", "pulse_shape": "drag", "parameters": {"amp": [-0.1001629152186539, -0.0017571453497949325], "beta": -1.1484610957632373, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 320, "ch": "d126", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u254", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u254", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u254", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u281", "phase": "-(P2)"}, {"name": "fc", "t0": 160, "ch": "u281", "phase": "-(P0)"}, {"name": "fc", "t0": 320, "ch": "u281", "phase": "-(P1)"}]}, {"name": "x", "qubits": [0], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d0", "label": "Xp_d0", "pulse_shape": "drag", "parameters": {"amp": [0.19402965116960316, 0.0], "beta": -2.2838114893856, "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.21328971571531255, 0.0], "beta": -0.24672224809952714, "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.2957784379283692, 0.0], "beta": 0.24207485329173292, "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.2807892325163154, 0.0], "beta": 2.3602538622290368, "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.2109584314910632, 0.0], "beta": 1.0417978458672308, "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.2896159339919146, 0.0], "beta": 0.6627381540213356, "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.15039409666227885, 0.0], "beta": 0.5484785661526171, "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.19628532501441837, 0.0], "beta": -0.3041880723001541, "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.1866023827167181, 0.0], "beta": -0.5424614282356547, "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.26270630190007516, 0.0], "beta": 0.3798070819409623, "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.24454606761151504, 0.0], "beta": -0.9424766063407176, "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.19105054805914953, 0.0], "beta": -0.16634711490215365, "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.28708035767913603, 0.0], "beta": 0.5295190577023939, "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.20092488457970142, 0.0], "beta": -0.07194947379334214, "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.1988075422234681, 0.0], "beta": 0.25652091438797253, "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.19191700255891492, 0.0], "beta": -0.9216812237589831, "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.1997888092668517, 0.0], "beta": -0.5713003674689133, "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.19508525450381228, 0.0], "beta": -0.2745112148012951, "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.24940152681760408, 0.0], "beta": 0.0074736241773610095, "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.2042366941033988, 0.0], "beta": -0.9901031883141508, "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.20991605320905266, 0.0], "beta": -0.4987236702748688, "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.1937090091323929, 0.0], "beta": 1.091779918745643, "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.20850679010225326, 0.0], "beta": 1.6151403252578793, "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.22503842054111084, 0.0], "beta": -0.826050899587014, "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.2428579311373435, 0.0], "beta": 0.012690951153337746, "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.38791843986159485, 0.0], "beta": 0.8249212568741953, "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.24700612784901774, 0.0], "beta": -1.951263849684402, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [27], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d27", "label": "Xp_d27", "pulse_shape": "drag", "parameters": {"amp": [0.19515671925301054, 0.0], "beta": -1.2096439489059458, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [28], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d28", "label": "Xp_d28", "pulse_shape": "drag", "parameters": {"amp": [0.1857763888707067, 0.0], "beta": 0.4999648403727735, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [29], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d29", "label": "Xp_d29", "pulse_shape": "drag", "parameters": {"amp": [0.1967581863846232, 0.0], "beta": -1.3744451424145125, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [30], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d30", "label": "Xp_d30", "pulse_shape": "drag", "parameters": {"amp": [0.19919169881450433, 0.0], "beta": 1.9935765203465883, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [31], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d31", "label": "Xp_d31", "pulse_shape": "drag", "parameters": {"amp": [0.1772718322630821, 0.0], "beta": -0.1309833671232473, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [32], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d32", "label": "Xp_d32", "pulse_shape": "drag", "parameters": {"amp": [0.17611114603873637, 0.0], "beta": -1.1972511311869525, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [33], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d33", "label": "Xp_d33", "pulse_shape": "drag", "parameters": {"amp": [0.19863229708071828, 0.0], "beta": 0.6519513195788639, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [34], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d34", "label": "Xp_d34", "pulse_shape": "drag", "parameters": {"amp": [0.20681627854421744, 0.0], "beta": 0.47692300828027834, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [35], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d35", "label": "Xp_d35", "pulse_shape": "drag", "parameters": {"amp": [0.18998064719918778, 0.0], "beta": -1.4699802077797814, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [36], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d36", "label": "Xp_d36", "pulse_shape": "drag", "parameters": {"amp": [0.19129410048428971, 0.0], "beta": -1.4424377952350815, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [37], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d37", "label": "Xp_d37", "pulse_shape": "drag", "parameters": {"amp": [0.19089736470826263, 0.0], "beta": 0.41092881143942983, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [38], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d38", "label": "Xp_d38", "pulse_shape": "drag", "parameters": {"amp": [0.1917465632827654, 0.0], "beta": 1.3965094842539658, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [39], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d39", "label": "Xp_d39", "pulse_shape": "drag", "parameters": {"amp": [0.1916453526161165, 0.0], "beta": -0.7816374692622183, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [40], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d40", "label": "Xp_d40", "pulse_shape": "drag", "parameters": {"amp": [0.20784934840830382, 0.0], "beta": 2.2446017928698576, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [41], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d41", "label": "Xp_d41", "pulse_shape": "drag", "parameters": {"amp": [0.2334688812328637, 0.0], "beta": 1.6694816560417942, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [42], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d42", "label": "Xp_d42", "pulse_shape": "drag", "parameters": {"amp": [0.22210335349992913, 0.0], "beta": -0.6870295445258087, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [43], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d43", "label": "Xp_d43", "pulse_shape": "drag", "parameters": {"amp": [0.18053487801456716, 0.0], "beta": -2.0974984696488757, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [44], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d44", "label": "Xp_d44", "pulse_shape": "drag", "parameters": {"amp": [0.19123509507012992, 0.0], "beta": 1.6189753136934866, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [45], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d45", "label": "Xp_d45", "pulse_shape": "drag", "parameters": {"amp": [0.19741895294820969, 0.0], "beta": 0.6088125109689349, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [46], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d46", "label": "Xp_d46", "pulse_shape": "drag", "parameters": {"amp": [0.1861227412441505, 0.0], "beta": 0.16097499616468744, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [47], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d47", "label": "Xp_d47", "pulse_shape": "drag", "parameters": {"amp": [0.22764632487574216, 0.0], "beta": 1.2034832425654165, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [48], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d48", "label": "Xp_d48", "pulse_shape": "drag", "parameters": {"amp": [0.19876394243184672, 0.0], "beta": -0.11379759930833616, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [49], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d49", "label": "Xp_d49", "pulse_shape": "drag", "parameters": {"amp": [0.20115745663794263, 0.0], "beta": 1.6398708724646518, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [50], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d50", "label": "Xp_d50", "pulse_shape": "drag", "parameters": {"amp": [0.19181541891642784, 0.0], "beta": -0.9509828037722772, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [51], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d51", "label": "Xp_d51", "pulse_shape": "drag", "parameters": {"amp": [0.19564382961711657, 0.0], "beta": -1.6941555108249076, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [52], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d52", "label": "Xp_d52", "pulse_shape": "drag", "parameters": {"amp": [0.18498045424955065, 0.0], "beta": 1.6796188276418986, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [53], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d53", "label": "Xp_d53", "pulse_shape": "drag", "parameters": {"amp": [0.22652836805844642, 0.0], "beta": -1.675953014303533, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [54], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d54", "label": "Xp_d54", "pulse_shape": "drag", "parameters": {"amp": [0.1516361865594324, 0.0], "beta": 0.7106074879675671, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [55], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d55", "label": "Xp_d55", "pulse_shape": "drag", "parameters": {"amp": [0.1914923144745671, 0.0], "beta": -0.265673692469659, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [56], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d56", "label": "Xp_d56", "pulse_shape": "drag", "parameters": {"amp": [0.19231366103110997, 0.0], "beta": -1.8631163321515958, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [57], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d57", "label": "Xp_d57", "pulse_shape": "drag", "parameters": {"amp": [0.1934889589534442, 0.0], "beta": -1.3000737363779669, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [58], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d58", "label": "Xp_d58", "pulse_shape": "drag", "parameters": {"amp": [0.23694417789732877, 0.0], "beta": 1.7327113871637938, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [59], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d59", "label": "Xp_d59", "pulse_shape": "drag", "parameters": {"amp": [0.1903478743897623, 0.0], "beta": 0.3923734356416953, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [60], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d60", "label": "Xp_d60", "pulse_shape": "drag", "parameters": {"amp": [0.18840940344287263, 0.0], "beta": -1.0159787603415793, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [61], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d61", "label": "Xp_d61", "pulse_shape": "drag", "parameters": {"amp": [0.2707103455456029, 0.0], "beta": 0.876219609614946, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [62], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d62", "label": "Xp_d62", "pulse_shape": "drag", "parameters": {"amp": [0.1613839081578748, 0.0], "beta": 0.101010630074013, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [63], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d63", "label": "Xp_d63", "pulse_shape": "drag", "parameters": {"amp": [0.19067663930723996, 0.0], "beta": 0.26514535454835947, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [64], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d64", "label": "Xp_d64", "pulse_shape": "drag", "parameters": {"amp": [0.1658671765971227, 0.0], "beta": 0.28548117023718617, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [65], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d65", "label": "Xp_d65", "pulse_shape": "drag", "parameters": {"amp": [0.20882017999693422, 0.0], "beta": 3.89217874906099, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [66], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d66", "label": "Xp_d66", "pulse_shape": "drag", "parameters": {"amp": [0.20190073369543102, 0.0], "beta": -1.6242506631001679, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [67], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d67", "label": "Xp_d67", "pulse_shape": "drag", "parameters": {"amp": [0.2701649644583553, 0.0], "beta": 2.2960284436471223, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [68], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d68", "label": "Xp_d68", "pulse_shape": "drag", "parameters": {"amp": [0.18899965619565834, 0.0], "beta": -0.032220842197396724, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [69], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d69", "label": "Xp_d69", "pulse_shape": "drag", "parameters": {"amp": [0.19543034760953484, 0.0], "beta": 0.9550828159754948, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [70], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d70", "label": "Xp_d70", "pulse_shape": "drag", "parameters": {"amp": [0.1954291617865932, 0.0], "beta": -2.237656241841245, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [71], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d71", "label": "Xp_d71", "pulse_shape": "drag", "parameters": {"amp": [0.19663477042894675, 0.0], "beta": -0.2505306908761036, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [72], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d72", "label": "Xp_d72", "pulse_shape": "drag", "parameters": {"amp": [0.19032083364880062, 0.0], "beta": -0.14119562982423, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [73], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d73", "label": "Xp_d73", "pulse_shape": "drag", "parameters": {"amp": [0.1936301485820728, 0.0], "beta": 1.4603637060657315, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [74], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d74", "label": "Xp_d74", "pulse_shape": "drag", "parameters": {"amp": [0.23985247915308577, 0.0], "beta": -0.08923056719887126, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [75], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d75", "label": "Xp_d75", "pulse_shape": "drag", "parameters": {"amp": [0.2092057154340501, 0.0], "beta": 1.9513789582400711, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [76], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d76", "label": "Xp_d76", "pulse_shape": "drag", "parameters": {"amp": [0.20557191492482194, 0.0], "beta": -0.6950738099371728, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [77], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d77", "label": "Xp_d77", "pulse_shape": "drag", "parameters": {"amp": [0.19536561901965938, 0.0], "beta": -2.2445099176216177, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [78], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d78", "label": "Xp_d78", "pulse_shape": "drag", "parameters": {"amp": [0.19731296155872652, 0.0], "beta": -0.15755450058163398, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [79], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d79", "label": "Xp_d79", "pulse_shape": "drag", "parameters": {"amp": [0.19287396234502474, 0.0], "beta": 1.1654794999858642, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [80], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d80", "label": "Xp_d80", "pulse_shape": "drag", "parameters": {"amp": [0.20033318015227528, 0.0], "beta": 3.4623927657007654, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [81], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d81", "label": "Xp_d81", "pulse_shape": "drag", "parameters": {"amp": [0.18956098318908002, 0.0], "beta": 0.014453849158558553, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [82], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d82", "label": "Xp_d82", "pulse_shape": "drag", "parameters": {"amp": [0.19019240750868696, 0.0], "beta": -1.142302739004336, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [83], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d83", "label": "Xp_d83", "pulse_shape": "drag", "parameters": {"amp": [0.2349590200459059, 0.0], "beta": -2.383490572308523, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [84], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d84", "label": "Xp_d84", "pulse_shape": "drag", "parameters": {"amp": [0.18752579993396118, 0.0], "beta": 1.1564141609736043, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [85], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d85", "label": "Xp_d85", "pulse_shape": "drag", "parameters": {"amp": [0.3386251967328379, 0.0], "beta": -1.4074626024840975, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [86], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d86", "label": "Xp_d86", "pulse_shape": "drag", "parameters": {"amp": [0.19142685570286005, 0.0], "beta": 0.13406019398742994, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [87], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d87", "label": "Xp_d87", "pulse_shape": "drag", "parameters": {"amp": [0.19002126407755132, 0.0], "beta": -1.3581246798010616, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [88], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d88", "label": "Xp_d88", "pulse_shape": "drag", "parameters": {"amp": [0.24537870069532386, 0.0], "beta": 1.1892984033939984, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [89], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d89", "label": "Xp_d89", "pulse_shape": "drag", "parameters": {"amp": [0.1936396465218968, 0.0], "beta": 0.7702300337344413, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [90], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d90", "label": "Xp_d90", "pulse_shape": "drag", "parameters": {"amp": [0.1938615816660265, 0.0], "beta": 2.735915636805241, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [91], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d91", "label": "Xp_d91", "pulse_shape": "drag", "parameters": {"amp": [0.20092100687175435, 0.0], "beta": 1.483548874665953, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [92], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d92", "label": "Xp_d92", "pulse_shape": "drag", "parameters": {"amp": [0.18475661288842973, 0.0], "beta": -0.2637105605238698, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [93], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d93", "label": "Xp_d93", "pulse_shape": "drag", "parameters": {"amp": [0.20445894820001206, 0.0], "beta": -0.39816060042008256, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [94], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d94", "label": "Xp_d94", "pulse_shape": "drag", "parameters": {"amp": [0.1789109934184895, 0.0], "beta": 2.465786052950938, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [95], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d95", "label": "Xp_d95", "pulse_shape": "drag", "parameters": {"amp": [0.19616201999665323, 0.0], "beta": 2.5805876794583575, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [96], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d96", "label": "Xp_d96", "pulse_shape": "drag", "parameters": {"amp": [0.19375939902533434, 0.0], "beta": 1.2979133549753845, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [97], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d97", "label": "Xp_d97", "pulse_shape": "drag", "parameters": {"amp": [0.1905646841652441, 0.0], "beta": 0.41335027143071795, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [98], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d98", "label": "Xp_d98", "pulse_shape": "drag", "parameters": {"amp": [0.20425219614571166, 0.0], "beta": -1.620547611440671, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [99], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d99", "label": "Xp_d99", "pulse_shape": "drag", "parameters": {"amp": [0.19023319876658581, 0.0], "beta": -0.2385490869245208, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [100], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d100", "label": "Xp_d100", "pulse_shape": "drag", "parameters": {"amp": [0.18540177565507482, 0.0], "beta": 1.6176517555190886, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [101], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d101", "label": "Xp_d101", "pulse_shape": "drag", "parameters": {"amp": [0.1958845347638961, 0.0], "beta": 0.35497451754651177, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [102], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d102", "label": "Xp_d102", "pulse_shape": "drag", "parameters": {"amp": [0.18481145572789714, 0.0], "beta": 1.7105053994099, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [103], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d103", "label": "Xp_d103", "pulse_shape": "drag", "parameters": {"amp": [0.1994918391492852, 0.0], "beta": 1.0259225886613978, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [104], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d104", "label": "Xp_d104", "pulse_shape": "drag", "parameters": {"amp": [0.17300616022760404, 0.0], "beta": -2.0659785937864563, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [105], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d105", "label": "Xp_d105", "pulse_shape": "drag", "parameters": {"amp": [0.19629534059869694, 0.0], "beta": -1.2275905105565106, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [106], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d106", "label": "Xp_d106", "pulse_shape": "drag", "parameters": {"amp": [0.4711996739728987, 0.0], "beta": 1.511559332849906, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [107], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d107", "label": "Xp_d107", "pulse_shape": "drag", "parameters": {"amp": [0.19668673606378975, 0.0], "beta": 2.4711617640428996, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [108], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d108", "label": "Xp_d108", "pulse_shape": "drag", "parameters": {"amp": [0.17871008597168905, 0.0], "beta": 3.07597752427346, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [109], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d109", "label": "Xp_d109", "pulse_shape": "drag", "parameters": {"amp": [0.27548684629970555, 0.0], "beta": 15.950394751350116, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [110], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d110", "label": "Xp_d110", "pulse_shape": "drag", "parameters": {"amp": [0.18715248754184835, 0.0], "beta": 0.5284865854010989, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [111], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d111", "label": "Xp_d111", "pulse_shape": "drag", "parameters": {"amp": [0.1981259032779367, 0.0], "beta": -2.676305761695517, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [112], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d112", "label": "Xp_d112", "pulse_shape": "drag", "parameters": {"amp": [0.2303604432729228, 0.0], "beta": -1.8888616433235965, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [113], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d113", "label": "Xp_d113", "pulse_shape": "drag", "parameters": {"amp": [0.18952883575265128, 0.0], "beta": 0.5749791058819511, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [114], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d114", "label": "Xp_d114", "pulse_shape": "drag", "parameters": {"amp": [0.22928081907934245, 0.0], "beta": 0.3437128858141949, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [115], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d115", "label": "Xp_d115", "pulse_shape": "drag", "parameters": {"amp": [0.2066955603968319, 0.0], "beta": 3.8470464784655554, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [116], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d116", "label": "Xp_d116", "pulse_shape": "drag", "parameters": {"amp": [0.1936251870327879, 0.0], "beta": 1.5419154322617232, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [117], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d117", "label": "Xp_d117", "pulse_shape": "drag", "parameters": {"amp": [0.19313503992499995, 0.0], "beta": -1.433759770697568, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [118], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d118", "label": "Xp_d118", "pulse_shape": "drag", "parameters": {"amp": [0.18941928024895616, 0.0], "beta": 1.680624001779151, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [119], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d119", "label": "Xp_d119", "pulse_shape": "drag", "parameters": {"amp": [0.17542101067062513, 0.0], "beta": 1.5471603921643602, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [120], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d120", "label": "Xp_d120", "pulse_shape": "drag", "parameters": {"amp": [0.19928275340425902, 0.0], "beta": -1.654290979400591, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [121], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d121", "label": "Xp_d121", "pulse_shape": "drag", "parameters": {"amp": [0.2376722985114399, 0.0], "beta": -1.2796016139293105, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [122], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d122", "label": "Xp_d122", "pulse_shape": "drag", "parameters": {"amp": [0.2079317867688985, 0.0], "beta": 3.3754975505433507, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [123], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d123", "label": "Xp_d123", "pulse_shape": "drag", "parameters": {"amp": [0.18582172182996967, 0.0], "beta": 2.678493982597772, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [124], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d124", "label": "Xp_d124", "pulse_shape": "drag", "parameters": {"amp": [0.20735148288248262, 0.0], "beta": -0.9719461286793764, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [125], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d125", "label": "Xp_d125", "pulse_shape": "drag", "parameters": {"amp": [0.1915843174069768, 0.0], "beta": 0.9852723237098834, "duration": 160, "sigma": 40}}]}, {"name": "x", "qubits": [126], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d126", "label": "Xp_d126", "pulse_shape": "drag", "parameters": {"amp": [0.20026658537558523, 0.0], "beta": -1.212916472332336, "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_v1/fake_127q_pulse/fake_127q_pulse_v1.py b/qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/fake_127q_pulse_v1.py deleted file mode 100644 index e6c5c5368238..000000000000 --- a/qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/fake_127q_pulse_v1.py +++ /dev/null @@ -1,37 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2023. -# -# 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. - -""" -A 127 qubit fake :class:`.BackendV1` with pulse capabilities. -""" - -import os -from qiskit.providers.fake_provider import fake_pulse_backend - - -class Fake127QPulseV1(fake_pulse_backend.FakePulseBackend): - """A fake **pulse** backend with the following characteristics: - - * num_qubits: 127 - * coupling_map: heavy-hex based - * basis_gates: ``["id", "rz", "sx", "x", "cx", "reset"]`` - * scheduled instructions: - # ``{'id', 'measure', 'u2', 'rz', 'x', 'u3', 'sx', 'u1'}`` for all individual qubits - # ``{'cx'}`` for all edges - # ``{'measure'}`` for (0, ..., 127) - """ - - dirname = os.path.dirname(__file__) - conf_filename = "conf_washington.json" - props_filename = "props_washington.json" - defs_filename = "defs_washington.json" - backend_name = "fake_127q_pulse_v1" diff --git a/qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/props_washington.json b/qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/props_washington.json deleted file mode 100644 index b49e72894bb5..000000000000 --- a/qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/props_washington.json +++ /dev/null @@ -1 +0,0 @@ -{"backend_name": "ibm_washington", "backend_version": "1.1.0", "last_update_date": "2022-04-12T23:42:47+09:00", "qubits": [[{"date": "2022-04-12T19:40:24+09:00", "name": "T1", "unit": "us", "value": 69.32743775451293}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 14.14341630444093}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.087824350874885}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30782634495421296}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.00649999999999995}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0086}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0043999999999999595}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 112.27381219465641}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 97.32963644350883}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.980901514685951}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3090210276711882}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.0121}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0082}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.016000000000000014}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 81.05815153040153}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 17.552088188335965}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.891702218592115}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3104045548370229}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.018899999999999917}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0194}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.018399999999999972}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 104.52902742936696}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 31.74931261934494}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.9444585142828075}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.2771085116249422}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.04190000000000005}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0428}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.041000000000000036}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 111.00554064880474}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 96.80034088078827}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.98431489750368}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.32194992127890304}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.10109999999999997}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0842}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.118}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 100.21772394715082}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 131.07908332532733}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.882304939612839}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3103903900200161}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.05249999999999999}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0616}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.043399999999999994}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 103.33836321863605}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 139.82872474196603}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.968632496684476}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3080618610249764}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.010399999999999965}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.014800000000000035}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.006}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T19:54:01+09:00", "name": "T1", "unit": "us", "value": 98.26573817884663}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 59.19191125105162}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.015141130180365}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3082410181152408}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.011500000000000066}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0124}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.010600000000000054}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 64.41401691053325}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 89.75397339293048}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.111107000814732}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30730369604284186}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.013700000000000045}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0134}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.014000000000000012}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 110.68504096269717}, {"date": "2021-12-19T22:25:48+09:00", "name": "T2", "unit": "us", "value": 153.30061486770256}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.969961141430453}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30941449678669675}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.12}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.12}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.12}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-11T00:39:37+09:00", "name": "T1", "unit": "us", "value": 81.97479091239155}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 78.3368518665166}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.876236162210333}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.31036275856388135}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.06309999999999993}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.07799999999999996}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0482}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 144.32244718046908}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 50.032089866463565}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.127258209921372}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3067264672416912}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.13190000000000002}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.11880000000000002}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.145}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 142.0638984448198}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 109.77266402716675}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.830399938466667}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.31113307291130765}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.245}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.20920000000000005}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.2808}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 65.08319681037632}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 19.58677990684181}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.950285449243983}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3087584515470989}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.010499999999999954}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.015}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.006000000000000005}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 81.6680108088454}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 86.11334048612193}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.9952779469569215}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3088559585368562}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.012599999999999945}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0082}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.017000000000000015}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 103.84677469391285}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 55.4268497406249}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.117992551750363}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30737629560660373}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.035700000000000065}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.03500000000000003}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0364}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 80.02657875131005}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 260.58128986315245}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.917841896617579}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30910092710704107}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.006000000000000005}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.008600000000000052}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0034}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 51.32124258961865}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 98.03942399837872}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.003119694195752}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3076325267311604}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.050000000000000044}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.052}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.04800000000000004}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 91.08018390951227}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 129.5912095784926}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.865532095997974}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3112495816692565}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.04239999999999999}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0402}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.04459999999999997}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 107.92427373622897}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 115.02547517298852}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.103540605832302}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30767726357166375}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.017900000000000027}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.016800000000000037}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.019}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 130.19348686894782}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 182.78239196922138}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.901752355744929}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30965126429066386}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.007000000000000006}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.011199999999999988}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0028}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 95.4355849648049}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 117.50847515359692}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.039671730454215}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30738868303838573}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.03980000000000006}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0426}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.03700000000000003}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 46.81995492283774}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 49.67533684233021}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.9727650011162305}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3007606990566065}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.023499999999999965}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.021399999999999975}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0256}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T15:07:40+09:00", "name": "T1", "unit": "us", "value": 105.94946625921008}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 73.5634205025319}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.033362348492518}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30850743625038823}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.11809999999999998}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.1142}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.122}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 70.3780971918984}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 83.71326415239177}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.767135320989823}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3039795897213478}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.024499999999999966}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0316}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.01739999999999997}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 110.00263237611537}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 146.99479634540322}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.87009160939394}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.31089073568669756}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.014699999999999935}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0172}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.012199999999999989}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 120.69800914166046}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 187.50905425905316}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.999176398427699}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3088567882219281}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.008499999999999952}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.009800000000000031}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0072}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T15:07:40+09:00", "name": "T1", "unit": "us", "value": 103.01172669671315}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 65.94930656772978}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.076929641593295}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3069337128568016}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.03200000000000003}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.02839999999999998}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0356}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 119.61550046758737}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 69.37722833324122}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.1982908314560525}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3057759252316791}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.009700000000000042}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.010600000000000054}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0088}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 92.8628755861041}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 40.76019290606686}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.994033598302923}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3075721064832986}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.007600000000000051}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0092}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.006000000000000005}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 212.5817231452156}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 146.08979875710932}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.083412759689636}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3070760019217457}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.009600000000000053}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.012199999999999989}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.007}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 85.9108444946956}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 72.29548135427827}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.129462319531657}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3065579252597308}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.014499999999999957}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.019399999999999973}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0096}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 97.47265941792824}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 34.60674458227287}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.204146892421287}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3041309573496946}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.010399999999999965}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0188}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0020000000000000018}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T19:54:01+09:00", "name": "T1", "unit": "us", "value": 105.90785351925743}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 88.081513487107}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.952689741086457}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3093751318051184}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.009600000000000053}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.014000000000000012}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0052}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 84.28804589528059}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 109.26822070719417}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.936810364073245}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30923195849548657}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.020100000000000007}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0298}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.010399999999999965}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 130.83781963049523}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 64.12090362817993}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.074211948853692}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30720945836840075}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.006700000000000039}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0076}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.005800000000000027}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 130.35743354870473}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 178.35489235167663}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.102037772648568}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30593300055458156}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.0044999999999999485}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.006199999999999983}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0028}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 57.80257758721678}, {"date": "2022-01-28T02:20:57+09:00", "name": "T2", "unit": "us", "value": 62.748267347811854}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.169912726493731}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3022234513563686}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.02180000000000004}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0256}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.018000000000000016}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 84.11067176414562}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 91.21561169421491}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.10591860635811}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.307534499214152}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.00990000000000002}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0102}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.009600000000000053}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 106.79674125786266}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 128.09180605829934}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.017721503796682}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30838240630582325}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.015700000000000047}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.012}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.019399999999999973}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 88.71034113598374}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 18.087960825624677}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.162743583215261}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3061284120310263}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.009600000000000053}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0122}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.007000000000000006}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 98.1552517036958}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 45.99635024077303}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.0930762619292125}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3077539293316023}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.02859999999999996}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.034599999999999964}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0226}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 160.150326238944}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 284.578618477382}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.9254247350159295}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3093833327647802}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.006299999999999972}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0062}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.006399999999999961}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 113.57062100385478}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 178.72222978581277}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.0332800992576345}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30812163399277603}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.02059999999999995}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.024}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.017199999999999993}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 87.39908380596427}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 127.40267575933446}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.116093607546647}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30752945953794597}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.026699999999999946}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.038}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.01539999999999997}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T19:40:24+09:00", "name": "T1", "unit": "us", "value": 140.52944497147124}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 122.57873708829914}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.879817076512298}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3094797354091463}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.0353}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.04720000000000002}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0234}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 86.67151907439053}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 169.9210003780787}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.144953191921095}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3065782732555297}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.07420000000000004}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.07340000000000002}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.075}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 122.0648222612272}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 27.052134039791383}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.001218860751744}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30884875094082886}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.016100000000000003}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.019199999999999995}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.013}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 112.44506398977103}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 134.21541853736787}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.933996639186529}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3089989282867853}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.005900000000000016}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.006399999999999961}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0054}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 99.95231599716674}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 110.08552463210108}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.116377346401518}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30700699083717237}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.009000000000000008}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0118}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.006199999999999983}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 137.90767086879032}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 189.85494575791813}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.017681444153948}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3079540193872281}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.014100000000000001}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0122}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.016000000000000014}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 108.00748578129027}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 73.68789422872149}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.2087974894294415}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30445864317448784}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.005900000000000016}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.009000000000000008}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0028}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 74.22292865752988}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 63.458975716941886}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.015740608254556}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30785147718975536}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.00550000000000006}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.00880000000000003}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0022}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 69.11650858943015}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 15.953270116750682}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.048027704064221}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3070489609695092}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.045600000000000085}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.041}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.05020000000000002}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 105.35665169689949}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 118.15905802408295}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.026427678168784}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30335127050891586}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.012399999999999967}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.014599999999999946}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0102}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 95.24267201465723}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 130.50023708674357}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.197455254932549}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30555956352736313}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.00990000000000002}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.012}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.007800000000000029}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 60.60001175578852}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 98.1766406643779}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.187991750356475}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3056438737796564}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.007000000000000006}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0096}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0043999999999999595}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 108.44063112135802}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 44.671819234158555}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.093296222883172}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30620818167343905}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.01529999999999998}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.01539999999999997}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0152}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 109.60182461241106}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 69.53222263916956}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.96489582705621}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3094118853548893}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.01959999999999995}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0216}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.01759999999999995}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 99.17443207365322}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 82.35202604171023}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.019051421647695}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30794025911853606}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.006699999999999928}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.009199999999999986}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0042}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 98.65920374045469}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 54.683084918992996}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.141155962810145}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3060499548771474}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.055400000000000005}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.069}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.04179999999999995}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 139.67670558414943}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 196.75672667973333}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.875133856398962}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3100971621179034}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.02970000000000006}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.032200000000000006}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0272}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 126.28025858075436}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 155.97636493606112}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.96110957527232}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30930613309477684}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.005400000000000071}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0078}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0030000000000000027}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 142.8292109948036}, {"date": "2022-04-11T15:27:14+09:00", "name": "T2", "unit": "us", "value": 145.95789096187082}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.044541513646728}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3079821674671736}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.0041999999999999815}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.00660000000000005}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0018}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 64.12376904193991}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 66.77981073350766}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.258205194263763}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3050527221222802}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.012399999999999967}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.012399999999999967}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0124}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 136.50124701805294}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 79.37045850503334}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.100989285863291}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30611470411038466}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.0033000000000000806}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0048000000000000265}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0018}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 107.71564510719662}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 76.16163793727739}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.237195247243983}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.2945840383010508}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.02410000000000001}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0204}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.027800000000000047}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 31.703933483223185}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 50.27389960831635}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.912092379869785}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30057642682641206}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.04610000000000003}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0636}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.02859999999999996}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 97.62950480933556}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 67.47556315666829}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.135519196588795}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3044810227605211}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.007299999999999973}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.008399999999999963}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0062}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 119.8090973429267}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 208.43409148131775}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.943793362347639}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3082766634191307}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.043300000000000005}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.043399999999999994}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0432}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 115.62677606525176}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 74.01296663399599}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.154609713802475}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3050649757638921}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.045399999999999996}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.043}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.047799999999999954}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 111.25791038909597}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 86.71632298192665}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.11737756179788}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3156798535153351}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.014699999999999935}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0174}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.01200000000000001}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 84.0779333939486}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 147.79253835829837}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.144682424408957}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30589854542716594}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.008499999999999952}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.012}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0050000000000000044}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 58.90309512500493}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 107.3691711661991}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.018882135225528}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30804648795769424}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.006799999999999917}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0062}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.007399999999999962}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 120.8365061130481}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 49.2329428393148}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.87431877527336}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3206200254128041}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.023500000000000076}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.03180000000000005}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0152}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 111.85086161045993}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 142.1249903830337}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.007972184984558}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3078120119216685}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.011400000000000077}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.016}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.006800000000000028}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T15:07:40+09:00", "name": "T1", "unit": "us", "value": 39.074485405454666}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 46.4104097655608}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.903715871736079}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3101689150977973}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.008299999999999974}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0112}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.00539999999999996}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 56.74316983178612}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 115.3491827351713}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.071065916776435}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30801360703446706}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.017100000000000004}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.020000000000000018}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0142}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 62.75795765409002}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 20.207546667652952}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.277313452094319}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30360412873281994}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.024399999999999977}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.024800000000000044}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.024}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 95.87945678277079}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 27.04258392443297}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.017443628214384}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30801514492063614}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.01539999999999997}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0136}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.017199999999999993}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 116.24561087207503}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 148.63012237840528}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.081023026790399}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3075865861754603}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.07740000000000002}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0902}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.06459999999999999}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 78.31332228041109}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 101.3915443542319}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.944680717888667}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30960375560940173}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.04800000000000004}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0498}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.04620000000000002}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 86.54661180232674}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 37.72798467419607}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.079891410859493}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30778068317632473}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.0373}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0416}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.03300000000000003}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 139.3787760675941}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 188.4671344204605}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.052386435439891}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3081481897821268}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.034499999999999975}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0364}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.03259999999999996}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 109.03846802172316}, {"date": "2022-03-12T16:39:40+09:00", "name": "T2", "unit": "us", "value": 14.141955202583832}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.908935748495378}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3089738912270624}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.005600000000000049}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.007800000000000029}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0034}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 113.63056945531514}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 73.4258062602574}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.092091999790578}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30692895121435837}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.010199999999999987}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.012199999999999989}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0082}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 111.19961739146173}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 138.87538108549307}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.930910284653366}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3090194029108763}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.008599999999999941}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.010399999999999965}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0068}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 93.26343267027451}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 78.82061448122948}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.195160700948685}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3051622732635519}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.04469999999999996}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.042200000000000015}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0472}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 74.61631084738976}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 130.84612460312172}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.097143114803176}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30661100712891975}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.01429999999999998}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.014000000000000012}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0146}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 71.35601404827531}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 45.18787436521682}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.95779764124521}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30862882179104956}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.01100000000000001}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.012800000000000034}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0092}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 93.8687208719765}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 93.39967803583126}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.256398741273999}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30329532250748886}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.026699999999999946}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.012199999999999989}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0412}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 131.1053863382746}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 63.09796601086686}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.057143169722408}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3078781560356296}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.028699999999999948}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0232}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0342}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 84.71690635698056}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 141.38352290434395}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.12364557820648}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30625650570474183}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.00770000000000004}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.010600000000000054}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0048}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 98.6340242740176}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 134.54417721970287}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.139903178299379}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3057467937945369}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.07729999999999992}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0826}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.07199999999999995}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 120.61231082203345}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 94.60245139351665}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.176148306630854}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3052333853562765}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.0041999999999999815}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0052}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0031999999999999806}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 105.36978881795424}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 111.43297480386171}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.220594257519045}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30547592840016563}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.007199999999999984}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.009000000000000008}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0054}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 113.97413126028104}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 99.97742979830834}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.141883422445972}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30586003474902246}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.012199999999999989}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0154}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.009000000000000008}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 58.22615988641401}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 107.13120644637115}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.05175144306341}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30754395168000576}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.0050000000000000044}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0076}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0023999999999999577}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 89.48033268116795}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 81.0511148324306}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.123686027496476}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.2946056856425257}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.01849999999999996}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.022399999999999975}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0146}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 108.83744453453335}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 31.616162293954936}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.1749719826365626}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30473934203434877}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.0686}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.06899999999999995}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0682}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 143.52082122394935}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 60.627358098147276}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.0282655137668195}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30764972697672177}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.03299999999999992}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0346}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.031399999999999983}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 91.42840353236188}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 120.50078835913835}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.095164314904394}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3071478920554635}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.02859999999999996}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.03259999999999996}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0246}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 91.36127017035761}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 108.036454921435}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.984550747011607}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30864708722608053}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.007900000000000018}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.011}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0048000000000000265}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 87.19186945955215}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 121.65599136339357}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.226854129683186}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3041069495120162}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.0131}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.010800000000000032}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0154}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T09:07:09+09:00", "name": "T1", "unit": "us", "value": 51.692269944161616}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 32.676211108769664}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.134909475114922}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3063214935310085}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.01089999999999991}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0146}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.007199999999999984}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T19:54:01+09:00", "name": "T1", "unit": "us", "value": 46.77275268017706}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 70.2752889313488}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.985044881402859}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3086341062832358}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.01429999999999998}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0164}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.012199999999999989}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 67.55232566814779}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 65.99422040047983}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.040239775957792}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30813711439465996}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.015000000000000013}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.016}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.014000000000000012}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 104.85986660455904}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 120.77308653195863}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.12150306992114}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3052479609608117}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.005700000000000038}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.008399999999999963}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.003}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 91.57609377053127}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 54.78075034335523}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.253516462743983}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30352215640212665}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.033499999999999974}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0334}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.03359999999999996}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T15:07:40+09:00", "name": "T1", "unit": "us", "value": 101.555242345215}, {"date": "2022-03-10T03:28:10+09:00", "name": "T2", "unit": "us", "value": 96.36034566932194}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.997392066338402}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.32490250435193285}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.3228}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.3278}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.31779999999999997}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 93.09412188219176}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 39.04067782514811}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.291579200368684}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3029464600296022}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.016599999999999948}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.019000000000000017}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0142}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 99.68636422326203}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 114.86700159329509}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.191230179718276}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3055998106469877}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.0121}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0138}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.010399999999999965}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 75.28790958541333}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 86.05069028905845}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.216078728309004}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.27861565699870766}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.0393}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.04720000000000002}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0314}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 93.94207174957438}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 131.63777885277088}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.170132593962133}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30616306529011816}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.011600000000000055}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0128}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.010399999999999965}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:43:22+09:00", "name": "T1", "unit": "us", "value": 70.60332317385297}, {"date": "2022-04-12T15:39:00+09:00", "name": "T2", "unit": "us", "value": 56.14032999510004}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.273772362790747}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30316400187749754}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.016199999999999992}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0178}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.014599999999999946}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 99.6399236109187}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 69.33250434615452}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.122112629859396}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3065302723134998}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.01529999999999998}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.021599999999999953}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.009}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 106.11068288501086}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 132.84191449204724}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.016868785002357}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3077126501660745}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.008099999999999996}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.012599999999999945}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0036}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 73.67038115888454}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 92.58276681154939}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.233669518732525}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30378700868244785}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.006900000000000017}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.00880000000000003}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.005}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:43:22+09:00", "name": "T1", "unit": "us", "value": 102.16671982356964}, {"date": "2022-04-12T15:39:00+09:00", "name": "T2", "unit": "us", "value": 129.38916071257358}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.114411402232175}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3067622961459038}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.011300000000000088}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.013800000000000034}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0088}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 69.0890644224677}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 46.24523387425721}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.274339315768484}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30460956657878807}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.01770000000000005}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0188}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.016599999999999948}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 72.78868263534858}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 61.8712830556346}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.083501964940935}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30668744382729834}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.010299999999999976}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0182}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0023999999999999577}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 134.26961960644914}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 57.93033658807698}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 4.996218903141436}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30827348149022293}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.01770000000000005}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0244}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.01100000000000001}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:43:22+09:00", "name": "T1", "unit": "us", "value": 89.57431758031079}, {"date": "2022-04-12T15:39:00+09:00", "name": "T2", "unit": "us", "value": 91.8754178593478}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.268637035276627}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3032444062031204}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.05130000000000001}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.03920000000000001}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0634}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:24:49+09:00", "name": "T1", "unit": "us", "value": 81.02635011880996}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 3.717828376834024}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.108097954495629}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30625912746990697}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.007199999999999984}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0092}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.005199999999999982}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:31:23+09:00", "name": "T1", "unit": "us", "value": 89.03042972455117}, {"date": "2022-04-12T15:23:35+09:00", "name": "T2", "unit": "us", "value": 89.53728181348582}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.24407272505404}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.292858080533324}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.016999999999999904}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0194}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.014599999999999946}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T15:07:40+09:00", "name": "T1", "unit": "us", "value": 115.66475261071128}, {"date": "2022-04-12T15:10:11+09:00", "name": "T2", "unit": "us", "value": 136.28722701514357}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.037262922433084}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.30725226113073956}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.0035000000000000586}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0044}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0026000000000000467}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}], [{"date": "2022-04-12T22:43:22+09:00", "name": "T1", "unit": "us", "value": 94.59928113659801}, {"date": "2022-04-12T15:39:00+09:00", "name": "T2", "unit": "us", "value": 136.6461843223723}, {"date": "2022-04-12T23:42:47+09:00", "name": "frequency", "unit": "GHz", "value": 5.164908073755312}, {"date": "2022-04-12T23:42:47+09:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3049521120322977}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_error", "unit": "", "value": 0.0028000000000000247}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0036}, {"date": "2022-04-12T15:02:23+09:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0020000000000000018}, {"date": "2022-04-12T15:02:23+09:00", "name": "readout_length", "unit": "ns", "value": 864}]], "gates": [{"qubits": [0], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0003410223041189624}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id0"}, {"qubits": [1], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00015601711255331714}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id1"}, {"qubits": [2], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002679276250533012}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id2"}, {"qubits": [3], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00039331463681546876}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id3"}, {"qubits": [4], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0010485287155949166}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id4"}, {"qubits": [5], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0004885155339290362}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id5"}, {"qubits": [6], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0008280096167852205}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id6"}, {"qubits": [7], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.000268082216778717}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id7"}, {"qubits": [8], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00028143735341571216}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id8"}, {"qubits": [9], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.006146768501500828}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id9"}, {"qubits": [10], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00534878246031358}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id10"}, {"qubits": [11], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0017280054683283049}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id11"}, {"qubits": [12], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0022850311836014265}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id12"}, {"qubits": [13], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0015739177796970881}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id13"}, {"qubits": [14], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0003401054999187882}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id14"}, {"qubits": [15], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0006223242690627873}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id15"}, {"qubits": [16], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00016680739769151217}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id16"}, {"qubits": [17], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0013367139510720677}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id17"}, {"qubits": [18], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0005883314078662353}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id18"}, {"qubits": [19], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00023402151647978933}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id19"}, {"qubits": [20], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00022673788656796164}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id20"}, {"qubits": [21], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0012399243539880386}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id21"}, {"qubits": [22], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.005549107536984753}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id22"}, {"qubits": [23], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0005620849291805753}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id23"}, {"qubits": [24], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.003247782588873444}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id24"}, {"qubits": [25], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00020862166188869824}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id25"}, {"qubits": [26], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00019009996039390646}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id26"}, {"qubits": [27], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00018922760131097482}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id27"}, {"qubits": [28], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00018817528719210788}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id28"}, {"qubits": [29], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0005014842579937383}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id29"}, {"qubits": [30], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00027640535019682414}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id30"}, {"qubits": [31], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002235525874842101}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id31"}, {"qubits": [32], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00030130410867712206}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id32"}, {"qubits": [33], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002731345351732058}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id33"}, {"qubits": [34], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00022821541531042598}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id34"}, {"qubits": [35], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00022748659413939496}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id35"}, {"qubits": [36], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00019594719570676273}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id36"}, {"qubits": [37], "gate": "id", "parameters": [{"date": "2022-04-10T10:48:15+09:00", "name": "gate_error", "unit": "", "value": 0.026508955627887475}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id37"}, {"qubits": [38], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002556326781022323}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id38"}, {"qubits": [39], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00023979541761294545}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id39"}, {"qubits": [40], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0003148765569451491}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id40"}, {"qubits": [41], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00029530006776756784}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id41"}, {"qubits": [42], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00023790739529699393}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id42"}, {"qubits": [43], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0021774261165083937}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id43"}, {"qubits": [44], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.000659764026431041}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id44"}, {"qubits": [45], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0003360255136615447}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id45"}, {"qubits": [46], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00019619260943853933}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id46"}, {"qubits": [47], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0001791802568091974}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id47"}, {"qubits": [48], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00017297606043704345}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id48"}, {"qubits": [49], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002173218692820851}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id49"}, {"qubits": [50], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00021153370014956267}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id50"}, {"qubits": [51], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002444945920081518}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id51"}, {"qubits": [52], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002742198673087046}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id52"}, {"qubits": [53], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0013284292425785587}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id53"}, {"qubits": [54], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00023416196012732493}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id54"}, {"qubits": [55], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00023664022750477222}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id55"}, {"qubits": [56], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002778784235550578}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id56"}, {"qubits": [57], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00020693392484422973}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id57"}, {"qubits": [58], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0001949906648918238}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id58"}, {"qubits": [59], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002634422279662771}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id59"}, {"qubits": [60], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00033241423866811403}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id60"}, {"qubits": [61], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00018666988741812088}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id61"}, {"qubits": [62], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00018361435549580296}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id62"}, {"qubits": [63], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00020760888441626111}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id63"}, {"qubits": [64], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00035602128769237723}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id64"}, {"qubits": [65], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00020152042464912365}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id65"}, {"qubits": [66], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.001864203001593195}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id66"}, {"qubits": [67], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0009710554143420611}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id67"}, {"qubits": [68], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0005081911199032902}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id68"}, {"qubits": [69], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00018840957495220106}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id69"}, {"qubits": [70], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00033687673246085727}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id70"}, {"qubits": [71], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0005759248975743239}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id71"}, {"qubits": [72], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002205843509027754}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id72"}, {"qubits": [73], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00019212741503611832}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id73"}, {"qubits": [74], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00021317804880845441}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id74"}, {"qubits": [75], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002733078588386084}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id75"}, {"qubits": [76], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00018791073493388562}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id76"}, {"qubits": [77], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.000288990576630191}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id77"}, {"qubits": [78], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00022906535750387365}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id78"}, {"qubits": [79], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00038470611636902446}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id79"}, {"qubits": [80], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00029597534063057987}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id80"}, {"qubits": [81], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00034713409964470967}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id81"}, {"qubits": [82], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0005153245594350099}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id82"}, {"qubits": [83], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00045435629531546544}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id83"}, {"qubits": [84], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00018670295571013786}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id84"}, {"qubits": [85], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002045310642847741}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id85"}, {"qubits": [86], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00022824005621498522}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id86"}, {"qubits": [87], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002726137761691845}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id87"}, {"qubits": [88], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00017235582919403582}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id88"}, {"qubits": [89], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002811181702834337}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id89"}, {"qubits": [90], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0003070049728538139}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id90"}, {"qubits": [91], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00048275665765505106}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id91"}, {"qubits": [92], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002374360699710165}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id92"}, {"qubits": [93], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002458984291050947}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id93"}, {"qubits": [94], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00028437869823201236}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id94"}, {"qubits": [95], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00040595237493997913}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id95"}, {"qubits": [96], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00022023377643090345}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id96"}, {"qubits": [97], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00024709835884755444}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id97"}, {"qubits": [98], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.010938101207084622}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id98"}, {"qubits": [99], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0018532976394111627}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id99"}, {"qubits": [100], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00018651414368773533}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id100"}, {"qubits": [101], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00022571486196316058}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id101"}, {"qubits": [102], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00020950082450013965}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id102"}, {"qubits": [103], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00024367494537131334}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id103"}, {"qubits": [104], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0005337845142513803}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id104"}, {"qubits": [105], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0003165102379703597}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id105"}, {"qubits": [106], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00047217004842268573}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id106"}, {"qubits": [107], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0003327641113662043}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id107"}, {"qubits": [108], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0006768063530755115}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id108"}, {"qubits": [109], "gate": "id", "parameters": [{"date": "2022-04-11T04:07:22+09:00", "name": "gate_error", "unit": "", "value": 0.00044611461508036344}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id109"}, {"qubits": [110], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0004245530998019005}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id110"}, {"qubits": [111], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0003481671543681323}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id111"}, {"qubits": [112], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.000613873842452513}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id112"}, {"qubits": [113], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00019856719484651704}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id113"}, {"qubits": [114], "gate": "id", "parameters": [{"date": "2022-04-12T16:02:43+09:00", "name": "gate_error", "unit": "", "value": 0.00041146216425915725}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id114"}, {"qubits": [115], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002954927903082008}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id115"}, {"qubits": [116], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002592406359852642}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id116"}, {"qubits": [117], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00030592486645954117}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id117"}, {"qubits": [118], "gate": "id", "parameters": [{"date": "2022-04-12T16:02:43+09:00", "name": "gate_error", "unit": "", "value": 0.0002110212855896815}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id118"}, {"qubits": [119], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.014816578600154806}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id119"}, {"qubits": [120], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002333507192308401}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id120"}, {"qubits": [121], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00019631639115780348}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id121"}, {"qubits": [122], "gate": "id", "parameters": [{"date": "2022-04-12T16:02:43+09:00", "name": "gate_error", "unit": "", "value": 0.0002874225643324545}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id122"}, {"qubits": [123], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0017326116436769538}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id123"}, {"qubits": [124], "gate": "id", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.002527530770155337}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id124"}, {"qubits": [125], "gate": "id", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00018347099779513637}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id125"}, {"qubits": [126], "gate": "id", "parameters": [{"date": "2022-04-12T16:02:43+09:00", "name": "gate_error", "unit": "", "value": 0.0002568696663573033}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id126"}, {"qubits": [0], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz0"}, {"qubits": [1], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz1"}, {"qubits": [2], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz2"}, {"qubits": [3], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz3"}, {"qubits": [4], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz4"}, {"qubits": [5], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz5"}, {"qubits": [6], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz6"}, {"qubits": [7], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz7"}, {"qubits": [8], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz8"}, {"qubits": [9], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz9"}, {"qubits": [10], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz10"}, {"qubits": [11], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz11"}, {"qubits": [12], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz12"}, {"qubits": [13], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz13"}, {"qubits": [14], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz14"}, {"qubits": [15], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz15"}, {"qubits": [16], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz16"}, {"qubits": [17], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz17"}, {"qubits": [18], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz18"}, {"qubits": [19], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz19"}, {"qubits": [20], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz20"}, {"qubits": [21], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz21"}, {"qubits": [22], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz22"}, {"qubits": [23], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz23"}, {"qubits": [24], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz24"}, {"qubits": [25], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz25"}, {"qubits": [26], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz26"}, {"qubits": [27], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz27"}, {"qubits": [28], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz28"}, {"qubits": [29], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz29"}, {"qubits": [30], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz30"}, {"qubits": [31], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz31"}, {"qubits": [32], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz32"}, {"qubits": [33], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz33"}, {"qubits": [34], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz34"}, {"qubits": [35], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz35"}, {"qubits": [36], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz36"}, {"qubits": [37], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz37"}, {"qubits": [38], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz38"}, {"qubits": [39], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz39"}, {"qubits": [40], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz40"}, {"qubits": [41], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz41"}, {"qubits": [42], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz42"}, {"qubits": [43], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz43"}, {"qubits": [44], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz44"}, {"qubits": [45], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz45"}, {"qubits": [46], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz46"}, {"qubits": [47], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz47"}, {"qubits": [48], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz48"}, {"qubits": [49], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz49"}, {"qubits": [50], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz50"}, {"qubits": [51], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz51"}, {"qubits": [52], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz52"}, {"qubits": [53], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz53"}, {"qubits": [54], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz54"}, {"qubits": [55], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz55"}, {"qubits": [56], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz56"}, {"qubits": [57], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz57"}, {"qubits": [58], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz58"}, {"qubits": [59], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz59"}, {"qubits": [60], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz60"}, {"qubits": [61], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz61"}, {"qubits": [62], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz62"}, {"qubits": [63], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz63"}, {"qubits": [64], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz64"}, {"qubits": [65], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz65"}, {"qubits": [66], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz66"}, {"qubits": [67], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz67"}, {"qubits": [68], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz68"}, {"qubits": [69], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz69"}, {"qubits": [70], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz70"}, {"qubits": [71], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz71"}, {"qubits": [72], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz72"}, {"qubits": [73], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz73"}, {"qubits": [74], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz74"}, {"qubits": [75], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz75"}, {"qubits": [76], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz76"}, {"qubits": [77], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz77"}, {"qubits": [78], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz78"}, {"qubits": [79], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz79"}, {"qubits": [80], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz80"}, {"qubits": [81], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz81"}, {"qubits": [82], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz82"}, {"qubits": [83], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz83"}, {"qubits": [84], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz84"}, {"qubits": [85], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz85"}, {"qubits": [86], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz86"}, {"qubits": [87], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz87"}, {"qubits": [88], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz88"}, {"qubits": [89], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz89"}, {"qubits": [90], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz90"}, {"qubits": [91], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz91"}, {"qubits": [92], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz92"}, {"qubits": [93], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz93"}, {"qubits": [94], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz94"}, {"qubits": [95], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz95"}, {"qubits": [96], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz96"}, {"qubits": [97], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz97"}, {"qubits": [98], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz98"}, {"qubits": [99], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz99"}, {"qubits": [100], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz100"}, {"qubits": [101], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz101"}, {"qubits": [102], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz102"}, {"qubits": [103], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz103"}, {"qubits": [104], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz104"}, {"qubits": [105], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz105"}, {"qubits": [106], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz106"}, {"qubits": [107], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz107"}, {"qubits": [108], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz108"}, {"qubits": [109], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz109"}, {"qubits": [110], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz110"}, {"qubits": [111], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz111"}, {"qubits": [112], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz112"}, {"qubits": [113], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz113"}, {"qubits": [114], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz114"}, {"qubits": [115], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz115"}, {"qubits": [116], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz116"}, {"qubits": [117], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz117"}, {"qubits": [118], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz118"}, {"qubits": [119], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz119"}, {"qubits": [120], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz120"}, {"qubits": [121], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz121"}, {"qubits": [122], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz122"}, {"qubits": [123], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz123"}, {"qubits": [124], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz124"}, {"qubits": [125], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz125"}, {"qubits": [126], "gate": "rz", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz126"}, {"qubits": [0], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0003410223041189624}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx0"}, {"qubits": [1], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00015601711255331714}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx1"}, {"qubits": [2], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002679276250533012}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx2"}, {"qubits": [3], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00039331463681546876}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx3"}, {"qubits": [4], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0010485287155949166}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx4"}, {"qubits": [5], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0004885155339290362}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx5"}, {"qubits": [6], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0008280096167852205}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx6"}, {"qubits": [7], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.000268082216778717}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx7"}, {"qubits": [8], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00028143735341571216}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx8"}, {"qubits": [9], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.006146768501500828}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx9"}, {"qubits": [10], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00534878246031358}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx10"}, {"qubits": [11], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0017280054683283049}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx11"}, {"qubits": [12], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0022850311836014265}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx12"}, {"qubits": [13], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0015739177796970881}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx13"}, {"qubits": [14], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0003401054999187882}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx14"}, {"qubits": [15], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0006223242690627873}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx15"}, {"qubits": [16], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00016680739769151217}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx16"}, {"qubits": [17], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0013367139510720677}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx17"}, {"qubits": [18], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0005883314078662353}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx18"}, {"qubits": [19], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00023402151647978933}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx19"}, {"qubits": [20], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00022673788656796164}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx20"}, {"qubits": [21], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0012399243539880386}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx21"}, {"qubits": [22], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.005549107536984753}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx22"}, {"qubits": [23], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0005620849291805753}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx23"}, {"qubits": [24], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.003247782588873444}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx24"}, {"qubits": [25], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00020862166188869824}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx25"}, {"qubits": [26], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00019009996039390646}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx26"}, {"qubits": [27], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00018922760131097482}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx27"}, {"qubits": [28], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00018817528719210788}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx28"}, {"qubits": [29], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0005014842579937383}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx29"}, {"qubits": [30], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00027640535019682414}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx30"}, {"qubits": [31], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002235525874842101}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx31"}, {"qubits": [32], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00030130410867712206}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx32"}, {"qubits": [33], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002731345351732058}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx33"}, {"qubits": [34], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00022821541531042598}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx34"}, {"qubits": [35], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00022748659413939496}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx35"}, {"qubits": [36], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00019594719570676273}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx36"}, {"qubits": [37], "gate": "sx", "parameters": [{"date": "2022-04-10T10:48:15+09:00", "name": "gate_error", "unit": "", "value": 0.026508955627887475}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx37"}, {"qubits": [38], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002556326781022323}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx38"}, {"qubits": [39], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00023979541761294545}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx39"}, {"qubits": [40], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0003148765569451491}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx40"}, {"qubits": [41], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00029530006776756784}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx41"}, {"qubits": [42], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00023790739529699393}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx42"}, {"qubits": [43], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0021774261165083937}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx43"}, {"qubits": [44], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.000659764026431041}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx44"}, {"qubits": [45], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0003360255136615447}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx45"}, {"qubits": [46], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00019619260943853933}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx46"}, {"qubits": [47], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0001791802568091974}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx47"}, {"qubits": [48], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00017297606043704345}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx48"}, {"qubits": [49], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002173218692820851}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx49"}, {"qubits": [50], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00021153370014956267}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx50"}, {"qubits": [51], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002444945920081518}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx51"}, {"qubits": [52], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002742198673087046}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx52"}, {"qubits": [53], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0013284292425785587}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx53"}, {"qubits": [54], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00023416196012732493}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx54"}, {"qubits": [55], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00023664022750477222}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx55"}, {"qubits": [56], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002778784235550578}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx56"}, {"qubits": [57], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00020693392484422973}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx57"}, {"qubits": [58], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0001949906648918238}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx58"}, {"qubits": [59], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002634422279662771}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx59"}, {"qubits": [60], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00033241423866811403}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx60"}, {"qubits": [61], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00018666988741812088}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx61"}, {"qubits": [62], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00018361435549580296}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx62"}, {"qubits": [63], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00020760888441626111}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx63"}, {"qubits": [64], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00035602128769237723}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx64"}, {"qubits": [65], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00020152042464912365}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx65"}, {"qubits": [66], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.001864203001593195}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx66"}, {"qubits": [67], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0009710554143420611}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx67"}, {"qubits": [68], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0005081911199032902}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx68"}, {"qubits": [69], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00018840957495220106}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx69"}, {"qubits": [70], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00033687673246085727}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx70"}, {"qubits": [71], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0005759248975743239}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx71"}, {"qubits": [72], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002205843509027754}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx72"}, {"qubits": [73], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00019212741503611832}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx73"}, {"qubits": [74], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00021317804880845441}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx74"}, {"qubits": [75], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002733078588386084}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx75"}, {"qubits": [76], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00018791073493388562}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx76"}, {"qubits": [77], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.000288990576630191}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx77"}, {"qubits": [78], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00022906535750387365}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx78"}, {"qubits": [79], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00038470611636902446}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx79"}, {"qubits": [80], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00029597534063057987}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx80"}, {"qubits": [81], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00034713409964470967}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx81"}, {"qubits": [82], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0005153245594350099}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx82"}, {"qubits": [83], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00045435629531546544}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx83"}, {"qubits": [84], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00018670295571013786}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx84"}, {"qubits": [85], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002045310642847741}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx85"}, {"qubits": [86], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00022824005621498522}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx86"}, {"qubits": [87], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002726137761691845}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx87"}, {"qubits": [88], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00017235582919403582}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx88"}, {"qubits": [89], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002811181702834337}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx89"}, {"qubits": [90], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0003070049728538139}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx90"}, {"qubits": [91], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00048275665765505106}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx91"}, {"qubits": [92], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002374360699710165}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx92"}, {"qubits": [93], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002458984291050947}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx93"}, {"qubits": [94], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00028437869823201236}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx94"}, {"qubits": [95], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00040595237493997913}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx95"}, {"qubits": [96], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00022023377643090345}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx96"}, {"qubits": [97], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00024709835884755444}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx97"}, {"qubits": [98], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.010938101207084622}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx98"}, {"qubits": [99], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0018532976394111627}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx99"}, {"qubits": [100], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00018651414368773533}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx100"}, {"qubits": [101], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00022571486196316058}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx101"}, {"qubits": [102], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00020950082450013965}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx102"}, {"qubits": [103], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00024367494537131334}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx103"}, {"qubits": [104], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0005337845142513803}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx104"}, {"qubits": [105], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0003165102379703597}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx105"}, {"qubits": [106], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00047217004842268573}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx106"}, {"qubits": [107], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0003327641113662043}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx107"}, {"qubits": [108], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0006768063530755115}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx108"}, {"qubits": [109], "gate": "sx", "parameters": [{"date": "2022-04-11T04:07:22+09:00", "name": "gate_error", "unit": "", "value": 0.00044611461508036344}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx109"}, {"qubits": [110], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0004245530998019005}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx110"}, {"qubits": [111], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0003481671543681323}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx111"}, {"qubits": [112], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.000613873842452513}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx112"}, {"qubits": [113], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00019856719484651704}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx113"}, {"qubits": [114], "gate": "sx", "parameters": [{"date": "2022-04-12T16:02:43+09:00", "name": "gate_error", "unit": "", "value": 0.00041146216425915725}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx114"}, {"qubits": [115], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002954927903082008}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx115"}, {"qubits": [116], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002592406359852642}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx116"}, {"qubits": [117], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00030592486645954117}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx117"}, {"qubits": [118], "gate": "sx", "parameters": [{"date": "2022-04-12T16:02:43+09:00", "name": "gate_error", "unit": "", "value": 0.0002110212855896815}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx118"}, {"qubits": [119], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.014816578600154806}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx119"}, {"qubits": [120], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002333507192308401}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx120"}, {"qubits": [121], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00019631639115780348}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx121"}, {"qubits": [122], "gate": "sx", "parameters": [{"date": "2022-04-12T16:02:43+09:00", "name": "gate_error", "unit": "", "value": 0.0002874225643324545}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx122"}, {"qubits": [123], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0017326116436769538}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx123"}, {"qubits": [124], "gate": "sx", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.002527530770155337}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx124"}, {"qubits": [125], "gate": "sx", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00018347099779513637}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx125"}, {"qubits": [126], "gate": "sx", "parameters": [{"date": "2022-04-12T16:02:43+09:00", "name": "gate_error", "unit": "", "value": 0.0002568696663573033}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx126"}, {"qubits": [0], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0003410223041189624}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x0"}, {"qubits": [1], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00015601711255331714}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x1"}, {"qubits": [2], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002679276250533012}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x2"}, {"qubits": [3], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00039331463681546876}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x3"}, {"qubits": [4], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0010485287155949166}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x4"}, {"qubits": [5], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0004885155339290362}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x5"}, {"qubits": [6], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0008280096167852205}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x6"}, {"qubits": [7], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.000268082216778717}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x7"}, {"qubits": [8], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00028143735341571216}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x8"}, {"qubits": [9], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.006146768501500828}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x9"}, {"qubits": [10], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00534878246031358}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x10"}, {"qubits": [11], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0017280054683283049}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x11"}, {"qubits": [12], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0022850311836014265}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x12"}, {"qubits": [13], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0015739177796970881}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x13"}, {"qubits": [14], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0003401054999187882}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x14"}, {"qubits": [15], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0006223242690627873}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x15"}, {"qubits": [16], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00016680739769151217}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x16"}, {"qubits": [17], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0013367139510720677}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x17"}, {"qubits": [18], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0005883314078662353}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x18"}, {"qubits": [19], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00023402151647978933}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x19"}, {"qubits": [20], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00022673788656796164}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x20"}, {"qubits": [21], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0012399243539880386}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x21"}, {"qubits": [22], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.005549107536984753}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x22"}, {"qubits": [23], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0005620849291805753}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x23"}, {"qubits": [24], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.003247782588873444}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x24"}, {"qubits": [25], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00020862166188869824}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x25"}, {"qubits": [26], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00019009996039390646}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x26"}, {"qubits": [27], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00018922760131097482}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x27"}, {"qubits": [28], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00018817528719210788}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x28"}, {"qubits": [29], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0005014842579937383}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x29"}, {"qubits": [30], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00027640535019682414}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x30"}, {"qubits": [31], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002235525874842101}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x31"}, {"qubits": [32], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00030130410867712206}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x32"}, {"qubits": [33], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002731345351732058}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x33"}, {"qubits": [34], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00022821541531042598}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x34"}, {"qubits": [35], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00022748659413939496}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x35"}, {"qubits": [36], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00019594719570676273}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x36"}, {"qubits": [37], "gate": "x", "parameters": [{"date": "2022-04-10T10:48:15+09:00", "name": "gate_error", "unit": "", "value": 0.026508955627887475}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x37"}, {"qubits": [38], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002556326781022323}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x38"}, {"qubits": [39], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00023979541761294545}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x39"}, {"qubits": [40], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0003148765569451491}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x40"}, {"qubits": [41], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00029530006776756784}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x41"}, {"qubits": [42], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00023790739529699393}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x42"}, {"qubits": [43], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0021774261165083937}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x43"}, {"qubits": [44], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.000659764026431041}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x44"}, {"qubits": [45], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0003360255136615447}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x45"}, {"qubits": [46], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00019619260943853933}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x46"}, {"qubits": [47], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0001791802568091974}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x47"}, {"qubits": [48], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00017297606043704345}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x48"}, {"qubits": [49], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002173218692820851}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x49"}, {"qubits": [50], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00021153370014956267}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x50"}, {"qubits": [51], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002444945920081518}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x51"}, {"qubits": [52], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002742198673087046}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x52"}, {"qubits": [53], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0013284292425785587}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x53"}, {"qubits": [54], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00023416196012732493}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x54"}, {"qubits": [55], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00023664022750477222}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x55"}, {"qubits": [56], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002778784235550578}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x56"}, {"qubits": [57], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00020693392484422973}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x57"}, {"qubits": [58], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0001949906648918238}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x58"}, {"qubits": [59], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002634422279662771}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x59"}, {"qubits": [60], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00033241423866811403}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x60"}, {"qubits": [61], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00018666988741812088}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x61"}, {"qubits": [62], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00018361435549580296}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x62"}, {"qubits": [63], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00020760888441626111}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x63"}, {"qubits": [64], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00035602128769237723}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x64"}, {"qubits": [65], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00020152042464912365}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x65"}, {"qubits": [66], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.001864203001593195}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x66"}, {"qubits": [67], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0009710554143420611}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x67"}, {"qubits": [68], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0005081911199032902}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x68"}, {"qubits": [69], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00018840957495220106}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x69"}, {"qubits": [70], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00033687673246085727}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x70"}, {"qubits": [71], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0005759248975743239}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x71"}, {"qubits": [72], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002205843509027754}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x72"}, {"qubits": [73], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00019212741503611832}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x73"}, {"qubits": [74], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00021317804880845441}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x74"}, {"qubits": [75], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002733078588386084}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x75"}, {"qubits": [76], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00018791073493388562}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x76"}, {"qubits": [77], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.000288990576630191}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x77"}, {"qubits": [78], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00022906535750387365}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x78"}, {"qubits": [79], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00038470611636902446}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x79"}, {"qubits": [80], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00029597534063057987}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x80"}, {"qubits": [81], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00034713409964470967}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x81"}, {"qubits": [82], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0005153245594350099}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x82"}, {"qubits": [83], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00045435629531546544}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x83"}, {"qubits": [84], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00018670295571013786}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x84"}, {"qubits": [85], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002045310642847741}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x85"}, {"qubits": [86], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00022824005621498522}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x86"}, {"qubits": [87], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002726137761691845}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x87"}, {"qubits": [88], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00017235582919403582}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x88"}, {"qubits": [89], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002811181702834337}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x89"}, {"qubits": [90], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0003070049728538139}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x90"}, {"qubits": [91], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00048275665765505106}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x91"}, {"qubits": [92], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002374360699710165}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x92"}, {"qubits": [93], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002458984291050947}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x93"}, {"qubits": [94], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00028437869823201236}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x94"}, {"qubits": [95], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00040595237493997913}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x95"}, {"qubits": [96], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00022023377643090345}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x96"}, {"qubits": [97], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00024709835884755444}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x97"}, {"qubits": [98], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.010938101207084622}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x98"}, {"qubits": [99], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0018532976394111627}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x99"}, {"qubits": [100], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00018651414368773533}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x100"}, {"qubits": [101], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00022571486196316058}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x101"}, {"qubits": [102], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00020950082450013965}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x102"}, {"qubits": [103], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.00024367494537131334}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x103"}, {"qubits": [104], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0005337845142513803}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x104"}, {"qubits": [105], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0003165102379703597}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x105"}, {"qubits": [106], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00047217004842268573}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x106"}, {"qubits": [107], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0003327641113662043}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x107"}, {"qubits": [108], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0006768063530755115}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x108"}, {"qubits": [109], "gate": "x", "parameters": [{"date": "2022-04-11T04:07:22+09:00", "name": "gate_error", "unit": "", "value": 0.00044611461508036344}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x109"}, {"qubits": [110], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0004245530998019005}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x110"}, {"qubits": [111], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0003481671543681323}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x111"}, {"qubits": [112], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.000613873842452513}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x112"}, {"qubits": [113], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00019856719484651704}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x113"}, {"qubits": [114], "gate": "x", "parameters": [{"date": "2022-04-12T16:02:43+09:00", "name": "gate_error", "unit": "", "value": 0.00041146216425915725}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x114"}, {"qubits": [115], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0002954927903082008}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x115"}, {"qubits": [116], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002592406359852642}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x116"}, {"qubits": [117], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00030592486645954117}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x117"}, {"qubits": [118], "gate": "x", "parameters": [{"date": "2022-04-12T16:02:43+09:00", "name": "gate_error", "unit": "", "value": 0.0002110212855896815}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x118"}, {"qubits": [119], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.014816578600154806}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x119"}, {"qubits": [120], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.0002333507192308401}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x120"}, {"qubits": [121], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00019631639115780348}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x121"}, {"qubits": [122], "gate": "x", "parameters": [{"date": "2022-04-12T16:02:43+09:00", "name": "gate_error", "unit": "", "value": 0.0002874225643324545}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x122"}, {"qubits": [123], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.0017326116436769538}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x123"}, {"qubits": [124], "gate": "x", "parameters": [{"date": "2022-04-12T15:51:31+09:00", "name": "gate_error", "unit": "", "value": 0.002527530770155337}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x124"}, {"qubits": [125], "gate": "x", "parameters": [{"date": "2022-04-12T15:41:30+09:00", "name": "gate_error", "unit": "", "value": 0.00018347099779513637}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x125"}, {"qubits": [126], "gate": "x", "parameters": [{"date": "2022-04-12T16:02:43+09:00", "name": "gate_error", "unit": "", "value": 0.0002568696663573033}, {"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x126"}, {"qubits": [72, 62], "gate": "cx", "parameters": [{"date": "2022-04-12T21:56:42+09:00", "name": "gate_error", "unit": "", "value": 0.016496669018957383}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 270.22222222222223}], "name": "cx72_62"}, {"qubits": [62, 72], "gate": "cx", "parameters": [{"date": "2022-04-12T21:56:42+09:00", "name": "gate_error", "unit": "", "value": 0.016496669018957383}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 305.77777777777777}], "name": "cx62_72"}, {"qubits": [77, 71], "gate": "cx", "parameters": [{"date": "2022-04-12T21:48:50+09:00", "name": "gate_error", "unit": "", "value": 0.010370853210407566}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 426.66666666666663}], "name": "cx77_71"}, {"qubits": [71, 77], "gate": "cx", "parameters": [{"date": "2022-04-12T21:48:50+09:00", "name": "gate_error", "unit": "", "value": 0.010370853210407566}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 462.2222222222222}], "name": "cx71_77"}, {"qubits": [71, 58], "gate": "cx", "parameters": [{"date": "2022-04-12T21:40:49+09:00", "name": "gate_error", "unit": "", "value": 0.04162172154030255}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 455.1111111111111}], "name": "cx71_58"}, {"qubits": [58, 71], "gate": "cx", "parameters": [{"date": "2022-04-12T21:40:49+09:00", "name": "gate_error", "unit": "", "value": 0.04162172154030255}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 490.66666666666663}], "name": "cx58_71"}, {"qubits": [85, 73], "gate": "cx", "parameters": [{"date": "2022-04-12T21:40:49+09:00", "name": "gate_error", "unit": "", "value": 0.006508920251338202}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 426.66666666666663}], "name": "cx85_73"}, {"qubits": [73, 85], "gate": "cx", "parameters": [{"date": "2022-04-12T21:40:49+09:00", "name": "gate_error", "unit": "", "value": 0.006508920251338202}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 462.2222222222222}], "name": "cx73_85"}, {"qubits": [60, 61], "gate": "cx", "parameters": [{"date": "2022-04-12T21:32:53+09:00", "name": "gate_error", "unit": "", "value": 0.015283721633168323}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 426.66666666666663}], "name": "cx60_61"}, {"qubits": [61, 60], "gate": "cx", "parameters": [{"date": "2022-04-12T21:32:53+09:00", "name": "gate_error", "unit": "", "value": 0.015283721633168323}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 462.2222222222222}], "name": "cx61_60"}, {"qubits": [83, 84], "gate": "cx", "parameters": [{"date": "2022-04-12T21:32:53+09:00", "name": "gate_error", "unit": "", "value": 0.03312961865065403}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 490.66666666666663}], "name": "cx83_84"}, {"qubits": [84, 83], "gate": "cx", "parameters": [{"date": "2022-04-12T21:32:53+09:00", "name": "gate_error", "unit": "", "value": 0.03312961865065403}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 526.2222222222222}], "name": "cx84_83"}, {"qubits": [93, 106], "gate": "cx", "parameters": [{"date": "2022-04-12T21:32:53+09:00", "name": "gate_error", "unit": "", "value": 0.0076474571835702665}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 440.88888888888886}], "name": "cx93_106"}, {"qubits": [106, 93], "gate": "cx", "parameters": [{"date": "2022-04-12T21:32:53+09:00", "name": "gate_error", "unit": "", "value": 0.0076474571835702665}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 476.4444444444444}], "name": "cx106_93"}, {"qubits": [60, 59], "gate": "cx", "parameters": [{"date": "2022-04-12T21:23:42+09:00", "name": "gate_error", "unit": "", "value": 0.00969850218483187}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx60_59"}, {"qubits": [59, 60], "gate": "cx", "parameters": [{"date": "2022-04-12T21:23:42+09:00", "name": "gate_error", "unit": "", "value": 0.00969850218483187}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 440.88888888888886}], "name": "cx59_60"}, {"qubits": [68, 69], "gate": "cx", "parameters": [{"date": "2022-04-12T21:23:42+09:00", "name": "gate_error", "unit": "", "value": 0.010702883934146645}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 440.88888888888886}], "name": "cx68_69"}, {"qubits": [69, 68], "gate": "cx", "parameters": [{"date": "2022-04-12T21:23:42+09:00", "name": "gate_error", "unit": "", "value": 0.010702883934146645}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 476.4444444444444}], "name": "cx69_68"}, {"qubits": [85, 86], "gate": "cx", "parameters": [{"date": "2022-04-12T21:23:42+09:00", "name": "gate_error", "unit": "", "value": 0.04212422986864292}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 433.77777777777777}], "name": "cx85_86"}, {"qubits": [86, 85], "gate": "cx", "parameters": [{"date": "2022-04-12T21:23:42+09:00", "name": "gate_error", "unit": "", "value": 0.04212422986864292}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 469.3333333333333}], "name": "cx86_85"}, {"qubits": [111, 104], "gate": "cx", "parameters": [{"date": "2022-04-12T21:23:42+09:00", "name": "gate_error", "unit": "", "value": 0.016866414618899567}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 448}], "name": "cx111_104"}, {"qubits": [104, 111], "gate": "cx", "parameters": [{"date": "2022-04-12T21:23:42+09:00", "name": "gate_error", "unit": "", "value": 0.016866414618899567}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 483.55555555555554}], "name": "cx104_111"}, {"qubits": [41, 53], "gate": "cx", "parameters": [{"date": "2022-04-12T20:55:12+09:00", "name": "gate_error", "unit": "", "value": 0.023204755958385365}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 355.55555555555554}], "name": "cx41_53"}, {"qubits": [53, 41], "gate": "cx", "parameters": [{"date": "2022-04-12T20:55:12+09:00", "name": "gate_error", "unit": "", "value": 0.023204755958385365}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 391.1111111111111}], "name": "cx53_41"}, {"qubits": [68, 67], "gate": "cx", "parameters": [{"date": "2022-04-12T20:55:12+09:00", "name": "gate_error", "unit": "", "value": 0.022292686901866504}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 398.2222222222222}], "name": "cx68_67"}, {"qubits": [67, 68], "gate": "cx", "parameters": [{"date": "2022-04-12T20:55:12+09:00", "name": "gate_error", "unit": "", "value": 0.022292686901866504}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 433.77777777777777}], "name": "cx67_68"}, {"qubits": [39, 33], "gate": "cx", "parameters": [{"date": "2022-04-12T20:40:39+09:00", "name": "gate_error", "unit": "", "value": 0.011134445165424223}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 348.4444444444444}], "name": "cx39_33"}, {"qubits": [33, 39], "gate": "cx", "parameters": [{"date": "2022-04-12T20:40:39+09:00", "name": "gate_error", "unit": "", "value": 0.011134445165424223}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 384}], "name": "cx33_39"}, {"qubits": [51, 50], "gate": "cx", "parameters": [{"date": "2022-04-12T20:40:39+09:00", "name": "gate_error", "unit": "", "value": 0.006639250269048214}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 312.88888888888886}], "name": "cx51_50"}, {"qubits": [50, 51], "gate": "cx", "parameters": [{"date": "2022-04-12T20:40:39+09:00", "name": "gate_error", "unit": "", "value": 0.006639250269048214}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 348.4444444444444}], "name": "cx50_51"}, {"qubits": [95, 94], "gate": "cx", "parameters": [{"date": "2022-04-12T20:40:39+09:00", "name": "gate_error", "unit": "", "value": 0.008818597637381326}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 362.66666666666663}], "name": "cx95_94"}, {"qubits": [94, 95], "gate": "cx", "parameters": [{"date": "2022-04-12T20:40:39+09:00", "name": "gate_error", "unit": "", "value": 0.008818597637381326}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 398.2222222222222}], "name": "cx94_95"}, {"qubits": [103, 102], "gate": "cx", "parameters": [{"date": "2022-04-12T20:40:39+09:00", "name": "gate_error", "unit": "", "value": 0.011216522209842095}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 355.55555555555554}], "name": "cx103_102"}, {"qubits": [102, 103], "gate": "cx", "parameters": [{"date": "2022-04-12T20:40:39+09:00", "name": "gate_error", "unit": "", "value": 0.011216522209842095}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 391.1111111111111}], "name": "cx102_103"}, {"qubits": [34, 24], "gate": "cx", "parameters": [{"date": "2022-04-12T20:31:05+09:00", "name": "gate_error", "unit": "", "value": 0.017413336038008376}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "cx34_24"}, {"qubits": [24, 34], "gate": "cx", "parameters": [{"date": "2022-04-12T20:31:05+09:00", "name": "gate_error", "unit": "", "value": 0.017413336038008376}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 952.8888888888888}], "name": "cx24_34"}, {"qubits": [46, 47], "gate": "cx", "parameters": [{"date": "2022-04-12T20:31:05+09:00", "name": "gate_error", "unit": "", "value": 0.014749336550677838}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 910.2222222222222}], "name": "cx46_47"}, {"qubits": [47, 46], "gate": "cx", "parameters": [{"date": "2022-04-12T20:31:05+09:00", "name": "gate_error", "unit": "", "value": 0.014749336550677838}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 945.7777777777777}], "name": "cx47_46"}, {"qubits": [110, 100], "gate": "cx", "parameters": [{"date": "2022-04-12T20:31:05+09:00", "name": "gate_error", "unit": "", "value": 0.018591220261317043}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 796.4444444444443}], "name": "cx110_100"}, {"qubits": [100, 110], "gate": "cx", "parameters": [{"date": "2022-04-12T20:31:05+09:00", "name": "gate_error", "unit": "", "value": 0.018591220261317043}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 832}], "name": "cx100_110"}, {"qubits": [26, 25], "gate": "cx", "parameters": [{"date": "2022-04-12T20:20:56+09:00", "name": "gate_error", "unit": "", "value": 0.01763908114990373}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 426.66666666666663}], "name": "cx26_25"}, {"qubits": [25, 26], "gate": "cx", "parameters": [{"date": "2022-04-12T20:20:56+09:00", "name": "gate_error", "unit": "", "value": 0.01763908114990373}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 462.2222222222222}], "name": "cx25_26"}, {"qubits": [31, 30], "gate": "cx", "parameters": [{"date": "2022-04-12T20:20:56+09:00", "name": "gate_error", "unit": "", "value": 0.008019235031203359}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 433.77777777777777}], "name": "cx31_30"}, {"qubits": [30, 31], "gate": "cx", "parameters": [{"date": "2022-04-12T20:20:56+09:00", "name": "gate_error", "unit": "", "value": 0.008019235031203359}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 469.3333333333333}], "name": "cx30_31"}, {"qubits": [59, 58], "gate": "cx", "parameters": [{"date": "2022-04-12T20:20:56+09:00", "name": "gate_error", "unit": "", "value": 0.009652091426844783}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 426.66666666666663}], "name": "cx59_58"}, {"qubits": [58, 59], "gate": "cx", "parameters": [{"date": "2022-04-12T20:20:56+09:00", "name": "gate_error", "unit": "", "value": 0.009652091426844783}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 462.2222222222222}], "name": "cx58_59"}, {"qubits": [64, 63], "gate": "cx", "parameters": [{"date": "2022-04-12T20:20:56+09:00", "name": "gate_error", "unit": "", "value": 0.012348826723895645}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx64_63"}, {"qubits": [63, 64], "gate": "cx", "parameters": [{"date": "2022-04-12T20:20:56+09:00", "name": "gate_error", "unit": "", "value": 0.012348826723895645}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 440.88888888888886}], "name": "cx63_64"}, {"qubits": [68, 55], "gate": "cx", "parameters": [{"date": "2022-04-12T20:20:56+09:00", "name": "gate_error", "unit": "", "value": 0.016592654354733838}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 433.77777777777777}], "name": "cx68_55"}, {"qubits": [55, 68], "gate": "cx", "parameters": [{"date": "2022-04-12T20:20:56+09:00", "name": "gate_error", "unit": "", "value": 0.016592654354733838}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 469.3333333333333}], "name": "cx55_68"}, {"qubits": [85, 84], "gate": "cx", "parameters": [{"date": "2022-04-12T20:20:56+09:00", "name": "gate_error", "unit": "", "value": 0.006380398341743226}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 398.2222222222222}], "name": "cx85_84"}, {"qubits": [84, 85], "gate": "cx", "parameters": [{"date": "2022-04-12T20:20:56+09:00", "name": "gate_error", "unit": "", "value": 0.006380398341743226}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 433.77777777777777}], "name": "cx84_85"}, {"qubits": [101, 100], "gate": "cx", "parameters": [{"date": "2022-04-12T20:20:56+09:00", "name": "gate_error", "unit": "", "value": 0.005238984378845846}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 384}], "name": "cx101_100"}, {"qubits": [100, 101], "gate": "cx", "parameters": [{"date": "2022-04-12T20:20:56+09:00", "name": "gate_error", "unit": "", "value": 0.005238984378845846}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 419.55555555555554}], "name": "cx100_101"}, {"qubits": [107, 106], "gate": "cx", "parameters": [{"date": "2022-04-12T20:20:56+09:00", "name": "gate_error", "unit": "", "value": 0.007972674787396355}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 419.55555555555554}], "name": "cx107_106"}, {"qubits": [106, 107], "gate": "cx", "parameters": [{"date": "2022-04-12T20:20:56+09:00", "name": "gate_error", "unit": "", "value": 0.007972674787396355}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 455.1111111111111}], "name": "cx106_107"}, {"qubits": [121, 120], "gate": "cx", "parameters": [{"date": "2022-04-12T20:20:56+09:00", "name": "gate_error", "unit": "", "value": 0.010683407129547795}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 440.88888888888886}], "name": "cx121_120"}, {"qubits": [120, 121], "gate": "cx", "parameters": [{"date": "2022-04-12T20:20:56+09:00", "name": "gate_error", "unit": "", "value": 0.010683407129547795}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 476.4444444444444}], "name": "cx120_121"}, {"qubits": [23, 24], "gate": "cx", "parameters": [{"date": "2022-04-12T20:08:06+09:00", "name": "gate_error", "unit": "", "value": 0.015710465825038017}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 846.2222222222222}], "name": "cx23_24"}, {"qubits": [24, 23], "gate": "cx", "parameters": [{"date": "2022-04-12T20:08:06+09:00", "name": "gate_error", "unit": "", "value": 0.015710465825038017}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 881.7777777777777}], "name": "cx24_23"}, {"qubits": [46, 45], "gate": "cx", "parameters": [{"date": "2022-04-12T20:08:06+09:00", "name": "gate_error", "unit": "", "value": 0.0247251394498193}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 832}], "name": "cx46_45"}, {"qubits": [45, 46], "gate": "cx", "parameters": [{"date": "2022-04-12T20:08:06+09:00", "name": "gate_error", "unit": "", "value": 0.0247251394498193}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 867.5555555555555}], "name": "cx45_46"}, {"qubits": [99, 100], "gate": "cx", "parameters": [{"date": "2022-04-12T20:08:06+09:00", "name": "gate_error", "unit": "", "value": 0.03837412704325838}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 732.4444444444445}], "name": "cx99_100"}, {"qubits": [100, 99], "gate": "cx", "parameters": [{"date": "2022-04-12T20:08:06+09:00", "name": "gate_error", "unit": "", "value": 0.03837412704325838}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 768}], "name": "cx100_99"}, {"qubits": [122, 121], "gate": "cx", "parameters": [{"date": "2022-04-12T20:08:06+09:00", "name": "gate_error", "unit": "", "value": 0.019419358354763577}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 810.6666666666666}], "name": "cx122_121"}, {"qubits": [121, 122], "gate": "cx", "parameters": [{"date": "2022-04-12T20:08:06+09:00", "name": "gate_error", "unit": "", "value": 0.019419358354763577}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 846.2222222222222}], "name": "cx121_122"}, {"qubits": [23, 22], "gate": "cx", "parameters": [{"date": "2022-04-12T19:58:42+09:00", "name": "gate_error", "unit": "", "value": 0.016587630192480468}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 547.5555555555555}], "name": "cx23_22"}, {"qubits": [22, 23], "gate": "cx", "parameters": [{"date": "2022-04-12T19:58:42+09:00", "name": "gate_error", "unit": "", "value": 0.016587630192480468}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 583.1111111111111}], "name": "cx22_23"}, {"qubits": [50, 49], "gate": "cx", "parameters": [{"date": "2022-04-12T19:58:42+09:00", "name": "gate_error", "unit": "", "value": 0.008561635602283069}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 462.2222222222222}], "name": "cx50_49"}, {"qubits": [49, 50], "gate": "cx", "parameters": [{"date": "2022-04-12T19:58:42+09:00", "name": "gate_error", "unit": "", "value": 0.008561635602283069}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 497.77777777777777}], "name": "cx49_50"}, {"qubits": [82, 81], "gate": "cx", "parameters": [{"date": "2022-04-12T19:58:42+09:00", "name": "gate_error", "unit": "", "value": 0.01050016631568984}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 497.77777777777777}], "name": "cx82_81"}, {"qubits": [81, 82], "gate": "cx", "parameters": [{"date": "2022-04-12T19:58:42+09:00", "name": "gate_error", "unit": "", "value": 0.01050016631568984}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 533.3333333333333}], "name": "cx81_82"}, {"qubits": [103, 104], "gate": "cx", "parameters": [{"date": "2022-04-12T19:58:42+09:00", "name": "gate_error", "unit": "", "value": 0.01594529348476517}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 476.4444444444444}], "name": "cx103_104"}, {"qubits": [104, 103], "gate": "cx", "parameters": [{"date": "2022-04-12T19:58:42+09:00", "name": "gate_error", "unit": "", "value": 0.01594529348476517}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 512}], "name": "cx104_103"}, {"qubits": [21, 22], "gate": "cx", "parameters": [{"date": "2022-04-12T19:47:37+09:00", "name": "gate_error", "unit": "", "value": 0.019904300501000005}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 590.2222222222222}], "name": "cx21_22"}, {"qubits": [22, 21], "gate": "cx", "parameters": [{"date": "2022-04-12T19:47:37+09:00", "name": "gate_error", "unit": "", "value": 0.019904300501000005}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 625.7777777777777}], "name": "cx22_21"}, {"qubits": [61, 62], "gate": "cx", "parameters": [{"date": "2022-04-12T19:47:37+09:00", "name": "gate_error", "unit": "", "value": 0.00756058381593927}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 526.2222222222222}], "name": "cx61_62"}, {"qubits": [62, 61], "gate": "cx", "parameters": [{"date": "2022-04-12T19:47:37+09:00", "name": "gate_error", "unit": "", "value": 0.00756058381593927}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 561.7777777777777}], "name": "cx62_61"}, {"qubits": [124, 123], "gate": "cx", "parameters": [{"date": "2022-04-12T19:47:37+09:00", "name": "gate_error", "unit": "", "value": 0.10353031793759337}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 497.77777777777777}], "name": "cx124_123"}, {"qubits": [123, 124], "gate": "cx", "parameters": [{"date": "2022-04-12T19:47:37+09:00", "name": "gate_error", "unit": "", "value": 0.10353031793759337}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 533.3333333333333}], "name": "cx123_124"}, {"qubits": [15, 22], "gate": "cx", "parameters": [{"date": "2022-04-12T19:37:20+09:00", "name": "gate_error", "unit": "", "value": 0.022981073988750933}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 1080.888888888889}], "name": "cx15_22"}, {"qubits": [22, 15], "gate": "cx", "parameters": [{"date": "2022-04-12T19:37:20+09:00", "name": "gate_error", "unit": "", "value": 0.022981073988750933}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 1116.4444444444443}], "name": "cx22_15"}, {"qubits": [44, 45], "gate": "cx", "parameters": [{"date": "2022-04-12T19:37:20+09:00", "name": "gate_error", "unit": "", "value": 0.03977152632000272}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 1073.7777777777778}], "name": "cx44_45"}, {"qubits": [45, 44], "gate": "cx", "parameters": [{"date": "2022-04-12T19:37:20+09:00", "name": "gate_error", "unit": "", "value": 0.03977152632000272}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 1109.3333333333333}], "name": "cx45_44"}, {"qubits": [113, 114], "gate": "cx", "parameters": [{"date": "2022-04-12T19:37:20+09:00", "name": "gate_error", "unit": "", "value": 0.015669095585433196}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 1052.4444444444443}], "name": "cx113_114"}, {"qubits": [114, 113], "gate": "cx", "parameters": [{"date": "2022-04-12T19:37:20+09:00", "name": "gate_error", "unit": "", "value": 0.015669095585433196}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 1088}], "name": "cx114_113"}, {"qubits": [15, 4], "gate": "cx", "parameters": [{"date": "2022-04-12T19:22:23+09:00", "name": "gate_error", "unit": "", "value": 0.012839946920209871}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 654.2222222222222}], "name": "cx15_4"}, {"qubits": [4, 15], "gate": "cx", "parameters": [{"date": "2022-04-12T19:22:23+09:00", "name": "gate_error", "unit": "", "value": 0.012839946920209871}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 689.7777777777777}], "name": "cx4_15"}, {"qubits": [78, 79], "gate": "cx", "parameters": [{"date": "2022-04-12T19:22:23+09:00", "name": "gate_error", "unit": "", "value": 0.011147056429749391}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 640}], "name": "cx78_79"}, {"qubits": [79, 78], "gate": "cx", "parameters": [{"date": "2022-04-12T19:22:23+09:00", "name": "gate_error", "unit": "", "value": 0.011147056429749391}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 675.5555555555555}], "name": "cx79_78"}, {"qubits": [104, 105], "gate": "cx", "parameters": [{"date": "2022-04-12T19:22:23+09:00", "name": "gate_error", "unit": "", "value": 0.04192405799171986}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 654.2222222222222}], "name": "cx104_105"}, {"qubits": [105, 104], "gate": "cx", "parameters": [{"date": "2022-04-12T19:22:23+09:00", "name": "gate_error", "unit": "", "value": 0.04192405799171986}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 689.7777777777777}], "name": "cx105_104"}, {"qubits": [125, 124], "gate": "cx", "parameters": [{"date": "2022-04-12T19:22:23+09:00", "name": "gate_error", "unit": "", "value": 0.01145320800527036}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 753.7777777777777}], "name": "cx125_124"}, {"qubits": [124, 125], "gate": "cx", "parameters": [{"date": "2022-04-12T19:22:23+09:00", "name": "gate_error", "unit": "", "value": 0.01145320800527036}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 789.3333333333333}], "name": "cx124_125"}, {"qubits": [12, 11], "gate": "cx", "parameters": [{"date": "2022-04-12T19:13:06+09:00", "name": "gate_error", "unit": "", "value": 0.0699974021373728}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 1308.4444444444443}], "name": "cx12_11"}, {"qubits": [11, 12], "gate": "cx", "parameters": [{"date": "2022-04-12T19:13:06+09:00", "name": "gate_error", "unit": "", "value": 0.0699974021373728}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 1344}], "name": "cx11_12"}, {"qubits": [34, 43], "gate": "cx", "parameters": [{"date": "2022-04-12T19:13:06+09:00", "name": "gate_error", "unit": "", "value": 0.020356664523594664}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 1144.888888888889}], "name": "cx34_43"}, {"qubits": [43, 34], "gate": "cx", "parameters": [{"date": "2022-04-12T19:13:06+09:00", "name": "gate_error", "unit": "", "value": 0.020356664523594664}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 1180.4444444444443}], "name": "cx43_34"}, {"qubits": [35, 28], "gate": "cx", "parameters": [{"date": "2022-04-12T19:13:06+09:00", "name": "gate_error", "unit": "", "value": 0.014753779487339913}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 1088}], "name": "cx35_28"}, {"qubits": [28, 35], "gate": "cx", "parameters": [{"date": "2022-04-12T19:13:06+09:00", "name": "gate_error", "unit": "", "value": 0.014753779487339913}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 1123.5555555555554}], "name": "cx28_35"}, {"qubits": [119, 120], "gate": "cx", "parameters": [{"date": "2022-04-12T19:13:06+09:00", "name": "gate_error", "unit": "", "value": 0.033249221735297096}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 1130.6666666666665}], "name": "cx119_120"}, {"qubits": [120, 119], "gate": "cx", "parameters": [{"date": "2022-04-12T19:13:06+09:00", "name": "gate_error", "unit": "", "value": 0.033249221735297096}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 1166.2222222222222}], "name": "cx120_119"}, {"qubits": [14, 0], "gate": "cx", "parameters": [{"date": "2022-04-12T19:02:22+09:00", "name": "gate_error", "unit": "", "value": 0.009295488916969297}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 483.55555555555554}], "name": "cx14_0"}, {"qubits": [0, 14], "gate": "cx", "parameters": [{"date": "2022-04-12T19:02:22+09:00", "name": "gate_error", "unit": "", "value": 0.009295488916969297}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 519.1111111111111}], "name": "cx0_14"}, {"qubits": [28, 29], "gate": "cx", "parameters": [{"date": "2022-04-12T19:02:22+09:00", "name": "gate_error", "unit": "", "value": 0.008795123256846088}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 412.4444444444444}], "name": "cx28_29"}, {"qubits": [29, 28], "gate": "cx", "parameters": [{"date": "2022-04-12T19:02:22+09:00", "name": "gate_error", "unit": "", "value": 0.008795123256846088}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 448}], "name": "cx29_28"}, {"qubits": [38, 39], "gate": "cx", "parameters": [{"date": "2022-04-12T19:02:22+09:00", "name": "gate_error", "unit": "", "value": 0.007517381387438654}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 440.88888888888886}], "name": "cx38_39"}, {"qubits": [39, 38], "gate": "cx", "parameters": [{"date": "2022-04-12T19:02:22+09:00", "name": "gate_error", "unit": "", "value": 0.007517381387438654}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 476.4444444444444}], "name": "cx39_38"}, {"qubits": [49, 55], "gate": "cx", "parameters": [{"date": "2022-04-12T19:02:22+09:00", "name": "gate_error", "unit": "", "value": 0.007712955370482694}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 448}], "name": "cx49_55"}, {"qubits": [55, 49], "gate": "cx", "parameters": [{"date": "2022-04-12T19:02:22+09:00", "name": "gate_error", "unit": "", "value": 0.007712955370482694}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 483.55555555555554}], "name": "cx55_49"}, {"qubits": [57, 58], "gate": "cx", "parameters": [{"date": "2022-04-12T19:02:22+09:00", "name": "gate_error", "unit": "", "value": 0.006206735534687952}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 412.4444444444444}], "name": "cx57_58"}, {"qubits": [58, 57], "gate": "cx", "parameters": [{"date": "2022-04-12T19:02:22+09:00", "name": "gate_error", "unit": "", "value": 0.006206735534687952}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 448}], "name": "cx58_57"}, {"qubits": [82, 83], "gate": "cx", "parameters": [{"date": "2022-04-12T19:02:22+09:00", "name": "gate_error", "unit": "", "value": 0.045700549059452755}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 433.77777777777777}], "name": "cx82_83"}, {"qubits": [83, 82], "gate": "cx", "parameters": [{"date": "2022-04-12T19:02:22+09:00", "name": "gate_error", "unit": "", "value": 0.045700549059452755}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 469.3333333333333}], "name": "cx83_82"}, {"qubits": [91, 98], "gate": "cx", "parameters": [{"date": "2022-04-12T19:02:22+09:00", "name": "gate_error", "unit": "", "value": 0.01751411644106307}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 419.55555555555554}], "name": "cx91_98"}, {"qubits": [98, 91], "gate": "cx", "parameters": [{"date": "2022-04-12T19:02:22+09:00", "name": "gate_error", "unit": "", "value": 0.01751411644106307}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 455.1111111111111}], "name": "cx98_91"}, {"qubits": [93, 87], "gate": "cx", "parameters": [{"date": "2022-04-12T19:02:22+09:00", "name": "gate_error", "unit": "", "value": 0.009154628763937467}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 440.88888888888886}], "name": "cx93_87"}, {"qubits": [87, 93], "gate": "cx", "parameters": [{"date": "2022-04-12T19:02:22+09:00", "name": "gate_error", "unit": "", "value": 0.009154628763937467}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 476.4444444444444}], "name": "cx87_93"}, {"qubits": [117, 118], "gate": "cx", "parameters": [{"date": "2022-04-12T19:02:22+09:00", "name": "gate_error", "unit": "", "value": 0.008229782604835006}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 433.77777777777777}], "name": "cx117_118"}, {"qubits": [118, 117], "gate": "cx", "parameters": [{"date": "2022-04-12T19:02:22+09:00", "name": "gate_error", "unit": "", "value": 0.008229782604835006}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 469.3333333333333}], "name": "cx118_117"}, {"qubits": [126, 125], "gate": "cx", "parameters": [{"date": "2022-04-12T19:02:22+09:00", "name": "gate_error", "unit": "", "value": 0.0077546206606810275}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 469.3333333333333}], "name": "cx126_125"}, {"qubits": [125, 126], "gate": "cx", "parameters": [{"date": "2022-04-12T19:02:22+09:00", "name": "gate_error", "unit": "", "value": 0.0077546206606810275}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 504.88888888888886}], "name": "cx125_126"}, {"qubits": [8, 16], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.02383618076201502}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 391.1111111111111}], "name": "cx8_16"}, {"qubits": [16, 8], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.02383618076201502}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 426.66666666666663}], "name": "cx16_8"}, {"qubits": [17, 30], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.020235013502087174}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 384}], "name": "cx17_30"}, {"qubits": [30, 17], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.020235013502087174}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 419.55555555555554}], "name": "cx30_17"}, {"qubits": [33, 20], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.010963720688284884}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 362.66666666666663}], "name": "cx33_20"}, {"qubits": [20, 33], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.010963720688284884}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 398.2222222222222}], "name": "cx20_33"}, {"qubits": [44, 43], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.012952292119351533}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 391.1111111111111}], "name": "cx44_43"}, {"qubits": [43, 44], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.012952292119351533}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 426.66666666666663}], "name": "cx43_44"}, {"qubits": [49, 48], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.0071978789364175455}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx49_48"}, {"qubits": [48, 49], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.0071978789364175455}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 440.88888888888886}], "name": "cx48_49"}, {"qubits": [57, 56], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.009607814036028284}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 384}], "name": "cx57_56"}, {"qubits": [56, 57], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.009607814036028284}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 419.55555555555554}], "name": "cx56_57"}, {"qubits": [66, 73], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.034764761777276304}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx66_73"}, {"qubits": [73, 66], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.034764761777276304}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 440.88888888888886}], "name": "cx73_66"}, {"qubits": [72, 81], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.009654559853420785}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 369.77777777777777}], "name": "cx72_81"}, {"qubits": [81, 72], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.009654559853420785}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx81_72"}, {"qubits": [89, 74], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.01022553867562842}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 384}], "name": "cx89_74"}, {"qubits": [74, 89], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.01022553867562842}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 419.55555555555554}], "name": "cx74_89"}, {"qubits": [90, 94], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.009127859879278027}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 369.77777777777777}], "name": "cx90_94"}, {"qubits": [94, 90], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.009127859879278027}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx94_90"}, {"qubits": [99, 98], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.0923325890222163}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 369.77777777777777}], "name": "cx99_98"}, {"qubits": [98, 99], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.0923325890222163}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx98_99"}, {"qubits": [106, 105], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.011728694028317221}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 369.77777777777777}], "name": "cx106_105"}, {"qubits": [105, 106], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.011728694028317221}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx105_106"}, {"qubits": [115, 116], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.010250972263910196}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 426.66666666666663}], "name": "cx115_116"}, {"qubits": [116, 115], "gate": "cx", "parameters": [{"date": "2022-04-12T18:46:12+09:00", "name": "gate_error", "unit": "", "value": 0.010250972263910196}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 462.2222222222222}], "name": "cx116_115"}, {"qubits": [7, 6], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.009639954358834607}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 419.55555555555554}], "name": "cx7_6"}, {"qubits": [6, 7], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.009639954358834607}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 455.1111111111111}], "name": "cx6_7"}, {"qubits": [13, 12], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.05239072591564689}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 362.66666666666663}], "name": "cx13_12"}, {"qubits": [12, 13], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.05239072591564689}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 398.2222222222222}], "name": "cx12_13"}, {"qubits": [19, 18], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.011211053465560589}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 369.77777777777777}], "name": "cx19_18"}, {"qubits": [18, 19], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.011211053465560589}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx18_19"}, {"qubits": [25, 24], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.010299452940393583}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 419.55555555555554}], "name": "cx25_24"}, {"qubits": [24, 25], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.010299452940393583}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 455.1111111111111}], "name": "cx24_25"}, {"qubits": [35, 47], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.006683052735475509}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 376.88888888888886}], "name": "cx35_47"}, {"qubits": [47, 35], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.006683052735475509}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 412.4444444444444}], "name": "cx47_35"}, {"qubits": [38, 37], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.013208998638099156}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 426.66666666666663}], "name": "cx38_37"}, {"qubits": [37, 38], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.013208998638099156}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 462.2222222222222}], "name": "cx37_38"}, {"qubits": [51, 36], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.006078482865652268}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 398.2222222222222}], "name": "cx51_36"}, {"qubits": [36, 51], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.006078482865652268}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 433.77777777777777}], "name": "cx36_51"}, {"qubits": [53, 60], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.01788280355556557}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 384}], "name": "cx53_60"}, {"qubits": [60, 53], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.01788280355556557}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 419.55555555555554}], "name": "cx60_53"}, {"qubits": [65, 66], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.021816684464622343}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 398.2222222222222}], "name": "cx65_66"}, {"qubits": [66, 65], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.021816684464622343}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 433.77777777777777}], "name": "cx66_65"}, {"qubits": [87, 88], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.006500725114853806}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 426.66666666666663}], "name": "cx87_88"}, {"qubits": [88, 87], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.006500725114853806}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 462.2222222222222}], "name": "cx88_87"}, {"qubits": [90, 75], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.010962788972746551}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 412.4444444444444}], "name": "cx90_75"}, {"qubits": [75, 90], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.010962788972746551}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 448}], "name": "cx75_90"}, {"qubits": [91, 79], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.010278216419295383}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx91_79"}, {"qubits": [79, 91], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.010278216419295383}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 440.88888888888886}], "name": "cx79_91"}, {"qubits": [92, 83], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.00911551224299148}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx92_83"}, {"qubits": [83, 92], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.00911551224299148}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 440.88888888888886}], "name": "cx83_92"}, {"qubits": [110, 118], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.013230284238192697}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx110_118"}, {"qubits": [118, 110], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.013230284238192697}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 440.88888888888886}], "name": "cx118_110"}, {"qubits": [111, 122], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.012330563187112425}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 426.66666666666663}], "name": "cx111_122"}, {"qubits": [122, 111], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.012330563187112425}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 462.2222222222222}], "name": "cx122_111"}, {"qubits": [112, 126], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.01712274594754057}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 376.88888888888886}], "name": "cx112_126"}, {"qubits": [126, 112], "gate": "cx", "parameters": [{"date": "2022-04-12T18:14:12+09:00", "name": "gate_error", "unit": "", "value": 0.01712274594754057}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 412.4444444444444}], "name": "cx126_112"}, {"qubits": [6, 5], "gate": "cx", "parameters": [{"date": "2022-04-12T17:57:22+09:00", "name": "gate_error", "unit": "", "value": 0.012971134699901993}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 369.77777777777777}], "name": "cx6_5"}, {"qubits": [5, 6], "gate": "cx", "parameters": [{"date": "2022-04-12T17:57:22+09:00", "name": "gate_error", "unit": "", "value": 0.012971134699901993}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx5_6"}, {"qubits": [11, 10], "gate": "cx", "parameters": [{"date": "2022-04-12T17:57:22+09:00", "name": "gate_error", "unit": "", "value": 0.08373356293570659}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 369.77777777777777}], "name": "cx11_10"}, {"qubits": [10, 11], "gate": "cx", "parameters": [{"date": "2022-04-12T17:57:22+09:00", "name": "gate_error", "unit": "", "value": 0.08373356293570659}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx10_11"}, {"qubits": [14, 18], "gate": "cx", "parameters": [{"date": "2022-04-12T17:57:22+09:00", "name": "gate_error", "unit": "", "value": 0.012005597248154254}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 355.55555555555554}], "name": "cx14_18"}, {"qubits": [18, 14], "gate": "cx", "parameters": [{"date": "2022-04-12T17:57:22+09:00", "name": "gate_error", "unit": "", "value": 0.012005597248154254}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 391.1111111111111}], "name": "cx18_14"}, {"qubits": [27, 26], "gate": "cx", "parameters": [{"date": "2022-04-12T17:57:22+09:00", "name": "gate_error", "unit": "", "value": 0.008295960254763535}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 348.4444444444444}], "name": "cx27_26"}, {"qubits": [26, 27], "gate": "cx", "parameters": [{"date": "2022-04-12T17:57:22+09:00", "name": "gate_error", "unit": "", "value": 0.008295960254763535}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 384}], "name": "cx26_27"}, {"qubits": [32, 36], "gate": "cx", "parameters": [{"date": "2022-04-12T17:57:22+09:00", "name": "gate_error", "unit": "", "value": 0.007651699209072826}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 320}], "name": "cx32_36"}, {"qubits": [36, 32], "gate": "cx", "parameters": [{"date": "2022-04-12T17:57:22+09:00", "name": "gate_error", "unit": "", "value": 0.007651699209072826}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 355.55555555555554}], "name": "cx36_32"}, {"qubits": [40, 41], "gate": "cx", "parameters": [{"date": "2022-04-12T17:57:22+09:00", "name": "gate_error", "unit": "", "value": 0.007566658475245264}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 320}], "name": "cx40_41"}, {"qubits": [41, 40], "gate": "cx", "parameters": [{"date": "2022-04-12T17:57:22+09:00", "name": "gate_error", "unit": "", "value": 0.007566658475245264}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 355.55555555555554}], "name": "cx41_40"}, {"qubits": [64, 54], "gate": "cx", "parameters": [{"date": "2022-04-12T17:57:22+09:00", "name": "gate_error", "unit": "", "value": 0.008709530010367561}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 341.3333333333333}], "name": "cx64_54"}, {"qubits": [54, 64], "gate": "cx", "parameters": [{"date": "2022-04-12T17:57:22+09:00", "name": "gate_error", "unit": "", "value": 0.008709530010367561}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 376.88888888888886}], "name": "cx54_64"}, {"qubits": [77, 76], "gate": "cx", "parameters": [{"date": "2022-04-12T17:57:22+09:00", "name": "gate_error", "unit": "", "value": 0.00883758510202845}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 369.77777777777777}], "name": "cx77_76"}, {"qubits": [76, 77], "gate": "cx", "parameters": [{"date": "2022-04-12T17:57:22+09:00", "name": "gate_error", "unit": "", "value": 0.00883758510202845}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx76_77"}, {"qubits": [96, 97], "gate": "cx", "parameters": [{"date": "2022-04-12T17:57:22+09:00", "name": "gate_error", "unit": "", "value": 0.0072616994392877}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 362.66666666666663}], "name": "cx96_97"}, {"qubits": [97, 96], "gate": "cx", "parameters": [{"date": "2022-04-12T17:57:22+09:00", "name": "gate_error", "unit": "", "value": 0.0072616994392877}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 398.2222222222222}], "name": "cx97_96"}, {"qubits": [101, 102], "gate": "cx", "parameters": [{"date": "2022-04-12T17:57:22+09:00", "name": "gate_error", "unit": "", "value": 0.006842537573095192}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 362.66666666666663}], "name": "cx101_102"}, {"qubits": [102, 101], "gate": "cx", "parameters": [{"date": "2022-04-12T17:57:22+09:00", "name": "gate_error", "unit": "", "value": 0.006842537573095192}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 398.2222222222222}], "name": "cx102_101"}, {"qubits": [5, 4], "gate": "cx", "parameters": [{"date": "2022-04-12T17:46:58+09:00", "name": "gate_error", "unit": "", "value": 0.01679825865708967}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 846.2222222222222}], "name": "cx5_4"}, {"qubits": [4, 5], "gate": "cx", "parameters": [{"date": "2022-04-12T17:46:58+09:00", "name": "gate_error", "unit": "", "value": 0.01679825865708967}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 881.7777777777777}], "name": "cx4_5"}, {"qubits": [27, 28], "gate": "cx", "parameters": [{"date": "2022-04-12T17:46:58+09:00", "name": "gate_error", "unit": "", "value": 0.01664480421757908}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 1009.7777777777777}], "name": "cx27_28"}, {"qubits": [28, 27], "gate": "cx", "parameters": [{"date": "2022-04-12T17:46:58+09:00", "name": "gate_error", "unit": "", "value": 0.01664480421757908}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 1045.3333333333333}], "name": "cx28_27"}, {"qubits": [52, 37], "gate": "cx", "parameters": [{"date": "2022-04-12T17:46:58+09:00", "name": "gate_error", "unit": "", "value": 0.028642897630428127}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 981.3333333333333}], "name": "cx52_37"}, {"qubits": [37, 52], "gate": "cx", "parameters": [{"date": "2022-04-12T17:46:58+09:00", "name": "gate_error", "unit": "", "value": 0.028642897630428127}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 1016.8888888888888}], "name": "cx37_52"}, {"qubits": [66, 67], "gate": "cx", "parameters": [{"date": "2022-04-12T17:46:58+09:00", "name": "gate_error", "unit": "", "value": 0.055888700792184776}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 888.8888888888888}], "name": "cx66_67"}, {"qubits": [67, 66], "gate": "cx", "parameters": [{"date": "2022-04-12T17:46:58+09:00", "name": "gate_error", "unit": "", "value": 0.055888700792184776}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 924.4444444444443}], "name": "cx67_66"}, {"qubits": [78, 77], "gate": "cx", "parameters": [{"date": "2022-04-12T17:46:58+09:00", "name": "gate_error", "unit": "", "value": 0.015290566830804764}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 881.7777777777777}], "name": "cx78_77"}, {"qubits": [77, 78], "gate": "cx", "parameters": [{"date": "2022-04-12T17:46:58+09:00", "name": "gate_error", "unit": "", "value": 0.015290566830804764}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "cx77_78"}, {"qubits": [3, 4], "gate": "cx", "parameters": [{"date": "2022-04-12T17:37:06+09:00", "name": "gate_error", "unit": "", "value": 0.08263490395114734}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 604.4444444444445}], "name": "cx3_4"}, {"qubits": [4, 3], "gate": "cx", "parameters": [{"date": "2022-04-12T17:37:06+09:00", "name": "gate_error", "unit": "", "value": 0.08263490395114734}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 640}], "name": "cx4_3"}, {"qubits": [41, 42], "gate": "cx", "parameters": [{"date": "2022-04-12T17:37:06+09:00", "name": "gate_error", "unit": "", "value": 0.009032877640917758}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 583.1111111111111}], "name": "cx41_42"}, {"qubits": [42, 41], "gate": "cx", "parameters": [{"date": "2022-04-12T17:37:06+09:00", "name": "gate_error", "unit": "", "value": 0.009032877640917758}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 618.6666666666666}], "name": "cx42_41"}, {"qubits": [56, 52], "gate": "cx", "parameters": [{"date": "2022-04-12T17:37:06+09:00", "name": "gate_error", "unit": "", "value": 0.010262809926112004}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 526.2222222222222}], "name": "cx56_52"}, {"qubits": [52, 56], "gate": "cx", "parameters": [{"date": "2022-04-12T17:37:06+09:00", "name": "gate_error", "unit": "", "value": 0.010262809926112004}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 561.7777777777777}], "name": "cx52_56"}, {"qubits": [62, 63], "gate": "cx", "parameters": [{"date": "2022-04-12T17:37:06+09:00", "name": "gate_error", "unit": "", "value": 0.00850162154805345}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 512}], "name": "cx62_63"}, {"qubits": [63, 62], "gate": "cx", "parameters": [{"date": "2022-04-12T17:37:06+09:00", "name": "gate_error", "unit": "", "value": 0.00850162154805345}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 547.5555555555555}], "name": "cx63_62"}, {"qubits": [88, 89], "gate": "cx", "parameters": [{"date": "2022-04-12T17:37:06+09:00", "name": "gate_error", "unit": "", "value": 0.010956591616390482}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 533.3333333333333}], "name": "cx88_89"}, {"qubits": [89, 88], "gate": "cx", "parameters": [{"date": "2022-04-12T17:37:06+09:00", "name": "gate_error", "unit": "", "value": 0.010956591616390482}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 568.8888888888889}], "name": "cx89_88"}, {"qubits": [92, 102], "gate": "cx", "parameters": [{"date": "2022-04-12T17:37:06+09:00", "name": "gate_error", "unit": "", "value": 0.011055785126207335}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 540.4444444444445}], "name": "cx92_102"}, {"qubits": [102, 92], "gate": "cx", "parameters": [{"date": "2022-04-12T17:37:06+09:00", "name": "gate_error", "unit": "", "value": 0.011055785126207335}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 576}], "name": "cx102_92"}, {"qubits": [108, 107], "gate": "cx", "parameters": [{"date": "2022-04-12T17:37:06+09:00", "name": "gate_error", "unit": "", "value": 0.011465832530601933}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 519.1111111111111}], "name": "cx108_107"}, {"qubits": [107, 108], "gate": "cx", "parameters": [{"date": "2022-04-12T17:37:06+09:00", "name": "gate_error", "unit": "", "value": 0.011465832530601933}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 554.6666666666666}], "name": "cx107_108"}, {"qubits": [2, 3], "gate": "cx", "parameters": [{"date": "2022-04-12T17:02:17+09:00", "name": "gate_error", "unit": "", "value": 0.010633213130030905}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 618.6666666666666}], "name": "cx2_3"}, {"qubits": [3, 2], "gate": "cx", "parameters": [{"date": "2022-04-12T17:02:17+09:00", "name": "gate_error", "unit": "", "value": 0.010633213130030905}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 654.2222222222222}], "name": "cx3_2"}, {"qubits": [7, 8], "gate": "cx", "parameters": [{"date": "2022-04-12T17:02:17+09:00", "name": "gate_error", "unit": "", "value": 0.009850716527091213}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 533.3333333333333}], "name": "cx7_8"}, {"qubits": [8, 7], "gate": "cx", "parameters": [{"date": "2022-04-12T17:02:17+09:00", "name": "gate_error", "unit": "", "value": 0.009850716527091213}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 568.8888888888889}], "name": "cx8_7"}, {"qubits": [29, 30], "gate": "cx", "parameters": [{"date": "2022-04-12T17:02:17+09:00", "name": "gate_error", "unit": "", "value": 0.01081407291175393}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 568.8888888888889}], "name": "cx29_30"}, {"qubits": [30, 29], "gate": "cx", "parameters": [{"date": "2022-04-12T17:02:17+09:00", "name": "gate_error", "unit": "", "value": 0.01081407291175393}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 604.4444444444445}], "name": "cx30_29"}, {"qubits": [40, 39], "gate": "cx", "parameters": [{"date": "2022-04-12T17:02:17+09:00", "name": "gate_error", "unit": "", "value": 0.01094422626010047}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 611.5555555555555}], "name": "cx40_39"}, {"qubits": [39, 40], "gate": "cx", "parameters": [{"date": "2022-04-12T17:02:17+09:00", "name": "gate_error", "unit": "", "value": 0.01094422626010047}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 647.1111111111111}], "name": "cx39_40"}, {"qubits": [54, 45], "gate": "cx", "parameters": [{"date": "2022-04-12T17:02:17+09:00", "name": "gate_error", "unit": "", "value": 0.03644077078410296}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 561.7777777777777}], "name": "cx54_45"}, {"qubits": [45, 54], "gate": "cx", "parameters": [{"date": "2022-04-12T17:02:17+09:00", "name": "gate_error", "unit": "", "value": 0.03644077078410296}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 597.3333333333333}], "name": "cx45_54"}, {"qubits": [80, 81], "gate": "cx", "parameters": [{"date": "2022-04-12T17:02:17+09:00", "name": "gate_error", "unit": "", "value": 0.01157627028274541}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 540.4444444444445}], "name": "cx80_81"}, {"qubits": [81, 80], "gate": "cx", "parameters": [{"date": "2022-04-12T17:02:17+09:00", "name": "gate_error", "unit": "", "value": 0.01157627028274541}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 576}], "name": "cx81_80"}, {"qubits": [87, 86], "gate": "cx", "parameters": [{"date": "2022-04-12T17:02:17+09:00", "name": "gate_error", "unit": "", "value": 0.009760999028182893}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 625.7777777777777}], "name": "cx87_86"}, {"qubits": [86, 87], "gate": "cx", "parameters": [{"date": "2022-04-12T17:02:17+09:00", "name": "gate_error", "unit": "", "value": 0.009760999028182893}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 661.3333333333333}], "name": "cx86_87"}, {"qubits": [108, 112], "gate": "cx", "parameters": [{"date": "2022-04-12T17:02:17+09:00", "name": "gate_error", "unit": "", "value": 0.020773122950839024}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 540.4444444444445}], "name": "cx108_112"}, {"qubits": [112, 108], "gate": "cx", "parameters": [{"date": "2022-04-12T17:02:17+09:00", "name": "gate_error", "unit": "", "value": 0.020773122950839024}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 576}], "name": "cx112_108"}, {"qubits": [115, 114], "gate": "cx", "parameters": [{"date": "2022-04-12T17:02:17+09:00", "name": "gate_error", "unit": "", "value": 0.03937165933481096}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 576}], "name": "cx115_114"}, {"qubits": [114, 115], "gate": "cx", "parameters": [{"date": "2022-04-12T17:02:17+09:00", "name": "gate_error", "unit": "", "value": 0.03937165933481096}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 611.5555555555555}], "name": "cx114_115"}, {"qubits": [122, 123], "gate": "cx", "parameters": [{"date": "2022-04-12T17:02:17+09:00", "name": "gate_error", "unit": "", "value": 0.06803016845931265}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 561.7777777777777}], "name": "cx122_123"}, {"qubits": [123, 122], "gate": "cx", "parameters": [{"date": "2022-04-12T17:02:17+09:00", "name": "gate_error", "unit": "", "value": 0.06803016845931265}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 597.3333333333333}], "name": "cx123_122"}, {"qubits": [1, 2], "gate": "cx", "parameters": [{"date": "2022-04-12T16:44:58+09:00", "name": "gate_error", "unit": "", "value": 0.006173747103111027}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 298.66666666666663}], "name": "cx1_2"}, {"qubits": [2, 1], "gate": "cx", "parameters": [{"date": "2022-04-12T16:44:58+09:00", "name": "gate_error", "unit": "", "value": 0.006173747103111027}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 334.22222222222223}], "name": "cx2_1"}, {"qubits": [19, 20], "gate": "cx", "parameters": [{"date": "2022-04-12T16:44:58+09:00", "name": "gate_error", "unit": "", "value": 0.00593891532992627}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 348.4444444444444}], "name": "cx19_20"}, {"qubits": [20, 19], "gate": "cx", "parameters": [{"date": "2022-04-12T16:44:58+09:00", "name": "gate_error", "unit": "", "value": 0.00593891532992627}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 384}], "name": "cx20_19"}, {"qubits": [26, 16], "gate": "cx", "parameters": [{"date": "2022-04-12T16:44:58+09:00", "name": "gate_error", "unit": "", "value": 0.008296034505854921}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 312.88888888888886}], "name": "cx26_16"}, {"qubits": [16, 26], "gate": "cx", "parameters": [{"date": "2022-04-12T16:44:58+09:00", "name": "gate_error", "unit": "", "value": 0.008296034505854921}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 348.4444444444444}], "name": "cx16_26"}, {"qubits": [32, 31], "gate": "cx", "parameters": [{"date": "2022-04-12T16:44:58+09:00", "name": "gate_error", "unit": "", "value": 0.00775449476600204}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 327.1111111111111}], "name": "cx32_31"}, {"qubits": [31, 32], "gate": "cx", "parameters": [{"date": "2022-04-12T16:44:58+09:00", "name": "gate_error", "unit": "", "value": 0.00775449476600204}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 362.66666666666663}], "name": "cx31_32"}, {"qubits": [47, 48], "gate": "cx", "parameters": [{"date": "2022-04-12T16:44:58+09:00", "name": "gate_error", "unit": "", "value": 0.006446000766308552}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 341.3333333333333}], "name": "cx47_48"}, {"qubits": [48, 47], "gate": "cx", "parameters": [{"date": "2022-04-12T16:44:58+09:00", "name": "gate_error", "unit": "", "value": 0.006446000766308552}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 376.88888888888886}], "name": "cx48_47"}, {"qubits": [70, 69], "gate": "cx", "parameters": [{"date": "2022-04-12T16:44:58+09:00", "name": "gate_error", "unit": "", "value": 0.0077630739811883065}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 334.22222222222223}], "name": "cx70_69"}, {"qubits": [69, 70], "gate": "cx", "parameters": [{"date": "2022-04-12T16:44:58+09:00", "name": "gate_error", "unit": "", "value": 0.0077630739811883065}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 369.77777777777777}], "name": "cx69_70"}, {"qubits": [80, 79], "gate": "cx", "parameters": [{"date": "2022-04-12T16:44:58+09:00", "name": "gate_error", "unit": "", "value": 0.00826681150929115}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 312.88888888888886}], "name": "cx80_79"}, {"qubits": [79, 80], "gate": "cx", "parameters": [{"date": "2022-04-12T16:44:58+09:00", "name": "gate_error", "unit": "", "value": 0.00826681150929115}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 348.4444444444444}], "name": "cx79_80"}, {"qubits": [95, 96], "gate": "cx", "parameters": [{"date": "2022-04-12T16:44:58+09:00", "name": "gate_error", "unit": "", "value": 0.007378547284534354}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 348.4444444444444}], "name": "cx95_96"}, {"qubits": [96, 95], "gate": "cx", "parameters": [{"date": "2022-04-12T16:44:58+09:00", "name": "gate_error", "unit": "", "value": 0.007378547284534354}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 384}], "name": "cx96_95"}, {"qubits": [117, 116], "gate": "cx", "parameters": [{"date": "2022-04-12T16:44:58+09:00", "name": "gate_error", "unit": "", "value": 0.008247154584408334}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 312.88888888888886}], "name": "cx117_116"}, {"qubits": [116, 117], "gate": "cx", "parameters": [{"date": "2022-04-12T16:44:58+09:00", "name": "gate_error", "unit": "", "value": 0.008247154584408334}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 348.4444444444444}], "name": "cx116_117"}, {"qubits": [1, 0], "gate": "cx", "parameters": [{"date": "2022-04-12T16:33:03+09:00", "name": "gate_error", "unit": "", "value": 0.014268704318191883}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 817.7777777777777}], "name": "cx1_0"}, {"qubits": [0, 1], "gate": "cx", "parameters": [{"date": "2022-04-12T16:33:03+09:00", "name": "gate_error", "unit": "", "value": 0.014268704318191883}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 853.3333333333333}], "name": "cx0_1"}, {"qubits": [20, 21], "gate": "cx", "parameters": [{"date": "2022-04-12T16:33:03+09:00", "name": "gate_error", "unit": "", "value": 0.012578526907353033}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 810.6666666666666}], "name": "cx20_21"}, {"qubits": [21, 20], "gate": "cx", "parameters": [{"date": "2022-04-12T16:33:03+09:00", "name": "gate_error", "unit": "", "value": 0.012578526907353033}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 846.2222222222222}], "name": "cx21_20"}, {"qubits": [42, 43], "gate": "cx", "parameters": [{"date": "2022-04-12T16:33:03+09:00", "name": "gate_error", "unit": "", "value": 0.010941572691143653}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 803.5555555555555}], "name": "cx42_43"}, {"qubits": [43, 42], "gate": "cx", "parameters": [{"date": "2022-04-12T16:33:03+09:00", "name": "gate_error", "unit": "", "value": 0.010941572691143653}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 839.1111111111111}], "name": "cx43_42"}, {"qubits": [65, 64], "gate": "cx", "parameters": [{"date": "2022-04-12T16:33:03+09:00", "name": "gate_error", "unit": "", "value": 0.016980746871341212}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 817.7777777777777}], "name": "cx65_64"}, {"qubits": [64, 65], "gate": "cx", "parameters": [{"date": "2022-04-12T16:33:03+09:00", "name": "gate_error", "unit": "", "value": 0.016980746871341212}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 853.3333333333333}], "name": "cx64_65"}, {"qubits": [70, 74], "gate": "cx", "parameters": [{"date": "2022-04-12T16:33:03+09:00", "name": "gate_error", "unit": "", "value": 0.018499491175328925}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 817.7777777777777}], "name": "cx70_74"}, {"qubits": [74, 70], "gate": "cx", "parameters": [{"date": "2022-04-12T16:33:03+09:00", "name": "gate_error", "unit": "", "value": 0.018499491175328925}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 853.3333333333333}], "name": "cx74_70"}, {"qubits": [76, 75], "gate": "cx", "parameters": [{"date": "2022-04-12T16:33:03+09:00", "name": "gate_error", "unit": "", "value": 0.015006395015834173}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 832}], "name": "cx76_75"}, {"qubits": [75, 76], "gate": "cx", "parameters": [{"date": "2022-04-12T16:33:03+09:00", "name": "gate_error", "unit": "", "value": 0.015006395015834173}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 867.5555555555555}], "name": "cx75_76"}, {"qubits": [97, 98], "gate": "cx", "parameters": [{"date": "2022-04-12T16:33:03+09:00", "name": "gate_error", "unit": "", "value": 0.020838011850274563}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 917.3333333333333}], "name": "cx97_98"}, {"qubits": [98, 97], "gate": "cx", "parameters": [{"date": "2022-04-12T16:33:03+09:00", "name": "gate_error", "unit": "", "value": 0.020838011850274563}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 952.8888888888888}], "name": "cx98_97"}, {"qubits": [119, 118], "gate": "cx", "parameters": [{"date": "2022-04-12T16:33:03+09:00", "name": "gate_error", "unit": "", "value": 0.0340057382567944}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 846.2222222222222}], "name": "cx119_118"}, {"qubits": [118, 119], "gate": "cx", "parameters": [{"date": "2022-04-12T16:33:03+09:00", "name": "gate_error", "unit": "", "value": 0.0340057382567944}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 881.7777777777777}], "name": "cx118_119"}, {"qubits": [17, 12], "gate": "cx", "parameters": [{"date": "2022-04-13T00:29:28.576264+09:00", "name": "gate_error", "unit": "", "value": 1}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 1152}], "name": "cx17_12"}, {"qubits": [12, 17], "gate": "cx", "parameters": [{"date": "2022-04-13T00:29:28.579355+09:00", "name": "gate_error", "unit": "", "value": 1}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 1187.5555555555554}], "name": "cx12_17"}, {"qubits": [9, 10], "gate": "cx", "parameters": [{"date": "2022-04-13T00:29:28.581838+09:00", "name": "gate_error", "unit": "", "value": 1}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 426.66666666666663}], "name": "cx9_10"}, {"qubits": [10, 9], "gate": "cx", "parameters": [{"date": "2022-04-13T00:29:28.584863+09:00", "name": "gate_error", "unit": "", "value": 1}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 462.2222222222222}], "name": "cx10_9"}, {"qubits": [96, 109], "gate": "cx", "parameters": [{"date": "2022-04-13T00:29:28.587355+09:00", "name": "gate_error", "unit": "", "value": 1}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 355.55555555555554}], "name": "cx96_109"}, {"qubits": [109, 96], "gate": "cx", "parameters": [{"date": "2022-04-13T00:29:28.590233+09:00", "name": "gate_error", "unit": "", "value": 1}, {"date": "2022-04-09T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 391.1111111111111}], "name": "cx109_96"}, {"qubits": [0], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset0"}, {"qubits": [1], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset1"}, {"qubits": [2], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset2"}, {"qubits": [3], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset3"}, {"qubits": [4], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset4"}, {"qubits": [5], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 1013.3333333333333}], "name": "reset5"}, {"qubits": [6], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset6"}, {"qubits": [7], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 928}], "name": "reset7"}, {"qubits": [8], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset8"}, {"qubits": [9], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 913.7777777777777}], "name": "reset9"}, {"qubits": [10], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 928}], "name": "reset10"}, {"qubits": [11], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 913.7777777777777}], "name": "reset11"}, {"qubits": [12], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset12"}, {"qubits": [13], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset13"}, {"qubits": [14], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset14"}, {"qubits": [15], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset15"}, {"qubits": [16], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset16"}, {"qubits": [17], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset17"}, {"qubits": [18], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset18"}, {"qubits": [19], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset19"}, {"qubits": [20], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset20"}, {"qubits": [21], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset21"}, {"qubits": [22], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset22"}, {"qubits": [23], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 956.4444444444443}], "name": "reset23"}, {"qubits": [24], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset24"}, {"qubits": [25], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset25"}, {"qubits": [26], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset26"}, {"qubits": [27], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 913.7777777777777}], "name": "reset27"}, {"qubits": [28], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset28"}, {"qubits": [29], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset29"}, {"qubits": [30], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset30"}, {"qubits": [31], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset31"}, {"qubits": [32], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset32"}, {"qubits": [33], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset33"}, {"qubits": [34], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset34"}, {"qubits": [35], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset35"}, {"qubits": [36], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset36"}, {"qubits": [37], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset37"}, {"qubits": [38], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset38"}, {"qubits": [39], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset39"}, {"qubits": [40], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 956.4444444444443}], "name": "reset40"}, {"qubits": [41], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset41"}, {"qubits": [42], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset42"}, {"qubits": [43], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset43"}, {"qubits": [44], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset44"}, {"qubits": [45], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset45"}, {"qubits": [46], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset46"}, {"qubits": [47], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset47"}, {"qubits": [48], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset48"}, {"qubits": [49], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset49"}, {"qubits": [50], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset50"}, {"qubits": [51], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset51"}, {"qubits": [52], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset52"}, {"qubits": [53], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset53"}, {"qubits": [54], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset54"}, {"qubits": [55], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset55"}, {"qubits": [56], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset56"}, {"qubits": [57], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset57"}, {"qubits": [58], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset58"}, {"qubits": [59], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset59"}, {"qubits": [60], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset60"}, {"qubits": [61], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset61"}, {"qubits": [62], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset62"}, {"qubits": [63], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset63"}, {"qubits": [64], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset64"}, {"qubits": [65], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset65"}, {"qubits": [66], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset66"}, {"qubits": [67], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset67"}, {"qubits": [68], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset68"}, {"qubits": [69], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset69"}, {"qubits": [70], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset70"}, {"qubits": [71], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset71"}, {"qubits": [72], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset72"}, {"qubits": [73], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset73"}, {"qubits": [74], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset74"}, {"qubits": [75], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset75"}, {"qubits": [76], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset76"}, {"qubits": [77], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset77"}, {"qubits": [78], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset78"}, {"qubits": [79], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset79"}, {"qubits": [80], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset80"}, {"qubits": [81], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset81"}, {"qubits": [82], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset82"}, {"qubits": [83], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset83"}, {"qubits": [84], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset84"}, {"qubits": [85], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset85"}, {"qubits": [86], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset86"}, {"qubits": [87], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset87"}, {"qubits": [88], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset88"}, {"qubits": [89], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset89"}, {"qubits": [90], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset90"}, {"qubits": [91], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset91"}, {"qubits": [92], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset92"}, {"qubits": [93], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset93"}, {"qubits": [94], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset94"}, {"qubits": [95], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset95"}, {"qubits": [96], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset96"}, {"qubits": [97], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset97"}, {"qubits": [98], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset98"}, {"qubits": [99], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset99"}, {"qubits": [100], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset100"}, {"qubits": [101], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset101"}, {"qubits": [102], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset102"}, {"qubits": [103], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset103"}, {"qubits": [104], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset104"}, {"qubits": [105], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset105"}, {"qubits": [106], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset106"}, {"qubits": [107], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset107"}, {"qubits": [108], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset108"}, {"qubits": [109], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset109"}, {"qubits": [110], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset110"}, {"qubits": [111], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset111"}, {"qubits": [112], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset112"}, {"qubits": [113], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset113"}, {"qubits": [114], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset114"}, {"qubits": [115], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset115"}, {"qubits": [116], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset116"}, {"qubits": [117], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset117"}, {"qubits": [118], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset118"}, {"qubits": [119], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset119"}, {"qubits": [120], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset120"}, {"qubits": [121], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset121"}, {"qubits": [122], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset122"}, {"qubits": [123], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset123"}, {"qubits": [124], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset124"}, {"qubits": [125], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset125"}, {"qubits": [126], "gate": "reset", "parameters": [{"date": "2022-04-12T23:42:47+09:00", "name": "gate_length", "unit": "ns", "value": 899.5555555555555}], "name": "reset126"}], "general": [{"date": "2022-04-12T23:42:47+09:00", "name": "jq_6272", "unit": "GHz", "value": 0.0015893743610210058}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_6272", "unit": "GHz", "value": -5.153161156591121e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_6768", "unit": "GHz", "value": 0.0015381479874964465}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_6768", "unit": "GHz", "value": -6.707551271023765e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_4445", "unit": "GHz", "value": 0.0015772848326498568}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_4445", "unit": "GHz", "value": -7.922983934706823e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_99100", "unit": "GHz", "value": 0.0016043008011147417}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_99100", "unit": "GHz", "value": -4.385241884341091e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_108112", "unit": "GHz", "value": 0.0016558874172806811}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_108112", "unit": "GHz", "value": -3.790726353690773e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_4041", "unit": "GHz", "value": 0.001586136973379255}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_4041", "unit": "GHz", "value": -3.457778180333763e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_014", "unit": "GHz", "value": 0.0015954922416336027}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_014", "unit": "GHz", "value": -3.629129382620682e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_1730", "unit": "GHz", "value": 0.0015634984446992969}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_1730", "unit": "GHz", "value": -3.415787717967923e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_100101", "unit": "GHz", "value": 0.00153842261143064}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_100101", "unit": "GHz", "value": -3.2328775756208226e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_9198", "unit": "GHz", "value": 0.001531627845165153}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_9198", "unit": "GHz", "value": -3.312411972140125e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_100110", "unit": "GHz", "value": 0.0016116123950235424}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_100110", "unit": "GHz", "value": -0.0001393678172097581}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_7590", "unit": "GHz", "value": 0.0015756531136840173}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_7590", "unit": "GHz", "value": -0.00010125128671943979}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_4142", "unit": "GHz", "value": 0.0015408672076546819}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_4142", "unit": "GHz", "value": -4.3881109829390654e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_9697", "unit": "GHz", "value": 0.0012406760211642485}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_9697", "unit": "GHz", "value": -2.2010283382424854e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_1819", "unit": "GHz", "value": 0.0015711128690209634}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_1819", "unit": "GHz", "value": -7.961177350202366e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_5568", "unit": "GHz", "value": 0.0015746768183416571}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_5568", "unit": "GHz", "value": -3.3896410189659334e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_910", "unit": "GHz", "value": 0.0014900994982691158}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_910", "unit": "GHz", "value": -3.0802207094185985e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_4955", "unit": "GHz", "value": 0.0015861601156919596}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_4955", "unit": "GHz", "value": -3.539017509184685e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_106107", "unit": "GHz", "value": 0.0015426544473798607}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_106107", "unit": "GHz", "value": -3.344536306592496e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_4748", "unit": "GHz", "value": 0.0015388696533935094}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_4748", "unit": "GHz", "value": -3.218967633623444e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_4243", "unit": "GHz", "value": 0.0015579607193038642}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_4243", "unit": "GHz", "value": -3.58821736275811e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_107108", "unit": "GHz", "value": 0.001571124673309255}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_107108", "unit": "GHz", "value": -4.0092558269744975e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_7385", "unit": "GHz", "value": 0.0015371919504524741}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_7385", "unit": "GHz", "value": -3.2611788680460305e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_3839", "unit": "GHz", "value": 0.0015258549000598182}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_3839", "unit": "GHz", "value": -3.2927493941815806e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_2033", "unit": "GHz", "value": 0.001506569301315574}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_2033", "unit": "GHz", "value": -3.0147424291303383e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_103104", "unit": "GHz", "value": 0.0015887264283778106}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_103104", "unit": "GHz", "value": -3.646992911847355e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_4849", "unit": "GHz", "value": 0.0015518531334525543}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_4849", "unit": "GHz", "value": -4.8445802819407315e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_8081", "unit": "GHz", "value": 0.0015042981591207936}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_8081", "unit": "GHz", "value": -3.65206130920311e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_7576", "unit": "GHz", "value": 0.0015667796533482988}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_7576", "unit": "GHz", "value": -3.5952335633132144e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_6673", "unit": "GHz", "value": 0.0015530521918067392}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_6673", "unit": "GHz", "value": -7.269703249800299e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_8586", "unit": "GHz", "value": 0.0015518235283562421}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_8586", "unit": "GHz", "value": -4.3293073429094165e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_110118", "unit": "GHz", "value": 0.0016385288769949944}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_110118", "unit": "GHz", "value": -5.373705864454364e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_8182", "unit": "GHz", "value": 0.001538590766211106}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_8182", "unit": "GHz", "value": -3.8070387006376876e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_1626", "unit": "GHz", "value": 0.0015359453435550164}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_1626", "unit": "GHz", "value": -3.280050670538959e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_9094", "unit": "GHz", "value": 0.0015933142964268952}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_9094", "unit": "GHz", "value": -3.604369918605383e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_118119", "unit": "GHz", "value": 0.001546939763567485}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_118119", "unit": "GHz", "value": -4.2423641347995264e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_1213", "unit": "GHz", "value": 0.0014882702590732378}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_1213", "unit": "GHz", "value": -3.4966752557466976e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_7778", "unit": "GHz", "value": 0.0016503051612488141}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_7778", "unit": "GHz", "value": -6.665463012629353e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_2223", "unit": "GHz", "value": 0.0017122345978737654}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_2223", "unit": "GHz", "value": -3.9849034061746205e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_4950", "unit": "GHz", "value": 0.0015605537529760783}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_4950", "unit": "GHz", "value": -3.535375355780893e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_104105", "unit": "GHz", "value": 0.001592523457547003}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_104105", "unit": "GHz", "value": -4.344382773772441e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_114115", "unit": "GHz", "value": 0.0016715295010066447}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_114115", "unit": "GHz", "value": -4.6698054583018646e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_4546", "unit": "GHz", "value": 0.001549237001321004}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_4546", "unit": "GHz", "value": -0.00012488460862775707}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_5051", "unit": "GHz", "value": 0.0016021648698065854}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_5051", "unit": "GHz", "value": -5.559437614699151e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_105106", "unit": "GHz", "value": 0.0015346457227215168}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_105106", "unit": "GHz", "value": -3.154609142661235e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_7281", "unit": "GHz", "value": 0.0015958331624699779}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_7281", "unit": "GHz", "value": -5.80556139486311e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_8283", "unit": "GHz", "value": 0.0014464523279930828}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_8283", "unit": "GHz", "value": -2.738139754223847e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_4647", "unit": "GHz", "value": 0.0015597112176311163}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_4647", "unit": "GHz", "value": -4.067214459070028e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_2324", "unit": "GHz", "value": 0.001464573144758338}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_2324", "unit": "GHz", "value": -0.00010795637116703578}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_7879", "unit": "GHz", "value": 0.0016248933226060886}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_7879", "unit": "GHz", "value": -0.00013072566789708195}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_8384", "unit": "GHz", "value": 0.0013987707440848438}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_8384", "unit": "GHz", "value": -3.2397375104477165e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_115116", "unit": "GHz", "value": 0.0015675579119459168}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_115116", "unit": "GHz", "value": -3.7257730209341275e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_1920", "unit": "GHz", "value": 0.0015742252150570376}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_1920", "unit": "GHz", "value": -5.633552918903018e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_2425", "unit": "GHz", "value": 0.001252256175407972}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_2425", "unit": "GHz", "value": -2.27989233267447e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_7980", "unit": "GHz", "value": 0.0015161762715107101}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_7980", "unit": "GHz", "value": -3.118691750385077e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_5657", "unit": "GHz", "value": 0.0015675680748025512}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_5657", "unit": "GHz", "value": -3.5572613292167896e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_93106", "unit": "GHz", "value": 0.0015550722646171663}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_93106", "unit": "GHz", "value": -3.532635264385119e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_116117", "unit": "GHz", "value": 0.0016246319883045839}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_116117", "unit": "GHz", "value": -7.079296298439475e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_2021", "unit": "GHz", "value": 0.0015558890746510403}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_2021", "unit": "GHz", "value": -3.9380511992934864e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_1217", "unit": "GHz", "value": 0.0015317787051710651}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_1217", "unit": "GHz", "value": -4.7497705335910666e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_4153", "unit": "GHz", "value": 0.0016085958357351013}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_4153", "unit": "GHz", "value": -3.439608089402877e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_5758", "unit": "GHz", "value": 0.0015572235925567445}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_5758", "unit": "GHz", "value": -3.832794357188279e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_8793", "unit": "GHz", "value": 0.0015797008539764092}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_8793", "unit": "GHz", "value": -3.379806615914824e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_3031", "unit": "GHz", "value": 0.0015665238207737812}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_3031", "unit": "GHz", "value": -3.274766076736432e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_2526", "unit": "GHz", "value": 0.0015296860146300462}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_2526", "unit": "GHz", "value": -3.664768321999046e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_7991", "unit": "GHz", "value": 0.0016280518870061462}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_7991", "unit": "GHz", "value": -3.501440372084966e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_2627", "unit": "GHz", "value": 0.0014633077219937084}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_2627", "unit": "GHz", "value": -2.9799358918578832e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_2122", "unit": "GHz", "value": 0.0017766260024123022}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_2122", "unit": "GHz", "value": -4.3395026372733763e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_5871", "unit": "GHz", "value": 0.0013851494155602939}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_5871", "unit": "GHz", "value": -3.171728259802866e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_8687", "unit": "GHz", "value": 0.0015964473371298342}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_8687", "unit": "GHz", "value": -0.00013363643147242628}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_415", "unit": "GHz", "value": 0.0014767115443703412}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_415", "unit": "GHz", "value": -3.468293641634379e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_3132", "unit": "GHz", "value": 0.0015141802576360663}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_3132", "unit": "GHz", "value": -3.201568197848904e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_113114", "unit": "GHz", "value": 0.0016403850781655201}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_113114", "unit": "GHz", "value": -3.957115242809174e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_104111", "unit": "GHz", "value": 0.0015687849345632813}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_104111", "unit": "GHz", "value": -3.33279821149318e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_123124", "unit": "GHz", "value": 0.0015782796066391338}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_123124", "unit": "GHz", "value": -4.3059885164477633e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_2728", "unit": "GHz", "value": 0.0015841142784424921}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_2728", "unit": "GHz", "value": -3.8938324726037454e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_3443", "unit": "GHz", "value": 0.0015453898984645162}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_3443", "unit": "GHz", "value": -3.433392505788384e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_119120", "unit": "GHz", "value": 0.0015776302470351035}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_119120", "unit": "GHz", "value": -5.266080806155969e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_6465", "unit": "GHz", "value": 0.0015958911132320825}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_6465", "unit": "GHz", "value": -4.5442937901008644e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_5464", "unit": "GHz", "value": 0.001576679716331868}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_5464", "unit": "GHz", "value": -7.686922633598047e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_3236", "unit": "GHz", "value": 0.0016109982936531966}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_3236", "unit": "GHz", "value": -3.84042391228478e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_6061", "unit": "GHz", "value": 0.0015732887188372963}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_6061", "unit": "GHz", "value": -0.0001325886682748704}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_56", "unit": "GHz", "value": 0.001530482684353271}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_56", "unit": "GHz", "value": -3.293822859026119e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_1418", "unit": "GHz", "value": 0.0015411699749950274}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_1418", "unit": "GHz", "value": -3.7100077869229254e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_8788", "unit": "GHz", "value": 0.0015761431867652995}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_8788", "unit": "GHz", "value": -3.6276992735422685e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_9798", "unit": "GHz", "value": 0.0013288656534542016}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_9798", "unit": "GHz", "value": -2.5185623240605232e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_12", "unit": "GHz", "value": 0.0011382965117452079}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_12", "unit": "GHz", "value": -1.8272493060961367e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_112126", "unit": "GHz", "value": 0.0015383777968721911}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_112126", "unit": "GHz", "value": -3.359923892445979e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_2829", "unit": "GHz", "value": 0.0015851184059181306}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_2829", "unit": "GHz", "value": -5.930212612336176e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_4554", "unit": "GHz", "value": 0.0015459636713688332}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_4554", "unit": "GHz", "value": -4.0976252258782746e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_3651", "unit": "GHz", "value": 0.0015998011915181402}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_3651", "unit": "GHz", "value": -3.829215828970983e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_8889", "unit": "GHz", "value": 0.0015198185046608457}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_8889", "unit": "GHz", "value": -3.7994433859634446e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_120121", "unit": "GHz", "value": 0.0015347586584273968}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_120121", "unit": "GHz", "value": -3.3314154049084524e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_1522", "unit": "GHz", "value": 0.0015125307208254434}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_1522", "unit": "GHz", "value": -3.8366470270315655e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_2434", "unit": "GHz", "value": 0.0013794525408086426}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_2434", "unit": "GHz", "value": -3.515518712466932e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_8485", "unit": "GHz", "value": 0.0014978829407936347}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_8485", "unit": "GHz", "value": -4.5353090852078286e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_2930", "unit": "GHz", "value": 0.0015508358298139944}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_2930", "unit": "GHz", "value": -3.4215415874426256e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_6162", "unit": "GHz", "value": 0.001515079441194676}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_6162", "unit": "GHz", "value": -3.211594352367707e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_7074", "unit": "GHz", "value": 0.0014749189549699661}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_7074", "unit": "GHz", "value": -0.00018500152813354648}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_121122", "unit": "GHz", "value": 0.001959290602337981}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_121122", "unit": "GHz", "value": -0.00017358259730592044}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_23", "unit": "GHz", "value": 0.0011375466140322932}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_23", "unit": "GHz", "value": -1.8723514443166323e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_122123", "unit": "GHz", "value": 0.0017450222756857435}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_122123", "unit": "GHz", "value": -5.122390662724129e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_6263", "unit": "GHz", "value": 0.001544341194781152}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_6263", "unit": "GHz", "value": -3.337586366472766e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_117118", "unit": "GHz", "value": 0.0016196563953563149}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_117118", "unit": "GHz", "value": -4.0375664549570536e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_9495", "unit": "GHz", "value": 0.0016263184662854949}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_9495", "unit": "GHz", "value": -3.537937087689829e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_3752", "unit": "GHz", "value": 0.0015781789267504656}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_3752", "unit": "GHz", "value": -4.447322222511424e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_34", "unit": "GHz", "value": 0.0015495878806979341}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_34", "unit": "GHz", "value": -3.222261087830109e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_5859", "unit": "GHz", "value": 0.0015219304213857493}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_5859", "unit": "GHz", "value": -3.099057279833872e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_3339", "unit": "GHz", "value": 0.0015381759448985656}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_3339", "unit": "GHz", "value": -3.2069965904811166e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_9596", "unit": "GHz", "value": 0.0012555549094641224}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_9596", "unit": "GHz", "value": -2.210351337919617e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_6869", "unit": "GHz", "value": 0.001598487650946047}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_6869", "unit": "GHz", "value": -5.541901951308851e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_6364", "unit": "GHz", "value": 0.001625826387662386}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_6364", "unit": "GHz", "value": -6.795647380988697e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_7177", "unit": "GHz", "value": 0.0015119944739010159}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_7177", "unit": "GHz", "value": -2.9856540190461325e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_111122", "unit": "GHz", "value": 0.0016744829632728093}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_111122", "unit": "GHz", "value": -3.776450817747717e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_45", "unit": "GHz", "value": 0.0007263955404962947}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_45", "unit": "GHz", "value": -7.351469832689036e-06}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_5960", "unit": "GHz", "value": 0.0016031544702451647}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_5960", "unit": "GHz", "value": -3.991036225629179e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_96109", "unit": "GHz", "value": 0.0015010602575627927}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_96109", "unit": "GHz", "value": -3.6975782648663737e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_124125", "unit": "GHz", "value": 0.00156878109508567}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_124125", "unit": "GHz", "value": -6.703441269758996e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_6970", "unit": "GHz", "value": 0.001567331334255826}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_6970", "unit": "GHz", "value": -6.141472398021701e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_3547", "unit": "GHz", "value": 0.0015484287846327836}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_3547", "unit": "GHz", "value": -3.303672188733751e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_101102", "unit": "GHz", "value": 0.0015613829215848818}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_101102", "unit": "GHz", "value": -3.6422963901738176e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_01", "unit": "GHz", "value": 0.0015559481120743497}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_01", "unit": "GHz", "value": -3.5728862790148477e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_6566", "unit": "GHz", "value": 0.0015225824037319682}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_6566", "unit": "GHz", "value": -3.98092869361823e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_1011", "unit": "GHz", "value": 0.0015661047794198462}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_1011", "unit": "GHz", "value": -8.94570888191485e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_3738", "unit": "GHz", "value": 0.0015996369888956173}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_3738", "unit": "GHz", "value": -3.525571512399311e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_2835", "unit": "GHz", "value": 0.0015649098365214085}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_2835", "unit": "GHz", "value": -3.8321082564200744e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_102103", "unit": "GHz", "value": 0.0015910816430847754}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_102103", "unit": "GHz", "value": -9.108561965411156e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_92102", "unit": "GHz", "value": 0.0015508909523788059}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_92102", "unit": "GHz", "value": -3.9523096576434215e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_67", "unit": "GHz", "value": 0.001517764367930423}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_67", "unit": "GHz", "value": -3.0575572239308155e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_9899", "unit": "GHz", "value": 0.0018876993608326455}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_9899", "unit": "GHz", "value": -4.8693694920205746e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_4344", "unit": "GHz", "value": 0.0015407367358577654}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_4344", "unit": "GHz", "value": -3.332065454019932e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_5256", "unit": "GHz", "value": 0.0015976607523600502}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_5256", "unit": "GHz", "value": -4.890737373290537e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_125126", "unit": "GHz", "value": 0.0016067524806593543}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_125126", "unit": "GHz", "value": -3.869099005615013e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_3940", "unit": "GHz", "value": 0.0015857754686656438}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_3940", "unit": "GHz", "value": -4.224832878646115e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_816", "unit": "GHz", "value": 0.0015767628916912805}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_816", "unit": "GHz", "value": -5.348488633721974e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_1112", "unit": "GHz", "value": 0.0014560207926420483}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_1112", "unit": "GHz", "value": -0.001365632126749738}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_6667", "unit": "GHz", "value": 0.0015605339000232478}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_6667", "unit": "GHz", "value": 0.00015249911332026987}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_7677", "unit": "GHz", "value": 0.001557199750824864}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_7677", "unit": "GHz", "value": -4.462978536572354e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_8392", "unit": "GHz", "value": 0.001439179822582791}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_8392", "unit": "GHz", "value": -2.8547167189421134e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_7489", "unit": "GHz", "value": 0.0014429025935602567}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_7489", "unit": "GHz", "value": -2.882882402795507e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_78", "unit": "GHz", "value": 0.001543029040497689}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_78", "unit": "GHz", "value": -3.43032087578231e-05}, {"date": "2022-04-12T23:42:47+09:00", "name": "jq_5360", "unit": "GHz", "value": 0.0017451535875958586}, {"date": "2022-04-12T23:42:47+09:00", "name": "zz_5360", "unit": "GHz", "value": -4.3811424383102456e-05}]} \ No newline at end of file diff --git a/qiskit/providers/fake_provider/backends_v1/fake_20q/__init__.py b/qiskit/providers/fake_provider/backends_v1/fake_20q/__init__.py deleted file mode 100644 index 3de83ced3aed..000000000000 --- a/qiskit/providers/fake_provider/backends_v1/fake_20q/__init__.py +++ /dev/null @@ -1,18 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2023. -# -# 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. - - -""" -A 20 qubit fake :class:`.BackendV1` without pulse capabilities. -""" - -from .fake_20q import Fake20QV1 diff --git a/qiskit/providers/fake_provider/backends_v1/fake_20q/conf_singapore.json b/qiskit/providers/fake_provider/backends_v1/fake_20q/conf_singapore.json deleted file mode 100644 index 4e2166aea49c..000000000000 --- a/qiskit/providers/fake_provider/backends_v1/fake_20q/conf_singapore.json +++ /dev/null @@ -1 +0,0 @@ -{"backend_name": "ibmq_singapore", "backend_version": "1.1.13", "n_qubits": 20, "basis_gates": ["id", "u1", "u2", "u3", "cx"], "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]]}, {"name": "u1", "parameters": ["lambda"], "qasm_def": "gate u1(lambda) q { U(0,0,lambda) q; }", "coupling_map": [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19]]}, {"name": "u2", "parameters": ["phi", "lambda"], "qasm_def": "gate u2(phi,lambda) q { U(pi/2,phi,lambda) q; }", "coupling_map": [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19]]}, {"name": "u3", "parameters": ["theta", "phi", "lambda"], "qasm_def": "gate u3(theta,phi,lambda) q { U(theta,phi,lambda) q; }", "coupling_map": [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19]]}, {"name": "cx", "parameters": [], "qasm_def": "gate cx q1,q2 { CX q1,q2; }", "coupling_map": [[0, 1], [1, 0], [1, 2], [1, 6], [2, 1], [2, 3], [3, 2], [3, 4], [3, 8], [4, 3], [5, 6], [5, 10], [6, 1], [6, 5], [6, 7], [7, 6], [7, 8], [7, 12], [8, 3], [8, 7], [8, 9], [9, 8], [9, 14], [10, 5], [10, 11], [11, 10], [11, 12], [11, 16], [12, 7], [12, 11], [12, 13], [13, 12], [13, 14], [13, 18], [14, 9], [14, 13], [15, 16], [16, 11], [16, 15], [16, 17], [17, 16], [17, 18], [18, 13], [18, 17], [18, 19], [19, 18]]}], "local": false, "simulator": false, "conditional": false, "open_pulse": true, "memory": true, "max_shots": 8192, "coupling_map": [[0, 1], [1, 0], [1, 2], [1, 6], [2, 1], [2, 3], [3, 2], [3, 4], [3, 8], [4, 3], [5, 6], [5, 10], [6, 1], [6, 5], [6, 7], [7, 6], [7, 8], [7, 12], [8, 3], [8, 7], [8, 9], [9, 8], [9, 14], [10, 5], [10, 11], [11, 10], [11, 12], [11, 16], [12, 7], [12, 11], [12, 13], [13, 12], [13, 14], [13, 18], [14, 9], [14, 13], [15, 16], [16, 11], [16, 15], [16, 17], [17, 16], [17, 18], [18, 13], [18, 17], [18, 19], [19, 18]], "max_experiments": 900, "sample_name": "HexV2", "n_registers": 1, "credits_required": true, "online_date": "2019-09-13T04:00:00+00:00", "description": "20 qubit device Singapore", "allow_q_object": true, "parametric_pulses": [], "quantum_volume": 16, "qubit_channel_mapping": [["u1", "d0", "u0", "m0"], ["u4", "u2", "m1", "u12", "u1", "d1", "u0", "u3"], ["u4", "u2", "u5", "m2", "u6", "d2"], ["d3", "u9", "u5", "m3", "u7", "u8", "u6", "u18"], ["u7", "u9", "d4", "m4"], ["m5", "u11", "u23", "d5", "u10", "u13"], ["m6", "u15", "u12", "u10", "u3", "d6", "u13", "u14"], ["m7", "u17", "u15", "u16", "u19", "u14", "d7", "u28"], ["u21", "m8", "u16", "u19", "u20", "u8", "d8", "u18"], ["u21", "u22", "u34", "u20", "d9", "m9"], ["u25", "m10", "d10", "u11", "u23", "u24"], ["u25", "u37", "m11", "u27", "u29", "u24", "d11", "u26"], ["d12", "u17", "u29", "u30", "u31", "m12", "u26", "u28"], ["m13", "u33", "u42", "d13", "u30", "u31", "u32", "u35"], ["d14", "u22", "u34", "m14", "u32", "u35"], ["m15", "d15", "u38", "u36"], ["u37", "u40", "m16", "u27", "u39", "u38", "d16", "u36"], ["u40", "d17", "u43", "m17", "u39", "u41"], ["u44", "d18", "u33", "u42", "u45", "u43", "m18", "u41"], ["m19", "u45", "d19", "u44"]], "uchannels_enabled": true, "url": "None", "allow_object_storage": true, "n_uchannels": 46, "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": 6, "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": 4, "scale": [1.0, 0.0]}], [{"q": 8, "scale": [1.0, 0.0]}], [{"q": 3, "scale": [1.0, 0.0]}], [{"q": 6, "scale": [1.0, 0.0]}], [{"q": 10, "scale": [1.0, 0.0]}], [{"q": 1, "scale": [1.0, 0.0]}], [{"q": 5, "scale": [1.0, 0.0]}], [{"q": 7, "scale": [1.0, 0.0]}], [{"q": 6, "scale": [1.0, 0.0]}], [{"q": 8, "scale": [1.0, 0.0]}], [{"q": 12, "scale": [1.0, 0.0]}], [{"q": 3, "scale": [1.0, 0.0]}], [{"q": 7, "scale": [1.0, 0.0]}], [{"q": 9, "scale": [1.0, 0.0]}], [{"q": 8, "scale": [1.0, 0.0]}], [{"q": 14, "scale": [1.0, 0.0]}], [{"q": 5, "scale": [1.0, 0.0]}], [{"q": 11, "scale": [1.0, 0.0]}], [{"q": 10, "scale": [1.0, 0.0]}], [{"q": 12, "scale": [1.0, 0.0]}], [{"q": 16, "scale": [1.0, 0.0]}], [{"q": 7, "scale": [1.0, 0.0]}], [{"q": 11, "scale": [1.0, 0.0]}], [{"q": 13, "scale": [1.0, 0.0]}], [{"q": 12, "scale": [1.0, 0.0]}], [{"q": 14, "scale": [1.0, 0.0]}], [{"q": 18, "scale": [1.0, 0.0]}], [{"q": 9, "scale": [1.0, 0.0]}], [{"q": 13, "scale": [1.0, 0.0]}], [{"q": 16, "scale": [1.0, 0.0]}], [{"q": 11, "scale": [1.0, 0.0]}], [{"q": 15, "scale": [1.0, 0.0]}], [{"q": 17, "scale": [1.0, 0.0]}], [{"q": 16, "scale": [1.0, 0.0]}], [{"q": 18, "scale": [1.0, 0.0]}], [{"q": 13, "scale": [1.0, 0.0]}], [{"q": 17, "scale": [1.0, 0.0]}], [{"q": 19, "scale": [1.0, 0.0]}], [{"q": 18, "scale": [1.0, 0.0]}]], "meas_levels": [1, 2], "qubit_lo_range": [[4.176321350062806, 5.176321350062806], [4.282790529176784, 5.282790529176784], [4.185502719873838, 5.185502719873838], [4.21767569718313, 5.21767569718313], [4.064147093422013, 5.064147093422013], [3.808846173810418, 4.808846173810418], [4.162686808975333, 5.162686808975334], [4.331134269144208, 5.331134269144208], [4.123097496697334, 5.123097496697334], [4.197980034429182, 5.197980034429182], [3.9243193490113266, 4.924319349011326], [4.021508270412113, 5.021508270412114], [4.10416601470807, 5.1041660147080705], [4.125160645713068, 5.125160645713068], [4.257535595961577, 5.257535595961577], [3.9883207852468425, 4.9883207852468425], [4.238359118088121, 5.238359118088121], [4.383190383079356, 5.383190383079356], [4.028968332514318, 5.028968332514319], [4.19779891351244, 5.19779891351244]], "meas_lo_range": [[6.785777689000001, 7.785777689000001], [6.555576728, 7.555576728], [6.720664312, 7.720664312], [6.618610929000001, 7.618610929000001], [6.693309034, 7.693309034], [6.500534077, 7.500534077], [6.637857804, 7.637857804], [6.521968581, 7.521968581], [6.7839043850000005, 7.7839043850000005], [6.591852045, 7.591852045], [6.795858600000001, 7.795858600000001], [6.564261930000001, 7.564261930000001], [6.7226899300000005, 7.7226899300000005], [6.648983726, 7.648983726000001], [6.681472156000001, 7.681472156000001], [6.513838988000001, 7.513838988000001], [6.667396121, 7.667396121], [6.5362908310000005, 7.5362908310000005], [6.807096121000001, 7.807096121000001], [6.60740465, 7.60740465]], "meas_kernels": ["boxcar"], "discriminators": ["linear_discriminator", "quadratic_discriminator"], "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}^{19}\\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_{11,16}(\\sigma_{11}^{+}\\sigma_{16}^{-}+\\sigma_{11}^{-}\\sigma_{16}^{+}) + J_{10,11}(\\sigma_{10}^{+}\\sigma_{11}^{-}+\\sigma_{10}^{-}\\sigma_{11}^{+}) + J_{7,12}(\\sigma_{7}^{+}\\sigma_{12}^{-}+\\sigma_{7}^{-}\\sigma_{12}^{+}) + J_{5,6}(\\sigma_{5}^{+}\\sigma_{6}^{-}+\\sigma_{5}^{-}\\sigma_{6}^{+}) \\\\ & + J_{8,9}(\\sigma_{8}^{+}\\sigma_{9}^{-}+\\sigma_{8}^{-}\\sigma_{9}^{+}) + J_{15,16}(\\sigma_{15}^{+}\\sigma_{16}^{-}+\\sigma_{15}^{-}\\sigma_{16}^{+}) + J_{1,6}(\\sigma_{1}^{+}\\sigma_{6}^{-}+\\sigma_{1}^{-}\\sigma_{6}^{+}) + J_{18,19}(\\sigma_{18}^{+}\\sigma_{19}^{-}+\\sigma_{18}^{-}\\sigma_{19}^{+}) \\\\ & + J_{1,2}(\\sigma_{1}^{+}\\sigma_{2}^{-}+\\sigma_{1}^{-}\\sigma_{2}^{+}) + J_{16,17}(\\sigma_{16}^{+}\\sigma_{17}^{-}+\\sigma_{16}^{-}\\sigma_{17}^{+}) + J_{6,7}(\\sigma_{6}^{+}\\sigma_{7}^{-}+\\sigma_{6}^{-}\\sigma_{7}^{+}) + J_{12,13}(\\sigma_{12}^{+}\\sigma_{13}^{-}+\\sigma_{12}^{-}\\sigma_{13}^{+}) \\\\ & + J_{3,4}(\\sigma_{3}^{+}\\sigma_{4}^{-}+\\sigma_{3}^{-}\\sigma_{4}^{+}) + J_{9,14}(\\sigma_{9}^{+}\\sigma_{14}^{-}+\\sigma_{9}^{-}\\sigma_{14}^{+}) + J_{2,3}(\\sigma_{2}^{+}\\sigma_{3}^{-}+\\sigma_{2}^{-}\\sigma_{3}^{+}) + J_{11,12}(\\sigma_{11}^{+}\\sigma_{12}^{-}+\\sigma_{11}^{-}\\sigma_{12}^{+}) \\\\ & + J_{17,18}(\\sigma_{17}^{+}\\sigma_{18}^{-}+\\sigma_{17}^{-}\\sigma_{18}^{+}) + J_{0,1}(\\sigma_{0}^{+}\\sigma_{1}^{-}+\\sigma_{0}^{-}\\sigma_{1}^{+}) + J_{5,10}(\\sigma_{5}^{+}\\sigma_{10}^{-}+\\sigma_{5}^{-}\\sigma_{10}^{+}) + J_{13,14}(\\sigma_{13}^{+}\\sigma_{14}^{-}+\\sigma_{13}^{-}\\sigma_{14}^{+}) \\\\ & + J_{3,8}(\\sigma_{3}^{+}\\sigma_{8}^{-}+\\sigma_{3}^{-}\\sigma_{8}^{+}) + J_{13,18}(\\sigma_{13}^{+}\\sigma_{18}^{-}+\\sigma_{13}^{-}\\sigma_{18}^{+}) + J_{7,8}(\\sigma_{7}^{+}\\sigma_{8}^{-}+\\sigma_{7}^{-}\\sigma_{8}^{+}) \\\\ & + \\Omega_{d,0}(U_{0}^{(0,1)}(t))\\sigma_{0}^{X} + \\Omega_{d,1}(U_{1}^{(1,0)}(t)+U_{3}^{(1,6)}(t)+U_{2}^{(1,2)}(t))\\sigma_{1}^{X} \\\\ & + \\Omega_{d,2}(U_{4}^{(2,1)}(t)+U_{5}^{(2,3)}(t))\\sigma_{2}^{X} + \\Omega_{d,3}(U_{7}^{(3,4)}(t)+U_{6}^{(3,2)}(t)+U_{8}^{(3,8)}(t))\\sigma_{3}^{X} \\\\ & + \\Omega_{d,4}(U_{9}^{(4,3)}(t))\\sigma_{4}^{X} + \\Omega_{d,5}(U_{11}^{(5,10)}(t)+U_{10}^{(5,6)}(t))\\sigma_{5}^{X} \\\\ & + \\Omega_{d,6}(U_{14}^{(6,7)}(t)+U_{12}^{(6,1)}(t)+U_{13}^{(6,5)}(t))\\sigma_{6}^{X} + \\Omega_{d,7}(U_{15}^{(7,6)}(t)+U_{16}^{(7,8)}(t)+U_{17}^{(7,12)}(t))\\sigma_{7}^{X} \\\\ & + \\Omega_{d,8}(U_{19}^{(8,7)}(t)+U_{18}^{(8,3)}(t)+U_{20}^{(8,9)}(t))\\sigma_{8}^{X} + \\Omega_{d,9}(U_{21}^{(9,8)}(t)+U_{22}^{(9,14)}(t))\\sigma_{9}^{X} \\\\ & + \\Omega_{d,10}(U_{24}^{(10,11)}(t)+U_{23}^{(10,5)}(t))\\sigma_{10}^{X} + \\Omega_{d,11}(U_{25}^{(11,10)}(t)+U_{26}^{(11,12)}(t)+U_{27}^{(11,16)}(t))\\sigma_{11}^{X} \\\\ & + \\Omega_{d,12}(U_{28}^{(12,7)}(t)+U_{30}^{(12,13)}(t)+U_{29}^{(12,11)}(t))\\sigma_{12}^{X} + \\Omega_{d,13}(U_{31}^{(13,12)}(t)+U_{32}^{(13,14)}(t)+U_{33}^{(13,18)}(t))\\sigma_{13}^{X} \\\\ & + \\Omega_{d,14}(U_{34}^{(14,9)}(t)+U_{35}^{(14,13)}(t))\\sigma_{14}^{X} + \\Omega_{d,15}(U_{36}^{(15,16)}(t))\\sigma_{15}^{X} \\\\ & + \\Omega_{d,16}(U_{38}^{(16,15)}(t)+U_{39}^{(16,17)}(t)+U_{37}^{(16,11)}(t))\\sigma_{16}^{X} + \\Omega_{d,17}(U_{41}^{(17,18)}(t)+U_{40}^{(17,16)}(t))\\sigma_{17}^{X} \\\\ & + \\Omega_{d,18}(U_{42}^{(18,13)}(t)+U_{43}^{(18,17)}(t)+U_{44}^{(18,19)}(t))\\sigma_{18}^{X} + \\Omega_{d,19}(U_{45}^{(19,18)}(t))\\sigma_{19}^{X} \\\\ \\end{align}", "h_str": ["_SUM[i,0,19,wq{i}/2*(I{i}-Z{i})]", "_SUM[i,0,19,delta{i}/2*O{i}*O{i}]", "_SUM[i,0,19,-delta{i}/2*O{i}]", "_SUM[i,0,19,omegad{i}*X{i}||D{i}]", "jq11q16*Sp11*Sm16", "jq11q16*Sm11*Sp16", "jq10q11*Sp10*Sm11", "jq10q11*Sm10*Sp11", "jq7q12*Sp7*Sm12", "jq7q12*Sm7*Sp12", "jq5q6*Sp5*Sm6", "jq5q6*Sm5*Sp6", "jq8q9*Sp8*Sm9", "jq8q9*Sm8*Sp9", "jq15q16*Sp15*Sm16", "jq15q16*Sm15*Sp16", "jq1q6*Sp1*Sm6", "jq1q6*Sm1*Sp6", "jq18q19*Sp18*Sm19", "jq18q19*Sm18*Sp19", "jq1q2*Sp1*Sm2", "jq1q2*Sm1*Sp2", "jq16q17*Sp16*Sm17", "jq16q17*Sm16*Sp17", "jq6q7*Sp6*Sm7", "jq6q7*Sm6*Sp7", "jq12q13*Sp12*Sm13", "jq12q13*Sm12*Sp13", "jq3q4*Sp3*Sm4", "jq3q4*Sm3*Sp4", "jq9q14*Sp9*Sm14", "jq9q14*Sm9*Sp14", "jq2q3*Sp2*Sm3", "jq2q3*Sm2*Sp3", "jq11q12*Sp11*Sm12", "jq11q12*Sm11*Sp12", "jq17q18*Sp17*Sm18", "jq17q18*Sm17*Sp18", "jq0q1*Sp0*Sm1", "jq0q1*Sm0*Sp1", "jq5q10*Sp5*Sm10", "jq5q10*Sm5*Sp10", "jq13q14*Sp13*Sm14", "jq13q14*Sm13*Sp14", "jq3q8*Sp3*Sm8", "jq3q8*Sm3*Sp8", "jq13q18*Sp13*Sm18", "jq13q18*Sm13*Sp18", "jq7q8*Sp7*Sm8", "jq7q8*Sm7*Sp8", "omegad1*X0||U0", "omegad0*X1||U1", "omegad6*X1||U3", "omegad2*X1||U2", "omegad1*X2||U4", "omegad3*X2||U5", "omegad4*X3||U7", "omegad2*X3||U6", "omegad8*X3||U8", "omegad3*X4||U9", "omegad10*X5||U11", "omegad6*X5||U10", "omegad7*X6||U14", "omegad1*X6||U12", "omegad5*X6||U13", "omegad6*X7||U15", "omegad8*X7||U16", "omegad12*X7||U17", "omegad7*X8||U19", "omegad3*X8||U18", "omegad9*X8||U20", "omegad8*X9||U21", "omegad14*X9||U22", "omegad11*X10||U24", "omegad5*X10||U23", "omegad10*X11||U25", "omegad12*X11||U26", "omegad16*X11||U27", "omegad7*X12||U28", "omegad13*X12||U30", "omegad11*X12||U29", "omegad12*X13||U31", "omegad14*X13||U32", "omegad18*X13||U33", "omegad9*X14||U34", "omegad13*X14||U35", "omegad16*X15||U36", "omegad15*X16||U38", "omegad17*X16||U39", "omegad11*X16||U37", "omegad18*X17||U41", "omegad16*X17||U40", "omegad13*X18||U42", "omegad17*X18||U43", "omegad19*X18||U44", "omegad18*X19||U45"], "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}, "vars": {"delta0": 0, "delta1": 0, "delta10": 0, "delta11": 0, "delta12": 0, "delta13": 0, "delta14": 0, "delta15": 0, "delta16": 0, "delta17": 0, "delta18": 0, "delta19": 0, "delta2": 0, "delta3": 0, "delta4": 0, "delta5": 0, "delta6": 0, "delta7": 0, "delta8": 0, "delta9": 0, "jq0q1": 0.01433892239814213, "jq10q11": 0.010525409616727677, "jq11q12": 0.015112292332169557, "jq11q16": 0.007383931535627764, "jq12q13": 0.00954723740103017, "jq13q14": 0.011743925884500983, "jq13q18": 0.008449187811309803, "jq15q16": 0.01268272946810536, "jq16q17": 0.014027838431486793, "jq17q18": 0.009991545329492273, "jq18q19": 0.005039913180091045, "jq1q2": 0.01783155649165556, "jq1q6": 0.007455172260903687, "jq2q3": 0.010483442612952266, "jq3q4": 0.010965763703036821, "jq3q8": 0.00778913964520363, "jq5q10": 0, "jq5q6": 0.014034790830320562, "jq6q7": 0.013132052583182657, "jq7q12": 0.00920812439711768, "jq7q8": 0.011895087847184233, "jq8q9": 0.013211093140145862, "jq9q14": 0.007991177432644736, "omegad0": 0.47949242926005, "omegad1": 0.46118734073033163, "omegad10": 0.3943799172798586, "omegad11": 0.43262586054427343, "omegad12": 0.40091693264351463, "omegad13": 0.37874281938149945, "omegad14": 0.4306310161386568, "omegad15": 0.36146990854842387, "omegad16": 0.6212952725431784, "omegad17": 0.4861452519032759, "omegad18": 0.28078096538595176, "omegad19": 2.1407654262304083, "omegad2": 0.5104562308366655, "omegad3": 0.36262688270569465, "omegad4": 0.5194338453827934, "omegad5": 0.34447607292812266, "omegad6": 0.4290526887210772, "omegad7": 0.48299294736914783, "omegad8": 0.40155938463476015, "omegad9": 0.6251285757697845, "wq0": 29.382193598364832, "wq1": 30.051159180241246, "wq10": 27.798818327978314, "wq11": 28.409474330944377, "wq12": 28.928828255429337, "wq13": 29.060741412489598, "wq14": 29.892477754929654, "wq15": 28.200951211771702, "wq16": 29.7719883909117, "wq17": 30.68199006712486, "wq18": 28.456347283535596, "wq19": 29.517141109465587, "wq2": 29.439881846261294, "wq3": 29.642030624579252, "wq4": 28.67738195719561, "wq5": 27.073278970182592, "wq6": 29.296525250133886, "wq7": 30.35491185689868, "wq8": 29.047778264907418, "wq9": 29.518279125748485}}, "rep_times": [1000.0], "dt": 0.2222222222222222, "dtm": 0.2222222222222222, "dynamic_reprate_enabled": false, "meas_map": [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]], "acquisition_latency": [], "conditional_latency": []} \ No newline at end of file diff --git a/qiskit/providers/fake_provider/backends_v1/fake_20q/fake_20q.py b/qiskit/providers/fake_provider/backends_v1/fake_20q/fake_20q.py deleted file mode 100644 index d278a5b14f2f..000000000000 --- a/qiskit/providers/fake_provider/backends_v1/fake_20q/fake_20q.py +++ /dev/null @@ -1,43 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2023. -# -# 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. - -""" -A 20 qubit fake :class:`.BackendV1` without pulse capabilities. -""" - -import os -from qiskit.providers.fake_provider import fake_qasm_backend - - -class Fake20QV1(fake_qasm_backend.FakeQasmBackend): - """A fake backend with the following characteristics: - - * num_qubits: 20 - * coupling_map: - - .. code-block:: text - - 00 ↔ 01 ↔ 02 ↔ 03 ↔ 04 - ↕ ↕ - 05 ↔ 06 ↔ 07 ↔ 08 ↔ 09 - ↕ ↕ ↕ - 10 ↔ 11 ↔ 12 ↔ 13 ↔ 14 - ↕ ↕ - 15 ↔ 16 ↔ 17 ↔ 18 ↔ 19 - - * basis_gates: ``["id", "u1", "u2", "u3", "cx"]`` - """ - - dirname = os.path.dirname(__file__) - conf_filename = "conf_singapore.json" - props_filename = "props_singapore.json" - backend_name = "fake_20q_v1" diff --git a/qiskit/providers/fake_provider/backends_v1/fake_20q/props_singapore.json b/qiskit/providers/fake_provider/backends_v1/fake_20q/props_singapore.json deleted file mode 100644 index 7e05d5e62102..000000000000 --- a/qiskit/providers/fake_provider/backends_v1/fake_20q/props_singapore.json +++ /dev/null @@ -1 +0,0 @@ -{"backend_name": "ibmq_singapore", "backend_version": "1.1.13", "last_update_date": "2020-08-07T15:58:39-04:00", "qubits": [[{"date": "2020-08-07T00:13:59-04:00", "name": "T1", "unit": "\u00b5s", "value": 80.76647215797854}, {"date": "2020-08-07T12:59:20-04:00", "name": "T2", "unit": "\u00b5s", "value": 103.1850742657474}, {"date": "2020-08-07T15:58:39-04:00", "name": "frequency", "unit": "GHz", "value": 4.676321350062806}, {"date": "2020-08-07T15:58:39-04:00", "name": "readout_error", "unit": "", "value": 0.03700000000000003}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.042}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.03200000000000003}], [{"date": "2020-08-07T12:58:10-04:00", "name": "T1", "unit": "\u00b5s", "value": 85.21632715068766}, {"date": "2020-08-07T13:00:24-04:00", "name": "T2", "unit": "\u00b5s", "value": 120.83538782206891}, {"date": "2020-08-07T15:58:39-04:00", "name": "frequency", "unit": "GHz", "value": 4.782790529176784}, {"date": "2020-08-07T15:58:39-04:00", "name": "readout_error", "unit": "", "value": 0.026499999999999968}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.03600000000000003}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.017}], [{"date": "2020-08-07T12:58:10-04:00", "name": "T1", "unit": "\u00b5s", "value": 96.0030940276451}, {"date": "2020-08-07T12:59:20-04:00", "name": "T2", "unit": "\u00b5s", "value": 95.42642548068407}, {"date": "2020-08-07T15:58:39-04:00", "name": "frequency", "unit": "GHz", "value": 4.685502719873838}, {"date": "2020-08-07T15:58:39-04:00", "name": "readout_error", "unit": "", "value": 0.062000000000000055}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.08299999999999996}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.041}], [{"date": "2020-08-06T00:33:51-04:00", "name": "T1", "unit": "\u00b5s", "value": 102.53352497912229}, {"date": "2020-08-07T13:00:24-04:00", "name": "T2", "unit": "\u00b5s", "value": 72.51786841735041}, {"date": "2020-08-07T15:58:39-04:00", "name": "frequency", "unit": "GHz", "value": 4.71767569718313}, {"date": "2020-08-07T15:58:39-04:00", "name": "readout_error", "unit": "", "value": 0.04849999999999999}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.07099999999999995}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.026}], [{"date": "2020-08-07T12:58:10-04:00", "name": "T1", "unit": "\u00b5s", "value": 77.80506565072605}, {"date": "2020-08-07T12:59:20-04:00", "name": "T2", "unit": "\u00b5s", "value": 67.41922735559389}, {"date": "2020-08-07T15:58:39-04:00", "name": "frequency", "unit": "GHz", "value": 4.564147093422013}, {"date": "2020-08-07T15:58:39-04:00", "name": "readout_error", "unit": "", "value": 0.027000000000000024}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.03700000000000003}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.017}], [{"date": "2020-08-07T12:58:10-04:00", "name": "T1", "unit": "\u00b5s", "value": 126.05315632770711}, {"date": "2020-08-07T12:59:20-04:00", "name": "T2", "unit": "\u00b5s", "value": 100.44060100062184}, {"date": "2020-08-07T15:58:39-04:00", "name": "frequency", "unit": "GHz", "value": 4.308846173810418}, {"date": "2020-08-07T15:58:39-04:00", "name": "readout_error", "unit": "", "value": 0.046499999999999986}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.04600000000000004}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.047}], [{"date": "2020-08-07T12:58:10-04:00", "name": "T1", "unit": "\u00b5s", "value": 93.79875233000948}, {"date": "2020-08-07T13:01:28-04:00", "name": "T2", "unit": "\u00b5s", "value": 81.8652755125058}, {"date": "2020-08-07T15:58:39-04:00", "name": "frequency", "unit": "GHz", "value": 4.662686808975334}, {"date": "2020-08-07T15:58:39-04:00", "name": "readout_error", "unit": "", "value": 0.03950000000000009}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.051000000000000045}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.028}], [{"date": "2020-08-07T12:58:10-04:00", "name": "T1", "unit": "\u00b5s", "value": 77.38936119677233}, {"date": "2020-08-07T12:59:20-04:00", "name": "T2", "unit": "\u00b5s", "value": 88.64077054583497}, {"date": "2020-08-07T15:58:39-04:00", "name": "frequency", "unit": "GHz", "value": 4.831134269144208}, {"date": "2020-08-07T15:58:39-04:00", "name": "readout_error", "unit": "", "value": 0.033500000000000085}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.041000000000000036}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.026}], [{"date": "2020-08-07T12:58:10-04:00", "name": "T1", "unit": "\u00b5s", "value": 100.97632877289676}, {"date": "2020-08-07T13:01:28-04:00", "name": "T2", "unit": "\u00b5s", "value": 150.56104950875826}, {"date": "2020-08-07T15:58:39-04:00", "name": "frequency", "unit": "GHz", "value": 4.623097496697334}, {"date": "2020-08-07T15:58:39-04:00", "name": "readout_error", "unit": "", "value": 0.04200000000000004}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.061000000000000054}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.023}], [{"date": "2020-08-07T12:58:10-04:00", "name": "T1", "unit": "\u00b5s", "value": 71.80174924722972}, {"date": "2020-08-07T12:59:20-04:00", "name": "T2", "unit": "\u00b5s", "value": 103.99005502756981}, {"date": "2020-08-07T15:58:39-04:00", "name": "frequency", "unit": "GHz", "value": 4.697980034429182}, {"date": "2020-08-07T15:58:39-04:00", "name": "readout_error", "unit": "", "value": 0.04150000000000009}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.05400000000000005}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.029}], [{"date": "2020-08-05T06:22:12-04:00", "name": "T1", "unit": "\u00b5s", "value": 95.62539747119419}, {"date": "2020-08-07T00:16:18-04:00", "name": "T2", "unit": "\u00b5s", "value": 111.8983488576345}, {"date": "2020-08-07T15:58:39-04:00", "name": "frequency", "unit": "GHz", "value": 4.424319349011326}, {"date": "2020-08-07T15:58:39-04:00", "name": "readout_error", "unit": "", "value": 0.031000000000000028}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.050000000000000044}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.012}], [{"date": "2020-08-07T12:58:10-04:00", "name": "T1", "unit": "\u00b5s", "value": 77.61172441253042}, {"date": "2020-08-07T12:59:20-04:00", "name": "T2", "unit": "\u00b5s", "value": 139.2376089418993}, {"date": "2020-08-07T15:58:39-04:00", "name": "frequency", "unit": "GHz", "value": 4.521508270412114}, {"date": "2020-08-07T15:58:39-04:00", "name": "readout_error", "unit": "", "value": 0.08800000000000008}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.153}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.02300000000000002}], [{"date": "2020-08-07T12:58:10-04:00", "name": "T1", "unit": "\u00b5s", "value": 76.01914769020868}, {"date": "2020-08-07T13:00:24-04:00", "name": "T2", "unit": "\u00b5s", "value": 116.45663812256316}, {"date": "2020-08-07T15:58:39-04:00", "name": "frequency", "unit": "GHz", "value": 4.6041660147080705}, {"date": "2020-08-07T15:58:39-04:00", "name": "readout_error", "unit": "", "value": 0.03500000000000003}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.041000000000000036}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.029}], [{"date": "2020-08-07T12:58:10-04:00", "name": "T1", "unit": "\u00b5s", "value": 84.3252920201103}, {"date": "2020-08-07T12:59:20-04:00", "name": "T2", "unit": "\u00b5s", "value": 124.27283162468451}, {"date": "2020-08-07T15:58:39-04:00", "name": "frequency", "unit": "GHz", "value": 4.625160645713068}, {"date": "2020-08-07T15:58:39-04:00", "name": "readout_error", "unit": "", "value": 0.05349999999999999}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.07999999999999996}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.027}], [{"date": "2020-08-07T12:58:10-04:00", "name": "T1", "unit": "\u00b5s", "value": 52.27506783642015}, {"date": "2020-08-07T13:00:24-04:00", "name": "T2", "unit": "\u00b5s", "value": 84.99368071739273}, {"date": "2020-08-07T15:58:39-04:00", "name": "frequency", "unit": "GHz", "value": 4.757535595961577}, {"date": "2020-08-07T15:58:39-04:00", "name": "readout_error", "unit": "", "value": 0.03500000000000003}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.04400000000000004}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.026}], [{"date": "2020-08-07T12:58:10-04:00", "name": "T1", "unit": "\u00b5s", "value": 79.83577685903552}, {"date": "2020-08-07T12:59:20-04:00", "name": "T2", "unit": "\u00b5s", "value": 140.56928254056706}, {"date": "2020-08-07T15:58:39-04:00", "name": "frequency", "unit": "GHz", "value": 4.4883207852468425}, {"date": "2020-08-07T15:58:39-04:00", "name": "readout_error", "unit": "", "value": 0.0675}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.09599999999999997}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.039}], [{"date": "2020-08-07T12:58:10-04:00", "name": "T1", "unit": "\u00b5s", "value": 103.58869793956289}, {"date": "2020-08-07T13:00:24-04:00", "name": "T2", "unit": "\u00b5s", "value": 100.13589168230422}, {"date": "2020-08-07T15:58:39-04:00", "name": "frequency", "unit": "GHz", "value": 4.738359118088121}, {"date": "2020-08-07T15:58:39-04:00", "name": "readout_error", "unit": "", "value": 0.08250000000000002}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.03600000000000003}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.129}], [{"date": "2020-08-07T12:58:10-04:00", "name": "T1", "unit": "\u00b5s", "value": 88.44932561291988}, {"date": "2020-08-07T12:59:20-04:00", "name": "T2", "unit": "\u00b5s", "value": 135.41411802104795}, {"date": "2020-08-07T15:58:39-04:00", "name": "frequency", "unit": "GHz", "value": 4.883190383079356}, {"date": "2020-08-07T15:58:39-04:00", "name": "readout_error", "unit": "", "value": 0.017000000000000015}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.029000000000000026}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.005}], [{"date": "2020-08-05T06:22:12-04:00", "name": "T1", "unit": "\u00b5s", "value": 104.95615443376836}, {"date": "2020-08-07T13:00:24-04:00", "name": "T2", "unit": "\u00b5s", "value": 78.98824661664469}, {"date": "2020-08-07T15:58:39-04:00", "name": "frequency", "unit": "GHz", "value": 4.528968332514319}, {"date": "2020-08-07T15:58:39-04:00", "name": "readout_error", "unit": "", "value": 0.08699999999999997}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.11}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.06399999999999995}], [{"date": "2020-07-23T05:18:28-04:00", "name": "T1", "unit": "\u00b5s", "value": 97.62533424057203}, {"date": "2020-08-07T12:59:20-04:00", "name": "T2", "unit": "\u00b5s", "value": 107.48189650268917}, {"date": "2020-08-07T15:58:39-04:00", "name": "frequency", "unit": "GHz", "value": 4.69779891351244}, {"date": "2020-08-07T15:58:39-04:00", "name": "readout_error", "unit": "", "value": 0.027000000000000024}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.04500000000000004}, {"date": "2020-08-07T15:58:39-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.009}]], "gates": [{"qubits": [0], "gate": "id", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.0005160852020009473}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id_0"}, {"qubits": [0], "gate": "u1", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "u1_0"}, {"qubits": [0], "gate": "u2", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.0005160852020009473}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "u2_0"}, {"qubits": [0], "gate": "u3", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.0010319040600662577}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 71.11111111111111}], "name": "u3_0"}, {"qubits": [1], "gate": "id", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0.0006025973411985286}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id_1"}, {"qubits": [1], "gate": "u1", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "u1_1"}, {"qubits": [1], "gate": "u2", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0.0006025973411985286}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "u2_1"}, {"qubits": [1], "gate": "u3", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0.0012048315588413239}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 71.11111111111111}], "name": "u3_1"}, {"qubits": [2], "gate": "id", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.0008835373184889258}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id_2"}, {"qubits": [2], "gate": "u1", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "u1_2"}, {"qubits": [2], "gate": "u2", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.0008835373184889258}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "u2_2"}, {"qubits": [2], "gate": "u3", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.001766293998784585}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 71.11111111111111}], "name": "u3_2"}, {"qubits": [3], "gate": "id", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0.0011119765202945485}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id_3"}, {"qubits": [3], "gate": "u1", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "u1_3"}, {"qubits": [3], "gate": "u2", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0.0011119765202945485}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "u2_3"}, {"qubits": [3], "gate": "u3", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0.0022227165488075684}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 71.11111111111111}], "name": "u3_3"}, {"qubits": [4], "gate": "id", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.00034948828727556365}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id_4"}, {"qubits": [4], "gate": "u1", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "u1_4"}, {"qubits": [4], "gate": "u2", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.00034948828727556365}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "u2_4"}, {"qubits": [4], "gate": "u3", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.0006988544324881829}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 71.11111111111111}], "name": "u3_4"}, {"qubits": [5], "gate": "id", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.0004226571606376794}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id_5"}, {"qubits": [5], "gate": "u1", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "u1_5"}, {"qubits": [5], "gate": "u2", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.0004226571606376794}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "u2_5"}, {"qubits": [5], "gate": "u3", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.0008451356822000156}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 71.11111111111111}], "name": "u3_5"}, {"qubits": [6], "gate": "id", "parameters": [{"date": "2020-08-07T13:05:57-04:00", "name": "gate_error", "unit": "", "value": 0.0004497328946631434}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id_6"}, {"qubits": [6], "gate": "u1", "parameters": [{"date": "2020-08-07T13:05:57-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "u1_6"}, {"qubits": [6], "gate": "u2", "parameters": [{"date": "2020-08-07T13:05:57-04:00", "name": "gate_error", "unit": "", "value": 0.0004497328946631434}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "u2_6"}, {"qubits": [6], "gate": "u3", "parameters": [{"date": "2020-08-07T13:05:57-04:00", "name": "gate_error", "unit": "", "value": 0.000899263529649641}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 71.11111111111111}], "name": "u3_6"}, {"qubits": [7], "gate": "id", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.00042151986134583415}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id_7"}, {"qubits": [7], "gate": "u1", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "u1_7"}, {"qubits": [7], "gate": "u2", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.00042151986134583415}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "u2_7"}, {"qubits": [7], "gate": "u3", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.0008428620436982115}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 71.11111111111111}], "name": "u3_7"}, {"qubits": [8], "gate": "id", "parameters": [{"date": "2020-08-07T13:05:57-04:00", "name": "gate_error", "unit": "", "value": 0.0006902956808651572}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id_8"}, {"qubits": [8], "gate": "u1", "parameters": [{"date": "2020-08-07T13:05:57-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "u1_8"}, {"qubits": [8], "gate": "u2", "parameters": [{"date": "2020-08-07T13:05:57-04:00", "name": "gate_error", "unit": "", "value": 0.0006902956808651572}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "u2_8"}, {"qubits": [8], "gate": "u3", "parameters": [{"date": "2020-08-07T13:05:57-04:00", "name": "gate_error", "unit": "", "value": 0.0013801148536033425}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 71.11111111111111}], "name": "u3_8"}, {"qubits": [9], "gate": "id", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.00034168739608509275}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id_9"}, {"qubits": [9], "gate": "u1", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "u1_9"}, {"qubits": [9], "gate": "u2", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.00034168739608509275}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "u2_9"}, {"qubits": [9], "gate": "u3", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.0006832580418935086}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 71.11111111111111}], "name": "u3_9"}, {"qubits": [10], "gate": "id", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0.0005414343349337161}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id_10"}, {"qubits": [10], "gate": "u1", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "u1_10"}, {"qubits": [10], "gate": "u2", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0.0005414343349337161}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "u2_10"}, {"qubits": [10], "gate": "u3", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0.001082575518728368}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 71.11111111111111}], "name": "u3_10"}, {"qubits": [11], "gate": "id", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.0004412666934877997}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id_11"}, {"qubits": [11], "gate": "u1", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "u1_11"}, {"qubits": [11], "gate": "u2", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.0004412666934877997}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "u2_11"}, {"qubits": [11], "gate": "u3", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.0008823386706807712}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 71.11111111111111}], "name": "u3_11"}, {"qubits": [12], "gate": "id", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0.002418470751455315}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id_12"}, {"qubits": [12], "gate": "u1", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "u1_12"}, {"qubits": [12], "gate": "u2", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0.002418470751455315}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "u2_12"}, {"qubits": [12], "gate": "u3", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0.0048310925021349815}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 71.11111111111111}], "name": "u3_12"}, {"qubits": [13], "gate": "id", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.0034540229553000575}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id_13"}, {"qubits": [13], "gate": "u1", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "u1_13"}, {"qubits": [13], "gate": "u2", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.0034540229553000575}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "u2_13"}, {"qubits": [13], "gate": "u3", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.006896115636024436}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 71.11111111111111}], "name": "u3_13"}, {"qubits": [14], "gate": "id", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0.0004650159214016284}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id_14"}, {"qubits": [14], "gate": "u1", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "u1_14"}, {"qubits": [14], "gate": "u2", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0.0004650159214016284}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "u2_14"}, {"qubits": [14], "gate": "u3", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0.000929815602995987}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 71.11111111111111}], "name": "u3_14"}, {"qubits": [15], "gate": "id", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.0002991509355199688}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id_15"}, {"qubits": [15], "gate": "u1", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "u1_15"}, {"qubits": [15], "gate": "u2", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.0002991509355199688}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "u2_15"}, {"qubits": [15], "gate": "u3", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.0005982123797577676}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 71.11111111111111}], "name": "u3_15"}, {"qubits": [16], "gate": "id", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0.00026857819972321746}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id_16"}, {"qubits": [16], "gate": "u1", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "u1_16"}, {"qubits": [16], "gate": "u2", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0.00026857819972321746}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "u2_16"}, {"qubits": [16], "gate": "u3", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0.000537084265197163}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 71.11111111111111}], "name": "u3_16"}, {"qubits": [17], "gate": "id", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.0003320220331980694}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id_17"}, {"qubits": [17], "gate": "u1", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "u1_17"}, {"qubits": [17], "gate": "u2", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.0003320220331980694}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "u2_17"}, {"qubits": [17], "gate": "u3", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.0006639338277655282}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 71.11111111111111}], "name": "u3_17"}, {"qubits": [18], "gate": "id", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0.0005087548183899764}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id_18"}, {"qubits": [18], "gate": "u1", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "u1_18"}, {"qubits": [18], "gate": "u2", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0.0005087548183899764}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "u2_18"}, {"qubits": [18], "gate": "u3", "parameters": [{"date": "2020-08-07T13:04:21-04:00", "name": "gate_error", "unit": "", "value": 0.0010172508053146734}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 71.11111111111111}], "name": "u3_18"}, {"qubits": [19], "gate": "id", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.0007915072651845985}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id_19"}, {"qubits": [19], "gate": "u1", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "u1_19"}, {"qubits": [19], "gate": "u2", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.0007915072651845985}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "u2_19"}, {"qubits": [19], "gate": "u3", "parameters": [{"date": "2020-08-07T13:02:30-04:00", "name": "gate_error", "unit": "", "value": 0.001582388046618366}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 71.11111111111111}], "name": "u3_19"}, {"qubits": [0, 1], "gate": "cx", "parameters": [{"date": "2020-08-07T13:10:33-04:00", "name": "gate_error", "unit": "", "value": 0.017053816287762147}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 504.88888888888886}], "name": "cx0_1"}, {"qubits": [1, 0], "gate": "cx", "parameters": [{"date": "2020-08-07T13:10:33-04:00", "name": "gate_error", "unit": "", "value": 0.017053816287762147}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 540.4444444444445}], "name": "cx1_0"}, {"qubits": [1, 2], "gate": "cx", "parameters": [{"date": "2020-08-07T13:15:33-04:00", "name": "gate_error", "unit": "", "value": 0.01759912513960274}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 704}], "name": "cx1_2"}, {"qubits": [1, 6], "gate": "cx", "parameters": [{"date": "2020-08-07T13:20:43-04:00", "name": "gate_error", "unit": "", "value": 0.020077457516567282}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 704}], "name": "cx1_6"}, {"qubits": [2, 1], "gate": "cx", "parameters": [{"date": "2020-08-07T13:15:33-04:00", "name": "gate_error", "unit": "", "value": 0.01759912513960274}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 739.5555555555555}], "name": "cx2_1"}, {"qubits": [2, 3], "gate": "cx", "parameters": [{"date": "2020-08-07T13:26:26-04:00", "name": "gate_error", "unit": "", "value": 0.021126469225575095}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 640}], "name": "cx2_3"}, {"qubits": [3, 2], "gate": "cx", "parameters": [{"date": "2020-08-07T13:26:26-04:00", "name": "gate_error", "unit": "", "value": 0.021126469225575095}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 675.5555555555555}], "name": "cx3_2"}, {"qubits": [3, 4], "gate": "cx", "parameters": [{"date": "2020-08-07T13:31:31-04:00", "name": "gate_error", "unit": "", "value": 0.012155580132117899}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 547.5555555555555}], "name": "cx3_4"}, {"qubits": [3, 8], "gate": "cx", "parameters": [{"date": "2020-08-07T13:36:35-04:00", "name": "gate_error", "unit": "", "value": 0.02088286756739946}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 497.77777777777777}], "name": "cx3_8"}, {"qubits": [4, 3], "gate": "cx", "parameters": [{"date": "2020-08-07T13:31:31-04:00", "name": "gate_error", "unit": "", "value": 0.012155580132117899}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 512}], "name": "cx4_3"}, {"qubits": [5, 6], "gate": "cx", "parameters": [{"date": "2020-08-07T13:41:32-04:00", "name": "gate_error", "unit": "", "value": 0.02790217171387821}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 1031.111111111111}], "name": "cx5_6"}, {"qubits": [5, 10], "gate": "cx", "parameters": [{"date": "2020-08-07T14:11:49-04:00", "name": "gate_error", "unit": "", "value": 0.013957233864205748}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 746.6666666666666}], "name": "cx5_10"}, {"qubits": [6, 1], "gate": "cx", "parameters": [{"date": "2020-08-07T13:20:43-04:00", "name": "gate_error", "unit": "", "value": 0.020077457516567282}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 739.5555555555555}], "name": "cx6_1"}, {"qubits": [6, 5], "gate": "cx", "parameters": [{"date": "2020-08-07T13:41:32-04:00", "name": "gate_error", "unit": "", "value": 0.02790217171387821}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 995.5555555555555}], "name": "cx6_5"}, {"qubits": [6, 7], "gate": "cx", "parameters": [{"date": "2020-08-07T13:46:56-04:00", "name": "gate_error", "unit": "", "value": 0.012710982927153086}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 540.4444444444445}], "name": "cx6_7"}, {"qubits": [7, 6], "gate": "cx", "parameters": [{"date": "2020-08-07T13:46:56-04:00", "name": "gate_error", "unit": "", "value": 0.012710982927153086}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 576}], "name": "cx7_6"}, {"qubits": [7, 8], "gate": "cx", "parameters": [{"date": "2020-08-07T13:52:07-04:00", "name": "gate_error", "unit": "", "value": 0.014913038682319107}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 618.6666666666666}], "name": "cx7_8"}, {"qubits": [7, 12], "gate": "cx", "parameters": [{"date": "2020-08-07T13:57:11-04:00", "name": "gate_error", "unit": "", "value": 0.013580196483768542}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 547.5555555555555}], "name": "cx7_12"}, {"qubits": [8, 3], "gate": "cx", "parameters": [{"date": "2020-08-07T13:36:35-04:00", "name": "gate_error", "unit": "", "value": 0.02088286756739946}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 533.3333333333333}], "name": "cx8_3"}, {"qubits": [8, 7], "gate": "cx", "parameters": [{"date": "2020-08-07T13:52:07-04:00", "name": "gate_error", "unit": "", "value": 0.014913038682319107}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 654.2222222222222}], "name": "cx8_7"}, {"qubits": [8, 9], "gate": "cx", "parameters": [{"date": "2020-08-07T14:02:11-04:00", "name": "gate_error", "unit": "", "value": 0.012066630040035331}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 284.44444444444446}], "name": "cx8_9"}, {"qubits": [9, 8], "gate": "cx", "parameters": [{"date": "2020-08-07T14:02:11-04:00", "name": "gate_error", "unit": "", "value": 0.012066630040035331}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 248.88888888888889}], "name": "cx9_8"}, {"qubits": [9, 14], "gate": "cx", "parameters": [{"date": "2020-08-07T14:06:59-04:00", "name": "gate_error", "unit": "", "value": 0.012265570501715645}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 348.4444444444444}], "name": "cx9_14"}, {"qubits": [10, 5], "gate": "cx", "parameters": [{"date": "2020-08-07T14:11:49-04:00", "name": "gate_error", "unit": "", "value": 0.013957233864205748}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 711.1111111111111}], "name": "cx10_5"}, {"qubits": [10, 11], "gate": "cx", "parameters": [{"date": "2020-08-07T14:16:58-04:00", "name": "gate_error", "unit": "", "value": 0.01393043596427826}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 462.2222222222222}], "name": "cx10_11"}, {"qubits": [11, 10], "gate": "cx", "parameters": [{"date": "2020-08-07T14:16:58-04:00", "name": "gate_error", "unit": "", "value": 0.01393043596427826}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 426.66666666666663}], "name": "cx11_10"}, {"qubits": [11, 12], "gate": "cx", "parameters": [{"date": "2020-08-07T14:21:59-04:00", "name": "gate_error", "unit": "", "value": 0.013317906154926507}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 440.88888888888886}], "name": "cx11_12"}, {"qubits": [11, 16], "gate": "cx", "parameters": [{"date": "2020-08-07T14:41:59-04:00", "name": "gate_error", "unit": "", "value": 0.01087761711917909}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 568.8888888888889}], "name": "cx11_16"}, {"qubits": [12, 7], "gate": "cx", "parameters": [{"date": "2020-08-07T13:57:11-04:00", "name": "gate_error", "unit": "", "value": 0.013580196483768542}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 583.1111111111111}], "name": "cx12_7"}, {"qubits": [12, 11], "gate": "cx", "parameters": [{"date": "2020-08-07T14:21:59-04:00", "name": "gate_error", "unit": "", "value": 0.013317906154926507}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 476.4444444444444}], "name": "cx12_11"}, {"qubits": [12, 13], "gate": "cx", "parameters": [{"date": "2020-08-07T14:26:56-04:00", "name": "gate_error", "unit": "", "value": 0.024657200887183345}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 483.55555555555554}], "name": "cx12_13"}, {"qubits": [13, 12], "gate": "cx", "parameters": [{"date": "2020-08-07T14:26:56-04:00", "name": "gate_error", "unit": "", "value": 0.024657200887183345}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 448}], "name": "cx13_12"}, {"qubits": [13, 14], "gate": "cx", "parameters": [{"date": "2020-08-07T14:37:05-04:00", "name": "gate_error", "unit": "", "value": 0.0185936715562022}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx13_14"}, {"qubits": [13, 18], "gate": "cx", "parameters": [{"date": "2020-08-07T14:31:58-04:00", "name": "gate_error", "unit": "", "value": 0.024211777231952503}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 647.1111111111111}], "name": "cx13_18"}, {"qubits": [14, 9], "gate": "cx", "parameters": [{"date": "2020-08-07T14:06:59-04:00", "name": "gate_error", "unit": "", "value": 0.012265570501715645}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 384}], "name": "cx14_9"}, {"qubits": [14, 13], "gate": "cx", "parameters": [{"date": "2020-08-07T14:37:05-04:00", "name": "gate_error", "unit": "", "value": 0.0185936715562022}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 369.77777777777777}], "name": "cx14_13"}, {"qubits": [15, 16], "gate": "cx", "parameters": [{"date": "2020-08-07T14:46:58-04:00", "name": "gate_error", "unit": "", "value": 0.007691147840443252}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 426.66666666666663}], "name": "cx15_16"}, {"qubits": [16, 11], "gate": "cx", "parameters": [{"date": "2020-08-07T14:41:59-04:00", "name": "gate_error", "unit": "", "value": 0.01087761711917909}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 533.3333333333333}], "name": "cx16_11"}, {"qubits": [16, 15], "gate": "cx", "parameters": [{"date": "2020-08-07T14:46:58-04:00", "name": "gate_error", "unit": "", "value": 0.007691147840443252}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 391.1111111111111}], "name": "cx16_15"}, {"qubits": [16, 17], "gate": "cx", "parameters": [{"date": "2020-08-07T14:51:54-04:00", "name": "gate_error", "unit": "", "value": 0.013279740930025902}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 590.2222222222222}], "name": "cx16_17"}, {"qubits": [17, 16], "gate": "cx", "parameters": [{"date": "2020-08-07T14:51:54-04:00", "name": "gate_error", "unit": "", "value": 0.013279740930025902}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 554.6666666666666}], "name": "cx17_16"}, {"qubits": [17, 18], "gate": "cx", "parameters": [{"date": "2020-08-07T14:56:58-04:00", "name": "gate_error", "unit": "", "value": 0.020744579269272284}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 760.8888888888888}], "name": "cx17_18"}, {"qubits": [18, 13], "gate": "cx", "parameters": [{"date": "2020-08-07T14:31:58-04:00", "name": "gate_error", "unit": "", "value": 0.024211777231952503}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 682.6666666666666}], "name": "cx18_13"}, {"qubits": [18, 17], "gate": "cx", "parameters": [{"date": "2020-08-07T14:56:58-04:00", "name": "gate_error", "unit": "", "value": 0.020744579269272284}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 796.4444444444443}], "name": "cx18_17"}, {"qubits": [18, 19], "gate": "cx", "parameters": [{"date": "2020-08-07T15:02:18-04:00", "name": "gate_error", "unit": "", "value": 0.014414191888841382}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 647.1111111111111}], "name": "cx18_19"}, {"qubits": [19, 18], "gate": "cx", "parameters": [{"date": "2020-08-07T15:02:18-04:00", "name": "gate_error", "unit": "", "value": 0.014414191888841382}, {"date": "2020-08-07T15:58:39-04:00", "name": "gate_length", "unit": "ns", "value": 611.5555555555555}], "name": "cx19_18"}], "general": []} \ No newline at end of file diff --git a/qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/__init__.py b/qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/__init__.py deleted file mode 100644 index 89fc0473ab99..000000000000 --- a/qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/__init__.py +++ /dev/null @@ -1,18 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2023. -# -# 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. - - -""" -A 27 qubit fake :class:`.BackendV1` with pulse capabilities. -""" - -from .fake_27q_pulse_v1 import Fake27QPulseV1 diff --git a/qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/conf_hanoi.json b/qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/conf_hanoi.json deleted file mode 100644 index 48918abcf232..000000000000 --- a/qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/conf_hanoi.json +++ /dev/null @@ -1 +0,0 @@ -{"backend_name": "ibm_hanoi", "backend_version": "1.0.18", "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": ["rz", "play", "measure", "delay", "acquire", "sx", "cx", "reset", "x", "shiftf", "u1", "u3", "u2", "setf", "id"], "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-04-24T04: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": 2341, "measure_esp_enabled": true, "multi_meas_enabled": true, "quantum_volume": 64, "qubit_channel_mapping": [["d0", "m0", "u1", "u0"], ["d1", "m1", "u1", "u3", "u2", "u0", "u4", "u8"], ["m2", "u6", "d2", "u2", "u4", "u5"], ["u7", "u6", "m3", "u10", "u5", "d3"], ["u9", "u13", "d4", "u3", "m4", "u8"], ["m5", "d5", "u7", "u11", "u16", "u10"], ["u12", "u14", "m6", "d6"], ["u12", "u9", "m7", "d7", "u13", "u15", "u14", "u20"], ["u19", "u18", "u22", "d8", "u11", "m8", "u16", "u17"], ["u19", "u17", "m9", "d9"], ["u21", "m10", "u15", "u20", "u24", "d10"], ["u18", "u29", "u22", "m11", "u23", "d11"], ["u21", "m12", "u32", "u27", "u26", "u24", "u25", "d12"], ["m13", "u30", "u27", "d13", "u25", "u28"], ["u34", "m14", "u30", "u29", "d14", "u23", "u31", "u28"], ["u32", "u33", "u26", "u37", "d15", "m15"], ["u40", "u34", "u35", "m16", "d16", "u31"], ["d17", "m17", "u36", "u38"], ["u33", "u37", "u38", "d18", "m18", "u36", "u44", "u39"], ["u43", "u40", "u41", "d19", "u46", "u42", "u35", "m19"], ["u43", "d20", "u41", "m20"], ["d21", "u48", "u44", "m21", "u45", "u39"], ["u47", "d22", "u52", "u46", "u42", "m22"], ["u49", "m23", "u50", "d23", "u48", "u45"], ["u49", "m24", "u53", "u51", "d24", "u50"], ["u47", "d25", "u53", "u52", "u54", "u51", "m25", "u55"], ["u54", "d26", "m26", "u55"]], "supported_features": ["q", "o", "b", "j"], "timing_constraints": {"acquire_alignment": 16, "granularity": 16, "min_length": 64, "pulse_alignment": 1}, "uchannels_enabled": true, "url": "None", "input_allowed": ["job", "runtime"], "allow_object_storage": true, "pulse_num_channels": 9, "pulse_num_qubits": 3, "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.535257503599211, 5.535257503599211], [4.655565118090405, 5.655565118090405], [4.755995040248669, 5.755995040248669], [4.597246059676533, 5.597246059676533], [4.573268319137003, 5.573268319137003], [4.707464807502693, 5.707464807502694], [4.5210015516417, 5.5210015516417], [4.4191505084130815, 5.4191505084130815], [4.530713370275684, 5.530713370275684], [4.3740868671878745, 5.3740868671878745], [4.320985528731567, 5.320985528731567], [4.661695558780752, 5.661695558780752], [4.218894123006918, 5.218894123006918], [4.46239280214447, 5.46239280214447], [4.546578733357967, 5.546578733357967], [4.4233696440290196, 5.4233696440290196], [4.383763459999275, 5.383763459999275], [4.723019531456885, 5.723019531456885], [4.468043966959381, 5.468043966959381], [4.503050223752749, 5.503050223752749], [4.594892970591303, 5.594892970591303], [4.339318141468997, 5.339318141468997], [4.418673448292978, 5.418673448292978], [4.4076099256247945, 5.4076099256247945], [4.491553956799851, 5.491553956799851], [4.312437397584483, 5.312437397584483], [4.5198818619488375, 5.5198818619488375]], "meas_lo_range": [[6.665371582000001, 7.665371582000001], [6.785782665, 7.785782665], [6.673691701, 7.673691701], [6.798730620000001, 7.798730620000001], [6.724593267, 7.724593267], [6.735959639000001, 7.735959639000001], [6.844801469, 7.844801469], [6.60075502, 7.60075502], [6.6045704050000005, 7.6045704050000005], [6.833083734000001, 7.833083734000001], [6.6631827690000005, 7.6631827690000005], [6.720441798, 7.720441798], [6.832567197, 7.832567197], [6.720599967, 7.720599967], [6.775398235000001, 7.775398235000001], [6.774109033, 7.774109033], [6.672388137, 7.672388137], [6.845100488000001, 7.845100488000001], [6.611022672000001, 7.611022672000001], [6.6065729090000005, 7.6065729090000005], [6.843041951, 7.843041951000001], [6.728027087, 7.728027087], [6.730878403, 7.730878403], [6.780402175000001, 7.780402175000001], [6.668562946000001, 7.668562946000001], [6.769199002000001, 7.769199002000001], [6.659368961, 7.659368961]], "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_{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": -2.157041224831975, "delta1": -2.1470913136177914, "delta10": -2.179199229249938, "delta11": -2.1482764555390363, "delta12": -2.187697799628999, "delta13": -2.1679159669239545, "delta14": -2.1649606104048758, "delta15": -2.0114163698303624, "delta16": -2.164629324132, "delta17": -2.1359730614841914, "delta18": -2.161407668573702, "delta19": -2.1562516591097447, "delta2": -2.1343153266481414, "delta20": -2.142745736595441, "delta21": -2.1735320987023714, "delta22": -2.1743400308895575, "delta23": -2.072324818858016, "delta24": -2.158058851091839, "delta25": -2.1782214560405238, "delta26": -2.1531473733722675, "delta3": -2.149540471581805, "delta4": -2.159775522557533, "delta5": -2.138682604866169, "delta6": -2.153042807969977, "delta7": -2.1679141566754763, "delta8": -2.1658067810285995, "delta9": -2.169425156462459, "jq0q1": 0.012734759123798622, "jq10q12": 0.011417499915545304, "jq11q14": 0.012343343710023616, "jq12q13": 0.011867200824785817, "jq12q15": 0.011131027697740188, "jq13q14": 0.012625154781837646, "jq14q16": 0.011855608098151636, "jq15q18": 0.010584498185378198, "jq16q19": 0.01185355420634407, "jq17q18": 0.012647800286754489, "jq18q21": 0.012373611789185456, "jq19q20": 0.012319066126225995, "jq19q22": 0.0123138011595904, "jq1q2": 0.01332937951447704, "jq1q4": 0.012525685683923577, "jq21q23": 0.012224510732381764, "jq22q25": 0.011718172884156514, "jq23q24": 0.01769090656977687, "jq24q25": 0.012218247216343124, "jq25q26": 0.012064894658263593, "jq2q3": 0.013163538112303514, "jq3q5": 0.013027238817800504, "jq4q7": 0.011732650524787553, "jq5q8": 0.01301824712246644, "jq6q7": 0.011211966882748878, "jq7q10": 0.01050583767507357, "jq8q11": 0.012229863026407928, "jq8q9": 0.01226639878700912, "omegad0": 0.9919264188274367, "omegad1": 1.0012306743832295, "omegad10": 1.0475979921710548, "omegad11": 0.9935749585742212, "omegad12": 0.863512243652439, "omegad13": 0.9479167655144832, "omegad14": 0.9616999454263536, "omegad15": 0.7809192810311522, "omegad16": 1.004892715715388, "omegad17": 1.0220345695108837, "omegad18": 0.910686082068096, "omegad19": 0.9881582783370325, "omegad2": 0.9908471618340624, "omegad20": 0.9992675285941648, "omegad21": 1.0073607694654676, "omegad22": 0.9953296228763869, "omegad23": 0.9529724262480962, "omegad24": 1.1202197685659256, "omegad25": 0.9937472020485103, "omegad26": 0.9924737070241095, "omegad3": 1.0108884017652464, "omegad4": 0.9599078861612315, "omegad5": 0.9498666218869168, "omegad6": 1.0086290631554073, "omegad7": 1.1142346724354806, "omegad8": 1.0062285587741442, "omegad9": 0.9791331625664339, "wq0": 31.637455964480324, "wq1": 32.39337100019322, "wq10": 30.2911454402516, "wq11": 32.43188969506535, "wq12": 29.64968621981317, "wq13": 31.179633542887878, "wq14": 31.70858934895974, "wq15": 30.934443809177125, "wq16": 30.685590815607988, "wq17": 32.81719957916191, "wq18": 31.21514085862137, "wq19": 31.435091656964815, "wq2": 33.02439081149922, "wq20": 32.01215665447184, "wq21": 30.40633264324563, "wq22": 30.904936741128786, "wq23": 30.835422578054416, "wq24": 31.36285848135895, "wq25": 30.23743594822439, "wq26": 31.54084795877424, "wq3": 32.026941549238636, "wq4": 31.876284962181288, "wq5": 32.71946636615569, "wq6": 31.547883176601033, "wq7": 30.90793419826607, "wq8": 31.60890433274808, "wq9": 30.62479098983183}}, "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_v1/fake_27q_pulse/defs_hanoi.json b/qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/defs_hanoi.json deleted file mode 100644 index 93d433b9f279..000000000000 --- a/qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/defs_hanoi.json +++ /dev/null @@ -1 +0,0 @@ -{"qubit_freq_est": [5.035257503599211, 5.155565118090405, 5.255995040248669, 5.097246059676533, 5.073268319137003, 5.207464807502694, 5.0210015516417, 4.9191505084130815, 5.030713370275684, 4.8740868671878745, 4.820985528731567, 5.161695558780752, 4.718894123006918, 4.96239280214447, 5.046578733357967, 4.9233696440290196, 4.883763459999275, 5.223019531456885, 4.968043966959381, 5.003050223752749, 5.094892970591303, 4.839318141468997, 4.918673448292978, 4.9076099256247945, 4.991553956799851, 4.812437397584483, 5.0198818619488375], "meas_freq_est": [7.165371582000001, 7.285782665, 7.173691701, 7.298730620000001, 7.224593267, 7.235959639000001, 7.344801469, 7.10075502, 7.1045704050000005, 7.333083734000001, 7.1631827690000005, 7.220441798, 7.332567197, 7.220599967, 7.275398235000001, 7.274109033, 7.172388137, 7.345100488000001, 7.111022672000001, 7.1065729090000005, 7.343041951000001, 7.228027087, 7.230878403, 7.280402175000001, 7.168562946000001, 7.269199002000001, 7.159368961], "buffer": 0, "pulse_library": [{"name": "CX_d10_u15", "samples": [[8.439992961939424e-05, 1.677200270933099e-05], [0.00017078810196835548, 3.393910810700618e-05], [0.00025918424944393337, 5.1505248848116025e-05], [0.0003496073477435857, 6.947417568881065e-05], [0.0004420753102749586, 8.78494611242786e-05], [0.0005366051918826997, 0.0001066344921127893], [0.000633212854154408, 0.0001258324336959049], [0.0007319135474972427, 0.00014544627629220486], [0.0008327207760885358, 0.00016547877748962492], [0.0009356474620290101, 0.00018593241111375391], [0.0010407050140202045, 0.00020680949091911316], [0.0011479035019874573, 0.00022811205417383462], [0.0012572521809488535, 0.0002498418907634914], [0.0013687585014849901, 0.00027200047043152153], [0.0014824284007772803, 0.0002945890591945499], [0.0015982672339305282, 0.00031760858837515116], [0.0017162779113277793, 0.0003410597564652562], [0.0018364625284448266, 0.00036494291271083057], [0.0019588209688663483, 0.00038925802800804377], [0.0020833523012697697, 0.0004140049568377435], [0.0022100526839494705, 0.0004391829716041684], [0.0023389183916151524, 0.00046479119919240475], [0.0024699424393475056, 0.0004908284172415733], [0.0026031166780740023, 0.0005172928213141859], [0.0027384310960769653, 0.000544182606972754], [0.0028758738189935684, 0.0005714952712878585], [0.0030154308769851923, 0.0005992281949147582], [0.003157086903229356, 0.0006273781764321029], [0.0033008242025971413, 0.0006559416651725769], [0.0034466232173144817, 0.0006849149940535426], [0.0035944622941315174, 0.0007142936810851097], [0.003744317451491952, 0.0007440729532390833], [0.0038961635436862707, 0.0007742479210719466], [0.004049972631037235, 0.0008048128802329302], [0.004205713979899883, 0.0008357620099559426], [0.004363356623798609, 0.0008670888491906226], [0.004522866103798151, 0.0008987865876406431], [0.004684205632656813, 0.0009308480657637119], [0.004847336560487747, 0.0009632656001485884], [0.005012219306081533, 0.0009960312163457274], [0.0051788100972771645, 0.001029136124998331], [0.005347063299268484, 0.0010625715367496014], [0.005516932811588049, 0.0010963280219584703], [0.005688367877155542, 0.0011303958017379045], [0.005861318204551935, 0.0011647645151242614], [0.006035728380084038, 0.0011994234519079328], [0.006211543455719948, 0.0012343614362180233], [0.00638870382681489, 0.0012695669429376721], [0.006567150354385376, 0.001305027981288731], [0.006746819708496332, 0.0013407319784164429], [0.006927647162228823, 0.0013766661286354065], [0.007109566126018763, 0.0014128171605989337], [0.007292507216334343, 0.001449171337299049], [0.007476399652659893, 0.001485714572481811], [0.007661170791834593, 0.0015224323142319918], [0.007846745662391186, 0.0015593098942190409], [0.008033046498894691, 0.0015963315963745117], [0.00821999367326498, 0.0016334820538759232], [0.008407508954405785, 0.0016707449685782194], [0.008595508523285389, 0.0017081043915823102], [0.008783907629549503, 0.0017455430934205651], [0.008972619660198689, 0.0017830443102866411], [0.009161558002233505, 0.0018205902306362987], [0.009350634180009365, 0.0018581636250019073], [0.009539755061268806, 0.001895745750516653], [0.009728830307722092, 0.001933318912051618], [0.009917765855789185, 0.0019708641339093447], [0.01010646391659975, 0.002008362440392375], [0.010294832289218903, 0.002045795088633895], [0.010482770390808582, 0.002083142288029194], [0.01067018136382103, 0.0021203847136348486], [0.010856964625418186, 0.002157502342015505], [0.011043018661439419, 0.002194475382566452], [0.011228245683014393, 0.0022312835790216923], [0.011412537656724453, 0.0022679062094539404], [0.01159579772502184, 0.0023043237160891294], [0.011777917854487896, 0.0023405146785080433], [0.011958795599639416, 0.002376458840444684], [0.012138326652348042, 0.0024121354799717665], [0.012316406704485416, 0.002447523409500718], [0.012492929585278034, 0.002482602372765541], [0.012667791917920113, 0.002517350949347019], [0.01284088660031557, 0.0025517484173178673], [0.013012110255658627, 0.002585774287581444], [0.013181357644498348, 0.0026194071397185326], [0.013348524458706379, 0.002652626484632492], [0.013513506390154362, 0.0026854118332266808], [0.013676200062036514, 0.002717742696404457], [0.013836503960192204, 0.0027495981194078922], [0.013994313776493073, 0.0027809583116322756], [0.014149528928101063, 0.0028118027839809656], [0.014302050694823265, 0.0028421117458492517], [0.014451777562499046, 0.002871865639463067], [0.014598613604903221, 0.0029010449070483446], [0.014742459170520306, 0.002929630223661661], [0.014883221127092838, 0.002957602497190237], [0.015020805411040783, 0.00298494310118258], [0.015155117958784103, 0.003011633874848485], [0.015286071226000786, 0.0030376568902283907], [0.015413573011755943, 0.003062993986532092], [0.015537538565695286, 0.0030876286327838898], [0.015657881274819374, 0.003111543133854866], [0.015774518251419067, 0.0031347216572612524], [0.015887370333075523, 0.003157147439196706], [0.015996357426047325, 0.003178805811330676], [0.016101408749818802, 0.0031996809411793947], [0.016202440485358238, 0.0032197581604123116], [0.01629938930273056, 0.003239024430513382], [0.016392186284065247, 0.0032574646174907684], [0.016480762511491776, 0.003275066614151001], [0.016565056517720222, 0.0032918178476393223], [0.016645008698105812, 0.0033077059779316187], [0.016720561310648918, 0.0033227200619876385], [0.016791662201285362, 0.0033368489239364862], [0.016858257353305817, 0.003350082552060485], [0.0169202983379364, 0.0033624116331338882], [0.016977742314338684, 0.003373827086761594], [0.01703055016696453, 0.0033843209967017174], [0.01707867719233036, 0.0033938847482204437], [0.017122091725468636, 0.0034025125205516815], [0.017160765826702118, 0.003410197328776121], [0.01719466783106327, 0.003416934283450246], [0.017223769798874855, 0.0034227175638079643], [0.017248054966330528, 0.0034275436773896217], [0.017267504706978798, 0.003431408666074276], [0.01728210598230362, 0.003434310434386134], [0.0172918438911438, 0.0034362454898655415], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017297323793172836, 0.0034373344387859106], [0.017290672287344933, 0.003436253871768713], [0.017278851941227913, 0.003434333950281143], [0.01726113259792328, 0.0034314554650336504], [0.017237527295947075, 0.003427620977163315], [0.017208050936460495, 0.003422832814976573], [0.01717272773385048, 0.0034170947037637234], [0.017131583765149117, 0.0034104108344763517], [0.017084646970033646, 0.0034027863293886185], [0.017031952738761902, 0.0033942265436053276], [0.01697354018688202, 0.003384737763553858], [0.01690944842994213, 0.0033743265084922314], [0.016839727759361267, 0.003363000927492976], [0.016764426603913307, 0.0033507689367979765], [0.01668360084295273, 0.0033376391511410475], [0.016597306355834007, 0.003323621116578579], [0.016505608335137367, 0.0033087253104895353], [0.01640857197344303, 0.003292962210252881], [0.016306262463331223, 0.003276342758908868], [0.01619875617325306, 0.0032588792964816093], [0.01608613133430481, 0.0032405839301645756], [0.01596846431493759, 0.003221469698473811], [0.01584583893418312, 0.0032015498727560043], [0.01571834273636341, 0.0031808391213417053], [0.01558606419712305, 0.0031593511812388897], [0.015449096448719501, 0.0031371014192700386], [0.01530753169208765, 0.003114105202257633], [0.015161472372710705, 0.0030903788283467293], [0.015011015348136425, 0.0030659381300210953], [0.014856266789138317, 0.003040800103917718], [0.014697329141199589, 0.0030149819795042276], [0.014534314163029194, 0.0029885009862482548], [0.014367328025400639, 0.0029613752849400043], [0.0141964852809906, 0.0029336228035390377], [0.014021899551153183, 0.0029052626341581345], [0.013843685388565063, 0.0028763129375874996], [0.013661962002515793, 0.0028467930387705564], [0.013476846739649773, 0.0028167222626507282], [0.013288461603224277, 0.002786120167002082], [0.013096927665174007, 0.0027550067752599716], [0.012902367860078812, 0.002723401878029108], [0.012704906053841114, 0.0026913254987448454], [0.012504667043685913, 0.0026587978936731815], [0.012301776558160782, 0.002625839551910758], [0.012096361257135868, 0.00259247119538486], [0.011888546869158745, 0.0025587130803614855], [0.011678460985422134, 0.002524586161598563], [0.011466232128441334, 0.0024901109281927347], [0.011251985095441341, 0.0024553078692406416], [0.011035851202905178, 0.0024201981723308563], [0.010817953385412693, 0.002384802093729377], [0.010598422028124332, 0.002349140588194132], [0.010377381928265095, 0.002313234144821763], [0.010154961608350277, 0.002277103252708912], [0.009931284002959728, 0.00224076840095222], [0.009706476703286171, 0.002204249845817685], [0.009480660781264305, 0.0021675676107406616], [0.009253962896764278, 0.0021307419519871473], [0.009026502259075642, 0.002093792427331209], [0.008798401802778244, 0.0020567388273775578], [0.008569779805839062, 0.00201960070990026], [0.008340755477547646, 0.0019823971670120955], [0.008111444301903248, 0.0019451470579952002], [0.007881964556872845, 0.0019078694749623537], [0.007652428466826677, 0.0018705830443650484], [0.007422947324812412, 0.0018333052285015583], [0.007193632423877716, 0.001796054420992732], [0.006964591797441244, 0.0017588483169674873], [0.00673593208193779, 0.001721703913062811], [0.00650775758549571, 0.0016846384387463331], [0.006280170753598213, 0.0016476684249937534], [0.0060532717034220695, 0.0016108101699501276], [0.005827158689498901, 0.001574079506099224], [0.005601927172392607, 0.0015374921495094895], [0.0053776707500219345, 0.0015010631177574396], [0.005154479760676622, 0.0014648071955889463], [0.004932444542646408, 0.001428738934919238], [0.004711649380624294, 0.0013928721891716123], [0.004492179024964571, 0.0013572205789387226], [0.00427411450073123, 0.0013217974919825792], [0.004057534039020538, 0.0012866153847426176], [0.0038425142411142588, 0.001251686830073595], [0.0036291279830038548, 0.0012170234695076942], [0.003417446045204997, 0.0011826371774077415], [0.0032075371127575636, 0.0011485387803986669], [0.00299946591258049, 0.0011147388722747564], [0.002793295541778207, 0.0010812479304149747], [0.00258908630348742, 0.0010480753844603896], [0.002386895241215825, 0.001015230780467391], [0.002186777535825968, 0.0009827229660004377], [0.001988785108551383, 0.0009505603229627013], [0.0017929670866578817, 0.0009187509422190487], [0.0015993707347661257, 0.0008873024489730597], [0.0014080398250371218, 0.0008562220027670264], [0.0012190162669867277, 0.0008255162974819541], [0.0010323384776711464, 0.0007951917359605432], [0.0008480431861244142, 0.000765254080761224], [0.0006661637453362346, 0.0007357089780271053], [0.0004867316165473312, 0.0007065613754093647], [0.0003097754961345345, 0.0006778159877285361], [0.0001353215193375945, 0.0006494770059362054], [-3.6606419598683715e-05, 0.0006215484463609755], [-0.0002059869875665754, 0.0005940336268395185], [-0.00037280115066096187, 0.0005669357487931848], [-0.0005370322032831609, 0.0005402574897743762], [-0.0006986656808294356, 0.0005140011198818684], [-0.0008576894761063159, 0.0004881687636952847], [-0.0010140936356037855, 0.00046276190550997853], [-0.0011678702430799603, 0.0004377818841021508], [-0.0013190136523917317, 0.0004132296016905457], [-0.0014675201382488012, 0.0003891056985594332], [-0.0016133879544213414, 0.0003654103784356266], [-0.0017566175665706396, 0.0003421436413191259], [-0.0018972111865878105, 0.00031930513796396554], [-0.0020351724233478308, 0.00029689419898204505], [-0.002170507563278079, 0.0002749098639469594], [-0.0023032238241285086, 0.0002533509396016598], [-0.002433330751955509, 0.0002322159125469625], [-0.0025608388241380453, 0.0002115030074492097], [-0.0026857610791921616, 0.0001912102452479303], [-0.002808110788464546, 0.0001713352685328573], [-0.0029279037844389677, 0.00015187569078989327], [-0.0030451565980911255, 0.00013282871805131435], [-0.0031598873902112246, 0.00011419143993407488], [-0.0032721159514039755, 9.596062591299415e-05], [-0.0033818623051047325, 7.8133016359061e-05], [-0.0034891485702246428, 6.0705060604959726e-05], [-0.003593997796997428, 4.367297515273094e-05], [-0.0037988703697919846, 1.0392745025455952e-05], [-0.0039037195965647697, -6.639340426772833e-06], [-0.004011006560176611, -2.4067354388535023e-05], [-0.004120752681046724, -4.1894963942468166e-05], [-0.004232980776578188, -6.012566154822707e-05], [-0.004347712267190218, -7.876305608078837e-05], [-0.004464964848011732, -9.780999971553683e-05], [-0.00458475761115551, -0.00011726957745850086], [-0.004707107320427895, -0.00013714446686208248], [-0.004832029342651367, -0.0001574372872710228], [-0.004959537647664547, -0.0001781501923687756], [-0.005089644808322191, -0.00019928521942347288], [-0.005222361069172621, -0.00022084417287260294], [-0.005357695743441582, -0.0002428284497000277], [-0.005495657678693533, -0.0002652394468896091], [-0.00563625106588006, -0.000288077921140939], [-0.0057794805616140366, -0.0003113446873612702], [-0.005925348494201899, -0.00033503997838124633], [-0.006073854863643646, -0.00035916385240852833], [-0.006224998272955418, -0.00038371613482013345], [-0.006378774996846914, -0.00040869618533179164], [-0.006535178981721401, -0.0004341030144132674], [-0.0066942027769982815, -0.0004599354579113424], [-0.006855836603790522, -0.00048619176959618926], [-0.007020067423582077, -0.000512869970407337], [-0.007186881732195616, -0.0005399679648689926], [-0.0073562623001635075, -0.0005674827261827886], [-0.0075281900353729725, -0.0005954113439656794], [-0.007702643983066082, -0.0006237502093426883], [-0.007879599928855896, -0.0006524957134388387], [-0.008059032261371613, -0.0006816433160565794], [-0.008240911178290844, -0.0007111883605830371], [-0.008425206877291203, -0.0007411260739900172], [-0.008611884899437428, -0.0007714506355114281], [-0.008800907991826534, -0.0008021563407965004], [-0.008992238901555538, -0.0008332367870025337], [-0.009185834787786007, -0.0008646852220408618], [-0.009381652809679508, -0.0008964945445768535], [-0.009579645469784737, -0.0009286571876145899], [-0.009779763408005238, -0.000961165118496865], [-0.009981953538954258, -0.0009940096642822027], [-0.01018616370856762, -0.0010271822102367878], [-0.010392333380877972, -0.0010606732685118914], [-0.010600404813885689, -0.00109447306022048], [-0.010810313746333122, -0.0011285713408142328], [-0.011021995916962624, -0.0011629578657448292], [-0.011235382407903671, -0.0011976209934800863], [-0.01145040150731802, -0.0012325495481491089], [-0.011666982434689999, -0.0012677316553890705], [-0.01188504695892334, -0.0013031549751758575], [-0.01210451778024435, -0.0013388064689934254], [-0.01232531201094389, -0.001374673331156373], [-0.012547347694635391, -0.0014107415918260813], [-0.01277053914964199, -0.0014469975139945745], [-0.01299479603767395, -0.0014834264293313026], [-0.013220027089118958, -0.001520013902336359], [-0.013446140103042126, -0.0015567445661872625], [-0.01367303915321827, -0.0015936028212308884], [-0.01390062551945448, -0.001630572834983468], [-0.014128800481557846, -0.0016676383092999458], [-0.014357460662722588, -0.0017047827132046223], [-0.014586500823497772, -0.001741988817229867], [-0.014815814793109894, -0.0017792393919080496], [-0.015045296400785446, -0.0018165172077715397], [-0.0152748329564929, -0.0018538038711994886], [-0.015504312701523304, -0.001891081454232335], [-0.0157336238771677, -0.0019283315632492304], [-0.015962649136781693, -0.001965535106137395], [-0.0161912702023983, -0.002002672990784049], [-0.016419369727373123, -0.0020397265907377005], [-0.01664683222770691, -0.0020766763482242823], [-0.01687352918088436, -0.0021135020069777966], [-0.017099345102906227, -0.00215018424205482], [-0.01732415333390236, -0.002186702797189355], [-0.01754782907664776, -0.002223037416115403], [-0.017770251259207726, -0.002259168541058898], [-0.017991289496421814, -0.002295074984431267], [-0.018210820853710175, -0.0023307364899665117], [-0.01842871867120266, -0.0023661323357373476], [-0.018644854426383972, -0.0024012422654777765], [-0.018859099596738815, -0.002436045091599226], [-0.01907133124768734, -0.002470520557835698], [-0.0192814152687788, -0.0025046474765986204], [-0.0194892305880785, -0.002538405591621995], [-0.019694644957780838, -0.0025717741809785366], [-0.01989753544330597, -0.0026047322899103165], [-0.020097773522138596, -0.0026372596621513367], [-0.020295236259698868, -0.0026693360414355993], [-0.020489796996116638, -0.0027009411714971066], [-0.020681330934166908, -0.0027320547960698605], [-0.02086971513926983, -0.002762656658887863], [-0.02105483040213585, -0.0027927274350076914], [-0.02123655378818512, -0.0028222473338246346], [-0.02141476795077324, -0.0028511970303952694], [-0.021589355543255806, -0.0028795574326068163], [-0.02176019549369812, -0.0029073094483464956], [-0.021927181631326675, -0.0029344353824853897], [-0.02209019847214222, -0.0029609163757413626], [-0.022249136120080948, -0.002986734500154853], [-0.022403884679079056, -0.00301187252625823], [-0.022554341703653336, -0.003036313224583864], [-0.02270040102303028, -0.003060039831325412], [-0.022841965779662132, -0.003083036048337817], [-0.02297893352806568, -0.0031052855774760246], [-0.023111212998628616, -0.0031267735175788403], [-0.023238709196448326, -0.003147484501823783], [-0.023361334577202797, -0.003167404094710946], [-0.023479001596570015, -0.0031865183264017105], [-0.023591626435518265, -0.0032048136927187443], [-0.02369913086295128, -0.0032222771551460028], [-0.023801438510417938, -0.0032388963736593723], [-0.023898478597402573, -0.0032546597067266703], [-0.023990176618099213, -0.0032695557456463575], [-0.024076471105217934, -0.0032835735473781824], [-0.024157296866178513, -0.0032967033330351114], [-0.024232596158981323, -0.003308935323730111], [-0.024302318692207336, -0.00332026113756001], [-0.024366408586502075, -0.003330671926960349], [-0.024424823001027107, -0.003340161172673106], [-0.02447751723229885, -0.003348720958456397], [-0.024524452164769173, -0.0033563452307134867], [-0.024565597996115685, -0.0033630288671702147], [-0.02460091933608055, -0.0033687667455524206], [-0.02463039569556713, -0.003373555140569806], [-0.024654002860188484, -0.0033773898612707853], [-0.02467172220349312, -0.0033802681136876345], [-0.024683542549610138, -0.0033821885008364916], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02469019405543804, -0.0033832688350230455], [-0.02468237094581127, -0.003382196882739663], [-0.024668468162417412, -0.003380291862413287], [-0.024647628888487816, -0.0033774366602301598], [-0.024619868025183678, -0.0033736322075128555], [-0.02458520233631134, -0.003368882229551673], [-0.024543657898902893, -0.003363189520314336], [-0.02449527010321617, -0.003356558969244361], [-0.024440068751573563, -0.0033489945344626904], [-0.0243780966848135, -0.0033405027352273464], [-0.024309396743774414, -0.003331088926643133], [-0.024234022945165634, -0.00332076009362936], [-0.024152027443051338, -0.003309524618089199], [-0.024063467979431152, -0.0032973894849419594], [-0.0239684097468853, -0.0032843637745827436], [-0.023866921663284302, -0.0032704570330679417], [-0.023759078234434128, -0.0032556792721152306], [-0.023644953966140747, -0.003240040736272931], [-0.023524632677435875, -0.003223553765565157], [-0.023398200049996376, -0.003206228371709585], [-0.023265741765499115, -0.003188077826052904], [-0.023127356544137, -0.0031691151671111584], [-0.022983139380812645, -0.0031493534334003925], [-0.022833196446299553, -0.003128806594759226], [-0.022677626460790634, -0.003107489086687565], [-0.022516541182994843, -0.0030854158103466034], [-0.022350050508975983, -0.003062601899728179], [-0.022178273648023605, -0.0030390634201467037], [-0.022001326084136963, -0.0030148166697472334], [-0.021819330751895905, -0.0029898779466748238], [-0.02163240872323513, -0.0029642644803971052], [-0.021440690383315086, -0.0029379932675510645], [-0.02124430239200592, -0.0029110824689269066], [-0.021043378859758377, -0.0028835502453148365], [-0.0208380538970232, -0.0028554147575050592], [-0.020628459751605988, -0.0028266943991184235], [-0.020414741709828377, -0.002797408727928996], [-0.020197032019495964, -0.0027675761375576258], [-0.01997547782957554, -0.0027372168842703104], [-0.019750218838453293, -0.0027063500601798296], [-0.019521402195096016, -0.0026749952230602503], [-0.019289173185825348, -0.0026431733276695013], [-0.01905367709696293, -0.002610903698951006], [-0.018815064802765846, -0.002578206593170762], [-0.01857347972691059, -0.0025451024994254112], [-0.0183290746062994, -0.0025116121396422386], [-0.018081998452544212, -0.002477755770087242], [-0.017832400277256966, -0.0024435536470264196], [-0.017580430954694748, -0.0024090264923870564], [-0.017326241359114647, -0.002374195260927081], [-0.017069978639483452, -0.0023390797432512045], [-0.0168117955327034, -0.0023037008941173553], [-0.01655183546245098, -0.0022680789697915316], [-0.016290251165628433, -0.0022322346922010183], [-0.016027191653847694, -0.0021961878519505262], [-0.015762800350785255, -0.002159958705306053], [-0.01549722533673048, -0.0021235670428723097], [-0.015230611898005009, -0.0020870331209152937], [-0.014963102526962757, -0.0020503767300397158], [-0.014694837853312492, -0.002013616729527712], [-0.01442596223205328, -0.0019767731428146362], [-0.014156612567603588, -0.0019398643635213375], [-0.01388692855834961, -0.001902909716591239], [-0.013617042452096939, -0.0018659275956451893], [-0.013347090221941471, -0.001828936394304037], [-0.0130772041156888, -0.0017919543897733092], [-0.0128075135871768, -0.001754998927935958], [-0.012538144364953041, -0.001718087587505579], [-0.012269224971532822, -0.0016812378307804465], [-0.012000874616205692, -0.0016444660723209381], [-0.011733215302228928, -0.0016077890759333968], [-0.011466365307569504, -0.0015712229069322348], [-0.011200441047549248, -0.0015347835142165422], [-0.01093555148690939, -0.0014984861481934786], [-0.010671809315681458, -0.0014623458264395595], [-0.010409321635961533, -0.0014263774501159787], [-0.010148190893232822, -0.0013905951054766774], [-0.00988852046430111, -0.001355012645944953], [-0.009630407206714153, -0.0013196436921134591], [-0.00937394704669714, -0.0012845011660829186], [-0.009119232185184956, -0.0012495981063693762], [-0.008866352960467339, -0.0012149462709203362], [-0.008615395054221153, -0.0011805577669292688], [-0.008366442285478115, -0.001146444003097713], [-0.008119574747979641, -0.0011126159224659204], [-0.0078748669475317, -0.0010790840024128556], [-0.007632396183907986, -0.0010458583710715175], [-0.007392230909317732, -0.0010129489237442613], [-0.007154439575970173, -0.0009803646244108677], [-0.006919086445122957, -0.0009481144370511174], [-0.006686232518404722, -0.0009162068599835038], [-0.006455936934798956, -0.0008846495766192675], [-0.006228253245353699, -0.0008534503867849708], [-0.006003234069794416, -0.0008226162753999233], [-0.005780928302556276, -0.0007921539945527911], [-0.005561382044106722, -0.0007620698306709528], [-0.0053446367383003235, -0.0007323694881051779], [-0.0051307338289916515, -0.0007030585547909141], [-0.004919708706438541, -0.0006741420365869999], [-0.004711594898253679, -0.0006456244736909866], [-0.004506424535065889, -0.000617510115262121], [-0.004304224159568548, -0.0005898029776290059], [-0.00410502078011632, -0.0005625062622129917], [-0.003908835351467133, -0.0005356232286430895], [-0.00371568719856441, -0.0005091563798487186], [-0.0035255944821983576, -0.0004831082187592983], [-0.0033385709393769503, -0.0004574805498123169], [-0.0031546284444630146, -0.00043227511923760176], [-0.0029737758450210094, -0.00040749312029220164], [-0.0027960201259702444, -0.0003831354551948607], [-0.0026213654782623053, -0.0003592027351260185], [-0.002449814463034272, -0.00033569528022781014], [-0.002281365916132927, -0.00031261297408491373], [-0.0021160177420824766, -0.00028995549655519426], [-0.0019537650514394045, -0.0002677221782505512], [-0.0017946010921150446, -0.00024591211695224047], [-0.0016385169001296163, -0.0002245240902993828], [-0.0014855016488581896, -0.00020355661399662495], [-0.0013355427654460073, -0.0001830078981583938], [-0.0011886252323165536, -0.00016287594917230308], [-0.0010447329841554165, -0.0001431585696991533], [-0.00090384780196473, -0.00012385322770569474], [-0.0007659498951397836, -0.00010495724563952535], [-0.0006310180760920048, -8.646768401376903e-05], [-0.0004990292945876718, -6.838142144260928e-05], [-0.0003699595108628273, -5.069512553745881e-05], [-0.00024378283706028014, -3.340528564876877e-05], [-0.00012047241034451872, -1.650819649512414e-05]]}, {"name": "CX_d1_u4", "samples": [[9.861665603239089e-05, 1.52101574713015e-06], [0.00019955643801949918, 3.0778626296523726e-06], [0.0003028424980584532, 4.670896942116087e-06], [0.0004084968823008239, 6.300459062913433e-06], [0.0005165405455045402, 7.966873454279266e-06], [0.0006269934237934649, 9.670446161180735e-06], [0.0007398743182420731, 1.14114654934383e-05], [0.000855200516525656, 1.3190201570978388e-05], [0.0009729882585816085, 1.5006901776359882e-05], [0.0010932524455711246, 1.6861798940226436e-05], [0.0012160063488408923, 1.875509406090714e-05], [0.0013412617845460773, 2.0686977222794667e-05], [0.0014690295793116093, 2.2657606677967124e-05], [0.0015993185807019472, 2.466712066961918e-05], [0.0017321358900517225, 2.671562833711505e-05], [0.001867487095296383, 2.8803224267903715e-05], [0.0020053761545568705, 3.0929957574699074e-05], [0.0021458049304783344, 3.3095868275268e-05], [0.0022887741215527058, 3.5300952731631696e-05], [0.0024342818651348352, 3.754519275389612e-05], [0.002582324668765068, 3.982853377237916e-05], [0.0027328971773386, 4.2150888475589454e-05], [0.0028859914746135473, 4.451214044820517e-05], [0.0030415980145335197, 4.691214417107403e-05], [0.0031997053883969784, 4.935071774525568e-05], [0.003360299626365304, 5.182764653000049e-05], [0.003523364430293441, 5.4342679504770786e-05], [0.0036888818722218275, 5.689553654519841e-05], [0.003856830997392535, 5.9485908423084766e-05], [0.0040271892212331295, 6.211342406459153e-05], [0.004199930466711521, 6.477770511992276e-05], [0.004375028423964977, 6.747833685949445e-05], [0.0045524523593485355, 7.021482451818883e-05], [0.00473216874524951, 7.298670243471861e-05], [0.004914144519716501, 7.579340308438987e-05], [0.005098341032862663, 7.863436621846631e-05], [0.005284719169139862, 8.150895882863551e-05], [0.005473235622048378, 8.441655518254265e-05], [0.0056638456881046295, 8.735642768442631e-05], [0.005856501869857311, 9.032785601448268e-05], [0.006051152944564819, 9.333008347311988e-05], [0.006247748155146837, 9.63622733252123e-05], [0.006446231156587601, 9.942356700776145e-05], [0.006646544206887484, 0.00010251309140585363], [0.006848626304417849, 0.00010562992974882945], [0.007052415516227484, 0.00010877306340262294], [0.007257845252752304, 0.00011194150283699855], [0.00746484799310565, 0.00011513422941789031], [0.007673352491110563, 0.00011835010081995279], [0.007883286103606224, 0.00012158801837358624], [0.008094572462141514, 0.00012484678882174194], [0.008307134732604027, 0.00012812526256311685], [0.008520891889929771, 0.00013142212992534041], [0.008735760115087032, 0.00013473616854753345], [0.008951655589044094, 0.0001380660105496645], [0.009168488904833794, 0.00014141036081127822], [0.009386170655488968, 0.00014476777869276702], [0.009604609571397305, 0.0001481368817621842], [0.009823709726333618, 0.00015151617117226124], [0.010043376125395298, 0.00015490420628339052], [0.01026351097971201, 0.00015829944459255785], [0.01048401091247797, 0.000161700343596749], [0.010704775340855122, 0.00016510530258528888], [0.010925699025392532, 0.0001685127499513328], [0.011146677657961845, 0.0001719209976727143], [0.011367601342499256, 0.00017532841593492776], [0.011588361114263535, 0.0001787333021638915], [0.011808845214545727, 0.00018213395378552377], [0.012028943747282028, 0.0001855286245699972], [0.012248538434505463, 0.00018891556828748435], [0.012467516586184502, 0.00019229299505241215], [0.012685763649642467, 0.00019565911497920752], [0.01290315855294466, 0.0001990121090784669], [0.013119583949446678, 0.0002023501438088715], [0.01333492062985897, 0.00020567141473293304], [0.013549048453569412, 0.00020897400099784136], [0.013761846348643303, 0.00021225609816610813], [0.013973192311823368, 0.00021551578538492322], [0.014182964339852333, 0.0002187512000091374], [0.014391041360795498, 0.0002219604648416862], [0.014597298577427864, 0.00022514171723742038], [0.014801614917814732, 0.00022829300723969936], [0.015003867447376251, 0.00023141239944379777], [0.015203931368887424, 0.0002344981476198882], [0.015401688404381275, 0.0002375482436036691], [0.015597013756632805, 0.00024056083930190653], [0.015789786353707314, 0.00024353408662136644], [0.015979884192347527, 0.00024646607926115394], [0.016167189925909042, 0.0002493549545761198], [0.01635158434510231, 0.00025219895178452134], [0.01653294451534748, 0.00025499617913737893], [0.016711154952645302, 0.00025774483219720423], [0.01688610389828682, 0.00026044316473416984], [0.017057674005627632, 0.000263089343206957], [0.01722574792802334, 0.00026568167959339917], [0.01739022321999073, 0.00026821839855983853], [0.017550980672240257, 0.00027069789939559996], [0.01770791970193386, 0.00027311843587085605], [0.017860930413007736, 0.0002754783781711012], [0.018009908497333527, 0.00027777618379332125], [0.018154755234718323, 0.0002800102229230106], [0.018295368179678917, 0.00028217898216098547], [0.018431654199957848, 0.00028428094810806215], [0.018563516438007355, 0.0002863147237803787], [0.018690861761569977, 0.00028827888309024274], [0.01881360448896885, 0.00029017197084613144], [0.01893165521323681, 0.0002919927937909961], [0.019044935703277588, 0.00029373992583714426], [0.01915336400270462, 0.0002954122901428491], [0.01925686188042164, 0.00029700854793190956], [0.019355352967977524, 0.00029852765146642923], [0.019448773935437202, 0.00029996855300851166], [0.019537054002285004, 0.00030133011750876904], [0.019620127975940704, 0.00030261141364462674], [0.019697939977049828, 0.00030381156830117106], [0.019770434126257896, 0.00030492967925965786], [0.019837556406855583, 0.00030596493161283433], [0.01989925652742386, 0.00030691653955727816], [0.01995549350976944, 0.00030778389191254973], [0.020006220787763596, 0.000308566348394379], [0.02005140669643879, 0.00030926326871849597], [0.020091017708182335, 0.00030987418722361326], [0.020125024020671844, 0.0003103986964561045], [0.02015339955687523, 0.0003108363598585129], [0.020176127552986145, 0.0003111868572887033], [0.02019318751990795, 0.0003114499559160322], [0.020204566419124603, 0.00031162548111751676], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.02021096833050251, 0.0003117242595180869], [0.020202459767460823, 0.00031175208278000355], [0.020187336951494217, 0.00031180153018794954], [0.020164668560028076, 0.00031187565764412284], [0.020134467631578445, 0.00031197440694086254], [0.020096760243177414, 0.0003120977198705077], [0.02005157060921192, 0.000312245509121567], [0.019998934119939804, 0.00031241762917488813], [0.019938889890909195, 0.0003126139927189797], [0.019871477037668228, 0.000312834425130859], [0.019796747714281082, 0.0003130788099952042], [0.019714755937457085, 0.0003133469435852021], [0.01962556131184101, 0.0003136386221740395], [0.019529230892658234, 0.00031395364203490317], [0.019425828009843826, 0.0003142917703371495], [0.019315430894494057, 0.0003146528033539653], [0.01919812150299549, 0.0003150364209432155], [0.019073979929089546, 0.00031544239027425647], [0.018943095579743385, 0.0003158703912049532], [0.01880556344985962, 0.0003163201326970011], [0.018661480396986008, 0.0003167913237120956], [0.01851094886660576, 0.0003172835859004408], [0.01835407316684723, 0.00031779659911990166], [0.018190966919064522, 0.0003183299850206822], [0.01802174001932144, 0.00031888336525298655], [0.017846517264842987, 0.0003194563905708492], [0.01766541227698326, 0.00032004862441681325], [0.01747855730354786, 0.0003206596593372524], [0.01728607714176178, 0.0003212891169823706], [0.017088105902075768, 0.0003219365025870502], [0.016884777694940567, 0.00032260140869766474], [0.01667623035609722, 0.0003232833987567574], [0.016462605446577072, 0.0003239820071030408], [0.01624404266476631, 0.0003246967389713973], [0.016020694747567177, 0.00032542712870053947], [0.01579270511865616, 0.0003261726815253496], [0.015560224652290344, 0.0003269329317845404], [0.015323407016694546, 0.00032770735560916364], [0.015082404017448425, 0.000328495487337932], [0.014837373979389668, 0.0003292967739980668], [0.014588471502065659, 0.00033011072082445025], [0.014335856772959232, 0.0003309368039481342], [0.014079690910875797, 0.0003317745286040008], [0.013820131309330463, 0.000332623312715441], [0.013557341881096363, 0.0003334826906211674], [0.013291483744978905, 0.00033435208024457097], [0.01302272081375122, 0.00033523098682053387], [0.01275121420621872, 0.00033611885737627745], [0.012477126903831959, 0.0003370151680428535], [0.01220062468200922, 0.0003379193658474833], [0.011921866796910763, 0.0003388309560250491], [0.011641019023954868, 0.00033974938560277224], [0.01135824155062437, 0.00034067410160787404], [0.011073696427047253, 0.0003416046092752367], [0.010787545703351498, 0.00034254035563208163], [0.01049994770437479, 0.000343480845913291], [0.010211060754954815, 0.00034442555624991655], [0.009921043179929256, 0.00034537396277301013], [0.009630052372813225, 0.00034632557071745396], [0.009338241070508957, 0.00034727982711046934], [0.009045763872563839, 0.000348236266290769], [0.008752771653234959, 0.00034919442259706557], [0.008459413424134254, 0.0003501537430565804], [0.008165838196873665, 0.0003511137911118567], [0.007872190326452255, 0.00035207404289394617], [0.007578613702207804, 0.00035303409094922245], [0.0072852494195103645, 0.00035399344051256776], [0.006992236245423555, 0.00035495165502652526], [0.006699710618704557, 0.0003559082397259772], [0.006407805718481541, 0.0003568628162611276], [0.006116652395576239, 0.00035781494807451963], [0.005826379172503948, 0.00035876419860869646], [0.005537110846489668, 0.0003597101313062012], [0.005248970817774534, 0.00036065239692106843], [0.004962078295648098, 0.0003615905879996717], [0.0046765487641096115, 0.0003625243261922151], [0.00439249724149704, 0.0003634532040450722], [0.0041100331582129, 0.00036437693051993847], [0.003829263150691986, 0.00036529506905935705], [0.0035502915270626545, 0.0003662073577288538], [0.0032732191029936075, 0.0003671134472824633], [0.0029981425032019615, 0.00036801298847422004], [0.0027251560240983963, 0.00036890569026581943], [0.0024543500039726496, 0.0003697912616189569], [0.002185811987146735, 0.0003706694405991584], [0.0019196252105757594, 0.00037153990706428885], [0.0016558702336624265, 0.0003724024281837046], [0.0013946238905191422, 0.0003732567420229316], [0.001135959755629301, 0.0003741026157513261], [0.0008799477363936603, 0.0003749398165382445], [0.0006266546552069485, 0.0003757681406568736], [0.00037614363827742636, 0.0003765873552765697], [0.00012847455218434334, 0.0003773972566705197], [-0.00011629615619312972, 0.00037819769931957126], [-0.0003581153869163245, 0.00037898847949691117], [-0.0005969334160909057, 0.00037976945168338716], [-0.0008327037212438881, 0.00038054047035984695], [-0.0010653831996023655, 0.0003813013609033078], [-0.0012949318625032902, 0.00038205203600227833], [-0.0015213129809126258, 0.0003827923210337758], [-0.001744493143633008, 0.0003835221577901393], [-0.0019644417334347963, 0.00038424142985604703], [-0.0021811313927173615, 0.0003849500499200076], [-0.0023945379070937634, 0.0003856479306705296], [-0.0026046396233141422, 0.0003863349847961217], [-0.002811418380588293, 0.00038701118319295347], [-0.0030148588120937347, 0.00038767646765336394], [-0.0032149474136531353, 0.00038833077996969223], [-0.0034116748720407486, 0.00038897412014193833], [-0.003605033503845334, 0.0003896064299624413], [-0.0037950188852846622, 0.0003902277094312012], [-0.003981628455221653, 0.000390837958548218], [-0.0041648633778095245, 0.0003914371773134917], [-0.004344725515693426, 0.0003920253657270223], [-0.0045212204568088055, 0.0003926025237888098], [-0.004694355186074972, 0.0003931687097065151], [-0.004864140413701534, 0.0003937239234801382], [-0.0050305868498981, 0.00039426822331734], [-0.005193708930164576, 0.0003948016674257815], [-0.00535352248698473, 0.00039532428490929306], [-0.0055100456811487675, 0.00039583613397553563], [-0.005663297139108181, 0.0003963373019360006], [-0.005813299678266048, 0.0003968278178945184], [-0.005960075184702873, 0.00039730779826641083], [-0.006103650201112032, 0.0003977773303631693], [-0.006244049407541752, 0.0003982364432886243], [-0.006381301209330559, 0.00039868528256192803], [-0.006515435874462128, 0.0003991239354945719], [-0.006777530536055565, 0.0003999810141976923], [-0.0069116647355258465, 0.00040041966713033617], [-0.007048917002975941, 0.0004008685064036399], [-0.007189316209405661, 0.0004013276193290949], [-0.007332890760153532, 0.00040179715142585337], [-0.007479666732251644, 0.0004022771317977458], [-0.007629668805748224, 0.0004027676477562636], [-0.007782920729368925, 0.00040326881571672857], [-0.007939442992210388, 0.00040378066478297114], [-0.008099256083369255, 0.0004043032822664827], [-0.00826237816363573, 0.0004048367263749242], [-0.008428825065493584, 0.000405381026212126], [-0.008598609827458858, 0.0004059362399857491], [-0.0087717454880476, 0.0004065024259034544], [-0.008948240429162979, 0.0004070795839652419], [-0.009128102101385593, 0.0004076677723787725], [-0.009311337023973465, 0.0004082669911440462], [-0.009497946128249168, 0.0004088772111572325], [-0.009687932208180428, 0.0004094985197298229], [-0.00988129060715437, 0.00041013082955032587], [-0.01007801853120327, 0.0004107741406187415], [-0.010278107598423958, 0.00041142848203890026], [-0.010481547564268112, 0.00041209376649931073], [-0.010688325390219688, 0.0004127699648961425], [-0.010898428037762642, 0.0004134570190217346], [-0.011111834086477757, 0.0004141548997722566], [-0.011328523978590965, 0.00041486351983621716], [-0.011548471637070179, 0.0004155827919021249], [-0.011771652847528458, 0.00041631259955465794], [-0.011998034082353115, 0.00041705291368998587], [-0.01222758274525404, 0.0004178035887889564], [-0.012460261583328247, 0.00041856447933241725], [-0.012696032412350178, 0.00041933549800887704], [-0.012934849597513676, 0.00042011647019535303], [-0.013176669366657734, 0.00042090725037269294], [-0.013421440497040749, 0.0004217076930217445], [-0.013669108971953392, 0.0004225175944156945], [-0.013919620774686337, 0.0004233368090353906], [-0.014172912575304508, 0.0004241651331540197], [-0.014428925700485706, 0.0004250023339409381], [-0.01468758936971426, 0.0004258482076693326], [-0.014948835596442223, 0.0004267025215085596], [-0.0152125908061862, 0.00042756504262797534], [-0.015478777699172497, 0.0004284355090931058], [-0.015747318044304848, 0.0004293136880733073], [-0.01601812243461609, 0.00043019925942644477], [-0.01629110984504223, 0.00043109196121804416], [-0.016566185280680656, 0.0004319915024098009], [-0.01684325747191906, 0.0004328975919634104], [-0.01712222956120968, 0.00043380988063290715], [-0.017402999103069305, 0.00043472801917232573], [-0.017685463652014732, 0.000435651745647192], [-0.017969515174627304, 0.0004365806235000491], [-0.018255043774843216, 0.0004375143616925925], [-0.018541937693953514, 0.00043845255277119577], [-0.018830077722668648, 0.0004393947892822325], [-0.019119346514344215, 0.0004403407801873982], [-0.01940961927175522, 0.00044129000161774457], [-0.01970077119767666, 0.0004422421334311366], [-0.019992675632238388, 0.00044319668086245656], [-0.02028520405292511, 0.00044415329466573894], [-0.02057821676135063, 0.00044511150917969644], [-0.02087157964706421, 0.00044607085874304175], [-0.021165156736969948, 0.00044703090679831803], [-0.021458804607391357, 0.00044799118768423796], [-0.021752379834651947, 0.0004489512066356838], [-0.022045738995075226, 0.00044991052709519863], [-0.022338729351758957, 0.0004508686834014952], [-0.02263120748102665, 0.00045182512258179486], [-0.022923018783330917, 0.0004527794080786407], [-0.023214008659124374, 0.00045373098691925406], [-0.023504026234149933, 0.0004546793643385172], [-0.023792913183569908, 0.00045562407467514277], [-0.024080513045191765, 0.00045656459406018257], [-0.02436666376888752, 0.0004575003404170275], [-0.02465120702981949, 0.00045843084808439016], [-0.024933984503149986, 0.0004593555931933224], [-0.02521483227610588, 0.0004602739936672151], [-0.025493590161204338, 0.0004611855838447809], [-0.025770094245672226, 0.0004620897816494107], [-0.026044180616736412, 0.00046298609231598675], [-0.026315685361623764, 0.00046387396287173033], [-0.026584450155496597, 0.00046475286944769323], [-0.02685030922293663, 0.0004656222590710968], [-0.02711309865117073, 0.0004664816369768232], [-0.027372656390070915, 0.0004673304210882634], [-0.02762882225215435, 0.00046816814574413], [-0.02788143791258335, 0.00046899422886781394], [-0.028130339458584785, 0.0004698081756941974], [-0.028375370427966118, 0.0004706094623543322], [-0.028616372495889664, 0.00047139759408310056], [-0.028853191062808037, 0.0004721720179077238], [-0.02908567152917385, 0.0004729322681669146], [-0.02931366302073002, 0.00047367782099172473], [-0.029537010937929153, 0.0004744082107208669], [-0.029755569994449615, 0.0004751229425892234], [-0.029969198629260063, 0.0004758215509355068], [-0.03017774410545826, 0.000476503511890769], [-0.03038107231259346, 0.000477168447105214], [-0.03057904541492462, 0.0004778158327098936], [-0.030771523714065552, 0.0004784452903550118], [-0.030958380550146103, 0.00047905632527545094], [-0.03113948181271553, 0.000479648559121415], [-0.03131470829248428, 0.00048022158443927765], [-0.031483933329582214, 0.000480774964671582], [-0.03164703771471977, 0.000481308379676193], [-0.0318039134144783, 0.0004818213637918234], [-0.03195444494485855, 0.0004823136259801686], [-0.03209853172302246, 0.0004827848169952631], [-0.03223606199026108, 0.000483234558487311], [-0.03236694261431694, 0.00048366255941800773], [-0.032491084188222885, 0.0004840685287490487], [-0.03260839730501175, 0.0004844521754421294], [-0.03271879255771637, 0.0004848131793551147], [-0.03282219544053078, 0.00048515130765736103], [-0.032918527722358704, 0.0004854663275182247], [-0.03300771862268448, 0.0004857580061070621], [-0.033089712262153625, 0.00048602613969706], [-0.03316444158554077, 0.0004862705245614052], [-0.03323185443878174, 0.0004864909569732845], [-0.03329189866781235, 0.00048668732051737607], [-0.033344537019729614, 0.00048685946967452765], [-0.03338972479104996, 0.0004870072298217565], [-0.03342743590474129, 0.00048713054275140166], [-0.03345763310790062, 0.00048722929204814136], [-0.03348030149936676, 0.00048730341950431466], [-0.033495426177978516, 0.0004873528960160911], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.0335039347410202, 0.00048738071927800775], [-0.033493317663669586, 0.0004872262943536043], [-0.033474456518888474, 0.0004869518743362278], [-0.03344617784023285, 0.00048654049169272184], [-0.033408503979444504, 0.00048599252477288246], [-0.033361464738845825, 0.00048530823551118374], [-0.0333050899207592, 0.0004844881477765739], [-0.03323942795395851, 0.0004835329600609839], [-0.03316452354192734, 0.0004824433126486838], [-0.03308042883872986, 0.0004812199913430959], [-0.03298720344901085, 0.00047986386925913393], [-0.03288492187857628, 0.00047837599413469434], [-0.03277365863323212, 0.0004767573846038431], [-0.032653484493494034, 0.0004750092630274594], [-0.03252449259161949, 0.00047313282266259193], [-0.03238677605986595, 0.0004711294895969331], [-0.03224043920636177, 0.0004690006608143449], [-0.03208557143807411, 0.00046674784971401095], [-0.03192229941487312, 0.00046437274431809783], [-0.03175073117017746, 0.00046187694533728063], [-0.03157098963856697, 0.0004592622281052172], [-0.0313832052052021, 0.00045653057168237865], [-0.03118751011788845, 0.0004536837514024228], [-0.03098403848707676, 0.00045072389184497297], [-0.03077293373644352, 0.0004476529429666698], [-0.03055434487760067, 0.00044447314576245844], [-0.030328426510095596, 0.00044118668301962316], [-0.030095325782895088, 0.0004377958248369396], [-0.029855214059352875, 0.0004343028995208442], [-0.02960825152695179, 0.000430710322689265], [-0.029354602098464966, 0.0004270205390639603], [-0.02909444458782673, 0.0004232360515743494], [-0.028827952221035957, 0.00041935936314985156], [-0.028555305674672127, 0.0004153931513428688], [-0.028276683762669563, 0.0004113400646019727], [-0.02799227088689804, 0.0004072027513757348], [-0.02770225889980793, 0.0004029839183203876], [-0.027406834065914154, 0.0003986863885074854], [-0.027106190100312233, 0.00039431292680092156], [-0.026800520718097687, 0.0003898663562722504], [-0.026490025222301483, 0.0003853495873045176], [-0.026174895465373993, 0.00038076541386544704], [-0.025855332612991333, 0.00037611674633808434], [-0.02553153969347477, 0.0003714065533131361], [-0.02520371600985527, 0.000366637745173648], [-0.02487206645309925, 0.0003618131740950048], [-0.02453679032623768, 0.0003569359832908958], [-0.024198094382882118, 0.0003520089667290449], [-0.023856179788708687, 0.00034703509300015867], [-0.02351124957203865, 0.00034201741800643504], [-0.023163504898548126, 0.00033695882302708924], [-0.022813156247138977, 0.0003318623057566583], [-0.022460399195551872, 0.0003267307474743575], [-0.022105436772108078, 0.0003215671458747238], [-0.02174847014248371, 0.000316374353133142], [-0.02138970047235489, 0.0003111553378403187], [-0.02102932333946228, 0.00030591292306780815], [-0.020667534321546555, 0.0003006499900948256], [-0.02030453085899353, 0.00029536939109675586], [-0.019940504804253578, 0.0002900739200413227], [-0.01957564614713192, 0.00028476634179241955], [-0.019210148602724075, 0.0002794494212139398], [-0.01884419098496437, 0.00027412589406594634], [-0.018477963283658028, 0.0002687983796931803], [-0.01811164617538452, 0.0002634695847518742], [-0.01774541847407818, 0.00025814204127527773], [-0.017379455268383026, 0.00025281839771196246], [-0.017013927921652794, 0.00024750109878368676], [-0.01664900965988636, 0.00024219266197178513], [-0.016284868121147156, 0.0002368954592384398], [-0.015921661630272865, 0.00023161193530540913], [-0.015559553168714046, 0.00022634434571955353], [-0.015198699198663235, 0.00022109501878730953], [-0.014839252457022667, 0.0002158661518478766], [-0.014481361955404282, 0.00021065992768853903], [-0.014125172980129719, 0.00020547844178508967], [-0.013770826160907745, 0.0002003237750614062], [-0.013418459333479404, 0.00019519790657795966], [-0.01306820660829544, 0.00019010280084330589], [-0.012720196507871151, 0.0001850403205025941], [-0.012374556623399258, 0.00018001231364905834], [-0.012031406164169312, 0.0001750204828567803], [-0.011690863408148289, 0.00017006663256324828], [-0.011353040114045143, 0.00016515233437530696], [-0.01101804617792368, 0.00016027917445171624], [-0.01068598497658968, 0.00015544870984740555], [-0.010356958024203777, 0.00015066235209815204], [-0.010031060315668583, 0.00014592154184356332], [-0.009708384051918983, 0.00014122755965217948], [-0.009389015845954418, 0.0001365817297482863], [-0.009073040448129177, 0.00013198524538893253], [-0.008760534226894379, 0.00012743922707159072], [-0.008451573550701141, 0.00012294479529373348], [-0.008146228268742561, 0.00011850294686155394], [-0.007844566367566586, 0.00011411466402933002], [-0.007546646986156702, 0.00010978084173984826], [-0.0072525301948189735, 0.00010550234583206475], [-0.006962269078940153, 0.00010127991117769852], [-0.006675912998616695, 9.711430902825668e-05], [-0.0063935089856386185, 9.30061869439669e-05], [-0.006115098483860493, 8.895614155335352e-05], [-0.005840718280524015, 8.496474765706807e-05], [-0.005570403765887022, 8.103250002022833e-05], [-0.0053041852079331875, 7.71598206483759e-05], [-0.005042089149355888, 7.334710971917957e-05], [-0.0047841379418969154, 6.959470920264721e-05], [-0.00453035207465291, 6.590289558516815e-05], [-0.004280746914446354, 6.227189442142844e-05], [-0.0040353345684707165, 5.870188761036843e-05], [-0.003794125048443675, 5.51930206711404e-05], [-0.00355712347663939, 5.174537000129931e-05], [-0.003324332647025585, 4.8358971980633214e-05], [-0.003095753025263548, 4.5033826609142125e-05], [-0.0028713797219097614, 4.176987204118632e-05], [-0.002651207149028778, 3.8567031879210845e-05], [-0.002435225760564208, 3.5425156966084614e-05], [-0.0022234239149838686, 3.23440799547825e-05], [-0.0020157864782959223, 2.932358256657608e-05], [-0.0018122958717867732, 2.6363413780927658e-05], [-0.00161293288692832, 2.3463284378522076e-05], [-0.001417674939148128, 2.0622874217224307e-05], [-0.0012264973483979702, 1.7841821318143047e-05], [-0.0010393736883997917, 1.5119737327040639e-05], [-0.000856274738907814, 1.2456202057364862e-05], [-0.0006771695334464312, 9.850764399743639e-06], [-0.000502025184687227, 7.302945050469134e-06], [-0.0003308068262413144, 4.812236966245109e-06], [-0.00016347787459380925, 2.378107410550001e-06]]}, {"name": "CX_d21_u39", "samples": [[0.0001432413700968027, 1.4755644770048093e-05], [0.00028985709650442004, 2.9858891139156185e-05], [0.0004398807941470295, 4.531319791567512e-05], [0.000593344506341964, 6.112187111284584e-05], [0.0007502787630073726, 7.728804484941065e-05], [0.0009107123478315771, 9.381470590597019e-05], [0.0010746725602075458, 0.0001107046555262059], [0.0012421846622601151, 0.00012796047667507082], [0.0014132721116766334, 0.00014558463590219617], [0.0015879565617069602, 0.00016357930144295096], [0.0017662574537098408, 0.00018194651056546718], [0.0019481921335682273, 0.0002006880531553179], [0.0021337757352739573, 0.00021980545716360211], [0.002323021413758397, 0.00023930011957418174], [0.002515939064323902, 0.0002591730444692075], [0.002712537767365575, 0.00027942514861933887], [0.0029128226451575756, 0.0003000569995492697], [0.003116796724498272, 0.00032106885919347405], [0.0033244602382183075, 0.00034246075665578246], [0.0035358110908418894, 0.00036423257552087307], [0.003750844392925501, 0.00038638367550447583], [0.003969551529735327, 0.0004089132125955075], [0.004191922023892403, 0.00043182019726373255], [0.004417941905558109, 0.00045510302879847586], [0.004647594410926104, 0.0004787600482814014], [0.004880858119577169, 0.0005027891602367163], [0.005117710679769516, 0.0005271879490464926], [0.005358126480132341, 0.0005519537371583283], [0.005602073390036821, 0.0005770833231508732], [0.005849519744515419, 0.0006025733891874552], [0.00610042829066515, 0.0006284200353547931], [0.006354758515954018, 0.0006546193035319448], [0.0066124675795435905, 0.0006811664788983762], [0.006873507983982563, 0.0007080569048412144], [0.007137829437851906, 0.0007352852262556553], [0.007405376061797142, 0.0007628459134139121], [0.007676090579479933, 0.0007907328545115888], [0.00794991198927164, 0.0008189399377442896], [0.008226773701608181, 0.0008474601781927049], [0.008506609126925468, 0.0008762865327298641], [0.008789341896772385, 0.0009054116671904922], [0.00907489750534296, 0.0009348273742944002], [0.009363194927573204, 0.0009645256795920432], [0.0096541503444314, 0.0009944976773113012], [0.00994767714291811, 0.0010247345780953765], [0.010243682190775871, 0.0010552267776802182], [0.010542070493102074, 0.001085964497178793], [0.010842741467058659, 0.00111693749204278], [0.011145597323775291, 0.0011481352848932147], [0.011450527235865593, 0.0011795468162745237], [0.011757423169910908, 0.0012111610267311335], [0.012066171504557133, 0.0012429659254848957], [0.012376653961837292, 0.0012749495217576623], [0.012688752263784409, 0.0013070994755253196], [0.01300234068185091, 0.0013394029811024666], [0.013317292556166649, 0.0013718468835577369], [0.013633477501571178, 0.0014044179115444422], [0.013950761407613754, 0.0014371020952239633], [0.014269007369875908, 0.0014698852319270372], [0.014588074758648872, 0.001502753235399723], [0.014907819218933582, 0.0015356909716501832], [0.015228097327053547, 0.0015686836559325457], [0.015548760071396828, 0.0016017158050090075], [0.015869654715061188, 0.0016347718192264438], [0.016190623864531517, 0.0016678358661010861], [0.016511518508195877, 0.0017008919967338443], [0.016832172870635986, 0.0017339233309030533], [0.01715242862701416, 0.0017669136868789792], [0.017472121864557266, 0.0017998460680246353], [0.017791084945201874, 0.001832703361287713], [0.01810915395617485, 0.0018654684536159039], [0.018426159396767616, 0.0018981237662956119], [0.018741926178336143, 0.0019306517206132412], [0.019056286662817, 0.001963034737855196], [0.019369063898921013, 0.001995254773646593], [0.019680088385939598, 0.002027293900027871], [0.019989177584648132, 0.002059133956208825], [0.020296160131692886, 0.0020907570142298937], [0.020600851625204086, 0.002122144214808941], [0.02090308628976345, 0.0021532780956476927], [0.021202675998210907, 0.0021841395646333694], [0.021499445661902428, 0.00221471069380641], [0.021793220192193985, 0.0022449728567153215], [0.022083817049860954, 0.002274908125400543], [0.02237105742096901, 0.002304497640579939], [0.02265476994216442, 0.0023337232414633036], [0.022934773936867714, 0.0023625672329217196], [0.02321089431643486, 0.0023910109885036945], [0.023482954129576683, 0.002419036813080311], [0.0237507876008749, 0.002446626778692007], [0.024014215916395187, 0.002473762957379222], [0.024273069575428963, 0.0025004283525049686], [0.024527182802557945, 0.0025266052689403296], [0.024776387959718704, 0.0025522762443870306], [0.025020519271492958, 0.002577424980700016], [0.025259418413043022, 0.0026020347140729427], [0.025492921471595764, 0.002626088447868824], [0.025720875710248947, 0.0026495703496038914], [0.025943122804164886, 0.0026724645867943764], [0.026159517467021942, 0.002694755792617798], [0.026369905099272728, 0.0027164286002516747], [0.02657414972782135, 0.002737468108534813], [0.02677210420370102, 0.002757859881967306], [0.02696363255381584, 0.002777589950710535], [0.02714860625565052, 0.002796644577756524], [0.02732688933610916, 0.0028150100260972977], [0.027498362585902214, 0.002832673490047455], [0.02766290307044983, 0.002849623328074813], [0.027820391580462456, 0.002865846734493971], [0.027970721945166588, 0.0028813325334340334], [0.02811378613114357, 0.0028960700146853924], [0.028249477967619896, 0.002910047769546509], [0.028377704322338104, 0.00292325671762228], [0.028498372063040733, 0.0029356873128563166], [0.028611397370696068, 0.0029473300091922283], [0.028716692700982094, 0.002958176890388131], [0.02881418727338314, 0.002968220040202141], [0.028903808444738388, 0.0029774520080536604], [0.028985491022467613, 0.0029858662746846676], [0.02905917540192604, 0.0029934565536677837], [0.029124807566404343, 0.003000217955559492], [0.029182342812418938, 0.0030061446595937014], [0.029231736436486244, 0.0030112327076494694], [0.029272953048348427, 0.0030154783744364977], [0.029305962845683098, 0.0030188788659870625], [0.029330741614103317, 0.00302143138833344], [0.029347268864512444, 0.0030231340788304806], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029356570914387703, 0.00302409240975976], [0.029345743358135223, 0.003023205790668726], [0.02932649664580822, 0.003021630458533764], [0.02929764613509178, 0.0030192690901458263], [0.02925921231508255, 0.003016122616827488], [0.029211221262812614, 0.00301219429820776], [0.02915371023118496, 0.003007486928254366], [0.029086722061038017, 0.00300200330093503], [0.02901030145585537, 0.002995748072862625], [0.02892450802028179, 0.00298872496932745], [0.02882940135896206, 0.002980940043926239], [0.028725052252411842, 0.002972398418933153], [0.02861153706908226, 0.0029631066136062145], [0.02848893776535988, 0.0029530711472034454], [0.028357340022921562, 0.0029422990046441555], [0.02821684256196022, 0.002930798102170229], [0.028067544102668762, 0.0029185772873461246], [0.027909550815820694, 0.002905644476413727], [0.027742978185415268, 0.002892009448260069], [0.027567943558096886, 0.002877681516110897], [0.027384571731090546, 0.0028626718558371067], [0.027192991226911545, 0.002846989780664444], [0.026993341743946075, 0.0028306469321250916], [0.026785757392644882, 0.002813654951751232], [0.026570389047265053, 0.0027960254810750484], [0.026347383856773376, 0.0027777710929512978], [0.02611689828336239, 0.0027589043602347374], [0.025879092514514923, 0.002739438321441412], [0.025634124875068665, 0.0027193864807486534], [0.02538217231631279, 0.0026987623423337936], [0.02512339875102043, 0.002677580341696739], [0.024857984855771065, 0.0026558544486761093], [0.024586107581853867, 0.002633599564433098], [0.02430795133113861, 0.0026108305901288986], [0.024023698642849922, 0.002587562892585993], [0.02373354136943817, 0.002563811605796218], [0.02343766763806343, 0.0025395925622433424], [0.02313627488911152, 0.0025149215944111347], [0.022829554975032806, 0.0024898145347833633], [0.02251771092414856, 0.002464288379997015], [0.022200938314199448, 0.002438358496874571], [0.021879443898797035, 0.0024120418820530176], [0.02155342511832714, 0.0023853552993386984], [0.02122308872640133, 0.002358315046876669], [0.020888643339276314, 0.0023309385869652033], [0.020550290122628212, 0.0023032422177493572], [0.020208239555358887, 0.002275243401527405], [0.019862700253725052, 0.0022469586692750454], [0.019513875246047974, 0.0022184052504599094], [0.019161976873874664, 0.0021896001417189837], [0.01880720816552639, 0.0021605598740279675], [0.018449779599905014, 0.002131302375346422], [0.018089894205331802, 0.0021018432453274727], [0.01772775873541832, 0.0020722001791000366], [0.01736357994377613, 0.002042389940470457], [0.01699756272137165, 0.0020124290604144335], [0.01662990264594555, 0.001982333604246378], [0.016260802745819092, 0.0019521205686032772], [0.015890464186668396, 0.0019218060187995434], [0.01551908254623413, 0.0018914061365649104], [0.015146853402256966, 0.0018609367543831468], [0.014773967675864697, 0.001830413704738021], [0.014400618150830269, 0.0017998527036979795], [0.014026991091668606, 0.00176926888525486], [0.013653271831572056, 0.0017386776162311435], [0.013279642909765244, 0.001708093797788024], [0.012906285002827644, 0.0016775320982560515], [0.01253337413072586, 0.001647006836719811], [0.012161082588136196, 0.0016165324486792088], [0.011789580807089806, 0.0015861226711422205], [0.011419035494327545, 0.0015557913575321436], [0.011049611493945122, 0.0015255515463650227], [0.010681466199457645, 0.001495416508987546], [0.010314756073057652, 0.0014653990510851145], [0.009949634782969952, 0.0014355115126818419], [0.009586247615516186, 0.0014057658845558763], [0.009224740788340569, 0.0013761743903160095], [0.008865254931151867, 0.0013467480894178152], [0.0085079250857234, 0.0013174983905628324], [0.008152883499860764, 0.001288436003960669], [0.007800259627401829, 0.0012595714069902897], [0.00745017547160387, 0.001230914844200015], [0.007102751638740301, 0.0012024759780615568], [0.006758102681487799, 0.0011742643546313047], [0.006416339427232742, 0.0011462888214737177], [0.006077569909393787, 0.0011185584589838982], [0.005741894245147705, 0.0010910811834037304], [0.005409411620348692, 0.001063865376636386], [0.0050802151672542095, 0.0010369186056777835], [0.004754393827170134, 0.0010102480882778764], [0.004432033747434616, 0.0009838608093559742], [0.004113213624805212, 0.0009577634045854211], [0.0037980100605636835, 0.0009319620439782739], [0.0034864956978708506, 0.0009064626065082848], [0.003178737359121442, 0.0008812706219032407], [0.0028747988399118185, 0.0008563913288526237], [0.002574739046394825, 0.0008318295585922897], [0.0022786129266023636, 0.0008075897349044681], [0.001986471237614751, 0.0007836760487407446], [0.0016983607783913612, 0.0007600924000144005], [0.001414324389770627, 0.0007368422229774296], [0.001134400488808751, 0.0007139287190511823], [0.0008586242329329252, 0.0006913546822033823], [0.0005870264139957726, 0.0006691226735711098], [0.00031963433139026165, 0.0006472349050454795], [5.647137004416436e-05, 0.0006256933556869626], [-0.00020244260667823255, 0.0006044995971024036], [-0.000457091344287619, 0.0005836550262756646], [-0.0007074620807543397, 0.00056316057452932], [-0.0009535456192679703, 0.0005430170567706227], [-0.0011953357607126236, 0.000523224996868521], [-0.0014328300021588802, 0.0005037846276536584], [-0.0016660287510603666, 0.0004846958036068827], [-0.0018949354998767376, 0.0004659583210013807], [-0.002119557000696659, 0.00044757165596820414], [-0.00233990210108459, 0.0004295349936001003], [-0.002555983839556575, 0.00041184734436683357], [-0.002767816884443164, 0.0003945074859075248], [-0.002975418930873275, 0.00037751393392682076], [-0.0031788102351129055, 0.0003608650586102158], [-0.003378013614565134, 0.0003445589973125607], [-0.0035730539821088314, 0.00032859371276572347], [-0.0037639583460986614, 0.000312966963974759], [-0.003950756974518299, 0.00029767630621790886], [-0.004133481066673994, 0.00028271920746192336], [-0.0043121641501784325, 0.0002680928446352482], [-0.004486842546612024, 0.0002537943364586681], [-0.004657552111893892, 0.0002398206270299852], [-0.004991114605218172, 0.00021251646103337407], [-0.00516182417050004, 0.00019854275160469115], [-0.005336502101272345, 0.000184244301635772], [-0.005515185184776783, 0.0001696179388090968], [-0.005697909742593765, 0.0001546607818454504], [-0.005884707905352116, 0.00013937015319243073], [-0.006075612735003233, 0.0001237433752976358], [-0.00627065310254693, 0.00010777811985462904], [-0.006469856481999159, 9.147205855697393e-05], [-0.006673247553408146, 7.48231541365385e-05], [-0.006880849599838257, 5.782966036349535e-05], [-0.007092683110386133, 4.0489714592695236e-05], [-0.007308764848858118, 2.2802094463258982e-05], [-0.007529109716415405, 4.765461198985577e-06], [-0.007753731217235327, -1.3621232938021421e-05], [-0.007982637733221054, -3.2358686439692974e-05], [-0.008215837180614471, -5.144753959029913e-05], [-0.00845333095639944, -7.088790880516171e-05], [-0.008695121854543686, -9.068002691492438e-05], [-0.00894120428711176, -0.00011082342825829983], [-0.009191575460135937, -0.0001313178800046444], [-0.009446224197745323, -0.00015216250903904438], [-0.009705137461423874, -0.00017335620941594243], [-0.009968300350010395, -0.00019489775877445936], [-0.01023569330573082, -0.0002167855855077505], [-0.010507291182875633, -0.00023901753593236208], [-0.010783066973090172, -0.0002615915727801621], [-0.011062990874052048, -0.00028450513491407037], [-0.011347027495503426, -0.0003077553119510412], [-0.011635137721896172, -0.00033133896067738533], [-0.011927279643714428, -0.0003552526468411088], [-0.01222340576350689, -0.0003794924123212695], [-0.012523465789854527, -0.0004040541825816035], [-0.012827403843402863, -0.0004289335338398814], [-0.013135162182152271, -0.00045412546023726463], [-0.013446676544845104, -0.0004796249559149146], [-0.013761879876255989, -0.0005054263165220618], [-0.014080699533224106, -0.0005315237212926149], [-0.014403061009943485, -0.0005579110002145171], [-0.014728882350027561, -0.0005845815176144242], [-0.015058077871799469, -0.0006115282885730267], [-0.015390560030937195, -0.0006387440953403711], [-0.015726236626505852, -0.0006662213709205389], [-0.01606500707566738, -0.0006939517334103584], [-0.016406768932938576, -0.0007219272665679455], [-0.016751417890191078, -0.0007501388899981976], [-0.017098842188715935, -0.0007785778725519776], [-0.017448926344513893, -0.0008072343189269304], [-0.017801549285650253, -0.0008360989158973098], [-0.018156591802835464, -0.0008651613024994731], [-0.01851392164826393, -0.0008944111177697778], [-0.018873408436775208, -0.0009238373022526503], [-0.01923491433262825, -0.000953428796492517], [-0.019598301500082016, -0.0009831744246184826], [-0.019963422790169716, -0.0010130619630217552], [-0.02033013291656971, -0.0010430794209241867], [-0.02069827914237976, -0.0010732145747169852], [-0.021067701280117035, -0.0011034541530534625], [-0.021438246592879295, -0.0011337855830788612], [-0.02180974930524826, -0.0011641954770311713], [-0.0221820417791605, -0.0011946698650717735], [-0.022554952651262283, -0.0012251950101926923], [-0.022928308695554733, -0.0012557567097246647], [-0.02330193854868412, -0.0012863405281677842], [-0.02367565594613552, -0.0013169317971915007], [-0.024049285799264908, -0.0013475156156346202], [-0.02442263439297676, -0.0013780767330899835], [-0.024795519188046455, -0.0014085996663197875], [-0.02516774833202362, -0.0014390690485015512], [-0.025539129972457886, -0.0014694688143208623], [-0.02590946853160858, -0.0014997835969552398], [-0.02627856843173504, -0.0015299966325983405], [-0.02664622664451599, -0.0015600918559357524], [-0.02701224759221077, -0.0015900529688224196], [-0.02737642638385296, -0.0016198632074519992], [-0.02773856185376644, -0.0016495062736794353], [-0.028098445385694504, -0.0016789649380370975], [-0.02845587581396103, -0.00170822290237993], [-0.028810642659664154, -0.0017372629372403026], [-0.029162542894482613, -0.001766068278811872], [-0.02951136790215969, -0.001794621697627008], [-0.029856907203793526, -0.0018229064298793674], [-0.03019895777106285, -0.0018509052461013198], [-0.030537309125065804, -0.0018786016153171659], [-0.030871756374835968, -0.0019059780752286315], [-0.03120209090411663, -0.0019330180948600173], [-0.031528111547231674, -0.0019597047939896584], [-0.03184960409998894, -0.001986021175980568], [-0.03216638043522835, -0.002011951059103012], [-0.032478224486112595, -0.0020374776795506477], [-0.03278493881225586, -0.002062584273517132], [-0.03308633714914322, -0.002087255474179983], [-0.03338220715522766, -0.0021114745177328587], [-0.03367236629128456, -0.002135226037353277], [-0.0339566171169281, -0.002158493734896183], [-0.034234777092933655, -0.0021812627092003822], [-0.034506652504205704, -0.0022035175934433937], [-0.03477206453680992, -0.0022252430208027363], [-0.03503083810210228, -0.002246425487101078], [-0.03528279438614845, -0.002267049625515938], [-0.03552775830030441, -0.0022871014662086964], [-0.03576556220650673, -0.0023065670393407345], [-0.035996049642562866, -0.002325434237718582], [-0.03621905669569969, -0.002343688625842333], [-0.03643442690372467, -0.0023613180965185165], [-0.036642007529735565, -0.002378310076892376], [-0.03684166073799133, -0.002394652459770441], [-0.037033237516880035, -0.002410334534943104], [-0.037216607481241226, -0.0024253446608781815], [-0.03739164397120476, -0.002439672127366066], [-0.03755822032690048, -0.002453307621181011], [-0.03771620988845825, -0.0024662399664521217], [-0.03786550834774971, -0.002478460781276226], [-0.0380060076713562, -0.0024899616837501526], [-0.03813760355114937, -0.0025007338263094425], [-0.03826020285487175, -0.0025107692927122116], [-0.03837371617555618, -0.0025200610980391502], [-0.0384780690073967, -0.0025286031886935234], [-0.03857317194342613, -0.002536388114094734], [-0.03865896537899971, -0.002543410751968622], [-0.038735389709472656, -0.0025496664457023144], [-0.0388023778796196, -0.002555149607360363], [-0.03885988891124725, -0.0025598574429750443], [-0.03890787810087204, -0.0025637857615947723], [-0.03894631192088127, -0.0025669317692518234], [-0.03897516056895256, -0.002569293137639761], [-0.03899440914392471, -0.0025708689354360104], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.03900523483753204, -0.002571755088865757], [-0.038992881774902344, -0.0025709401816129684], [-0.03897091746330261, -0.0025694924406707287], [-0.038937997072935104, -0.0025673215277493], [-0.038894135504961014, -0.0025644300039857626], [-0.038839370012283325, -0.0025608190335333347], [-0.03877374529838562, -0.0025564918760210276], [-0.03869730234146118, -0.0025514517910778522], [-0.03861009702086449, -0.00254570203833282], [-0.03851219639182091, -0.0025392468087375164], [-0.03840366378426552, -0.002532091224566102], [-0.03828458860516548, -0.00252423994243145], [-0.038155052810907364, -0.0025156992487609386], [-0.03801514580845833, -0.0025064749643206596], [-0.03786497563123703, -0.0024965733755379915], [-0.037704646587371826, -0.0024860023986548185], [-0.03753427416086197, -0.002474769251421094], [-0.03735398128628731, -0.0024628820829093456], [-0.03716390207409859, -0.0024503490421921015], [-0.036964163184165955, -0.0024371796753257513], [-0.03675490617752075, -0.002423382829874754], [-0.036536287516355515, -0.002408968284726143], [-0.03630845993757248, -0.0023939465172588825], [-0.03607157617807388, -0.002378328237682581], [-0.035825807601213455, -0.0023621239233762026], [-0.03557133302092552, -0.0023453454487025738], [-0.03530831262469292, -0.0023280037567019463], [-0.03503694385290146, -0.0023101111873984337], [-0.034757401794195175, -0.0022916800808161497], [-0.03446988761425018, -0.0022727232426404953], [-0.034174591302871704, -0.0022532534785568714], [-0.033871717751026154, -0.002233283594250679], [-0.03356146812438965, -0.0022128280252218246], [-0.0332440510392189, -0.0021918993443250656], [-0.03291967883706093, -0.0021705124527215958], [-0.032588567584753036, -0.0021486810874193907], [-0.032250937074422836, -0.002126419683918357], [-0.03190699964761734, -0.0021037429105490446], [-0.03155698999762535, -0.002080665435642004], [-0.031201131641864777, -0.0020572023931890726], [-0.030839649960398674, -0.0020333686843514442], [-0.030472777783870697, -0.0020091794431209564], [-0.03010074608027935, -0.0019846500363200903], [-0.029723787680268288, -0.001959795830771327], [-0.029342135414481163, -0.0019346323097124696], [-0.028956027701497078, -0.0019091746071353555], [-0.028565701097249985, -0.0018834391376003623], [-0.028171392157673836, -0.001857440685853362], [-0.027773331850767136, -0.001831195317208767], [-0.027371767908334732, -0.0018047186313197017], [-0.026966925710439682, -0.0017780259950086474], [-0.026559047400951385, -0.0017511331243440509], [-0.026148367673158646, -0.0017240557353943586], [-0.025735123082995415, -0.0016968089621514082], [-0.025319542735815048, -0.0016694081714376807], [-0.0249018631875515, -0.0016418691957369447], [-0.024482309818267822, -0.0016142065869644284], [-0.024061119183897972, -0.0015864357119426131], [-0.02363850735127926, -0.0015585715882480145], [-0.023214709013700485, -0.0015306291170418262], [-0.02278994210064411, -0.0015026226174086332], [-0.022364428266882896, -0.001474567106924951], [-0.021938381716609, -0.0014464762061834335], [-0.021512022241950035, -0.0014183646999299526], [-0.021085556596517563, -0.0013902464415878057], [-0.0206591933965683, -0.0013621347025036812], [-0.020233137533068657, -0.0013340432196855545], [-0.019807595759630203, -0.0013059857301414013], [-0.01938275620341301, -0.0012779745738953352], [-0.018958821892738342, -0.0012500230222940445], [-0.018535977229475975, -0.0012221434153616428], [-0.01811441220343113, -0.0011943480931222439], [-0.01769430562853813, -0.0011666490463539958], [-0.017275838181376457, -0.0011390579165890813], [-0.016859183087944984, -0.001111586345359683], [-0.016444507986307144, -0.0010842453921213746], [-0.01603197678923607, -0.001057045767083764], [-0.015621752478182316, -0.0010299980640411377], [-0.015213988721370697, -0.0010031128767877817], [-0.014808837324380875, -0.000976399693172425], [-0.014406442642211914, -0.000949868350289762], [-0.014006947167217731, -0.0009235282195731997], [-0.013610487803816795, -0.000897388206794858], [-0.013217194937169552, -0.0008714570431038737], [-0.012827194295823574, -0.0008457429357804358], [-0.01244061067700386, -0.0008202540338970721], [-0.012057557702064514, -0.0007949980208650231], [-0.011678148061037064, -0.0007699821144342422], [-0.011302487924695015, -0.0007452135905623436], [-0.01093068066984415, -0.0007206989685073495], [-0.010562821291387081, -0.0006964446511119604], [-0.010199002921581268, -0.0006724568665958941], [-0.009839311242103577, -0.0006487410864792764], [-0.009483829140663147, -0.0006253028404898942], [-0.009132633917033672, -0.0006021473091095686], [-0.008785797283053398, -0.0005792790907435119], [-0.008443387225270271, -0.0005567027255892754], [-0.008105465210974216, -0.0005344223463907838], [-0.007772089447826147, -0.0005124417366459966], [-0.0074433148838579655, -0.0004907644470222294], [-0.007119189482182264, -0.0004693936789408326], [-0.006799756549298763, -0.0004483322845771909], [-0.006485057063400745, -0.0004275830287951976], [-0.0061751254834234715, -0.00040714818169362843], [-0.005869993474334478, -0.00038702969322912395], [-0.005569687578827143, -0.00036722945515066385], [-0.005274229682981968, -0.0003477488935459405], [-0.004983639810234308, -0.00032858923077583313], [-0.004697931464761496, -0.0003097514563705772], [-0.004417115356773138, -0.00029123626882210374], [-0.004141198471188545, -0.00027304404648020864], [-0.0038701840676367283, -0.00025517510948702693], [-0.0036040714476257563, -0.00023762935597915202], [-0.003342856653034687, -0.00022040650947019458], [-0.00308653200045228, -0.00020350610429886729], [-0.002835086779668927, -0.00018692744197323918], [-0.002588507253676653, -0.00017066954751498997], [-0.002346775960177183, -0.00015473134408239275], [-0.00210987264290452, -0.00013911146379541606], [-0.0018777744844555855, -0.00012380839325487614], [-0.0016504551749676466, -0.00010882043716264889], [-0.001427886658348143, -9.414568921783939e-05], [-0.0012100375024601817, -7.978211215231568e-05], [-0.0009968739468604326, -6.57274795230478e-05], [-0.0007883599027991295, -5.197939753998071e-05], [-0.0005844570696353912, -3.853535235975869e-05], [-0.0003851248766295612, -2.5392660973011516e-05], [-0.00019032071577385068, -1.2548525774036534e-05]]}, {"name": "CX_d25_u51", "samples": [[8.368780254386365e-05, 1.1388156053726561e-05], [0.00016934705490712076, 2.3044587578624487e-05], [0.0002569973876234144, 3.497195939416997e-05], [0.00034665747079998255, 4.717282354249619e-05], [0.00043834527605213225, 5.964960655546747e-05], [0.0005320774507708848, 7.240459672175348e-05], [0.0006278701475821435, 8.543996955268085e-05], [0.0007257379475049675, 9.875773685052991e-05], [0.000825694645754993, 0.00011235973943257704], [0.0009277528733946383, 0.00012624773080460727], [0.0010319239227101207, 0.00014042323164176196], [0.0011382179800421, 0.00015488761710003018], [0.0012466439511626959, 0.00016964212409220636], [0.0013572094030678272, 0.00018468777125235647], [0.0014699205057695508, 0.00020002538803964853], [0.001584781683050096, 0.00021565560018643737], [0.0017017967766150832, 0.0002315788879059255], [0.001820967299863696, 0.0002477954840287566], [0.0019422932527959347, 0.00026430541765876114], [0.002065773820504546, 0.00028110851417295635], [0.002191405277699232, 0.00029820436611771584], [0.0023191834334284067, 0.0003155923041049391], [0.0024491020012646914, 0.0003332714841235429], [0.0025811525993049145, 0.0003512408002279699], [0.002715325215831399, 0.00036949891364201903], [0.002851608209311962, 0.0003880441654473543], [0.0029899878427386284, 0.0004068746929988265], [0.0031304487492889166, 0.00042598851723596454], [0.0032729734666645527, 0.0004453831061255187], [0.003417542204260826, 0.0004650558694265783], [0.0035641337744891644, 0.00048500392585992813], [0.0037127244286239147, 0.0005052240449003875], [0.0038632892537862062, 0.0005257127340883017], [0.004015800543129444, 0.000546466326341033], [0.00417022779583931, 0.0005674806307069957], [0.004326540045440197, 0.000588751514442265], [0.004484704229980707, 0.0006102742627263069], [0.004644681699573994, 0.0006320439279079437], [0.004806437063962221, 0.0006540553877130151], [0.004969928413629532, 0.0006763031124137342], [0.005135113373398781, 0.0006987813394516706], [0.0053019472397863865, 0.0007214839570224285], [0.005470383446663618, 0.0007444045040756464], [0.005640372168272734, 0.000767536461353302], [0.005811862647533417, 0.0007908727857284248], [0.005984801333397627, 0.0008144061430357397], [0.0061591328121721745, 0.0008381289662793279], [0.006334798876196146, 0.000862033455632627], [0.006511739455163479, 0.0008861114038154483], [0.006689892616122961, 0.0009103542543016374], [0.006869195029139519, 0.000934753508772701], [0.007049578242003918, 0.0009592999704182148], [0.0072309765964746475, 0.0009839844424277544], [0.0074133179150521755, 0.0010087972041219473], [0.007596529088914394, 0.00103372847661376], [0.007780537474900484, 0.0010587682481855154], [0.007965266704559326, 0.0010839059250429273], [0.008150637149810791, 0.0011091309133917093], [0.008336570113897324, 0.0011344326194375753], [0.008522982709109783, 0.0011597995180636644], [0.008709792047739029, 0.0011852203169837594], [0.008896912448108196, 0.0012106833746656775], [0.009084257297217846, 0.001236177165992558], [0.009271737188100815, 0.0012616891181096435], [0.00945926271378994, 0.0012872074730694294], [0.009646742604672909, 0.0013127196580171585], [0.00983408372849226, 0.001338212750852108], [0.010021190159022808, 0.001363673945888877], [0.010207968764007092, 0.001389090670272708], [0.010394321754574776, 0.0014144494198262691], [0.010580151341855526, 0.0014397369232028723], [0.010765357874333858, 0.0014649396762251854], [0.010949842631816864, 0.0014900442911311984], [0.011133505962789059, 0.001515036914497614], [0.01131624449044466, 0.0015399038093164563], [0.011497956700623035, 0.0015646310057491064], [0.011678540147840977, 0.0015892046503722668], [0.011857893317937851, 0.0016136107733473182], [0.012035908177495003, 0.001637835055589676], [0.012212486006319523, 0.001661863410845399], [0.01238751970231533, 0.0016856819856911898], [0.012560904957354069, 0.0017092761117964983], [0.012732540257275105, 0.001732632052153349], [0.012902319431304932, 0.001755735371261835], [0.013070139102637768, 0.0017785720992833376], [0.013235894963145256, 0.0018011280335485935], [0.013399485498666763, 0.0018233892042189837], [0.013560807332396507, 0.0018453417578712106], [0.013719757087528706, 0.0018669716082513332], [0.013876236043870449, 0.001888265018351376], [0.01403014175593853, 0.0019092083675786853], [0.014181376434862614, 0.0019297882681712508], [0.014329840429127216, 0.001949991099536419], [0.014475435949862003, 0.0019698035903275013], [0.014618068933486938, 0.001989212818443775], [0.014757642522454262, 0.0020082059781998396], [0.014894066378474236, 0.0020267704967409372], [0.015027245506644249, 0.0020448933355510235], [0.015157093293964863, 0.0020625628530979156], [0.015283520333468914, 0.0020797669421881437], [0.015406439080834389, 0.0020964937284588814], [0.015525766648352146, 0.002112731570377946], [0.01564141921699047, 0.0021284695249050856], [0.01575331948697567, 0.0021436968818306923], [0.0158613882958889, 0.0021584026981145144], [0.015965551137924194, 0.0021725769620388746], [0.016065731644630432, 0.0021862094290554523], [0.016161862760782242, 0.0021992907859385014], [0.016253875568509102, 0.002211811952292919], [0.01634170487523079, 0.0022237636148929596], [0.01642528921365738, 0.0022351376246660948], [0.016504565253853798, 0.002245925599709153], [0.016579480841755867, 0.002256120089441538], [0.01664998009800911, 0.002265713643282652], [0.016716014593839645, 0.0022746992763131857], [0.016777532175183296, 0.0022830707021057606], [0.016834493726491928, 0.0022908218670636415], [0.01688685268163681, 0.0022979469504207373], [0.016934575513005257, 0.0023044408299028873], [0.016977624967694283, 0.0023102990817278624], [0.0170159712433815, 0.0023155170492827892], [0.017049584537744522, 0.002320091240108013], [0.017078444361686707, 0.002324018394574523], [0.017102524638175964, 0.002327295020222664], [0.017121808603405952, 0.0023299194872379303], [0.017136286944150925, 0.0023318897001445293], [0.017145942896604538, 0.002333203563466668], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017151378095149994, 0.0023339432664215565], [0.017144668847322464, 0.0023332014679908752], [0.017132747918367386, 0.0023318834137171507], [0.017114879563450813, 0.0023299073800444603], [0.017091071233153343, 0.0023272749967873096], [0.017061345279216766, 0.002323988126590848], [0.017025720328092575, 0.002320049097761512], [0.016984224319458008, 0.0023154609370976686], [0.0169368889182806, 0.0023102269042283297], [0.016883745789527893, 0.002304350957274437], [0.016824834048748016, 0.002297836821526289], [0.016760198399424553, 0.0022906900849193335], [0.016689883545041084, 0.0022829154040664434], [0.01661394163966179, 0.0022745183669030666], [0.016532424837350845, 0.002265505027025938], [0.016445398330688477, 0.0022558823693543673], [0.01635291799902916, 0.002245656680315733], [0.016255052760243416, 0.0022348356433212757], [0.016151873394846916, 0.002223426941782236], [0.01604345068335533, 0.002211438724771142], [0.015929866582155228, 0.0021988796070218086], [0.015811195597052574, 0.002185758203268051], [0.015687527135014534, 0.0021720838267356157], [0.015558943152427673, 0.0021578664891421795], [0.015425537712872028, 0.0021431157365441322], [0.015287402085959911, 0.0021278418134897947], [0.015144633129239082, 0.0021120558958500624], [0.014997328631579876, 0.002095768228173256], [0.0148455910384655, 0.002078990451991558], [0.014689522795379162, 0.002061733976006508], [0.014529232867062092, 0.002044010441750288], [0.014364827424287796, 0.0020258319564163685], [0.014196420088410378, 0.0020072110928595066], [0.014024121686816216, 0.0019881599582731724], [0.013848047703504562, 0.001968691125512123], [0.013668316416442394, 0.0019488180987536907], [0.013485044240951538, 0.0019285535672679543], [0.013298352248966694, 0.001907910918816924], [0.013108362443745136, 0.00188690354116261], [0.012915195897221565, 0.0018655449384823442], [0.012718979269266129, 0.0018438491970300674], [0.0125198345631361, 0.0018218295881524682], [0.012317890301346779, 0.0017995003145188093], [0.012113272212445736, 0.0017768755787983537], [0.011906106024980545, 0.0017539691179990768], [0.011696522124111652, 0.0017307951347902417], [0.011484646238386631, 0.001707367948256433], [0.011270608752965927, 0.00168370152823627], [0.011054538190364838, 0.001659810426644981], [0.01083656121045351, 0.0016357086133211851], [0.010616807267069817, 0.0016114101745188236], [0.010395405814051628, 0.0015869296621531248], [0.010172483511269093, 0.001562280929647386], [0.009948167949914932, 0.0015374781796708703], [0.009722585789859295, 0.0015125353820621967], [0.009495862759649754, 0.001487466273829341], [0.009268123656511307, 0.0014622850576415658], [0.009039493277668953, 0.0014370052376762033], [0.008810095489025116, 0.0014116405509412289], [0.008580051362514496, 0.0013862043851986527], [0.008349481970071793, 0.001360710128210485], [0.008118506520986557, 0.001335170934908092], [0.007887243293225765, 0.0013095999602228403], [0.007655808702111244, 0.0012840100098401308], [0.007424316834658384, 0.0012584137730300426], [0.007192880380898714, 0.0012328237062320113], [0.006961612030863762, 0.0012072521494701505], [0.0067306202836334705, 0.0011817110935226083], [0.006500012706965208, 0.0011562126455828547], [0.006269894540309906, 0.0011307683307677507], [0.006040369160473347, 0.0011053894413635135], [0.005811537150293589, 0.0010800872696563601], [0.005583497695624828, 0.0010548728751018643], [0.0053563471883535385, 0.0010297566186636686], [0.00513018062338233, 0.0010047492105513811], [0.004905088804662228, 0.000979860546067357], [0.004681161604821682, 0.0009551007533445954], [0.004458485636860132, 0.0009304792620241642], [0.004237145651131868, 0.0009060055017471313], [0.004017223138362169, 0.0008816884947009385], [0.003798797493800521, 0.0008575370302423835], [0.0035819457843899727, 0.0008335595484822989], [0.0033667415846139193, 0.0008097642567008734], [0.003153256606310606, 0.0007861590129323304], [0.002941559301689267, 0.0007627514423802495], [0.0027317155618220568, 0.000739548821002245], [0.0025237889494746923, 0.0007165581919252872], [0.0023178397677838802, 0.0006937862490303814], [0.0021139264572411776, 0.000671239395160228], [0.0019121039658784866, 0.000648923683911562], [0.0017124246805906296, 0.0006268449942581356], [0.0015149387763813138, 0.0006050087977200747], [0.0013196931686252356, 0.0005834203329868615], [0.0011267324443906546, 0.0005620844895020127], [0.0009360984549857676, 0.0005410059238784015], [0.0007478304905816913, 0.0005201889434829354], [0.0005619650473818183, 0.0004996376810595393], [0.000378536235075444, 0.00047935580369085073], [0.0001975755294552073, 0.0004593468038365245], [1.911189974634908e-05, 0.00043961394112557173], [-0.0001568282168591395, 0.0004201600968372077], [-0.0003302208206150681, 0.0004009879194200039], [-0.0005010443273931742, 0.0003820998244918883], [-0.0006692795432172716, 0.00036349790752865374], [-0.0008349096169695258, 0.0003451840311754495], [-0.0009979201713576913, 0.0003271598252467811], [-0.0011582986917346716, 0.0003094266285188496], [-0.0013160351663827896, 0.0002919855760410428], [-0.001471121795475483, 0.0002748375409282744], [-0.001623552874661982, 0.0002579831052571535], [-0.0017733244458213449, 0.00024142272013705224], [-0.0019204349955543876, 0.00022515658929478377], [-0.002064884640276432, 0.0002091846545226872], [-0.0022066759411245584, 0.00019350666843820363], [-0.0023458125069737434, 0.00017812222358770669], [-0.0024823006242513657, 0.00016303063603118062], [-0.0026161475107073784, 0.00014823104720562696], [-0.002747362945228815, 0.0001337224675808102], [-0.00287595740519464, 0.00011950367479585111], [-0.0030019436962902546, 0.00010557324276305735], [-0.003125335555523634, 9.192968718707561e-05], [-0.0032461490482091904, 7.85712618380785e-05], [-0.003364400938153267, 6.549604586325586e-05], [-0.003480109153315425, 5.270208930596709e-05], [-0.003593293484300375, 4.018718027509749e-05], [-0.003703974885866046, 2.7949048671871424e-05], [-0.0038121752440929413, 1.598524977453053e-05], [-0.003917917609214783, 4.2932224459946156e-06], [-0.004124534782022238, -1.855267328210175e-05], [-0.0042302776128053665, -3.0244700610637665e-05], [-0.004338477738201618, -4.2208528611809015e-05], [-0.004449159372597933, -5.444666021503508e-05], [-0.0045623439364135265, -6.696154014207423e-05], [-0.004678051918745041, -7.975552580319345e-05], [-0.004796303808689117, -9.283071267418563e-05], [-0.004917117301374674, -0.00010618913802318275], [-0.005040509160608053, -0.00011983266449533403], [-0.005166495684534311, -0.0001337631547357887], [-0.005295089911669493, -0.00014798188931308687], [-0.005426305346190929, -0.0001624904980417341], [-0.005560152232646942, -0.00017729008686728776], [-0.005696639884263277, -0.00019238164531998336], [-0.005835777148604393, -0.00020776616293005645], [-0.005977568216621876, -0.00022344410535879433], [-0.006122017744928598, -0.00023941605468280613], [-0.006269128527492285, -0.0002556821855250746], [-0.006418900098651648, -0.00027224255609326065], [-0.006571331061422825, -0.00028909699176438153], [-0.006726417690515518, -0.00030624508508481085], [-0.00688415439799428, -0.00032368613756261766], [-0.007044532801955938, -0.00034141933429054916], [-0.00720754312351346, -0.00035944345290772617], [-0.007373173255473375, -0.00037775738746859133], [-0.00754140829667449, -0.0003963592753279954], [-0.007712231948971748, -0.00041524742846377194], [-0.007885624654591084, -0.00043441951856948435], [-0.008061565458774567, -0.00045387339196167886], [-0.008240029215812683, -0.00047360631288029253], [-0.008420989848673344, -0.0004936152836307883], [-0.00860441755503416, -0.0005138970445841551], [-0.008790283463895321, -0.000534448423422873], [-0.008978551253676414, -0.0005552653456106782], [-0.009169185534119606, -0.0005763439694419503], [-0.009362146258354187, -0.0005976797547191381], [-0.0095573915168643, -0.0006192682776600122], [-0.009754877537488937, -0.0006411044159904122], [-0.009954556822776794, -0.0006631831638514996], [-0.010156380012631416, -0.0006854988168925047], [-0.010360293090343475, -0.00070804578717798], [-0.010566242039203644, -0.0007308176718652248], [-0.010774169117212296, -0.0007538084173575044], [-0.010984012857079506, -0.0007770109223201871], [-0.011195709928870201, -0.000800418434664607], [-0.011409195140004158, -0.000824023736640811], [-0.01162439864128828, -0.0008478190284222364], [-0.011841250583529472, -0.0008717965101823211], [-0.012059676460921764, -0.000895948032848537], [-0.012279598973691463, -0.0009202649816870689], [-0.012500938959419727, -0.0009447387419641018], [-0.01272361446171999, -0.000969360233284533], [-0.012947541661560535, -0.0009941200260072947], [-0.01317263301461935, -0.0010190085740759969], [-0.013398800045251846, -0.0010440160986036062], [-0.01362595148384571, -0.001069132355041802], [-0.013853989541530609, -0.0010943467495962977], [-0.014082822017371655, -0.001119648921303451], [-0.014312347397208214, -0.0011450278107076883], [-0.014542466029524803, -0.0011704722419381142], [-0.014773073606193066, -0.0011959706898778677], [-0.015004065819084644, -0.001221511629410088], [-0.01523533370345831, -0.001247083186171949], [-0.01546677015721798, -0.0012726732529699802], [-0.015698259696364403, -0.0012982694897800684], [-0.0159296952188015, -0.001323859440162778], [-0.016160959377884865, -0.0013494304148480296], [-0.0163919348269701, -0.0013749696081504226], [-0.016622502356767654, -0.0014004637487232685], [-0.016852548345923424, -0.0014259000308811665], [-0.01708194613456726, -0.0014512648340314627], [-0.017310576513409615, -0.0014765446539968252], [-0.017538314685225487, -0.0015017258701846004], [-0.017765037715435028, -0.0015267947455868125], [-0.01799062080681324, -0.001551737659610808], [-0.018214935436844826, -0.0015765404095873237], [-0.018437858670949936, -0.0016011890256777406], [-0.018659260123968124, -0.001625669770874083], [-0.018879013136029243, -0.0016499679768458009], [-0.019096989184617996, -0.0016740699065849185], [-0.019313061609864235, -0.0016979611245915294], [-0.019527100026607513, -0.0017216274281963706], [-0.019738974049687386, -0.0017450546147301793], [-0.019948558881878853, -0.0017682284815236926], [-0.02015572413802147, -0.0017911350587382913], [-0.020360343158245087, -0.0018137599108740687], [-0.02056228742003441, -0.0018360890680924058], [-0.020761430263519287, -0.0018581085605546832], [-0.020957648754119873, -0.0018798046512529254], [-0.02115081436932087, -0.0019011631375178695], [-0.021340806037187576, -0.0019221705151721835], [-0.021527497097849846, -0.001942813047207892], [-0.021710768342018127, -0.0019630775786936283], [-0.02189050056040287, -0.0019829506054520607], [-0.022066574543714523, -0.0020024192053824663], [-0.022238871082663536, -0.0020214703399688005], [-0.022407280281186104, -0.002040091436356306], [-0.022571684792637825, -0.0020582699216902256], [-0.022731976583600044, -0.0020759934559464455], [-0.02288804203271866, -0.002093249699100852], [-0.02303978241980076, -0.0021100277081131935], [-0.02318708598613739, -0.0021263151429593563], [-0.023329855874180794, -0.0021421012934297323], [-0.02346799150109291, -0.00215737521648407], [-0.02360139600932598, -0.002172125969082117], [-0.023729979991912842, -0.0021863433066755533], [-0.023853648453950882, -0.002200017450377345], [-0.023972319439053535, -0.002213139086961746], [-0.02408590354025364, -0.0022256982047110796], [-0.024194324389100075, -0.0022376864217221737], [-0.024297505617141724, -0.0022490951232612133], [-0.024395370855927467, -0.0022599161602556705], [-0.024487849324941635, -0.002270141616463661], [-0.024574877694249153, -0.0022797645069658756], [-0.024656394496560097, -0.0022887778468430042], [-0.024732334539294243, -0.0022971746511757374], [-0.02480264939367771, -0.0023049493320286274], [-0.024867286905646324, -0.0023120963014662266], [-0.02492619678378105, -0.002318610204383731], [-0.02497933991253376, -0.0023244861513376236], [-0.025026677176356316, -0.0023297204170376062], [-0.025068171322345734, -0.0023343083448708057], [-0.025103796273469925, -0.002338247373700142], [-0.025133522227406502, -0.0023415344767272472], [-0.025157330557703972, -0.0023441666271537542], [-0.025175200775265694, -0.0023461426608264446], [-0.025187121704220772, -0.002347460947930813], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025193829089403152, -0.0023482025135308504], [-0.025185847654938698, -0.00234745885245502], [-0.025171661749482155, -0.0023461366072297096], [-0.025150397792458534, -0.0023441545199602842], [-0.02512206882238388, -0.0023415142204612494], [-0.025086697190999985, -0.002338217105716467], [-0.025044307112693787, -0.002334266435354948], [-0.024994932115077972, -0.002329664072021842], [-0.02493860386312008, -0.002324413973838091], [-0.024875367060303688, -0.002318520098924637], [-0.02480526827275753, -0.002311986405402422], [-0.024728354066610336, -0.002304817782714963], [-0.02464468404650688, -0.0022970193531364202], [-0.02455432154238224, -0.0022885967046022415], [-0.02445732243359089, -0.002279556356370449], [-0.024353764951229095, -0.0022699041292071342], [-0.02424372360110283, -0.002259647473692894], [-0.02412726916372776, -0.002248793374747038], [-0.024004492908716202, -0.002237349981442094], [-0.023875480517745018, -0.002225325210019946], [-0.023740321397781372, -0.00221272767521441], [-0.023599114269018173, -0.0021995664574205875], [-0.023451954126358032, -0.002185850404202938], [-0.023298952728509903, -0.0021715897601097822], [-0.023140210658311844, -0.002156793838366866], [-0.02297583967447281, -0.002141473814845085], [-0.02280595526099205, -0.0021256394684314728], [-0.02263067290186882, -0.002109302207827568], [-0.022450115531682968, -0.00209247344173491], [-0.022264407947659492, -0.002075164346024394], [-0.02207367494702339, -0.00205738702788949], [-0.021878043189644814, -0.002039153128862381], [-0.021677648648619652, -0.0020204754546284676], [-0.0214726272970438, -0.00200136611238122], [-0.021263113245368004, -0.0019818381406366825], [-0.021049246191978455, -0.0019619048107415438], [-0.020831163972616196, -0.0019415783463045955], [-0.020609017461538315, -0.0019208730664104223], [-0.020382942631840706, -0.0018998016603291035], [-0.020153090357780457, -0.0018783779814839363], [-0.019919604063034058, -0.00185661599971354], [-0.019682640209794044, -0.0018345294520258904], [-0.01944234035909176, -0.0018121323082596064], [-0.019198859110474586, -0.0017894384218379855], [-0.018952347338199615, -0.0017664621118456125], [-0.018702955916523933, -0.001743217697367072], [-0.018450841307640076, -0.0017197192646563053], [-0.01819615066051483, -0.0016959807835519314], [-0.017939042299985886, -0.0016720168059691787], [-0.017679667100310326, -0.00164784153457731], [-0.01741817779839039, -0.0016234692884609103], [-0.017154723405838013, -0.0015989140374585986], [-0.016889462247490883, -0.0015741902170702815], [-0.016622543334960938, -0.0015493119135499], [-0.016354119405150414, -0.0015242932131513953], [-0.0160843338817358, -0.0014991478528827429], [-0.015813343226909637, -0.0014738900354132056], [-0.015541289001703262, -0.0014485331485047936], [-0.015268322080373764, -0.0014230910455808043], [-0.014994587749242783, -0.0013975775800645351], [-0.014720226638019085, -0.001372005557641387], [-0.014445383101701736, -0.0013463885989040136], [-0.01417019683867693, -0.0013207397423684597], [-0.013894806616008282, -0.0012950717937201262], [-0.013619348406791687, -0.0012693977914750576], [-0.013343957252800465, -0.0012437297264114022], [-0.01306876353919506, -0.0012180802877992392], [-0.012793902307748795, -0.0011924614664167166], [-0.01251949556171894, -0.0011668852530419827], [-0.012245671823620796, -0.0011413635220378637], [-0.011972553096711636, -0.0011159073328599334], [-0.011700259521603584, -0.0010905282106250525], [-0.011428910307586193, -0.0010652369819581509], [-0.01115861814469099, -0.001040044124238193], [-0.01088949665427208, -0.0010149605805054307], [-0.010621652938425541, -0.0009899961296468973], [-0.01035519689321518, -0.0009651608997955918], [-0.010090229101479053, -0.000940464495215565], [-0.009826850146055222, -0.0009159162291325629], [-0.009565159678459167, -0.0008915251819416881], [-0.009305249899625778, -0.0008673001429997385], [-0.009047211147844791, -0.0008432495524175465], [-0.008791135624051094, -0.0008193818503059447], [-0.008537103421986103, -0.0007957047200761735], [-0.008285198360681534, -0.0007722258451394737], [-0.008035500533878803, -0.0007489525014534593], [-0.007788083516061306, -0.0007258919067680836], [-0.007543019484728575, -0.0007030506385490298], [-0.007300377823412418, -0.0006804350996389985], [-0.007060223259031773, -0.0006580514600500464], [-0.006822620518505573, -0.0006359054823406041], [-0.006587626412510872, -0.0006140027544461191], [-0.006355299148708582, -0.0005923486314713955], [-0.006125689949840307, -0.0005709477700293064], [-0.005898849572986364, -0.0005498050013557076], [-0.005674824118614197, -0.0005289246328175068], [-0.005453658290207386, -0.0005083107971586287], [-0.0052353921346366405, -0.00048796716146171093], [-0.00502006197348237, -0.0004678972181864083], [-0.004807703197002411, -0.0004481042269617319], [-0.004598347935825586, -0.0004285911563783884], [-0.0043920231983065605, -0.00040936056757345796], [-0.004188755992799997, -0.0003904149343725294], [-0.0039885686710476875, -0.0003717563522513956], [-0.0037914810236543417, -0.0003533867420628667], [-0.0035975107457488775, -0.0003353076463099569], [-0.003406672040000558, -0.00031752046197652817], [-0.00321897747926414, -0.00030002626590430737], [-0.0030344356782734394, -0.0002828259894158691], [-0.0028530540876090527, -0.000265920243691653], [-0.0026748368982225657, -0.000249309407081455], [-0.0024997862055897713, -0.00023299374151974916], [-0.0023279020097106695, -0.00021697318879887462], [-0.0021591808181256056, -0.00020124744332861155], [-0.0019936184398829937, -0.00018581614131107926], [-0.0018312077736482024, -0.00017067856970243156], [-0.001671939855441451, -0.00015583392814733088], [-0.0015158033929765224, -0.00014128115435596555], [-0.0013627854641526937, -0.00012701905507128686], [-0.0012128711678087711, -0.00011304622603347525], [-0.0010660437401384115, -9.936110291164368e-05], [-0.0009222847293131053, -8.596197585575283e-05], [-0.0007815739954821765, -7.28469603927806e-05], [-0.0006438897107727826, -6.0014041082467884e-05], [-0.0005092086503282189, -4.74610278615728e-05], [-0.0003775060176849365, -3.518562516546808e-05], [-0.00024875556118786335, -2.3185377358458936e-05], [-0.00012292986502870917, -1.1457734217401594e-05]]}, {"name": "CX_d25_u55", "samples": [[0.00017789434059523046, 1.5457200788659975e-05], [0.0003599794290494174, 3.1278534152079374e-05], [0.000546296825632453, 4.746761987917125e-05], [0.0007368865190073848, 6.402791768778116e-05], [0.0009317863150499761, 8.096271631075069e-05], [0.0011310320114716887, 9.827513713389635e-05], [0.001334657659754157, 0.00011596811964409426], [0.001542694284580648, 0.0001340443704975769], [0.0017551712226122618, 0.00015250645810738206], [0.0019721155986189842, 0.00017135668895207345], [0.002193551044911146, 0.0001905971730593592], [0.0024194989819079638, 0.00021022975852247328], [0.0026499792002141476, 0.00023025611881166697], [0.0028850070666521788, 0.00025067763635888696], [0.003124595619738102, 0.0002714954607654363], [0.0033687555696815252, 0.00029271046514622867], [0.0036174929700791836, 0.0003143232024740428], [0.00387081247754395, 0.000336334080202505], [0.004128714092075825, 0.00035874309833161533], [0.004391195718199015, 0.0003815500531345606], [0.004658249206840992, 0.0004047543043270707], [0.004929866176098585, 0.0004283550370018929], [0.005206033121794462, 0.0004523511161096394], [0.005486731417477131, 0.00047674094093963504], [0.005771941039711237, 0.000501522677950561], [0.0060616363771259785, 0.0005266943480819464], [0.006355788558721542, 0.0005522530991584063], [0.006654364988207817, 0.0005781963700428605], [0.006957327947020531, 0.0006045207846909761], [0.0072646369226276875, 0.0006312227342277765], [0.007576244417577982, 0.0006582982605323195], [0.007892102934420109, 0.0006857432308606803], [0.008212157525122166, 0.0007135525811463594], [0.00853634811937809, 0.000741721538361162], [0.008864614181220531, 0.0007702443981543183], [0.00919688493013382, 0.0007991153979673982], [0.009533092379570007, 0.0008283283677883446], [0.009873156435787678, 0.0008578764973208308], [0.010216997936367989, 0.0008877528016455472], [0.010564529336988926, 0.0009179497137665749], [0.010915660299360752, 0.0009484594920650125], [0.011270297691226006, 0.0009792738128453493], [0.011628341861069202, 0.001010384177789092], [0.011989685706794262, 0.0010417812736704946], [0.012354221194982529, 0.0010734556708484888], [0.0127218347042799, 0.0011053975904360414], [0.013092408888041973, 0.0011375966714695096], [0.013465821743011475, 0.0011700423201546073], [0.013841941952705383, 0.0012027234770357609], [0.014220641925930977, 0.0012356285005807877], [0.014601781964302063, 0.0012687456328421831], [0.01498522236943245, 0.0013020627666264772], [0.015370816923677921, 0.0013355669798329473], [0.015758417546749115, 0.001369245583191514], [0.01614786870777607, 0.0014030850725248456], [0.016539014875888824, 0.0014370714779943228], [0.016931690275669098, 0.00147119106259197], [0.017325732856988907, 0.0015054290415719151], [0.017720967531204224, 0.0015397710958495736], [0.01811722293496132, 0.0015742017421871424], [0.018514322116971016, 0.0016087056137621403], [0.01891208253800869, 0.0016432668780907989], [0.019310317933559418, 0.001677869469858706], [0.019708843901753426, 0.0017124973237514496], [0.020107464864850044, 0.001747133326716721], [0.020505987107753754, 0.001781760947778821], [0.020904216915369034, 0.0018163628410547972], [0.02130194753408432, 0.0018509216606616974], [0.021698981523513794, 0.0018854199443012476], [0.02209511026740074, 0.001919839414767921], [0.02249012514948845, 0.001954162260517478], [0.022883817553520203, 0.001988370204344392], [0.02327597886323929, 0.002022444736212492], [0.0236663855612278, 0.002056367229670286], [0.024054832756519318, 0.0020901192910969257], [0.024441096931695938, 0.002123681828379631], [0.02482496201992035, 0.0021570357494056225], [0.02520620822906494, 0.0021901619620621204], [0.025584615767002106, 0.0022230420727282763], [0.025959964841604233, 0.002255655825138092], [0.026332031935453415, 0.0022879845928400755], [0.026700597256422043, 0.002320009283721447], [0.027065441012382507, 0.0023517103400081396], [0.027426335960626602, 0.00238306843675673], [0.027783069759607315, 0.002414064947515726], [0.02813541516661644, 0.0024446803145110607], [0.028483157977461815, 0.0024748954456299543], [0.02882607840001583, 0.0025046917144209146], [0.029163958504796028, 0.002534050028771162], [0.029496582224965096, 0.002562951762229204], [0.02982373908162117, 0.0025913785211741924], [0.03014521487057209, 0.002619311213493347], [0.03046080283820629, 0.0026467328425496817], [0.03077029623091221, 0.00267362454906106], [0.031073488295078278, 0.002699968870729208], [0.03137018159031868, 0.002725748112425208], [0.03166017308831215, 0.002750945743173361], [0.031943272799253464, 0.002775544300675392], [0.0322192907333374, 0.0027995272539556026], [0.032488033175468445, 0.0028228783048689365], [0.032749321311712265, 0.0028455813881009817], [0.03300297260284424, 0.002867621136829257], [0.033248815685510635, 0.0028889826498925686], [0.033486682921648026, 0.0029096505604684353], [0.03371640294790268, 0.002929610898718238], [0.03393781930208206, 0.0029488499276340008], [0.03415077179670334, 0.002967353444546461], [0.03435511887073517, 0.0029851088766008615], [0.034550707787275314, 0.003002103650942445], [0.03473740443587303, 0.0030183258932083845], [0.034915074706077576, 0.0030337637290358543], [0.0350835956633091, 0.0030484062153846025], [0.03524284437298775, 0.0030622431077063084], [0.03539270907640457, 0.003075264859944582], [0.03553307428956032, 0.0030874612275511026], [0.03566383942961693, 0.003098823595792055], [0.03578491881489754, 0.0031093440484255552], [0.035896219313144684, 0.0031190149020403624], [0.0359976626932621, 0.0031278294045478106], [0.03608917444944382, 0.00313578057102859], [0.03617068752646446, 0.003142863279208541], [0.03624214231967926, 0.003149071941152215], [0.03630348667502403, 0.003154402133077383], [0.0363546758890152, 0.003158849896863103], [0.036395665258169174, 0.00316241174004972], [0.03642643615603447, 0.003165085567161441], [0.03644696623086929, 0.003166869282722473], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.036458518356084824, 0.0031678732484579086], [0.03644557297229767, 0.003166883485391736], [0.036422569304704666, 0.003165125148370862], [0.0363880880177021, 0.003162489039823413], [0.03634215146303177, 0.0031589774880558252], [0.03628479316830635, 0.003154592588543892], [0.03621605411171913, 0.0031493378337472677], [0.03613599017262459, 0.003143217181786895], [0.0360446497797966, 0.003136234823614359], [0.035942111164331436, 0.0031283958815038204], [0.03582844138145447, 0.0031197064090520144], [0.03570371866226196, 0.003110172227025032], [0.03556804731488228, 0.0030998005531728268], [0.03542151302099228, 0.0030885988380759954], [0.03526422753930092, 0.0030765747651457787], [0.03509630262851715, 0.003063737880438566], [0.034917861223220825, 0.0030500967986881733], [0.03472902625799179, 0.0030356610659509897], [0.03452993556857109, 0.0030204413924366236], [0.034320734441280365, 0.0030044489540159702], [0.034101564437150955, 0.0029876946937292814], [0.033872589468955994, 0.00297019025310874], [0.03363396227359772, 0.00295194867067039], [0.033385857939720154, 0.0029329818207770586], [0.033128444105386734, 0.002913303906098008], [0.03286191076040268, 0.0028929286636412144], [0.03258642926812172, 0.002871869131922722], [0.03230220451951027, 0.0028501413762569427], [0.032009419053792953, 0.0028277593664824963], [0.031708281487226486, 0.002804738702252507], [0.031398992985486984, 0.0027810949832201004], [0.03108176961541176, 0.0027568445075303316], [0.030756819993257523, 0.0027320035733282566], [0.030424365773797035, 0.0027065889444202185], [0.030084624886512756, 0.0026806173846125603], [0.029737824574112892, 0.0026541061233729124], [0.029384193941950798, 0.002627072622999549], [0.029023965820670128, 0.002599534811452031], [0.028657371178269386, 0.0025715103838592768], [0.028284652158617973, 0.002543017501011491], [0.027906043455004692, 0.002514074556529522], [0.027521787211298943, 0.002484699944034219], [0.027132129296660423, 0.0024549122899770737], [0.026737309992313385, 0.002424730220809579], [0.026337575167417526, 0.0023941723629832268], [0.025933174416422844, 0.0023632575757801533], [0.025524353608489037, 0.0023320051841437817], [0.025111360475420952, 0.0023004335816949606], [0.024694442749023438, 0.0022685620933771133], [0.02427385002374649, 0.002236409578472376], [0.02384982630610466, 0.002203994896262884], [0.023422623053193092, 0.0021713371388614178], [0.022992486134171486, 0.0021384551655501127], [0.02255966141819954, 0.0021053676027804613], [0.022124391049146652, 0.002072093077003956], [0.021686920896172523, 0.0020386504475027323], [0.021247491240501404, 0.0020050581078976393], [0.020806342363357544, 0.001971334218978882], [0.020363708958029747, 0.001937496941536665], [0.019919829443097115, 0.0019035643199458718], [0.01947493851184845, 0.0018695543985813856], [0.01902926154434681, 0.0018354844069108367], [0.018583031371235847, 0.0018013721564784646], [0.018136469647288322, 0.0017672344110906124], [0.017689798027276993, 0.0017330882837995887], [0.01724323257803917, 0.0016989505384117365], [0.016796991229057312, 0.0016648373566567898], [0.016351284459233284, 0.0016307650366798043], [0.01590631902217865, 0.0015967494109645486], [0.015462297946214676, 0.0015628059627488256], [0.01501941867172718, 0.0015289498260244727], [0.014577878639101982, 0.0014951961347833276], [0.014137868769466877, 0.0014615593245252967], [0.013699574396014214, 0.0014280537143349648], [0.013263176195323467, 0.0013946930412203074], [0.012828853912651539, 0.0013614910421893], [0.012396777980029583, 0.0013284606393426657], [0.011967116966843605, 0.0012956149876117706], [0.011540032923221588, 0.0012629663106054068], [0.011115685105323792, 0.0012305269483476877], [0.010694225318729877, 0.0011983081931248307], [0.01027580164372921, 0.0011663215700536966], [0.00986055750399828, 0.0011345780221745372], [0.009448629803955555, 0.0011030880268663168], [0.00904015265405178, 0.0010718617122620344], [0.008635250851511955, 0.0010409088572487235], [0.008234049193561077, 0.0010102387750521302], [0.007836663164198399, 0.0009798603132367134], [0.007443204056471586, 0.0009497822029516101], [0.007053779903799295, 0.0009200124768540263], [0.006668491754680872, 0.0008905589347705245], [0.006287435535341501, 0.0008614288526587188], [0.005910702049732208, 0.0008326292736455798], [0.005538376979529858, 0.0008041666587814689], [0.005170541815459728, 0.0007760473527014256], [0.004807271528989077, 0.0007482769433408976], [0.004448637366294861, 0.0007208610186353326], [0.004094704985618591, 0.0006938044680282474], [0.0037455346900969744, 0.000667111948132515], [0.003401182359084487, 0.000640787766315043], [0.0030616994481533766, 0.0006148357642814517], [0.0027271320577710867, 0.0005892596091143787], [0.0023975218646228313, 0.0005640623858198524], [0.0020729058887809515, 0.0005392469465732574], [0.0017533162608742714, 0.0005148157943040133], [0.0014387816190719604, 0.0004907710244879127], [0.0011293253628537059, 0.00046711444156244397], [0.0008249669917859137, 0.00044384761713445187], [0.0005257216398604214, 0.0004209716571494937], [0.00023160045384429395, 0.0003984874056186527], [-5.738935215049423e-05, 0.000376395444618538], [-0.0003412445657886565, 0.00035469597787596285], [-0.0006199656636454165, 0.00033338897628709674], [-0.0008935569785535336, 0.0003124741488136351], [-0.00116202631033957, 0.0002919508842751384], [-0.001425385125912726, 0.0002718182804528624], [-0.001683647744357586, 0.0002520752605050802], [-0.0019368324428796768, 0.00023272042744792998], [-0.0021849602926522493, 0.0002137521660188213], [-0.002428055042400956, 0.00019516865722835064], [-0.0026661448646336794, 0.00017696776194497943], [-0.002899258630350232, 0.00015914725372567773], [-0.003127429634332657, 0.0001417046005371958], [-0.0033506928011775017, 0.00012463712482713163], [-0.003569086315110326, 0.00010794191621243954], [-0.0037826502230018377, 9.161591879092157e-05], [-0.0039914269000291824, 7.565587293356657e-05], [-0.004195460584014654, 6.005840259604156e-05], [-0.004594136960804462, 2.9581395210698247e-05], [-0.0047981711104512215, 1.398389576934278e-05], [-0.00500694802030921, -1.9761500880122185e-06], [-0.005220511928200722, -1.8302147509530187e-05], [-0.005438905209302902, -3.499735612422228e-05], [-0.005662168376147747, -5.206483183428645e-05], [-0.005890339612960815, -6.950748502276838e-05], [-0.006123453378677368, -8.732799324207008e-05], [-0.006361542735248804, -0.00010552885942161083], [-0.006604637950658798, -0.00012411238276399672], [-0.006852765567600727, -0.00014308062964119017], [-0.007105950731784105, -0.00016243549180217087], [-0.007364213466644287, -0.0001821785408537835], [-0.0076275719329714775, -0.00020231111557222903], [-0.007896040566265583, -0.00022283432190306485], [-0.008169632405042648, -0.0002437492075841874], [-0.008448353968560696, -0.00026505623827688396], [-0.008732208982110023, -0.0002867556468117982], [-0.009021198377013206, -0.0003088476078119129], [-0.009315320290625095, -0.00033133188844658434], [-0.00961456447839737, -0.0003542077902238816], [-0.009918923489749432, -0.0003774746728595346], [-0.010228379629552364, -0.0004011311975773424], [-0.010542914271354675, -0.000425175967393443], [-0.010862504132091999, -0.0004496071778703481], [-0.011187120340764523, -0.000474422617116943], [-0.011516730301082134, -0.0004996198695152998], [-0.011851297691464424, -0.0005251959664747119], [-0.012190780602395535, -0.0005511479685083032], [-0.012535132467746735, -0.0005774721503257751], [-0.01288430392742157, -0.0006041646702215075], [-0.01323823630809784, -0.0006312212208285928], [-0.013596870005130768, -0.0006586371455341578], [-0.013960139825940132, -0.0006864075548946857], [-0.014327974990010262, -0.0007145268609747291], [-0.014700300060212612, -0.00074298947583884], [-0.015077034011483192, -0.0007717891130596399], [-0.015458090230822563, -0.0008009191369637847], [-0.015843378379940987, -0.0008303725626319647], [-0.016232803463935852, -0.0008601424051448703], [-0.016626261174678802, -0.0008902206318452954], [-0.01702364720404148, -0.0009205988608300686], [-0.017424847930669785, -0.0009512689430266619], [-0.01782974973320961, -0.0009822217980399728], [-0.01823822781443596, -0.001013448229059577], [-0.018650155514478683, -0.0010449382243677974], [-0.01906539872288704, -0.0010766817722469568], [-0.01948382332921028, -0.001108668395318091], [-0.01990528404712677, -0.001140887150540948], [-0.020329631865024567, -0.0011733266292139888], [-0.020756714046001434, -0.0012059751898050308], [-0.021186375990509987, -0.0012388208415359259], [-0.021618451923131943, -0.0012718512443825603], [-0.02205277606844902, -0.0013050532434135675], [-0.022489171475172043, -0.0013384138001129031], [-0.02292746864259243, -0.0013719195267185569], [-0.02336747758090496, -0.0014055564533919096], [-0.02380901761353016, -0.001439310028217733], [-0.024251895025372505, -0.001473166048526764], [-0.02469591796398163, -0.0015071096131578088], [-0.025140883401036263, -0.0015411252388730645], [-0.02558659017086029, -0.00157519755885005], [-0.026032829657197, -0.001609310507774353], [-0.026479395106434822, -0.001643448369577527], [-0.02692606672644615, -0.0016775946132838726], [-0.027372630313038826, -0.001711732242256403], [-0.027818862348794937, -0.0017458447255194187], [-0.02826453559100628, -0.0017799146007746458], [-0.028709430247545242, -0.0018139246385544538], [-0.029153306037187576, -0.0018478571437299252], [-0.029595939442515373, -0.001881694421172142], [-0.030037090182304382, -0.0019154183100908995], [-0.030476519837975502, -0.0019490106496959925], [-0.03091398999094963, -0.0019824535120278597], [-0.03134926036000252, -0.0020157278049737215], [-0.031782086938619614, -0.002048815367743373], [-0.03221222385764122, -0.0020816975738853216], [-0.03263942897319794, -0.002114355331286788], [-0.03306344896554947, -0.0021467695478349924], [-0.033484041690826416, -0.0021789222955703735], [-0.03390096127986908, -0.002210793783888221], [-0.034313954412937164, -0.002242365386337042], [-0.03472277522087097, -0.0022736177779734135], [-0.035127174109220505, -0.0023045323323458433], [-0.035526908934116364, -0.0023350901901721954], [-0.03592173010110855, -0.002365272492170334], [-0.03631138801574707, -0.002395060146227479], [-0.03669564425945282, -0.002424434758722782], [-0.0370742529630661, -0.0024533779360353947], [-0.037446971982717514, -0.002481870586052537], [-0.037813566625118256, -0.0025098950136452913], [-0.038173794746398926, -0.002537432825192809], [-0.03852742537856102, -0.0025644663255661726], [-0.038874220103025436, -0.002590977353975177], [-0.039213962852954865, -0.0026169491466134787], [-0.0395464189350605, -0.002642363775521517], [-0.039871372282505035, -0.0026672049425542355], [-0.04018859565258026, -0.0026914551854133606], [-0.040497880429029465, -0.0027150986716151237], [-0.04079901799559593, -0.002738119335845113], [-0.04109180346131325, -0.0027605013456195593], [-0.041376031935214996, -0.0027822295669466257], [-0.04165150970220566, -0.002803288633003831], [-0.04191805049777031, -0.0028236641082912683], [-0.04217546060681343, -0.0028433422558009624], [-0.042423564940690994, -0.0028623086400330067], [-0.04266219213604927, -0.002880550455302], [-0.04289116710424423, -0.0028980548959225416], [-0.04311033710837364, -0.0029148091562092304], [-0.04331953823566437, -0.0029308018274605274], [-0.04351862892508507, -0.00294602126814425], [-0.043707460165023804, -0.00296045676805079], [-0.04388590157032013, -0.0029740978498011827], [-0.044053830206394196, -0.002986934967339039], [-0.044211115688085556, -0.002998958807438612], [-0.044357649981975555, -0.003010160755366087], [-0.04449332132935524, -0.0030205324292182922], [-0.044618040323257446, -0.003030066378414631], [-0.04473171383142471, -0.0030387563165277243], [-0.04483425244688988, -0.003046595025807619], [-0.044925592839717865, -0.003053577383980155], [-0.04500565677881241, -0.003059698035940528], [-0.04507439583539963, -0.0030649530235677958], [-0.04513175040483475, -0.0030693374574184418], [-0.04517769068479538, -0.0030728494748473167], [-0.04521217197179794, -0.003075485350564122], [-0.04523517191410065, -0.0030772434547543526], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.0452481172978878, -0.003078233217820525], [-0.04523378238081932, -0.003077257890254259], [-0.04520830512046814, -0.0030755249317735434], [-0.04517010971903801, -0.003072926541790366], [-0.045119233429431915, -0.0030694652814418077], [-0.045055702328681946, -0.003065143246203661], [-0.04497957229614258, -0.0030599639285355806], [-0.04489089176058769, -0.003053931286558509], [-0.04478973150253296, -0.003047049278393388], [-0.04467615485191345, -0.0030393225606530905], [-0.04455026239156723, -0.003030757885426283], [-0.044412124902009964, -0.003021360607817769], [-0.04426185041666031, -0.0030111377127468586], [-0.04409955441951752, -0.003000096417963505], [-0.04392535239458084, -0.002988245338201523], [-0.04373935982584953, -0.0029755926225334406], [-0.04354172572493553, -0.002962147118523717], [-0.043332576751708984, -0.0029479186050593853], [-0.04311206936836243, -0.002932917792350054], [-0.04288036376237869, -0.0029171546921133995], [-0.04263761639595032, -0.0029006407130509615], [-0.04238400608301163, -0.0028833874966949224], [-0.04211971163749695, -0.0028654076159000397], [-0.041844915598630905, -0.002846713177859783], [-0.04155981168150902, -0.002827317686751485], [-0.0412646047770977, -0.0028072346467524767], [-0.04095948860049248, -0.0027864775620400906], [-0.04064468666911125, -0.0027650613337755203], [-0.04032040387392044, -0.002743000630289316], [-0.03998687118291855, -0.002720310352742672], [-0.03964431583881378, -0.0026970061007887125], [-0.039292965084314346, -0.0026731037069112062], [-0.038933053612709045, -0.0026486190035939217], [-0.038564834743738174, -0.0026235689874738455], [-0.038188546895980835, -0.002597970189526677], [-0.03780444711446762, -0.0025718393735587597], [-0.037412770092487335, -0.002545194001868367], [-0.03701379522681236, -0.00251805130392313], [-0.036607760936021805, -0.0024904292076826096], [-0.03619494289159775, -0.00246234517544508], [-0.03577560931444168, -0.0024338176008313894], [-0.0353500172495842, -0.0024048646446317434], [-0.034918442368507385, -0.002375504467636347], [-0.034481149166822433, -0.0023457554634660482], [-0.03403840959072113, -0.0023156360257416964], [-0.03359050676226616, -0.002285165013745427], [-0.03313770517706871, -0.002254361053928733], [-0.03268028795719147, -0.002223242772743106], [-0.03221852332353592, -0.0021918287966400385], [-0.031752679497003555, -0.0021601372864097357], [-0.03128304332494736, -0.002128188032656908], [-0.030809884890913963, -0.0020959991961717606], [-0.03033347800374031, -0.0020635889377444983], [-0.02985408902168274, -0.002030976116657257], [-0.029371995478868484, -0.0019981791265308857], [-0.028887461870908737, -0.0019652163609862328], [-0.028400760143995285, -0.001932106097228825], [-0.02791215479373932, -0.0018988663796335459], [-0.02742190845310688, -0.0018655146704986691], [-0.026930278167128563, -0.0018320691306144], [-0.02643752656877041, -0.0017985472222790122], [-0.025943905115127563, -0.0017649661749601364], [-0.02544967271387577, -0.0017313433345407248], [-0.02495507150888443, -0.001697695697657764], [-0.02446034923195839, -0.0016640396788716316], [-0.02396574430167675, -0.0016303916927427053], [-0.023471500724554062, -0.001596768037416041], [-0.02297784388065338, -0.0015631846617907286], [-0.02248501218855381, -0.0015296571655198932], [-0.021993225440382957, -0.0014962009154260159], [-0.021502703428268433, -0.0014628308126702905], [-0.021013665944337845, -0.0014295614091679454], [-0.020526321604847908, -0.0013964073732495308], [-0.020040877163410187, -0.0013633824419230223], [-0.019557535648345947, -0.0013305007014423609], [-0.01907648891210556, -0.0012977751903235912], [-0.018597932532429695, -0.001265218947082758], [-0.018122050911188126, -0.0012328446609899402], [-0.01764902099967003, -0.0012006644392386079], [-0.01717902533710003, -0.001168690505437553], [-0.01671222783625126, -0.0011369341518729925], [-0.0162487905472517, -0.0011054066708311439], [-0.01578887552022934, -0.0010741186561062932], [-0.01533263735473156, -0.001043080585077405], [-0.014880217611789703, -0.0010123024694621563], [-0.014431758783757687, -0.0009817937389016151], [-0.013987397775053978, -0.0009515638230368495], [-0.0135472621768713, -0.0009216212783940136], [-0.01311147678643465, -0.0008919748361222446], [-0.01268016081303358, -0.0008626323542557657], [-0.01225342508405447, -0.0008336015744134784], [-0.011831376701593399, -0.0008048895979300141], [-0.011414116248488426, -0.0007765032351016998], [-0.011001737788319588, -0.0007484491216018796], [-0.01059433352202177, -0.0007207334274426103], [-0.010191983543336391, -0.0006933615077286959], [-0.009794770739972591, -0.000666339008603245], [-0.009402763098478317, -0.0006396708195097744], [-0.00901603139936924, -0.0006133613642305136], [-0.008634635247290134, -0.00058741495013237], [-0.008258632384240627, -0.0005618354771286249], [-0.007888073101639748, -0.0005366263212636113], [-0.007523005828261375, -0.0005117907421663404], [-0.00716346874833107, -0.0004873313591815531], [-0.006809499580413103, -0.00046325084986165166], [-0.00646112859249115, -0.00043955110595561564], [-0.006118382792919874, -0.00041623407742008567], [-0.005781283136457205, -0.00039330116123892367], [-0.0054498459212481976, -0.00037075349246151745], [-0.005124085117131472, -0.0003485919442027807], [-0.004804006777703762, -0.00032681701122783124], [-0.004489616025239229, -0.0003054289554711431], [-0.004180911462754011, -0.00028442777693271637], [-0.0038778886664658785, -0.00026381309726275504], [-0.0035805387888103724, -0.00024358436348848045], [-0.003288849024102092, -0.00022374068794306368], [-0.003002803772687912, -0.00020428099378477782], [-0.0027223825454711914, -0.0001852039131335914], [-0.002447562525048852, -0.00016650788893457502], [-0.00217831670306623, -0.0001481910585425794], [-0.0019146144622936845, -0.00013025138468947262], [-0.0016564232064411044, -0.00011268660455243662], [-0.0014037068467587233, -9.54942952375859e-05], [-0.0011564259184524417, -7.86717573646456e-05], [-0.0009145387448370457, -6.221614603418857e-05], [-0.0006780007970519364, -4.6124448999762535e-05], [-0.00044676498509943485, -3.0393461202038452e-05], [-0.00022078199253883213, -1.501981751061976e-05]]}, {"name": "CX_d3_u10", "samples": [[0.00017601123545318842, 8.066185728239361e-06], [0.0003561688063200563, 1.6322390365530737e-05], [0.0005405139527283609, 2.4770499294390902e-05], [0.000729086110368371, 3.341232513776049e-05], [0.0009219228522852063, 4.2249583202647045e-05], [0.0011190593941137195, 5.128389602759853e-05], [0.0013205293798819184, 6.051679520169273e-05], [0.001526363892480731, 6.994971045060083e-05], [0.0017365916864946485, 7.958396599860862e-05], [0.001951239537447691, 8.942076965468004e-05], [0.0021703308448195457, 9.946122736437246e-05], [0.0023938873782753944, 0.00010970629227813333], [0.0026219275314360857, 0.0001201568593387492], [0.0028544673696160316, 0.0001308136124862358], [0.0030915201641619205, 0.00014167718472890556], [0.003333094995468855, 0.00015274800534825772], [0.003579199779778719, 0.00016402642359025776], [0.00382983754388988, 0.00017551257042214274], [0.004085009451955557, 0.00018720650405157357], [0.004344712011516094, 0.00019910806440748274], [0.004608939401805401, 0.0002112169750034809], [0.004877680912613869, 0.000223532784730196], [0.005150923505425453, 0.00023605488240718842], [0.005428651347756386, 0.00024878248223103583], [0.0057108416222035885, 0.00026171462377533317], [0.0059974705800414085, 0.0002748501719906926], [0.006288509350270033, 0.00028818778810091317], [0.006583924870938063, 0.000301726016914472], [0.006883680820465088, 0.0003154630830977112], [0.0071877362206578255, 0.0003293972695246339], [0.0074960459023714066, 0.00034352639340795577], [0.007808560971170664, 0.0003578482137527317], [0.008125226013362408, 0.00037236028583720326], [0.008445986546576023, 0.0003870599321089685], [0.008770777843892574, 0.0004019443294964731], [0.009099531918764114, 0.0004170103929936886], [0.009432178921997547, 0.00043225486297160387], [0.009768643416464329, 0.0004476742469705641], [0.010108845308423042, 0.0004632648779079318], [0.010452697984874249, 0.0004790228558704257], [0.010800112038850784, 0.0004949441063217819], [0.011150996200740337, 0.0005110242636874318], [0.011505248956382275, 0.0005272588459774852], [0.011862767860293388, 0.0005436430801637471], [0.012223444879055023, 0.0005601720768027008], [0.01258716732263565, 0.000576840597204864], [0.012953819707036018, 0.0005936434608884156], [0.013323277235031128, 0.0006105748470872641], [0.013695417903363705, 0.0006276291678659618], [0.014070107601583004, 0.0006448003114201128], [0.014447213150560856, 0.0006620821659453213], [0.014826594851911068, 0.0006794684450142086], [0.015208108350634575, 0.0006969522801227868], [0.015591605566442013, 0.0007145270938053727], [0.015976935625076294, 0.0007321858429349959], [0.01636394113302231, 0.0007499213679693639], [0.0167524591088295, 0.0007677263347432017], [0.01714232936501503, 0.0007855931762605906], [0.017533380538225174, 0.000803514092694968], [0.01792544312775135, 0.0008214814588427544], [0.018318336457014084, 0.0008394868928007782], [0.018711887300014496, 0.0008575223619118333], [0.019105907529592514, 0.0008755793678574264], [0.019500214606523514, 0.000893649528734386], [0.019894616678357124, 0.0009117239969782531], [0.020288920029997826, 0.0009297941578552127], [0.020682932808995247, 0.0009478507563471794], [0.02107645384967327, 0.0009658850030973554], [0.02146928384900093, 0.0009838874684646726], [0.02186122164130211, 0.0010018489556387067], [0.022252054885029793, 0.0010197600349783897], [0.022641578689217567, 0.00103761104401201], [0.023029586300253868, 0.0010553925530984998], [0.023415863513946533, 0.0010730946669355035], [0.02380019798874855, 0.0010907078394666314], [0.02418237365782261, 0.0011082219425588846], [0.024562176316976547, 0.0011256275465711951], [0.024939384311437607, 0.0011429141741245985], [0.025313787162303925, 0.0011600720463320613], [0.025685163214802742, 0.00117709138430655], [0.0260532908141613, 0.0011939618270844221], [0.02641795575618744, 0.001210673595778644], [0.02677893452346325, 0.0012272164458408952], [0.02713601291179657, 0.00124358048196882], [0.02748897112905979, 0.0012597556924447417], [0.027837585657835007, 0.0012757318327203393], [0.0281816478818655, 0.0012914995895698667], [0.028520936146378517, 0.0013070483691990376], [0.02885523997247219, 0.0013223685091361403], [0.02918434329330921, 0.0013374506961554289], [0.029508037492632866, 0.0013522848021239042], [0.02982611209154129, 0.0013668615138158202], [0.03013835847377777, 0.0013811709359288216], [0.030444573611021042, 0.0013952041044831276], [0.030744558200240135, 0.0014089517062529922], [0.031038107350468636, 0.001422404428012669], [0.03132503107190132, 0.0014355534221976995], [0.03160513564944267, 0.0014483899576589465], [0.03187822923064232, 0.0014609051868319511], [0.032144125550985336, 0.00147309061139822], [0.0324026495218277, 0.0014849380822852254], [0.03265361487865448, 0.0014964394504204392], [0.03289685770869255, 0.0015075865667313337], [0.03313220292329788, 0.0015183720970526338], [0.03335949406027794, 0.001528788125142455], [0.03357856348156929, 0.0015388276660814881], [0.03378926217556, 0.0015484835021197796], [0.03399144858121872, 0.0015577491139993072], [0.03418496623635292, 0.001566617633216083], [0.03436969220638275, 0.001575083122588694], [0.034545477479696274, 0.0015831391792744398], [0.03471221774816513, 0.0015907803317531943], [0.03486977890133858, 0.0015980011085048318], [0.03501805290579796, 0.0016047959215939045], [0.03515693172812462, 0.0016111605800688267], [0.0352863185107708, 0.0016170900780707598], [0.035406116396188736, 0.0016225801082327962], [0.03551623970270157, 0.0016276269452646375], [0.03561661019921303, 0.0016322266310453415], [0.035707153379917145, 0.0016363757895305753], [0.03578780218958855, 0.0016400718595832586], [0.03585849329829216, 0.0016433116979897022], [0.035919189453125, 0.0016460930928587914], [0.03596983477473259, 0.001648414065130055], [0.03601039946079254, 0.0016502729849889874], [0.03604084253311157, 0.0016516682226210833], [0.036061156541109085, 0.0016525990795344114], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03607258200645447, 0.0016531228320673108], [0.03606024011969566, 0.0016525585670024157], [0.03603830188512802, 0.0016515558818355203], [0.0360054150223732, 0.0016500528436154127], [0.03596160560846329, 0.0016480505000799894], [0.03590690344572067, 0.0016455502482131124], [0.03584134578704834, 0.0016425539506599307], [0.035764988511800766, 0.001639063935726881], [0.03567788004875183, 0.0016350826481357217], [0.03558008372783661, 0.0016306128818541765], [0.03547167778015137, 0.0016256580129265785], [0.03535273298621178, 0.0016202216502279043], [0.0352233350276947, 0.0016143074026331306], [0.0350835919380188, 0.0016079202760010958], [0.03493358567357063, 0.0016010641120374203], [0.03477343171834946, 0.00159374438226223], [0.03460325300693512, 0.001585966208949685], [0.034423161298036575, 0.0015777349472045898], [0.03423328697681427, 0.0015690566506236792], [0.034033771604299545, 0.0015599376056343317], [0.033824749290943146, 0.001550384215079248], [0.03360637277364731, 0.0015404032310470939], [0.03337879478931427, 0.001530001638457179], [0.03314217925071716, 0.0015191868878901005], [0.03289668262004852, 0.001507966429926455], [0.032642487436532974, 0.001496348180808127], [0.03237975761294365, 0.0014843400567770004], [0.03210868686437607, 0.0014719505561515689], [0.031829457730054855, 0.0014591882936656475], [0.03154226392507553, 0.0014460618840530515], [0.031247293576598167, 0.0014325800584629178], [0.030944757163524628, 0.0014187524793669581], [0.030634848400950432, 0.0014045878779143095], [0.03031778521835804, 0.0013900963822379708], [0.029993774369359016, 0.0013752871891483665], [0.029663030058145523, 0.0013601704267784953], [0.02932577021420002, 0.001344755757600069], [0.028982220217585564, 0.0013290535425767303], [0.028632599860429764, 0.0013130739098414779], [0.028277134522795677, 0.0012968272203579545], [0.02791605331003666, 0.0012803238350898027], [0.027549587190151215, 0.001263574231415987], [0.027177967131137848, 0.0012465891195461154], [0.026801425963640213, 0.0012293790932744741], [0.026420198380947113, 0.0012119547463953495], [0.02603451907634735, 0.001194327138364315], [0.02564462460577488, 0.0011765067465603352], [0.02525075152516365, 0.0011585046304389834], [0.024853136390447617, 0.0011403313837945461], [0.02445201389491558, 0.0011219977168366313], [0.024047620594501495, 0.0011035148054361343], [0.02364019677042961, 0.0010848932433873415], [0.023229971528053284, 0.001066143624484539], [0.022817185148596764, 0.0010472770081833005], [0.022402068600058556, 0.0010283037554472685], [0.021984849125146866, 0.001009234576486051], [0.021565763279795647, 0.0009900800650939345], [0.021145036444067955, 0.0009708504658192396], [0.020722897723317146, 0.0009515563142485917], [0.02029956690967083, 0.0009322077385149896], [0.01987527310848236, 0.000912815157789737], [0.019450228661298752, 0.0008933882345445454], [0.01902465522289276, 0.0008739372133277357], [0.0185987688601017, 0.0008544718148186803], [0.018172774463891983, 0.0008350014686584473], [0.017746886238455772, 0.0008155359537340701], [0.017321303486824036, 0.000796084466855973], [0.01689622923731804, 0.0007766562630422413], [0.0164718646556139, 0.0007572603644803166], [0.01604839786887169, 0.0007379056187346578], [0.015626024454832077, 0.0007186007569544017], [0.015204926021397114, 0.000699354219250381], [0.014785286970436573, 0.0006801743293181062], [0.014367283321917057, 0.0006610692944377661], [0.013951089233160019, 0.0006420468562282622], [0.013536873273551464, 0.0006231148727238178], [0.013124801218509674, 0.0006042808527126908], [0.012715030461549759, 0.0005855520721524954], [0.012307719327509403, 0.0005669356905855238], [0.01190301775932312, 0.0005484385183081031], [0.0115010691806674, 0.0005300672492012382], [0.011102017015218735, 0.0005118283443152905], [0.010705996304750443, 0.0004937279736623168], [0.010313140228390694, 0.00047577221994288266], [0.009923572652041912, 0.000457966816611588], [0.009537416510283947, 0.00044031732250005007], [0.009154788218438625, 0.00042282906360924244], [0.008775799535214901, 0.0004055071622133255], [0.00840055663138628, 0.0003883564786519855], [0.00802916195243597, 0.00037138164043426514], [0.00766171095892787, 0.00035458707134239376], [0.0072982958517968655, 0.00033797696232795715], [0.006939003709703684, 0.0003215553006157279], [0.006583916023373604, 0.00030532581149600446], [0.006233109626919031, 0.0002892920165322721], [0.005886657629162073, 0.0002734572044573724], [0.0055446261540055275, 0.00025782446027733386], [0.005207079462707043, 0.00024239669437520206], [0.00487407436594367, 0.00022717648243997246], [0.004545664414763451, 0.00021216632740106434], [0.004221898037940264, 0.00019736838294193149], [0.0039028192404657602, 0.00018278471543453634], [0.0035884687677025795, 0.00016841714386828244], [0.0032788810785859823, 0.00015426725440192968], [0.0029740871395915747, 0.00014033647312317044], [0.002674114191904664, 0.00012662603694479913], [0.002378984587267041, 0.0001131369499489665], [0.002088716486468911, 9.987008525058627e-05], [0.0018033251399174333, 8.68260976858437e-05], [0.0015228205593302846, 7.400546746794134e-05], [0.0012472097296267748, 6.140851473901421e-05], [0.0009764958522282541, 4.9035385018214583e-05], [0.0007106782868504524, 3.6886034649796784e-05], [0.00044975310447625816, 2.4960296286735684e-05], [0.000193712767213583, 1.3257822502055205e-05], [-5.745349335484207e-05, 1.7781203496269882e-06], [-0.0003037597343791276, -9.479450454819016e-06], [-0.0005452230107039213, -2.0515672076726332e-05], [-0.0007818635203875601, -3.133146674372256e-05], [-0.0010137043427675962, -4.1927887650672346e-05], [-0.0012407712638378143, -5.230612077866681e-05], [-0.0014630929799750447, -6.246746488614008e-05], [-0.0016807005740702152, -7.241334969876334e-05], [-0.0018936278065666556, -8.2145314081572e-05], [-0.0021019107662141323, -9.166500240098685e-05], [-0.002305587287992239, -0.00010097416088683531], [-0.0025046984665095806, -0.0001100746521842666], [-0.0026992864441126585, -0.0001189684116980061], [-0.0030795058701187372, -0.0001363465707981959], [-0.0032740940805524588, -0.000145240337587893], [-0.0034732050262391567, -0.00015434081433340907], [-0.003676881780847907, -0.00016364998009521514], [-0.003885164624080062, -0.00017316966841463], [-0.004098091274499893, -0.00018290162552148104], [-0.0043156989850103855, -0.00019284752488601953], [-0.004538021050393581, -0.000203008865355514], [-0.004765087738633156, -0.00021338708756957203], [-0.004996928386390209, -0.0002239835012005642], [-0.005233569536358118, -0.00023479931405745447], [-0.005475032143294811, -0.00024583551567047834], [-0.0057213385589420795, -0.0002570931101217866], [-0.005972505081444979, -0.00026857282500714064], [-0.006228545214980841, -0.00028027527150698006], [-0.006489470601081848, -0.000292201031697914], [-0.006755287759006023, -0.0003043503675144166], [-0.007026001811027527, -0.00031672351178713143], [-0.0073016127571463585, -0.0003293204354122281], [-0.007582117337733507, -0.0003421410801820457], [-0.007867508567869663, -0.00035518506774678826], [-0.008157777599990368, -0.00036845196154899895], [-0.008452906273305416, -0.0003819410048890859], [-0.008752879686653614, -0.0003956514410674572], [-0.009057673625648022, -0.0004095822514500469], [-0.009367261081933975, -0.00042373212636448443], [-0.009681612253189087, -0.0004380997270345688], [-0.010000689886510372, -0.0004526833654381335], [-0.010324456728994846, -0.00046748132444918156], [-0.010652866214513779, -0.0004824914503842592], [-0.010985871776938438, -0.0004977116477675736], [-0.011323419399559498, -0.0005131394136697054], [-0.011665449477732182, -0.0005287721287459135], [-0.012011902406811714, -0.0005446069408208132], [-0.012362708337605, -0.000560640764888376], [-0.012717796489596367, -0.0005768702831119299], [-0.013077088631689548, -0.0005932919448241591], [-0.013440503738820553, -0.0006099020247347653], [-0.01380795519798994, -0.0006266966229304671], [-0.01417934987694025, -0.0006436714320443571], [-0.014554592780768871, -0.0006608221447095275], [-0.014933581463992596, -0.0006781440461054444], [-0.015316209755837917, -0.0006956323049962521], [-0.015702366828918457, -0.00071328179910779], [-0.016091931611299515, -0.0007310871151275933], [-0.016484789550304413, -0.0007490428979508579], [-0.016880810260772705, -0.0007671432686038315], [-0.017279863357543945, -0.0007853821734897792], [-0.01768180914223194, -0.0008037534425966442], [-0.0180865116417408, -0.0008222506148740649], [-0.01849382370710373, -0.0008408669964410365], [-0.018903592601418495, -0.0008595957770012319], [-0.01931566745042801, -0.0008784297970123589], [-0.01972988061606884, -0.0008973617223091424], [-0.020146075636148453, -0.0009163841605186462], [-0.02056407928466797, -0.0009354892536066473], [-0.02098372019827366, -0.0009546691435389221], [-0.021404817700386047, -0.0009739156812429428], [-0.02182719297707081, -0.0009932206012308598], [-0.02225065790116787, -0.0010125752305611968], [-0.02267502434551716, -0.0010319711873307824], [-0.023100096732378006, -0.001051399391144514], [-0.023525677621364594, -0.0010708508780226111], [-0.023951567709445953, -0.0010903164511546493], [-0.02437756210565567, -0.0011097866808995605], [-0.02480345033109188, -0.0011292521376162767], [-0.025229021906852722, -0.0011487032752484083], [-0.025654064491391182, -0.001168130082078278], [-0.0260783601552248, -0.0011875227792188525], [-0.026501689106225967, -0.0012068712385371327], [-0.026923827826976776, -0.0012261653319001198], [-0.027344556525349617, -0.0012453949311748147], [-0.027763642370700836, -0.001264549558982253], [-0.028180859982967377, -0.0012836187379434705], [-0.028595978394150734, -0.0013025919906795025], [-0.029008766636252403, -0.001321458606980741], [-0.02941899001598358, -0.0013402081094682217], [-0.029826415702700615, -0.0013588297879323363], [-0.03023080714046955, -0.0013773126993328333], [-0.030631927773356438, -0.0013956462498754263], [-0.03102954290807247, -0.0014138194965198636], [-0.0314234159886837, -0.0014318217290565372], [-0.03181331232190132, -0.001449642120860517], [-0.03219899162650108, -0.0014672697288915515], [-0.03258021920919418, -0.0014846940757706761], [-0.03295676037669182, -0.0015019039856269956], [-0.033328380435705185, -0.0015188890974968672], [-0.03369484469294548, -0.001535638584755361], [-0.0340559259057045, -0.0015521419700235128], [-0.034411389380693436, -0.001568388775922358], [-0.034761011600494385, -0.0015843684086576104], [-0.03510456532239914, -0.001600070740096271], [-0.035441819578409195, -0.0016154851764440536], [-0.035772569477558136, -0.0016306021716445684], [-0.03609658032655716, -0.0016454113647341728], [-0.03641364350914955, -0.0016599028604105115], [-0.0367235466837883, -0.0016740672290325165], [-0.03702608495950699, -0.001687894924543798], [-0.0373210571706295, -0.0017013767501339316], [-0.037608250975608826, -0.0017145031597465277], [-0.03788748010993004, -0.001727265422232449], [-0.03815855085849762, -0.0017396549228578806], [-0.038421276956796646, -0.001751663046889007], [-0.03867547586560249, -0.0017632812960073352], [-0.038920968770980835, -0.0017745017539709806], [-0.03915758803486824, -0.0017853165045380592], [-0.03938516601920128, -0.001795718097127974], [-0.039603542536497116, -0.0018056990811601281], [-0.03981256112456322, -0.0018152524717152119], [-0.04001208394765854, -0.0018243716331198812], [-0.04020195081830025, -0.00183304981328547], [-0.04038204625248909, -0.0018412810750305653], [-0.04055222496390343, -0.00184905924834311], [-0.040712375193834305, -0.0018563789781183004], [-0.04086238145828247, -0.001863235142081976], [-0.04100213199853897, -0.0018696225015446544], [-0.04113152623176575, -0.0018755365163087845], [-0.04125047102570534, -0.0018809728790074587], [-0.04135887697339058, -0.0018859277479350567], [-0.0414566732943058, -0.0018903975142166018], [-0.04154377803206444, -0.0018943788018077612], [-0.04162014275789261, -0.0018978690495714545], [-0.04168569669127464, -0.0019008651142939925], [-0.04174039885401726, -0.0019033654825761914], [-0.04178420826792717, -0.0019053677096962929], [-0.04181709513068199, -0.0019068708643317223], [-0.041839033365249634, -0.0019078734330832958], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04185137525200844, -0.001908437698148191], [-0.04183811694383621, -0.0019078330369666219], [-0.04181455075740814, -0.0019067585235461593], [-0.041779227554798126, -0.00190514768473804], [-0.041732169687747955, -0.001903001801110804], [-0.041673410683870316, -0.0019003223860636353], [-0.04160299524664879, -0.001897111302241683], [-0.041520968079566956, -0.0018933709943667054], [-0.04142739996314049, -0.0018891043728217483], [-0.04132235050201416, -0.0018843139987438917], [-0.04120590537786484, -0.0018790039466693997], [-0.04107814282178879, -0.0018731780583038926], [-0.040939152240753174, -0.001866839942522347], [-0.04078904166817665, -0.001859994838014245], [-0.04062790796160698, -0.0018526471685618162], [-0.040455881506204605, -0.0018448027549311519], [-0.04027307778596878, -0.0018364668358117342], [-0.04007963463664055, -0.0018276454648002982], [-0.03987567871809006, -0.0018183451611548662], [-0.03966136649250984, -0.0018085725605487823], [-0.03943684697151184, -0.001798334182240069], [-0.03920227289199829, -0.0017876377096399665], [-0.03895781561732292, -0.0017764903604984283], [-0.03870365023612976, -0.0017649004003033042], [-0.038439951837062836, -0.0017528753960505128], [-0.03816690295934677, -0.0017404244281351566], [-0.03788469731807709, -0.0017275556456297636], [-0.03759351745247841, -0.0017142780125141144], [-0.037293583154678345, -0.0017006008420139551], [-0.036985091865062714, -0.0016865333309397101], [-0.03666824847459793, -0.001672085258178413], [-0.036343272775411606, -0.0016572661697864532], [-0.03601038083434105, -0.001642086310312152], [-0.035669803619384766, -0.0016265558078885078], [-0.03532176837325096, -0.0016106851398944855], [-0.03496649116277695, -0.0015944846672937274], [-0.03460422530770302, -0.0015779649838805199], [-0.03423519432544708, -0.0015611371491104364], [-0.03385964781045914, -0.0015440118731930852], [-0.033477820456027985, -0.0015266005648300052], [-0.03308996185660362, -0.0015089140506461263], [-0.03269632160663605, -0.0014909638557583094], [-0.03229713812470436, -0.0014727611560374498], [-0.031892675906419754, -0.0014543173601850867], [-0.031483180820941925, -0.0014356442261487246], [-0.031068895012140274, -0.001416752696968615], [-0.03065008670091629, -0.0013976548798382282], [-0.03022700361907482, -0.001378362183459103], [-0.02979990281164646, -0.0013588861329481006], [-0.029369032010436058, -0.0013392383698374033], [-0.028934650123119354, -0.0013194304192438722], [-0.028497010469436646, -0.001299473806284368], [-0.028056366369128227, -0.0012793804053217173], [-0.027612965553998947, -0.0012591611593961716], [-0.02716706320643425, -0.0012388278264552355], [-0.026718903332948685, -0.0012183914659544826], [-0.026268739253282547, -0.0011978638358414173], [-0.025816813111305237, -0.0011772558791562915], [-0.025363365188241005, -0.0011565785389393568], [-0.0249086432158947, -0.0011358429910615087], [-0.024452881887555122, -0.0011150601785629988], [-0.023996317759156227, -0.0010942406952381134], [-0.023539185523986816, -0.0010733953677117825], [-0.023081712424755096, -0.0010525343241170049], [-0.022624127566814423, -0.0010316683910787106], [-0.022166656330227852, -0.0010108074638992548], [-0.021709512919187546, -0.0009899615542963147], [-0.021252917125821114, -0.0009691406157799065], [-0.020797081291675568, -0.0009483543108217418], [-0.020342210307717323, -0.0009276121272705495], [-0.019888512790203094, -0.0009069233201444149], [-0.0194361861795187, -0.0008862970280461013], [-0.018985427916049957, -0.0008657422731630504], [-0.01853642426431179, -0.0008452676120214164], [-0.01808936707675457, -0.0008248815429396927], [-0.017644431442022324, -0.0008045924478210509], [-0.017201799899339676, -0.0007844082429073751], [-0.016761641949415207, -0.0007643369026482105], [-0.016324125230312347, -0.0007443859940394759], [-0.01588940992951393, -0.0007245627348311245], [-0.015457653440535069, -0.0007048745173960924], [-0.015029007568955421, -0.0006853280938230455], [-0.01460361946374178, -0.0006659302744083107], [-0.014181628823280334, -0.0006466873455792665], [-0.01376317162066698, -0.0006276055355556309], [-0.013348378241062164, -0.000608690781518817], [-0.012937374413013458, -0.000589948904234916], [-0.012530280277132988, -0.0005713852006010711], [-0.012127209454774857, -0.0005530050839297473], [-0.011728270910680294, -0.0005348133272491395], [-0.011333569884300232, -0.0005168148782104254], [-0.010943204164505005, -0.0004990140441805124], [-0.010557266883552074, -0.0004814151907339692], [-0.010175846517086029, -0.00046402227599173784], [-0.00979902409017086, -0.0004468390252441168], [-0.009426879696547985, -0.0004298690764699131], [-0.009059484116733074, -0.0004131157184019685], [-0.008696905337274075, -0.00039658197783865035], [-0.00833920482546091, -0.0003802707069553435], [-0.007986439391970634, -0.000364184525096789], [-0.0076386635191738605, -0.00034832576056942344], [-0.007295921910554171, -0.00033269665436819196], [-0.0069582597352564335, -0.0003172991273459047], [-0.006625712383538485, -0.0003021348675247282], [-0.0062983157113194466, -0.0002872054756153375], [-0.005976097192615271, -0.00027251214487478137], [-0.005659080110490322, -0.000258056097663939], [-0.0053472863510251045, -0.00024383817799389362], [-0.005040730815380812, -0.00022985911346040666], [-0.004739423748105764, -0.00021611942793242633], [-0.0044433739967644215, -0.00020261944155208766], [-0.004152584355324507, -0.00018935931439045817], [-0.0038670538924634457, -0.0001763390318956226], [-0.0035867784172296524, -0.0001635583903407678], [-0.0033117502462118864, -0.00015101699682418257], [-0.0030419579707086086, -0.00013871437113266438], [-0.002777385525405407, -0.0001266497711185366], [-0.002518015680834651, -0.00011482241825433448], [-0.00226382608525455, -0.00010323127207811922], [-0.0020147920586168766, -9.187524119624868e-05], [-0.001770885894075036, -8.075303048826754e-05], [-0.001532076857984066, -6.98632575222291e-05], [-0.0012983317719772458, -5.920438707107678e-05], [-0.0010696138488128781, -4.877477840636857e-05], [-0.0008458850206807256, -3.8572659832425416e-05], [-0.0006271037855185568, -2.859615779016167e-05], [-0.00041322672041133046, -1.8843285943148658e-05], [-0.00020420805958565325, -9.311960639024619e-06]]}, {"name": "CX_d3_u5", "samples": [[8.669924136484042e-05, 8.456515388388652e-06], [0.00017544090223964304, 1.7112244677264243e-05], [0.0002662452752701938, 2.596916601760313e-05], [0.00035913175088353455, 3.50291738868691e-05], [0.00045411885366775095, 4.429407636052929e-05], [0.0005512239295057952, 5.376556146075018e-05], [0.0006504636257886887, 6.344525900203735e-05], [0.0007518531638197601, 7.333463872782886e-05], [0.0008554067462682724, 8.343510125996545e-05], [0.0009611374698579311, 9.374791261507198e-05], [0.00106905703432858, 0.0001042742223944515], [0.001179176033474505, 0.00011501507106004283], [0.0012915036641061306, 0.0001259713462786749], [0.0014060477260500193, 0.00013714379747398198], [0.0015228146221488714, 0.00014853307220619172], [0.0016418092418462038, 0.0001601396215846762], [0.0017630348447710276, 0.00017196379485540092], [0.0018864935263991356, 0.0001840057666413486], [0.002012185752391815, 0.00019626558059826493], [0.0021401094272732735, 0.0002087430766550824], [0.002270261524245143, 0.000221437934669666], [0.0024026380851864815, 0.00023434973263647407], [0.002537231659516692, 0.0002474777866154909], [0.00267403363250196, 0.00026082125259563327], [0.0028130344580858946, 0.00027437921380624175], [0.002954221563413739, 0.0002881503605749458], [0.0030975807458162308, 0.00030213341233320534], [0.003243096172809601, 0.00031632676837034523], [0.003390749217942357, 0.0003307286533527076], [0.0035405203234404325, 0.000345337059115991], [0.003692386904731393, 0.0003601499192882329], [0.0038463245145976543, 0.0003751647600438446], [0.004002307541668415, 0.0003903790784534067], [0.004160306416451931, 0.0004057900805491954], [0.0043202913366258144, 0.0004213947686366737], [0.004482228308916092, 0.0004371898539829999], [0.004646082874387503, 0.00045317201875150204], [0.004811818245798349, 0.00046933756675571203], [0.004979393910616636, 0.00048568262718617916], [0.005148768424987793, 0.0005022031837143004], [0.005319897085428238, 0.0005188948125578463], [0.005492734722793102, 0.0005357531481422484], [0.005667231511324644, 0.0005527733010239899], [0.0058433376252651215, 0.0005699503817595541], [0.006020999047905207, 0.0005872792680747807], [0.0062001608312129974, 0.0006047544302418828], [0.006380765233188868, 0.0006223702803254128], [0.006562752183526754, 0.000640121113974601], [0.006746060214936733, 0.0006580007029697299], [0.006930624600499868, 0.0006760027608834207], [0.007116378750652075, 0.0006941209430806339], [0.007303253747522831, 0.0007123484392650425], [0.007491178810596466, 0.0007306783809326589], [0.007680080831050873, 0.0007491036085411906], [0.007869886234402657, 0.0007676169043406844], [0.0080605149269104, 0.0007862107013352215], [0.00825189147144556, 0.0008048771996982396], [0.008443932980298996, 0.000823608657810837], [0.008636556565761566, 0.0008423968101851642], [0.008829676546156406, 0.0008612335077486932], [0.009023209102451801, 0.0008801103685982525], [0.009217062965035439, 0.0008990185451693833], [0.00941114965826273, 0.0009179494227282703], [0.009605375118553638, 0.000936893979087472], [0.009799649007618427, 0.0009558431338518858], [0.00999387539923191, 0.0009747876320034266], [0.010187956504523754, 0.0009937180439010262], [0.010381797328591347, 0.001012624939903617], [0.010575296357274055, 0.001031498541124165], [0.010768353939056396, 0.001050329301506281], [0.01096087135374546, 0.0010691070929169655], [0.011152743361890316, 0.0010878220200538635], [0.011343867518007755, 0.0011064638383686543], [0.011534137651324272, 0.0011250225361436605], [0.011723452247679234, 0.0011434879852458835], [0.011911703273653984, 0.0011618497082963586], [0.012098785489797592, 0.001180097577162087], [0.012284590862691402, 0.0011982207652181387], [0.012469014152884483, 0.001216209027916193], [0.012651943601667881, 0.0012340517714619637], [0.012833276763558388, 0.001251738634891808], [0.01301290187984705, 0.00126925902441144], [0.01319071277976036, 0.0012866024626418948], [0.01336660049855709, 0.0013037583557888865], [0.013540460728108883, 0.0013207162264734507], [0.013712180778384209, 0.0013374657137319446], [0.01388165820389986, 0.001353996223770082], [0.014048784039914608, 0.0013702975120395422], [0.014213453978300095, 0.0013863592175766826], [0.014375563710927963, 0.0014021709794178605], [0.014535007998347282, 0.0014177229022607207], [0.014691684395074844, 0.0014330049743875861], [0.014845490455627441, 0.0014480070676654577], [0.01499632652848959, 0.0014627192867919803], [0.015144091099500656, 0.001477132085710764], [0.01528868731111288, 0.001491235801950097], [0.015430020168423653, 0.0015050211222842336], [0.015567992813885212, 0.001518478849902749], [0.015702512115240097, 0.0015315995551645756], [0.01583348773419857, 0.0015443747397512197], [0.015960829332470894, 0.0015567955560982227], [0.016084451228380203, 0.0015688533894717693], [0.016204267740249634, 0.0015805400907993317], [0.01632019318640232, 0.0015918472781777382], [0.016432151198387146, 0.0016027676174417138], [0.016540059819817543, 0.0016132928431034088], [0.01664384827017784, 0.0016234160866588354], [0.016743436455726624, 0.0016331298975273967], [0.016838761046528816, 0.0016424276400357485], [0.0169297493994236, 0.0016513025620952249], [0.017016341909766197, 0.0016597486101090908], [0.017098471522331238, 0.0016677594976499677], [0.017176082357764244, 0.001675329520367086], [0.01724912039935589, 0.0016824534395709634], [0.017317529767751694, 0.0016891260165721178], [0.01738126203417778, 0.0016953423619270325], [0.017440272495150566, 0.0017010981682687998], [0.01749451644718647, 0.0017063891282305121], [0.017543954774737358, 0.0017112111672759056], [0.017588555812835693, 0.0017155613750219345], [0.017628280445933342, 0.001719436259008944], [0.017663104459643364, 0.0017228329088538885], [0.01769300177693367, 0.0017257489962503314], [0.01771794632077217, 0.0017281821928918362], [0.01773792691528797, 0.001730130985379219], [0.01775292493402958, 0.0017315939767286181], [0.0177629292011261, 0.0017325696535408497], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.017768559977412224, 0.0017331187846139073], [0.01776222698390484, 0.001732558710500598], [0.017750969156622887, 0.0017315634759142995], [0.017734095454216003, 0.0017300716135650873], [0.017711617052555084, 0.001728084054775536], [0.017683548852801323, 0.0017256025457754731], [0.01764991320669651, 0.0017226285999640822], [0.017610730603337288, 0.0017191641964018345], [0.017566034570336342, 0.001715212594717741], [0.01751585677266121, 0.0017107758903875947], [0.017460230737924576, 0.001705857808701694], [0.017399201169610023, 0.0017004619585350156], [0.017332809045910835, 0.0016945918323472142], [0.01726110279560089, 0.0016882519703358412], [0.01718413457274437, 0.0016814469126984477], [0.017101960256695747, 0.0016741814324632287], [0.0170146394520998, 0.00166646100115031], [0.016922233626246452, 0.001658290857449174], [0.016824809834361076, 0.0016496771713718772], [0.016722435131669044, 0.0016406257636845112], [0.016615185886621475, 0.0016311433864757419], [0.01650313474237919, 0.0016212364425882697], [0.0163863655179739, 0.0016109122661873698], [0.016264954581856728, 0.00160017772577703], [0.016138989478349686, 0.0015890406211838126], [0.016008559614419937, 0.0015775086358189583], [0.015873756259679794, 0.0015655899187549949], [0.01573466695845127, 0.0015532923862338066], [0.015591393224895, 0.0015406250022351742], [0.015444030053913593, 0.0015275959158316255], [0.015292680822312832, 0.0015142144402489066], [0.01513744704425335, 0.0015004894230514765], [0.014978432096540928, 0.0014864301774650812], [0.014815745875239372, 0.0014720462495461106], [0.014649493619799614, 0.0014573471853509545], [0.014479787088930607, 0.0014423425309360027], [0.01430673897266388, 0.001427042530849576], [0.01413046009838581, 0.001411456847563386], [0.013951068744063377, 0.001395595958456397], [0.013768678531050682, 0.0013794699916616082], [0.013583405874669552, 0.0013630891917273402], [0.013395369984209538, 0.0013464640360325575], [0.01320469006896019, 0.0013296051183715463], [0.01301148533821106, 0.001312522916123271], [0.012815875001251698, 0.0012952281394973397], [0.012617981992661953, 0.0012777314987033606], [0.012417925521731377, 0.001260043471120298], [0.012215827591717243, 0.0012421749997884035], [0.012011808343231678, 0.0012241366785019636], [0.011805991642177105, 0.00120593945030123], [0.011598496697843075, 0.001187593792565167], [0.011389443650841713, 0.0011691104155033827], [0.011178956367075443, 0.0011505002621561289], [0.010967153124511242, 0.0011317736934870481], [0.010754154063761234, 0.0011129414197057486], [0.010540077462792397, 0.0010940139181911945], [0.01032504253089428, 0.0010750015499070287], [0.01010916568338871, 0.0010559149086475372], [0.00989256426692009, 0.0010367641225457191], [0.009675351902842522, 0.0010175593197345734], [0.009457644075155258, 0.0009983107447624207], [0.009239552542567253, 0.0009790282929316163], [0.00902118906378746, 0.0009597216849215329], [0.008802663534879684, 0.0009404008160345256], [0.008584084920585155, 0.0009210752323269844], [0.008365558460354805, 0.0009017542470246553], [0.008147191256284714, 0.0008824473479762673], [0.00792908389121294, 0.0008631634409539402], [0.007711340207606554, 0.0008439116645604372], [0.00749405799433589, 0.0008247006917372346], [0.007277335971593857, 0.0008055392536334693], [0.007061268202960491, 0.0007864356739446521], [0.006845949217677116, 0.0007673982763662934], [0.00663146935403347, 0.0007484350935555995], [0.006417918484658003, 0.0007295540417544544], [0.006205382756888866, 0.000710762687958777], [0.005993946455419064, 0.0006920685991644859], [0.0057836915366351604, 0.0006734789931215346], [0.005574698094278574, 0.0006550008547492325], [0.005367043428122997, 0.0006366410525515676], [0.005160801578313112, 0.0006184062804095447], [0.004956046584993601, 0.0006003028829582036], [0.004752846900373697, 0.0005823370302096009], [0.004551270045340061, 0.0005645146011374891], [0.004351381212472916, 0.0005468415329232812], [0.00415324280038476, 0.0005293231224641204], [0.003956914879381657, 0.0005119648412801325], [0.00376245379447937, 0.0004947715788148344], [0.00356991495937109, 0.0004777482827194035], [0.003379350295290351, 0.00046089960960671306], [0.0031908093951642513, 0.0004442297504283488], [0.0030043392907828093, 0.0004277430707588792], [0.00281998491846025, 0.00041144341230392456], [0.0026377877220511436, 0.00039533444214612246], [0.0024577875155955553, 0.0003794197691604495], [0.002280021319165826, 0.00036370259476825595], [0.002104523591697216, 0.0003481860039755702], [0.0019313268130645156, 0.000332872848957777], [0.001760460319928825, 0.00031776571995578706], [0.0015919515863060951, 0.00030286703258752823], [0.0014258255250751972, 0.00028817905695177615], [0.001262105070054531, 0.00027370371390134096], [0.001100810244679451, 0.00025944289518520236], [0.0009419594425708055, 0.0002453981142025441], [0.0007855683797970414, 0.000231570826144889], [0.0006316508515737951, 0.00021796223882120103], [0.00048021841212175786, 0.00020457337086554617], [0.0003312805783934891, 0.00019140506628900766], [0.00018484488828107715, 0.0001784579799277708], [4.0916696889325976e-05, 0.0001657325919950381], [-0.0001005004596663639, 0.00015322922263294458], [-0.0002394050097791478, 0.00014094800280872732], [-0.00037579721538349986, 0.00012888890341855586], [-0.0005096790846437216, 0.00011705176439136267], [-0.0006410545902326703, 0.00010543622192926705], [-0.000769929145462811, 9.404180309502408e-05], [-0.0008963099680840969, 8.286786760436371e-05], [-0.001020205905660987, 7.191363692982122e-05], [-0.0011416273191571236, 6.117818702477962e-05], [-0.0012605859665200114, 5.066048470325768e-05], [-0.001377095002681017, 4.035935126012191e-05], [-0.001491169328801334, 3.0273498850874603e-05], [-0.001602824660949409, 2.0401508663780987e-05], [-0.001712078577838838, 1.0741845471784472e-05], [-0.0018189494730904698, 1.2928794603794813e-06], [-0.0019234569044783711, -7.94713560026139e-06], [-0.002025621710345149, -1.698000414762646e-05], [-0.002125465776771307, -2.5807705242186785e-05], [-0.002320558065548539, -4.305675975047052e-05], [-0.0024204023648053408, -5.1884460845030844e-05], [-0.002522567054256797, -6.091734394431114e-05], [-0.002627074485644698, -7.015734445303679e-05], [-0.0027339451480656862, -7.960629591252655e-05], [-0.002843199297785759, -8.926597365643829e-05], [-0.002954854629933834, -9.91379638435319e-05], [-0.003068929072469473, -0.00010922383808065206], [-0.0031854382250458, -0.00011952496424783021], [-0.0033043967559933662, -0.00013004265201743692], [-0.0034258179366588593, -0.0001407780946465209], [-0.003549714107066393, -0.00015173233987297863], [-0.003676094813272357, -0.00016290628991555423], [-0.0038049693685024977, -0.00017430070147383958], [-0.003936344757676125, -0.0001859162439359352], [-0.004070227034389973, -0.00019775341206695884], [-0.004206618759781122, -0.00020981246780138463], [-0.004345523659139872, -0.00022209370217751712], [-0.004486940801143646, -0.00023459708609152585], [-0.004630868788808584, -0.00024732243036851287], [-0.004777304362505674, -0.0002602695603854954], [-0.004926242399960756, -0.00027343782130628824], [-0.0050776745192706585, -0.0002868266892619431], [-0.005231592338532209, -0.0003004352911375463], [-0.005387983750551939, -0.0003142625791952014], [-0.005546834319829941, -0.0003283073310740292], [-0.005708129145205021, -0.0003425682079978287], [-0.005871849600225687, -0.00035704352194443345], [-0.006037975195795298, -0.0003717314684763551], [-0.0062064845114946365, -0.00038663018494844437], [-0.00637735053896904, -0.00040173728484660387], [-0.006550548132508993, -0.00041705049807205796], [-0.006726045161485672, -0.0004325670888647437], [-0.0069038113579154015, -0.00044828420504927635], [-0.0070838117972016335, -0.0004641989362426102], [-0.007266008760780096, -0.0004803078481927514], [-0.007450363598763943, -0.000496607506647706], [-0.007636833004653454, -0.0005130941863171756], [-0.007825374603271484, -0.0005297640454955399], [-0.00801593903452158, -0.0005466127768158913], [-0.00820847786962986, -0.0005636360729113221], [-0.008402938954532146, -0.0005808292771689594], [-0.008599266409873962, -0.0005981876165606081], [-0.00879740621894598, -0.000615706027019769], [-0.008997294120490551, -0.0006333790952339768], [-0.0091988705098629, -0.0006512014078907669], [-0.009402071125805378, -0.0006691673770546913], [-0.00960682611912489, -0.0006872707745060325], [-0.009813067503273487, -0.0007055056048557162], [-0.010020721703767776, -0.0007238652906380594], [-0.010229715146124363, -0.0007423433708027005], [-0.010439969599246979, -0.0007609330350533128], [-0.010651406832039356, -0.0007796271238476038], [-0.01086394302546978, -0.0007984184776432812], [-0.01107749342918396, -0.0008172995294444263], [-0.011291973292827606, -0.0008362626540474594], [-0.011507292278110981, -0.000855300051625818], [-0.011723360046744347, -0.0008744036895222962], [-0.011940081603825092, -0.0008935650694184005], [-0.012157363817095757, -0.0009127760422416031], [-0.01237510796636343, -0.000932027876842767], [-0.012593214400112629, -0.0009513117256574333], [-0.01281158346682787, -0.0009706187411211431], [-0.013030108995735645, -0.000989939784631133], [-0.013248688541352749, -0.0010092654265463352], [-0.01346721313893795, -0.0010285862954333425], [-0.013685576617717743, -0.0010478927288204432], [-0.013903668150305748, -0.0010671752970665693], [-0.014121375977993011, -0.001086423872038722], [-0.01433858834207058, -0.0011056286748498678], [-0.0145551897585392, -0.001124779460951686], [-0.01477106660604477, -0.0011438662186264992], [-0.014986101537942886, -0.0011628784704953432], [-0.015200178138911724, -0.0011818059720098972], [-0.015413178130984306, -0.0012006382457911968], [-0.015624980442225933, -0.0012193648144602776], [-0.015835465863347054, -0.0012379749678075314], [-0.01604451984167099, -0.0012564583448693156], [-0.01625201478600502, -0.0012748040026053786], [-0.016457831487059593, -0.0012930012308061123], [-0.01666185073554516, -0.0013110395520925522], [-0.016863947734236717, -0.0013289080234244466], [-0.017064005136489868, -0.0013465960510075092], [-0.017261898145079613, -0.0013640926918014884], [-0.0174575075507164, -0.0013813874684274197], [-0.01765071414411068, -0.001398469670675695], [-0.017841393128037453, -0.0014153285883367062], [-0.018029427155852318, -0.001431953627616167], [-0.018214700743556023, -0.001448334543965757], [-0.018397090956568718, -0.0014644606271758676], [-0.0185764841735363, -0.0014803215162828565], [-0.01875276304781437, -0.0014959070831537247], [-0.018925810232758522, -0.0015112071996554732], [-0.019095517694950104, -0.0015262117376551032], [-0.019261769950389862, -0.0015409109182655811], [-0.019424455240368843, -0.0015552947297692299], [-0.01958347111940384, -0.001569354091770947], [-0.019738703966140747, -0.0015830789925530553], [-0.01989005319774151, -0.0015964604681357741], [-0.020037414506077766, -0.001609489438124001], [-0.02018068917095661, -0.0016221570549532771], [-0.020319776609539986, -0.0016344543546438217], [-0.020454581826925278, -0.0016463733045384288], [-0.020585011690855026, -0.0016579051734879613], [-0.02071097493171692, -0.0016690421616658568], [-0.02083238586783409, -0.0016797767020761967], [-0.02094915881752968, -0.0016901011113077402], [-0.021061208099126816, -0.0017000079387798905], [-0.021168457344174385, -0.0017094904324039817], [-0.021270830184221268, -0.001718541607260704], [-0.021368255838751793, -0.0017271555261686444], [-0.02146065980195999, -0.0017353254370391369], [-0.021547982469201088, -0.0017430458683520555], [-0.02163015492260456, -0.0017503113485872746], [-0.021707123145461082, -0.001757116406224668], [-0.021778829395771027, -0.001763456268236041], [-0.021845223382115364, -0.0017693265108391643], [-0.021906252950429916, -0.0017747224774211645], [-0.02196187898516655, -0.0017796405591070652], [-0.02201205864548683, -0.0017840771470218897], [-0.02205675281584263, -0.001788028865121305], [-0.0220959335565567, -0.001791493035852909], [-0.022129571065306664, -0.0017944668652489781], [-0.022157639265060425, -0.0017969486070796847], [-0.022180119529366493, -0.0017989362822845578], [-0.022196991369128227, -0.0018004280282184482], [-0.02220824919641018, -0.0018014233792200685], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.022214582189917564, -0.001801983336918056], [-0.02220754511654377, -0.001801412319764495], [-0.022195037454366684, -0.0018003976438194513], [-0.022176286205649376, -0.0017988766776397824], [-0.02215130813419819, -0.0017968504689633846], [-0.022120118141174316, -0.0017943205311894417], [-0.0220827404409647, -0.001791288610547781], [-0.022039204835891724, -0.001787757035344839], [-0.02198953740298748, -0.0017837283667176962], [-0.02193377912044525, -0.0017792052822187543], [-0.02187197096645832, -0.00177419139072299], [-0.021804150193929672, -0.00176869030110538], [-0.02173037640750408, -0.0017627058550715446], [-0.02165069803595543, -0.0017562424764037132], [-0.02156517095863819, -0.001749304705299437], [-0.02147386036813259, -0.0017418978968635201], [-0.021376829594373703, -0.0017340269405394793], [-0.021274147555232048, -0.0017256977735087276], [-0.021165888756513596, -0.0017169162165373564], [-0.021052131429314613, -0.0017076885560527444], [-0.020932957530021667, -0.0016980214277282357], [-0.020808445289731026, -0.0016879214672371745], [-0.020678691565990448, -0.0016773961251601577], [-0.0205437783151865, -0.0016664523864164948], [-0.02040380798280239, -0.0016550985164940357], [-0.02025887556374073, -0.0016433418495580554], [-0.020109079778194427, -0.0016311908839270473], [-0.01995452679693699, -0.001618653885088861], [-0.01979532092809677, -0.0016057397006079555], [-0.01963157393038273, -0.001592456828802824], [-0.019463393837213516, -0.0015788145828992128], [-0.019290899857878685, -0.0015648223925381899], [-0.01911420188844204, -0.0015504893381148577], [-0.018933424726128578, -0.0015358250821009278], [-0.018748685717582703, -0.0015208395197987556], [-0.018560107797384262, -0.00150554277934134], [-0.018367817625403404, -0.0014899446396157146], [-0.01817193813621998, -0.0014740554615855217], [-0.017972595989704132, -0.0014578854897990823], [-0.01776992529630661, -0.0014414453180506825], [-0.01756405085325241, -0.001424745423719287], [-0.01735510490834713, -0.0014077964005991817], [-0.01714322343468666, -0.0013906090753152966], [-0.0169285349547863, -0.00137319415807724], [-0.016711173579096794, -0.0013555624755099416], [-0.016491273418068886, -0.0013377248542383313], [-0.01626897230744362, -0.0013196924701333046], [-0.01604440063238144, -0.0013014758005738258], [-0.01581769622862339, -0.0012830860214307904], [-0.015588992275297642, -0.0012645344249904156], [-0.015358423814177513, -0.001245831255801022], [-0.015126126818358898, -0.001226987922564149], [-0.014892233535647392, -0.0012080153683200479], [-0.01465687807649374, -0.0011889239540323615], [-0.014420194551348686, -0.0011697248555719852], [-0.014182313345372677, -0.0011504285503178835], [-0.013943366706371307, -0.0011310458648949862], [-0.013703485019505024, -0.0011115873930975795], [-0.013462796807289124, -0.001092063495889306], [-0.013221432454884052, -0.0010724846506491303], [-0.012979513965547085, -0.0010528609855100513], [-0.012737172655761242, -0.0010332028614357114], [-0.012494528666138649, -0.0010135202901437879], [-0.012251703068614006, -0.0009938229341059923], [-0.012008818797767162, -0.0009741209214553237], [-0.011765992268919945, -0.0009544235654175282], [-0.011523342691361904, -0.0009347405284643173], [-0.011280982755124569, -0.0009150809491984546], [-0.011039027012884617, -0.0008954541990533471], [-0.010797584429383278, -0.0008758690673857927], [-0.010556762106716633, -0.0008563342853449285], [-0.010316669009625912, -0.0008368585840798914], [-0.010077407583594322, -0.0008174502872861922], [-0.009839077480137348, -0.0007981177186593413], [-0.009601780213415623, -0.000778868910856545], [-0.009365610778331757, -0.0007597114890813828], [-0.00913066416978836, -0.0007406532531604171], [-0.008897028863430023, -0.0007217014208436012], [-0.008664795197546482, -0.0007028633262962103], [-0.008434050716459751, -0.0006841459544375539], [-0.008204875513911247, -0.0006655559409409761], [-0.007977351546287537, -0.0006470999214798212], [-0.0077515565790236, -0.0006287840660661459], [-0.007527564652264118, -0.0006106144282966852], [-0.007305449340492487, -0.0005925971199758351], [-0.0070852781645953655, -0.0005747374380007386], [-0.0068671186454594135, -0.0005570409703068435], [-0.006651034113019705, -0.0005395127809606493], [-0.006437085568904877, -0.0005221579340286553], [-0.006225330755114555, -0.0005049809697084129], [-0.006015824619680643, -0.0004879864281974733], [-0.005808619782328606, -0.00047117858775891364], [-0.00560376513749361, -0.00045456134830601513], [-0.005401308182626963, -0.000438138609752059], [-0.005201292224228382, -0.0004219139227643609], [-0.005003759171813726, -0.00040589060517959297], [-0.0048087467439472675, -0.0003900717420037836], [-0.004616290796548128, -0.00037446024361997843], [-0.004426424391567707, -0.00035905884578824043], [-0.004239177796989679, -0.00034386993502266705], [-0.004054578486829996, -0.00032889581052586436], [-0.0038726532366126776, -0.00031413850956596434], [-0.003693422768265009, -0.00029959986568428576], [-0.0035169082693755627, -0.00028528147959150374], [-0.0033431267365813255, -0.00027118483558297157], [-0.003172094002366066, -0.00025731115601956844], [-0.003003822872415185, -0.00024366147408727556], [-0.0028383235912770033, -0.0002302366483490914], [-0.002675604308024049, -0.00021703734819311649], [-0.002515671541914344, -0.00020406406838446856], [-0.0023585292510688305, -0.00019131714361719787], [-0.0022041790653020144, -0.00017879667575471103], [-0.0020526202861219645, -0.00016650267934892327], [-0.0019038511672988534, -0.00015443493612110615], [-0.0017578669358044863, -0.00014259312592912465], [-0.0016146620037034154, -0.0001309767394559458], [-0.0014742278726771474, -0.00011958513641729951], [-0.0013365549966692924, -0.00010841751645784825], [-0.0012016318505629897, -9.747293370310217e-05], [-0.0010694453958421946, -8.675034769112244e-05], [-0.000939980847761035, -7.62485433369875e-05], [-0.0008132217917591333, -6.596621824428439e-05], [-0.0006891504744999111, -5.590190994553268e-05], [-0.0005677478620782495, -4.605407593771815e-05], [-0.00044899320346303284, -3.642104275058955e-05], [-0.0003328647871967405, -2.7001036869478412e-05], [-0.00021933947573415935, -1.7792188373277895e-05], [-0.0001083930183085613, -8.792530024948064e-06]]}, {"name": "CX_d4_u3", "samples": [[0.0001411764824297279, 3.9426013245247304e-06], [0.0002856786595657468, 7.978080247994512e-06], [0.0004335397097747773, 1.2107358998036943e-05], [0.0005847911234013736, 1.6331321603502147e-05], [0.0007394630229100585, 2.065080843749456e-05], [0.0008975840173661709, 2.5066612579394132e-05], [0.0010591805912554264, 2.957948345283512e-05], [0.0012242778902873397, 3.4190117730759084e-05], [0.0013928990811109543, 3.8899157516425475e-05], [0.0015650653513148427, 4.370720489532687e-05], [0.0017407959094271064, 4.8614791012369096e-05], [0.0019201078685000539, 5.36223960807547e-05], [0.0021030164789408445, 5.873043119208887e-05], [0.0022895338479429483, 6.393926014425233e-05], [0.0024796705693006516, 6.924916669959202e-05], [0.0026734352577477694, 7.4660376412794e-05], [0.002870832569897175, 8.017304935492575e-05], [0.0030718662310391665, 8.578728011343628e-05], [0.003276536474004388, 9.150304686045274e-05], [0.003484840737655759, 9.732030594022945e-05], [0.0036967741325497627, 0.00010323892638552934], [0.003912328742444515, 0.00010925866081379354], [0.004131493624299765, 0.00011537923273863271], [0.004354254808276892, 0.00012160023470642045], [0.004580596461892128, 0.00012792123015969992], [0.004810498096048832, 0.00013434162246994674], [0.005043936427682638, 0.00014086080773267895], [0.005280885845422745, 0.00014747802924830467], [0.005521316546946764, 0.0001541924721095711], [0.005765195470303297, 0.0001610032340977341], [0.0060124872252345085, 0.00016790928202681243], [0.00626315176486969, 0.000174909524503164], [0.006517145317047834, 0.00018200276826974005], [0.006774422712624073, 0.00018918767455033958], [0.007034933194518089, 0.0001964629045687616], [0.007298623211681843, 0.00020382690127007663], [0.007565435953438282, 0.00021127810759935528], [0.007835310883820057, 0.00021881483553443104], [0.00810818187892437, 0.0002264352369820699], [0.008383981883525848, 0.00023413744929712266], [0.008662639185786247, 0.00024191944976337254], [0.008944078348577023, 0.0002497791138011962], [0.009228220209479332, 0.00025771427317522466], [0.009514981880784035, 0.00026572259957902133], [0.009804276749491692, 0.0002738016773946583], [0.01009601354598999, 0.00028194894548505545], [0.010390101000666618, 0.0002901618427131325], [0.010686438530683517, 0.0002984376042149961], [0.010984927415847778, 0.0003067734360229224], [0.011285461485385895, 0.00031516639865003526], [0.011587933637201786, 0.00032361343619413674], [0.011892231181263924, 0.0003321114636491984], [0.012198238633573055, 0.00034065727959387004], [0.012505837716162205, 0.00034924750798381865], [0.012814905494451523, 0.0003578788018785417], [0.013125317171216011, 0.0003665476106107235], [0.013436944223940372, 0.0003752502962015569], [0.013749654404819012, 0.0003839832788798958], [0.014063311740756035, 0.00039274271694011986], [0.014377778396010399, 0.0004015247686766088], [0.014692915603518486, 0.0004103255341760814], [0.015008577145636082, 0.0004191409097984433], [0.015324615873396397, 0.00042796687921509147], [0.01564088463783264, 0.0004367992514744401], [0.01595722883939743, 0.0004456337192095816], [0.0162734966725111, 0.00045446603326126933], [0.016589529812335968, 0.0004632917989511043], [0.0169051680713892, 0.0004721065633930266], [0.017220253124833107, 0.0004809058445971459], [0.017534619197249413, 0.000489685102365911], [0.017848104238510132, 0.0004984397091902792], [0.018160536885261536, 0.0005071649211458862], [0.018471751362085342, 0.0005158561980351806], [0.01878158003091812, 0.0005245086504146457], [0.019089847803115845, 0.0005331176216714084], [0.019396387040615082, 0.0005416782223619521], [0.019701020792126656, 0.0005501856794580817], [0.020003577694296837, 0.0005586351035162807], [0.02030388079583645, 0.0005670216050930321], [0.020601756870746613, 0.0005753402947448194], [0.02089702896773815, 0.0005835862830281258], [0.021189521998167038, 0.0005917546804994345], [0.021479059010744095, 0.000599840481299907], [0.021765466779470444, 0.0006078389706090093], [0.02204856649041176, 0.0006157450843602419], [0.02232818864285946, 0.000623553991317749], [0.02260415628552437, 0.0006312608602456748], [0.022876296192407608, 0.0006388608017005026], [0.02314443700015545, 0.0006463491008616984], [0.02340840734541416, 0.0006537209264934063], [0.023668035864830017, 0.0006609715637750924], [0.023923160508275032, 0.0006680963560938835], [0.024173609912395477, 0.0006750905886292458], [0.02441922202706337, 0.0006819497793912888], [0.024659836664795876, 0.0006886693299748003], [0.02489529177546501, 0.0006952447583898902], [0.025125427171587944, 0.0007016717572696507], [0.025350095704197884, 0.0007079460192471743], [0.025569140911102295, 0.0007140632369555533], [0.02578241378068924, 0.0007200192776508629], [0.025989770889282227, 0.0007258100667968392], [0.026191070675849915, 0.000731431704480201], [0.026386169716715813, 0.0007368802325800061], [0.026574939489364624, 0.000742151984013617], [0.026757244020700455, 0.0007472431752830744], [0.026932958513498306, 0.0007521502557210624], [0.02710196003317833, 0.0007568699074909091], [0.027264127507805824, 0.0007613987545482814], [0.027419347316026688, 0.0007657335372641683], [0.027567511424422264, 0.000769871287047863], [0.0277085117995739, 0.0007738089188933372], [0.027842245995998383, 0.000777543755248189], [0.027968626469373703, 0.0007810731185600162], [0.0280875526368618, 0.0007843943312764168], [0.02819894813001156, 0.000787505297921598], [0.02830272726714611, 0.0007904035155661404], [0.028398815542459488, 0.0007930868887342513], [0.02848714403808117, 0.0007955536129884422], [0.02856764756143093, 0.0007978018838912249], [0.028640272095799446, 0.0007998299552127719], [0.02870495803654194, 0.0008016364881768823], [0.028761662542819977, 0.0008032200857996941], [0.028810344636440277, 0.0008045796421356499], [0.028850968927145004, 0.0008057141094468534], [0.02888350374996662, 0.0008066226146183908], [0.02890792489051819, 0.0008073046919889748], [0.028924213722348213, 0.0008077595848590136], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028933381661772728, 0.0008080156403593719], [0.028921473771333694, 0.0008077238453552127], [0.02890031598508358, 0.0008072052733041346], [0.028868597000837326, 0.0008064278517849743], [0.028826341032981873, 0.0008053922210820019], [0.028773577883839607, 0.0008040990796871483], [0.028710348531603813, 0.00080254947533831], [0.028636697679758072, 0.0008007443975657225], [0.02855268120765686, 0.0007986852433532476], [0.028458354994654655, 0.0007963734678924084], [0.028353793546557426, 0.0007938108174130321], [0.028239069506525993, 0.000790999096352607], [0.02811426855623722, 0.0007879404001869261], [0.027979476377367973, 0.0007846368825994432], [0.02783479541540146, 0.0007810909301042557], [0.027680328115820885, 0.0007773051620461047], [0.027516184374690056, 0.0007732822559773922], [0.027342481538653374, 0.000769025064073503], [0.027159348130226135, 0.0007645367295481265], [0.02696690894663334, 0.0007598203374072909], [0.026765303686261177, 0.0007548793219029903], [0.02655467577278614, 0.0007497171172872186], [0.02633517235517502, 0.0007443374488502741], [0.026106949895620346, 0.0007387440418824553], [0.02587016671895981, 0.0007329408545047045], [0.025624988600611687, 0.0007269318448379636], [0.02537158690392971, 0.0007207213784568012], [0.02511013299226761, 0.0007143135298974812], [0.024840811267495155, 0.0007077128975652158], [0.024563806131482124, 0.0007009238470345736], [0.02427930384874344, 0.0006939511513337493], [0.023987499997019768, 0.0006867994670756161], [0.02368859015405178, 0.0006794736254960299], [0.023382775485515594, 0.0006719785742461681], [0.023070260882377625, 0.0006643193191848695], [0.022751251235604286, 0.0006565008661709726], [0.02242596074938774, 0.0006485284538939595], [0.022094598039984703, 0.0006404072628356516], [0.02175738289952278, 0.000632142648100853], [0.021414531394839287, 0.0006237398483790457], [0.02106626331806183, 0.0006152043351903558], [0.020712800323963165, 0.0006065414636395872], [0.020354364067316055, 0.0005977567634545267], [0.019991183653473854, 0.000588855764362961], [0.01962348259985447, 0.0005798439378850162], [0.019251488149166107, 0.0005707268719561398], [0.018875429406762123, 0.0005615102709271014], [0.018495531752705574, 0.0005521995481103659], [0.018112024292349815, 0.0005428003496490419], [0.017725134268403053, 0.0005333182634785771], [0.017335090786218643, 0.0005237588775344193], [0.01694212481379509, 0.000514127837959677], [0.016546454280614853, 0.0005044305580668151], [0.016148313879966736, 0.0004946727422066033], [0.015747925266623497, 0.0004848598036915064], [0.015345511958003044, 0.0004749972140416503], [0.014941295608878136, 0.0004650905029848218], [0.01453549787402153, 0.000455144967418164], [0.014128335751593113, 0.0004451660788618028], [0.013720028102397919, 0.0004351590177975595], [0.01331078726798296, 0.0004251291393302381], [0.012900826521217823, 0.00041508162394165993], [0.012490353547036648, 0.00040502159390598536], [0.012079576961696148, 0.00039495405508205295], [0.011668698862195015, 0.00038488401332870126], [0.01125792134553194, 0.00037481647450476885], [0.010847439989447594, 0.0003647562116384506], [0.01043744944036007, 0.00035470793955028057], [0.010028140619397163, 0.0003446764312684536], [0.009619701653718948, 0.00033466616878286004], [0.0092123132199049, 0.00032468169229105115], [0.008806156925857067, 0.00031472742557525635], [0.008401406928896904, 0.00030480758869089186], [0.007998235523700714, 0.00029492645990103483], [0.007596808485686779, 0.00028508808463811874], [0.007197290193289518, 0.0002752965083345771], [0.006799838971346617, 0.00026555557269603014], [0.006404608953744173, 0.0002558690612204373], [0.006011749617755413, 0.00024624067009426653], [0.005621406715363264, 0.00023667393543291837], [0.005233720876276493, 0.00022717233514413238], [0.004848828073590994, 0.00021773920161649585], [0.004466859623789787, 0.0002083777217194438], [0.004087942186743021, 0.0001990910095628351], [0.0037121977657079697, 0.00018988209194503725], [0.003339743474498391, 0.00018075379193760455], [0.002970692003145814, 0.00017170888895634562], [0.002605150453746319, 0.0001627500168979168], [0.0022432219702750444, 0.00015387969324365258], [0.001885004574432969, 0.00014510031905956566], [0.0015305913984775543, 0.0001364141789963469], [0.0011800710344687104, 0.0001278234412893653], [0.0008335272432304919, 0.0001193301723105833], [0.0004910388961434364, 0.00011093630018876866], [0.00015268023707903922, 0.00010264363663736731], [-0.00018147901573684067, 9.445389150641859e-05], [-0.000511373917106539, 8.636865823064e-05], [-0.0008369439165107906, 7.838942110538483e-05], [-0.0011581333819776773, 7.051754801068455e-05], [-0.0014748906251043081, 6.275430496316403e-05], [-0.0017871690215542912, 5.5100827012211084e-05], [-0.0020949256140738726, 4.755817280965857e-05], [-0.0023981223348528147, 4.01272700401023e-05], [-0.0026967250742018223, 3.280896635260433e-05], [-0.0029907040297985077, 2.560397842898965e-05], [-0.0032800333574414253, 1.8512953829485923e-05], [-0.0035646911710500717, 1.1536416423041373e-05], [-0.003844659775495529, 4.674802767112851e-06], [-0.004119924735277891, -2.071530616376549e-06], [-0.0043904767371714115, -8.702350896783173e-06], [-0.004656307864934206, -1.521748345112428e-05], [-0.004917416721582413, -2.1616862795781344e-05], [-0.00517380191013217, -2.7900488930754364e-05], [-0.005425469018518925, -3.4068478271365166e-05], [-0.0056724245660007, -4.012098361272365e-05], [-0.005914678797125816, -4.605826688930392e-05], [-0.006152245681732893, -5.188067734707147e-05], [-0.006385141052305698, -5.758860788773745e-05], [-0.006613384932279587, -6.318250962067395e-05], [-0.006836999673396349, -6.866297917440534e-05], [-0.007056009955704212, -7.40305840736255e-05], [-0.007270443253219128, -7.928602281026542e-05], [-0.007480329368263483, -8.44300229800865e-05], [-0.007685701362788677, -8.946338493842632e-05], [-0.007886593230068684, -9.43869526963681e-05], [-0.008083043619990349, -9.920164302457124e-05], [-0.008275089785456657, -0.00010390841634944081], [-0.008462772704660892, -0.00010850824764929712], [-0.008829501457512379, -0.00011749622353818268], [-0.009017185308039188, -0.00012209605483803898], [-0.009209231473505497, -0.00012680282816290855], [-0.009405680932104588, -0.0001316175184911117], [-0.009606573730707169, -0.00013654108624905348], [-0.009811945259571075, -0.0001415744482073933], [-0.010021832771599293, -0.00014671847748104483], [-0.010236266069114208, -0.00015197390166576952], [-0.010455275885760784, -0.00015734152111690491], [-0.010678890161216259, -0.00016282197611872107], [-0.010907134041190147, -0.00016841590695548803], [-0.01114002987742424, -0.00017412380839232355], [-0.01137759629637003, -0.00017994620429817587], [-0.011619850993156433, -0.00018588350212667137], [-0.011866806074976921, -0.00019193602201994509], [-0.012118473649024963, -0.00019810399680864066], [-0.012374858371913433, -0.0002043876302195713], [-0.012635966762900352, -0.0002107869804603979], [-0.012901798821985722, -0.00021730213484261185], [-0.013172349892556667, -0.00022393294784706086], [-0.013447615318000317, -0.0002306793030584231], [-0.013727583922445774, -0.000237540909438394], [-0.01401224173605442, -0.0002445174613967538], [-0.014301571063697338, -0.0002516084350645542], [-0.014595549553632736, -0.0002588134375400841], [-0.014894152991473675, -0.00026613177033141255], [-0.015197349712252617, -0.00027356267673894763], [-0.015505106188356876, -0.00028110528364777565], [-0.015817387029528618, -0.00028875883435830474], [-0.016134142875671387, -0.0002965219900943339], [-0.016455331817269325, -0.0003043938777409494], [-0.016780901700258255, -0.00031237315852195024], [-0.0171107966452837, -0.0003204583772458136], [-0.017444955185055733, -0.00032864807872101665], [-0.01778331585228443, -0.0003369408077560365], [-0.018125804141163826, -0.0003453346434980631], [-0.018472347408533096, -0.00035382789792492986], [-0.018822867423295975, -0.0003624186501838267], [-0.019177280366420746, -0.0003711048047989607], [-0.019535496830940247, -0.00037988414987921715], [-0.019897427409887314, -0.0003887545317411423], [-0.02026296779513359, -0.00039771333103999496], [-0.020632021129131317, -0.00040675827767699957], [-0.02100447379052639, -0.00041588657768443227], [-0.021380217745900154, -0.0004250954953022301], [-0.021759135648608208, -0.00043438217835500836], [-0.0221411045640707, -0.0004437436582520604], [-0.02252599596977234, -0.00045317679177969694], [-0.022913683205842972, -0.0004626784357242286], [-0.023304026573896408, -0.00047224515583366156], [-0.023696884512901306, -0.00048187351785600185], [-0.024092115461826324, -0.0004915600293315947], [-0.024489566683769226, -0.0005013009649701416], [-0.024889083579182625, -0.0005110925412736833], [-0.025290511548519135, -0.0005209309165365994], [-0.025693682953715324, -0.000530812016222626], [-0.026098432019352913, -0.0005407318822108209], [-0.02650458924472332, -0.0005506861489266157], [-0.02691197767853737, -0.0005606706254184246], [-0.027320416644215584, -0.0005706808879040182], [-0.02772972546517849, -0.000580712454393506], [-0.028139716014266014, -0.0005907606682740152], [-0.028550196439027786, -0.0006008209311403334], [-0.028960974887013435, -0.0006108884699642658], [-0.029371853917837143, -0.0006209585117176175], [-0.029782628640532494, -0.0006310260505415499], [-0.03019310161471367, -0.0006410860805772245], [-0.030603064224123955, -0.0006511336541734636], [-0.03101230412721634, -0.000661163532640785], [-0.03142061084508896, -0.0006711705354973674], [-0.03182777389883995, -0.0006811494822613895], [-0.03223356977105141, -0.0006910949596203864], [-0.032637786120176315, -0.0007010016706772149], [-0.03304019942879677, -0.000710864260327071], [-0.033440589904785156, -0.0007206771988421679], [-0.03383873030543327, -0.0007304350147023797], [-0.03423439711332321, -0.0007401322363875806], [-0.034627366811037064, -0.0007497633923776448], [-0.03501741215586662, -0.0007593227783218026], [-0.035404302179813385, -0.0007688048062846065], [-0.035787809640169144, -0.0007782040629535913], [-0.036167703568935394, -0.0007875147275626659], [-0.03654376417398453, -0.0007967313867993653], [-0.03691576048731804, -0.0008058484527282417], [-0.037283457815647125, -0.0008148601627908647], [-0.037646640092134476, -0.0008237612200900912], [-0.03800507262349129, -0.0008325458620674908], [-0.03835853561758995, -0.0008412087336182594], [-0.03870680555701256, -0.0008497443050146103], [-0.0390496589243412, -0.0008581471047364175], [-0.03938687592744827, -0.0008664117776788771], [-0.03971823677420616, -0.000874532968737185], [-0.040043529123067856, -0.0008825053228065372], [-0.040362536907196045, -0.0008903237758204341], [-0.040675051510334015, -0.0008979830890893936], [-0.04098086431622505, -0.0009054781403392553], [-0.04127977415919304, -0.0009128039237111807], [-0.04157157987356186, -0.000919955549761653], [-0.041856080293655396, -0.0009269282454624772], [-0.042133085429668427, -0.0009337173542007804], [-0.04240240901708603, -0.0009403179865330458], [-0.04266385734081268, -0.0009467257186770439], [-0.04291726276278496, -0.0009529363596811891], [-0.04316244274377823, -0.00095894536934793], [-0.043399225920438766, -0.0009647485567256808], [-0.04362744837999344, -0.0009703418472781777], [-0.04384694993495941, -0.0009757215157151222], [-0.04405757784843445, -0.000980883720330894], [-0.04425918310880661, -0.0009858247358351946], [-0.04445162042975426, -0.000990541186183691], [-0.04463475942611694, -0.0009950295789167285], [-0.04480845853686333, -0.0009992866544052958], [-0.044972602277994156, -0.0010033096186816692], [-0.04512707144021988, -0.0010070954449474812], [-0.045271750539541245, -0.0010106413392350078], [-0.04540654271841049, -0.0010139448568224907], [-0.045531343668699265, -0.0010170035529881716], [-0.0456460677087307, -0.0010198152158409357], [-0.045750632882118225, -0.0010223779827356339], [-0.04584495350718498, -0.0010246896417811513], [-0.04592897370457649, -0.001026748912408948], [-0.046002622693777084, -0.0010285539319738746], [-0.04606585204601288, -0.001030103536322713], [-0.04611861705780029, -0.0010313966777175665], [-0.046160873025655746, -0.001032432308420539], [-0.04619259014725685, -0.0010332097299396992], [-0.046213749796152115, -0.0010337283601984382], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046225655823946, -0.0010340200969949365], [-0.046211011707782745, -0.0010336923878639936], [-0.04618498682975769, -0.001033110311254859], [-0.0461459681391716, -0.0010322375455871224], [-0.04609398916363716, -0.0010310749057680368], [-0.04602908715605736, -0.0010296230902895331], [-0.04595131054520607, -0.0010278832633048296], [-0.045860715210437775, -0.0010258567053824663], [-0.045757368206977844, -0.001023544929921627], [-0.04564134031534195, -0.0010209495667368174], [-0.04551272094249725, -0.0010180724784731865], [-0.04537159949541092, -0.0010149157606065273], [-0.0452180877327919, -0.0010114818578585982], [-0.04505228251218796, -0.001007772865705192], [-0.04487431049346924, -0.0010037919273599982], [-0.044684309512376785, -0.0009995417203754187], [-0.04448239877820015, -0.000995025155134499], [-0.04426873102784157, -0.0009902457240968943], [-0.044043462723493576, -0.0009852066868916154], [-0.04380674660205841, -0.0009799115359783173], [-0.0435587577521801, -0.0009743642876856029], [-0.04329966753721237, -0.0009685687255114317], [-0.04302966222167015, -0.0009625290404073894], [-0.04274893179535866, -0.0009562494233250618], [-0.04245766997337341, -0.0009497341816313565], [-0.04215608164668083, -0.0009429879719391465], [-0.041844382882118225, -0.0009360153926536441], [-0.04152277112007141, -0.0009288213914260268], [-0.04119148477911949, -0.0009214108576998115], [-0.04085075110197067, -0.0009137889719568193], [-0.040500789880752563, -0.0009059607400558889], [-0.04014185070991516, -0.0008979315753094852], [-0.03977416828274727, -0.000889707007445395], [-0.03939799219369888, -0.0008812922751531005], [-0.0390135757625103, -0.000872693257406354], [-0.038621168583631516, -0.000863915600348264], [-0.03822103887796402, -0.0008549650083296001], [-0.03781343623995781, -0.0008458474767394364], [-0.03739863634109497, -0.0008365687681362033], [-0.036976899951696396, -0.0008271349943242967], [-0.03654850274324417, -0.0008175522089004517], [-0.036113716661930084, -0.0008078264654614031], [-0.03567281737923622, -0.000797963934019208], [-0.03522608056664467, -0.0007879709010012448], [-0.034773774445056915, -0.0007778534200042486], [-0.03431619703769684, -0.000767617835663259], [-0.03385361656546593, -0.0007572703761979938], [-0.033386312425136566, -0.0007468172116205096], [-0.03291456773877144, -0.0007362648611888289], [-0.03243866562843323, -0.0007256193784996867], [-0.03195888176560402, -0.0007148871081881225], [-0.031475502997636795, -0.0007040744530968368], [-0.030988799408078194, -0.0006931873504072428], [-0.030499055981636047, -0.0006822322611697018], [-0.030006546527147293, -0.0006712154136039317], [-0.029511546716094017, -0.0006601427448913455], [-0.029014330357313156, -0.0006490205996669829], [-0.028515169396996498, -0.0006378547986969352], [-0.028014328330755234, -0.0006266515702009201], [-0.02751207910478115, -0.000615416734945029], [-0.027008680626749992, -0.0006041562301106751], [-0.0265043992549181, -0.0005928759346716106], [-0.025999486446380615, -0.0005815816111862659], [-0.025494201108813286, -0.0005702789057977498], [-0.02498878911137581, -0.0005589733482338488], [-0.02448350004851818, -0.0005476705846376717], [-0.02397857792675495, -0.0005363759701140225], [-0.023474257439374924, -0.0005250948597677052], [-0.0229707770049572, -0.000513832492288202], [-0.022468365728855133, -0.0005025940481573343], [-0.021967248991131783, -0.0004913846496492624], [-0.021467644721269608, -0.0004802089533768594], [-0.020969772711396217, -0.0004690720816142857], [-0.020473839715123177, -0.0004579785745590925], [-0.0199800543487072, -0.0004469331761356443], [-0.019488617777824402, -0.0004359401937108487], [-0.018999721854925156, -0.000425004109274596], [-0.01851356029510498, -0.0004141291428823024], [-0.018030311912298203, -0.00040331939817406237], [-0.017550161108374596, -0.00039257892058230937], [-0.01707327738404274, -0.0003819115518126637], [-0.016599830240011215, -0.0003713210462592542], [-0.016129979863762856, -0.0003608109545893967], [-0.015663882717490196, -0.0003503848274704069], [-0.01520168874412775, -0.0003400460409466177], [-0.014743542298674583, -0.000329797767335549], [-0.014289580285549164, -0.00031964314985089004], [-0.013839936815202236, -0.00030958506977185607], [-0.013394738547503948, -0.00029962643748149276], [-0.012954103760421276, -0.0002897698723245412], [-0.012518147006630898, -0.000280018022749573], [-0.012086980976164341, -0.0002703732461668551], [-0.011660706251859665, -0.000260837929090485], [-0.01123941969126463, -0.000251414196100086], [-0.010823213495314121, -0.00024210406991187483], [-0.010412171483039856, -0.00023290950048249215], [-0.0100063756108284, -0.00022383227769751102], [-0.009605900384485722, -0.00021487404592335224], [-0.009210812859237194, -0.00020603634766303003], [-0.008821177296340466, -0.00019732062355615199], [-0.008437051437795162, -0.0001887280959635973], [-0.008058486506342888, -0.0001802600163500756], [-0.0076855323277413845, -0.00017191738879773766], [-0.007318228017538786, -0.00016370118828490376], [-0.006956612225621939, -0.00015561221516691148], [-0.0066007147543132305, -0.00014765115338377655], [-0.006250564008951187, -0.000139818643219769], [-0.005906181875616312, -0.00013211517944000661], [-0.005567584652453661, -0.00012454109673853964], [-0.005234785843640566, -0.00011709673708537593], [-0.004907792899757624, -0.00010978225327562541], [-0.004586609546095133, -0.00010259771079290658], [-0.004271235782653093, -9.554311691317707e-05], [-0.003961666487157345, -8.86183770489879e-05], [-0.003657892346382141, -8.182326564565301e-05], [-0.0033599012531340122, -7.515751349274069e-05], [-0.0030676762107759714, -6.8620742240455e-05], [-0.0027811971958726645, -6.221250077942386e-05], [-0.0025004397612065077, -5.593224705080502e-05], [-0.0022253766655921936, -4.977937351213768e-05], [-0.001955977873876691, -4.375319986138493e-05], [-0.001692208694294095, -3.785295848501846e-05], [-0.0014340325724333525, -3.207782356184907e-05], [-0.0011814093450084329, -2.6426903787069023e-05], [-0.0009342964040115476, -2.0899242372252047e-05], [-0.0006926482892595232, -1.5493824321310967e-05], [-0.00045641689212061465, -1.0209573702013586e-05], [-0.00022555174655281007, -5.045359557698248e-06]]}, {"name": "CX_d7_u9", "samples": [[6.659729115199298e-05, 2.1985215425956994e-05], [0.00013476345338858664, 4.4488344428827986e-05], [0.00020451404270716012, 6.751453474862501e-05], [0.00027586400392465293, 9.106871584663168e-05], [0.000348827539710328, 0.0001151555625256151], [0.00042341803782619536, 0.00013977951311971992], [0.0004996481002308428, 0.00016494472220074385], [0.0005775296594947577, 0.00019065511878579855], [0.0006570735131390393, 0.00021691425354219973], [0.0007382896146737039, 0.0002437254588585347], [0.000821187102701515, 0.0002710917324293405], [0.0009057741262950003, 0.0002990157518070191], [0.0009920576121658087, 0.0003274997870903462], [0.0010800437303259969, 0.0003565459046512842], [0.001169737195596099, 0.0003861556760966778], [0.0012611417332664132, 0.0004163303237874061], [0.0013542603701353073, 0.00044707077904604375], [0.0014490941539406776, 0.0004783775075338781], [0.0015456433175131679, 0.0005102504510432482], [0.0016439068131148815, 0.0005426894058473408], [0.001743882428854704, 0.0005756934988312423], [0.001845566090196371, 0.0006092615076340735], [0.00194895314052701, 0.0006433917442336679], [0.0020540363620966673, 0.0006780821131542325], [0.00216080853715539, 0.0007133299368433654], [0.0022692603524774313, 0.0007491321885026991], [0.002379380399361253, 0.000785485259257257], [0.002491156803444028, 0.0008223850163631141], [0.0026045755948871374, 0.0008598269778303802], [0.002719620708376169, 0.000897805904969573], [0.002836275612935424, 0.0009363162680529058], [0.002954521682113409, 0.0009753518970683217], [0.003074338659644127, 0.0010149059817194939], [0.0031957041937857866, 0.0010549714788794518], [0.0033185952343046665, 0.0010955404723063111], [0.0034429857041686773, 0.0011366044636815786], [0.00356884952634573, 0.001178154954686761], [0.0036961575970053673, 0.0012201820500195026], [0.0038248791825026274, 0.0012626757379621267], [0.003954982850700617, 0.0013056258903816342], [0.004086433909833431, 0.0013490208657458425], [0.004219197668135166, 0.0013928489061072469], [0.00435323640704155, 0.0014370979042723775], [0.004488510079681873, 0.0014817548217251897], [0.004624979570508003, 0.0015268063871189952], [0.0047626011073589325, 0.0015722381649538875], [0.004901330918073654, 0.0016180359525606036], [0.005041122902184725, 0.0016641843831166625], [0.005181929562240839, 0.0017106675077229738], [0.0053237006068229675, 0.0017574693774804473], [0.005466385744512081, 0.0018045728793367743], [0.005609932355582714, 0.0018519606674090028], [0.005754285026341677, 0.0018996148137375712], [0.005899388808757067, 0.0019475166918709874], [0.006045186426490545, 0.0019956473261117935], [0.006191616877913475, 0.00204398762434721], [0.006338620558381081, 0.002092516515403986], [0.00648613553494215, 0.0021412144415080547], [0.006634098012000322, 0.0021900599822402], [0.0067824418656528, 0.0022390317171812057], [0.0069311014376580715, 0.002288107294589281], [0.007080008741468191, 0.0023372648283839226], [0.00722909439355135, 0.0023864812683314085], [0.007378287613391876, 0.0024357333313673735], [0.0075275176204741, 0.002484997035935521], [0.007676710374653339, 0.002534249098971486], [0.007825792767107487, 0.0025834643747657537], [0.007974688895046711, 0.0026326184161007404], [0.008123324252665043, 0.002681685844436288], [0.008271620608866215, 0.002730641746893525], [0.008419500663876534, 0.0027794602792710066], [0.008566885255277157, 0.0028281148988753557], [0.008713695220649242, 0.002876580459997058], [0.008859850466251373, 0.0029248292557895184], [0.009005269967019558, 0.002972835674881935], [0.009149874560534954, 0.0030205727089196444], [0.009293579496443272, 0.003068012883886695], [0.009436304681003094, 0.0031151294242590666], [0.00957796722650528, 0.0031618953216820955], [0.009718484245240688, 0.0032082831021398306], [0.009857773780822754, 0.0032542652916163206], [0.009995752014219761, 0.0032998148817569017], [0.010132335126399994, 0.0033449039328843355], [0.010267443023622036, 0.0033895059023052454], [0.010400989092886448, 0.0034335926175117493], [0.010532895103096962, 0.003477138001471758], [0.010663078166544437, 0.003520113881677389], [0.010791454464197159, 0.00356249394826591], [0.010917944833636284, 0.0036042509600520134], [0.011042468249797821, 0.0036453588400036097], [0.011164943687617779, 0.0036857908125966787], [0.011285293847322464, 0.0037255208007991314], [0.011403437703847885, 0.0037645227275788784], [0.011519300751388073, 0.0038027719128876925], [0.011632805690169334, 0.0038402420468628407], [0.011743877083063126, 0.0038769091479480267], [0.011852439492940903, 0.003912747837603092], [0.011958422139286995, 0.003947735298424959], [0.012061751447618008, 0.0039818468503654], [0.012162359431385994, 0.00401505921036005], [0.012260176241397858, 0.004047350957989693], [0.012355135753750801, 0.004078698810189962], [0.012447170913219452, 0.0041090818122029305], [0.012536218389868736, 0.004138478543609381], [0.012622218579053879, 0.004166868515312672], [0.012705108150839806, 0.004194232635200024], [0.012784830294549465, 0.004220550414174795], [0.012861330062150955, 0.004245804622769356], [0.012934551574289799, 0.004269976634532213], [0.013004445470869541, 0.004293050151318312], [0.013070959597826004, 0.004315007943660021], [0.013134047389030457, 0.0043358346447348595], [0.013193664140999317, 0.004355515353381634], [0.013249765150249004, 0.004374035634100437], [0.013302313163876534, 0.004391382914036512], [0.013351269997656345, 0.004407544154673815], [0.01339659746736288, 0.004422507714480162], [0.013438264839351177, 0.004436263348907232], [0.013476241379976273, 0.0044488003477454185], [0.013510500080883503, 0.004460109397768974], [0.013541014865040779, 0.00447018351405859], [0.013567764312028885, 0.004479013849049807], [0.013590728864073753, 0.004486595280468464], [0.013609891757369041, 0.0044929212890565395], [0.013625238090753555, 0.004497987683862448], [0.013636759482324123, 0.004501791205257177], [0.013644443824887276, 0.00450432812795043], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.01364876888692379, 0.004505755379796028], [0.013643816113471985, 0.004504308570176363], [0.013635015115141869, 0.004501738585531712], [0.013621821068227291, 0.00449788523837924], [0.013604244217276573, 0.004492752254009247], [0.013582298532128334, 0.004486342892050743], [0.013555997051298618, 0.004478661809116602], [0.013525361195206642, 0.004469714593142271], [0.013490413315594196, 0.00445950822904706], [0.013451178558170795, 0.004448050167411566], [0.013407685793936253, 0.004435348324477673], [0.013359964825212955, 0.004421411547809839], [0.013308051973581314, 0.004406251013278961], [0.013251984491944313, 0.004389876965433359], [0.01319180242717266, 0.004372301045805216], [0.013127550482749939, 0.004353536758571863], [0.013059274293482304, 0.004333597142249346], [0.012987020425498486, 0.004312496166676283], [0.012910843826830387, 0.004290249198675156], [0.012830797582864761, 0.0042668720707297325], [0.01274693850427866, 0.004242381546646357], [0.012659326195716858, 0.004216794855892658], [0.01256802212446928, 0.0041901301592588425], [0.01247309148311615, 0.004162406083196402], [0.012374598532915115, 0.0041336421854794025], [0.012272614054381847, 0.0041038584895431995], [0.012167208828032017, 0.004073075484484434], [0.012058455497026443, 0.0040413145907223225], [0.011946429498493671, 0.004008598159998655], [0.011831206269562244, 0.003974948078393936], [0.011712864972651005, 0.003940387163311243], [0.011591486632823944, 0.0039049393963068724], [0.011467152275145054, 0.003868628526106477], [0.01133994571864605, 0.0038314787670969963], [0.01120995357632637, 0.0037935152649879456], [0.011077257804572582, 0.003754762466996908], [0.010941950604319572, 0.0037152469158172607], [0.010804117657244205, 0.003674993757158518], [0.010663850232958794, 0.0036340293008834124], [0.010521236807107925, 0.003592380089685321], [0.010376372374594212, 0.003550073364749551], [0.01022934541106224, 0.0035071352031081915], [0.010080252774059772, 0.0034635935444384813], [0.00992918387055397, 0.003419474931433797], [0.009776236489415169, 0.0033748075366020203], [0.00962150190025568, 0.0033296183682978153], [0.00946507602930069, 0.003283935133367777], [0.009307054802775383, 0.003237786004319787], [0.009147531352937222, 0.0031911982223391533], [0.00898660160601139, 0.0031441999599337578], [0.008824359625577927, 0.0030968182254582644], [0.00866090040653944, 0.003049081191420555], [0.008496318943798542, 0.0030010160990059376], [0.008330708369612694, 0.0029526506550610065], [0.008164162747561932, 0.0029040121007710695], [0.007996776141226292, 0.0028551279101520777], [0.007828637957572937, 0.002806024393066764], [0.007659842725843191, 0.0027567290235310793], [0.0074904803186655045, 0.0027072676457464695], [0.007320641074329615, 0.0026576672680675983], [0.0071504139341413975, 0.0026079535018652678], [0.006979886908084154, 0.0025581521913409233], [0.006809147074818611, 0.002508288947865367], [0.006638281047344208, 0.002458388451486826], [0.006467372644692659, 0.002408475847914815], [0.006296505685895681, 0.0023585751187056303], [0.006125762593001127, 0.0023087107110768557], [0.005955223459750414, 0.0022589059080928564], [0.005784968379884958, 0.002209183992817998], [0.005615074187517166, 0.0021595675498247147], [0.005445617251098156, 0.0021100789308547974], [0.005276673007756472, 0.002060739789158106], [0.005108313634991646, 0.0020115715451538563], [0.004940610844641924, 0.001962594920769334], [0.004773634020239115, 0.001913830521516502], [0.004607450682669878, 0.0018652977887541056], [0.004442127421498299, 0.0018170162802562118], [0.004277728032320738, 0.001769004506058991], [0.004114314913749695, 0.00172128074336797], [0.003951948136091232, 0.0016738626873120666], [0.0037906868383288383, 0.0016267673345282674], [0.003630587365478277, 0.0015800113324075937], [0.0034717044327408075, 0.0015336106298491359], [0.003314090194180608, 0.0014875804772600532], [0.0031577961053699255, 0.0014419357758015394], [0.003002870362251997, 0.0013966907281428576], [0.002849360229447484, 0.0013518590712919831], [0.002697309944778681, 0.001307453727349639], [0.002546762814745307, 0.001263487502001226], [0.0023977591190487146, 0.001219971920363605], [0.0022503379732370377, 0.001176918507553637], [0.0021045359317213297, 0.00113433797378093], [0.001960387919098139, 0.001092240447178483], [0.0018179269973188639, 0.0010506357066333294], [0.0016771836671978235, 0.001009532599709928], [0.0015381871489807963, 0.0009689395083114505], [0.0014009644510224462, 0.0009288645815104246], [0.0012655408354476094, 0.0008893150370568037], [0.001131939236074686, 0.0008502975106239319], [0.0010001813061535358, 0.0008118184632621706], [0.0008702863706275821, 0.0007738835411146283], [0.0007422723574563861, 0.0007364978082478046], [0.0006161549827083945, 0.0006996660958975554], [0.0004919485654681921, 0.0006633924203924835], [0.0003696653584484011, 0.0006276804488152266], [0.00024931630468927324, 0.000592533266171813], [0.00013091039727441967, 0.0005579536082223058], [1.4455028576776385e-05, 0.0005239435704424977], [-0.00010004393698181957, 0.0004905048990622163], [-0.00021258226479403675, 0.00045763884554617107], [-0.0003231571754440665, 0.00042534616659395397], [-0.00043176751933060586, 0.0003936272405553609], [-0.0005384133546613157, 0.000362482009222731], [-0.0006430965149775147, 0.00033190997783094645], [-0.0007458197651430964, 0.0003019103314727545], [-0.0008465874707326293, 0.00027248176047578454], [-0.0009454054525122046, 0.00024362263502553105], [-0.0010422804625704885, 0.00021533091785386205], [-0.0011372205335646868, 0.00018760430975817144], [-0.0012302349787205458, 0.00016044004587456584], [-0.001321334159001708, 0.0001338351285085082], [-0.0014105295995250344, 0.00010778621071949601], [-0.0014978336403146386, 8.228962542489171e-05], [-0.0015832600183784962, 5.7341414503753185e-05], [-0.0016668228199705482, 3.2937416108325124e-05], [-0.001748537877574563, 9.073090041056275e-06], [-0.001828421256504953, -1.4256307622417808e-05], [-0.0019064898369833827, -3.705572453327477e-05], [-0.0020590336062014103, -8.160513243637979e-05], [-0.0021371024195104837, -0.00010440460755489767], [-0.002216985682025552, -0.00012773400521837175], [-0.002298700623214245, -0.0001515983312856406], [-0.0023822635412216187, -0.00017600235878489912], [-0.002467690035700798, -0.00020095056970603764], [-0.0025549940764904022, -0.00022644709679298103], [-0.002644189400598407, -0.0002524960145819932], [-0.002735288580879569, -0.00027910093194805086], [-0.002828303026035428, -0.0003062652249354869], [-0.002923243213444948, -0.000333991862135008], [-0.0030201179906725883, -0.000362283579306677], [-0.0031189359724521637, -0.00039114270475693047], [-0.00321970391087234, -0.0004205712757539004], [-0.003322427161037922, -0.0004505709221120924], [-0.0034271101467311382, -0.00048114286619238555], [-0.0035337558947503567, -0.000512288068421185], [-0.00364236650057137, -0.000544007052667439], [-0.0037529412657022476, -0.0005762997316196561], [-0.003865479724481702, -0.0006091658724471927], [-0.003979978151619434, -0.0006426044274121523], [-0.004096433985978365, -0.0006766144651919603], [-0.004214839544147253, -0.0007111941231414676], [-0.004335188772529364, -0.0007463413057848811], [-0.004457471892237663, -0.0007820532191544771], [-0.004581678658723831, -0.0008183270692825317], [-0.004707796033471823, -0.000855158781632781], [-0.004835810046643019, -0.0008925443980842829], [-0.004965704865753651, -0.000930479378439486], [-0.005097463261336088, -0.0009689584840089083], [-0.005231064278632402, -0.0010079757776111364], [-0.0053664883598685265, -0.0010475254384800792], [-0.005503710824996233, -0.0010876004816964269], [-0.005642706993967295, -0.0011281934566795826], [-0.005783450324088335, -0.001169296563602984], [-0.005925911478698254, -0.0012109014205634594], [-0.006070059724152088, -0.0012529988307505846], [-0.0062158615328371525, -0.0012955794809386134], [-0.006363282911479473, -0.0013386327773332596], [-0.006512286141514778, -0.0013821483589708805], [-0.006662833970040083, -0.0014261147007346153], [-0.0068148840218782425, -0.0014705199282616377], [-0.006968393921852112, -0.0015153514686971903], [-0.007123319897800684, -0.0015605965163558722], [-0.007279613986611366, -0.0016062413342297077], [-0.007437227759510279, -0.0016522714868187904], [-0.007596110925078392, -0.0016986720729619265], [-0.0077562108635902405, -0.001745428191497922], [-0.007917472161352634, -0.0017925235442817211], [-0.008079838007688522, -0.0018399416003376245], [-0.008243250660598278, -0.0018876653630286455], [-0.008407650515437126, -0.0019356771372258663], [-0.008572974242269993, -0.001983958762139082], [-0.00873915757983923, -0.0020324916113168], [-0.008906133472919464, -0.0020812558941543102], [-0.009073836728930473, -0.0021302325185388327], [-0.009242195636034012, -0.0021794005297124386], [-0.009411141276359558, -0.0022287399042397738], [-0.009580597281455994, -0.002278228523209691], [-0.009750491008162498, -0.0023278447333723307], [-0.009920746088027954, -0.002377566881477833], [-0.010091285221278667, -0.002427371684461832], [-0.010262029245495796, -0.0024772363249212503], [-0.0104328952729702, -0.0025271365884691477], [-0.01060380320996046, -0.0025770491920411587], [-0.010774670168757439, -0.0026269496884196997], [-0.010945410467684269, -0.0026768131647258997], [-0.011115936562418938, -0.0027266142424196005], [-0.01128616463392973, -0.0027763282414525747], [-0.011456003412604332, -0.002825928619131446], [-0.011625366285443306, -0.002875389764085412], [-0.011794161051511765, -0.0029246851336210966], [-0.011962298303842545, -0.002973788883537054], [-0.012129685841500759, -0.003022673074156046], [-0.012296231463551521, -0.003071311628445983], [-0.01246184203773737, -0.003119677072390914], [-0.012626423500478268, -0.003167741931974888], [-0.01278988178819418, -0.003215478966012597], [-0.012952123768627644, -0.0032628607004880905], [-0.013113053515553474, -0.0033098591957241297], [-0.013272576965391636, -0.0033564469777047634], [-0.013430598191916943, -0.0034025961067527533], [-0.013587024062871933, -0.0034482793416827917], [-0.013741758652031422, -0.0034934685099869967], [-0.013894706964492798, -0.0035381356719881296], [-0.014045774936676025, -0.003582254284992814], [-0.014194868505001068, -0.0036257959436625242], [-0.014341894537210464, -0.0036687341053038836], [-0.014486759901046753, -0.0037110408302396536], [-0.014629372395575047, -0.003752690041437745], [-0.014769640751183033, -0.0037936547305434942], [-0.0149074736982584, -0.003833907889202237], [-0.01504278089851141, -0.0038734234403818846], [-0.015175475738942623, -0.003912176471203566], [-0.015305468812584877, -0.003950139973312616], [-0.015432675369083881, -0.003987289499491453], [-0.015557009726762772, -0.004023600835353136], [-0.015678387135267258, -0.004059048369526863], [-0.015796728432178497, -0.004093609284609556], [-0.015911951661109924, -0.004127259366214275], [-0.01602397859096527, -0.0041599757969379425], [-0.01613273285329342, -0.004191736690700054], [-0.01623813807964325, -0.00422251969575882], [-0.016340121626853943, -0.004252303391695023], [-0.016438612714409828, -0.004281067289412022], [-0.016533544287085533, -0.0043087913654744625], [-0.016624847427010536, -0.004335456062108278], [-0.016712462529540062, -0.004361042752861977], [-0.01679632067680359, -0.0043855332769453526], [-0.01687636785209179, -0.004408910404890776], [-0.01695254258811474, -0.004431157372891903], [-0.017024796456098557, -0.004452258348464966], [-0.017093073576688766, -0.004472197964787483], [-0.01715732552111149, -0.004490962252020836], [-0.01721750572323799, -0.004508537705987692], [-0.01727357506752014, -0.004524912219494581], [-0.01732548698782921, -0.004540072754025459], [-0.017373207956552505, -0.004554009065032005], [-0.01741670072078705, -0.004566711373627186], [-0.01745593547821045, -0.004578169900923967], [-0.01749088428914547, -0.004588376265019178], [-0.01752151921391487, -0.004597323015332222], [-0.01754782162606716, -0.004605004098266363], [-0.0175697673112154, -0.004611413460224867], [-0.017587343230843544, -0.00461654644459486], [-0.017600538209080696, -0.004620399791747332], [-0.017609339207410812, -0.00462297024205327], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017614291980862617, -0.004624416586011648], [-0.017608709633350372, -0.004622950684279203], [-0.017598794773221016, -0.004620347172021866], [-0.017583925276994705, -0.004616443533450365], [-0.017564119771122932, -0.004611244425177574], [-0.017539389431476593, -0.004604751709848642], [-0.01750975474715233, -0.004596970975399017], [-0.017475230619311333, -0.0045879073441028595], [-0.017435850575566292, -0.004577568732202053], [-0.017391638830304146, -0.004565961193293333], [-0.01734262704849243, -0.004553094040602446], [-0.017288854345679283, -0.004538977053016424], [-0.017230357974767685, -0.00452361861243844], [-0.01716717705130577, -0.004507032223045826], [-0.01709936186671257, -0.0044892276637256145], [-0.017026960849761963, -0.004470219369977713], [-0.016950024291872978, -0.004450020845979452], [-0.016868606209754944, -0.004428645130246878], [-0.016782766208052635, -0.004406108986586332], [-0.016692565754055977, -0.0043824282474815845], [-0.016598070040345192, -0.004357619676738977], [-0.016499346122145653, -0.004331700503826141], [-0.016396459192037582, -0.004304688889533281], [-0.0162894856184721, -0.004276604857295752], [-0.016178501769900322, -0.004247467033565044], [-0.01606358028948307, -0.004217296373099089], [-0.01594480499625206, -0.004186112899333239], [-0.015822257846593857, -0.00415393989533186], [-0.015696020796895027, -0.004120797850191593], [-0.01556618232280016, -0.004086710046976805], [-0.015432830899953842, -0.004051700234413147], [-0.015296056866645813, -0.004015791695564985], [-0.015155949629843235, -0.00397900864481926], [-0.015012609772384167, -0.003941376693546772], [-0.014866126701235771, -0.0039029191248118877], [-0.014716601930558681, -0.003863663412630558], [-0.014564130455255508, -0.003823633771389723], [-0.01440881472080946, -0.0037828574422746897], [-0.014250753447413445, -0.003741360502317548], [-0.014090051874518394, -0.0036991704255342484], [-0.013926812447607517, -0.0036563135217875242], [-0.013761136680841446, -0.0036128174979239702], [-0.013593130744993687, -0.0035687098279595375], [-0.01342290174216032, -0.0035240179859101772], [-0.013250552117824554, -0.003478769911453128], [-0.01307619083672762, -0.003432993544265628], [-0.01289992406964302, -0.0033867168240249157], [-0.012721857987344265, -0.00333996769040823], [-0.012542100623250008, -0.0032927743159234524], [-0.012360758148133755, -0.0032451653387397528], [-0.012177936732769012, -0.003197167767211795], [-0.011993743479251862, -0.003148810239508748], [-0.011808286421000957, -0.003100120462477207], [-0.011621668934822083, -0.0030511266086250544], [-0.011433998122811317, -0.003001855919137597], [-0.011245379224419594, -0.002952336333692074], [-0.011055915616452694, -0.0029025948606431484], [-0.010865708813071251, -0.0028526585083454847], [-0.010674863122403622, -0.0028025542851537466], [-0.010483480989933014, -0.0027523094322532415], [-0.010291661135852337, -0.002701949328184128], [-0.010099504142999649, -0.0026515009813010693], [-0.009907107800245285, -0.0026009895373135805], [-0.00971456803381443, -0.002550440840423107], [-0.00952198076993227, -0.002499879337847233], [-0.009329441003501415, -0.002449330175295472], [-0.009137040004134178, -0.002398817567154765], [-0.008944869041442871, -0.002348365494981408], [-0.008753017522394657, -0.00229799747467041], [-0.008561573922634125, -0.0022477360907942057], [-0.008370622992515564, -0.0021976041607558727], [-0.008180249482393265, -0.002147624036297202], [-0.007990533486008644, -0.0020978166721761227], [-0.007801559288054705, -0.002048203721642494], [-0.007613402791321278, -0.0019988054409623146], [-0.007426140364259481, -0.00194964196998626], [-0.007239846047013998, -0.0019007328664883971], [-0.007054594345390797, -0.0018520969897508621], [-0.006870452780276537, -0.001803753082640469], [-0.006687490735203028, -0.0017557187238708138], [-0.006505774799734354, -0.0017080112593248487], [-0.006325367838144302, -0.0016606476856395602], [-0.00614633085206151, -0.0016136437188833952], [-0.005968724377453327, -0.0015670153079554439], [-0.0057926056906580925, -0.0015207774704322219], [-0.0056180283427238464, -0.0014749444089829922], [-0.005445046350359917, -0.001429530093446374], [-0.0052737100049853325, -0.0013845477951690555], [-0.005104066338390112, -0.0013400098541751504], [-0.004936162382364273, -0.0012959289597347379], [-0.00477004237473011, -0.0012523159384727478], [-0.004605745431035757, -0.0012091819662600756], [-0.0044433134607970715, -0.0011665374040603638], [-0.004282782319933176, -0.001124391914345324], [-0.004124186467379332, -0.0010827545775100589], [-0.003967559430748224, -0.0010416341247037053], [-0.003812930779531598, -0.001001038239337504], [-0.003660329384729266, -0.0009609745466150343], [-0.0035097813233733177, -0.0009214500314556062], [-0.0033613108098506927, -0.0008824709220789373], [-0.003214939497411251, -0.0008440428646281362], [-0.0030706876423209906, -0.0008061713306233287], [-0.002928572939708829, -0.000768860918469727], [-0.002788611687719822, -0.0007321157609112561], [-0.002650817856192589, -0.0006959396414458752], [-0.0025152030866593122, -0.0006603357614949346], [-0.002381778322160244, -0.0006253066821955144], [-0.002250551013275981, -0.0005908545572310686], [-0.0021215288434177637, -0.0005569813656620681], [-0.0019947157707065344, -0.0005236881552264094], [-0.0018701150547713041, -0.0004909757408313453], [-0.0017477282090112567, -0.0004588445881381631], [-0.0016275550005957484, -0.0004272945807315409], [-0.0015095934504643083, -0.0003963252529501915], [-0.0013938404154032469, -0.00036593570257537067], [-0.001280290773138404, -0.0003361246199347079], [-0.0011689384700730443, -0.00030689043342135847], [-0.001059775473549962, -0.0002782310184556991], [-0.0009527928195893764, -0.00025014407583512366], [-0.000847980089019984, -0.00022262675338424742], [-0.0007453255821019411, -0.0001956760825123638], [-0.000644816318526864, -0.00016928859986364841], [-0.0005464382702484727, -0.00014346065290737897], [-0.0004501761868596077, -0.00011818822531495243], [-0.0003560137702152133, -9.346704609924927e-05], [-0.00026393370353616774, -6.929256051080301e-05], [-0.0001739177096169442, -4.5659962779609486e-05], [-8.594652899773791e-05, -2.2564207029063255e-05]]}, {"name": "CX_d8_u11", "samples": [[9.179192420560867e-05, 5.015833721699892e-06], [0.00018574621935840696, 1.0149827176064719e-05], [0.0002818843931891024, 1.540315497550182e-05], [0.00038022699300199747, 2.0776938981725834e-05], [0.00048079356201924384, 2.627225148899015e-05], [0.0005836026393808424, 3.189010021742433e-05], [0.0006886715418659151, 3.763143831747584e-05], [0.0007960167131386697, 4.34971516369842e-05], [0.0009056529961526394, 4.948806599713862e-05], [0.0010175942443311214, 5.560492354561575e-05], [0.0011318529723212123, 6.184843368828297e-05], [0.0012484402395784855, 6.821916758781299e-05], [0.0013673659414052963, 7.471768913092092e-05], [0.0014886383432894945, 8.13444348750636e-05], [0.0016122640809044242, 8.809977589407936e-05], [0.0017382482765242457, 9.498400322627276e-05], [0.0018665947718545794, 0.00010199730604654178], [0.0019973053131252527, 0.00010913979349425063], [0.0021303805988281965, 0.00011641148012131453], [0.0022658181842416525, 0.0001238122786162421], [0.0024036159738898277, 0.00013134202163200825], [0.0025437679141759872, 0.0001390004181303084], [0.002686267253011465, 0.00014678708976134658], [0.0028311051428318024, 0.00015470155631192029], [0.002978270873427391, 0.0001627431920496747], [0.0031277514062821865, 0.00017091134213842452], [0.003279531141743064, 0.00017920513346325606], [0.003433594014495611, 0.00018762366380542517], [0.0035899202339351177, 0.0001961658854270354], [0.003748488612473011, 0.000204830605071038], [0.003909275867044926, 0.0002136165858246386], [0.0040722559206187725, 0.0002225224016001448], [0.0042374012991786, 0.0002315465098945424], [0.0044046808034181595, 0.00024068725178949535], [0.004574062768369913, 0.00024994288105517626], [0.004745512269437313, 0.0002593114913906902], [0.004918992053717375, 0.00026879101642407477], [0.00509446207433939, 0.0002783793315757066], [0.005271881353110075, 0.0002880741376429796], [0.0054512047208845615, 0.00029787298990413547], [0.005632385611534119, 0.0003077733563259244], [0.005815375596284866, 0.0003177725593559444], [0.006000122521072626, 0.0003278678050264716], [0.00618657236918807, 0.000338056095642969], [0.006374669726938009, 0.00034833437530323863], [0.006564355455338955, 0.0003586994716897607], [0.00675556855276227, 0.00036914803786203265], [0.006948245223611593, 0.0003796765813603997], [0.007142320740967989, 0.0003902815515175462], [0.007337726186960936, 0.00040095916483551264], [0.00753439124673605, 0.00041170563781633973], [0.007732243277132511, 0.0004225169541314244], [0.007931207306683064, 0.0004333890392445028], [0.008131205104291439, 0.0004443176439963281], [0.008332159370183945, 0.0004552984901238233], [0.00853398721665144, 0.0004663270665332675], [0.008736603893339634, 0.00047739880392327905], [0.008939925581216812, 0.0004885089583694935], [0.009143863804638386, 0.0004996528732590377], [0.009348328225314617, 0.0005108255427330732], [0.009553228504955769, 0.0005220219609327614], [0.00975846964865923, 0.0005332370637916028], [0.009963955730199814, 0.0005444655544124544], [0.010169590823352337, 0.0005557021941058338], [0.010375275276601315, 0.0005669415695592761], [0.010580910369753838, 0.0005781781510449946], [0.010786392726004124, 0.0005894064088352025], [0.01099161896854639, 0.0006006206967867911], [0.011196482926607132, 0.00061181525234133], [0.011400883086025715, 0.0006229843711480498], [0.011604707688093185, 0.0006341220578178763], [0.011807849630713463, 0.0006452224333770573], [0.012010199949145317, 0.0006562796188518405], [0.012211647816002369, 0.0006672873860225081], [0.01241208240389824, 0.000678239855915308], [0.0126113910228014, 0.0006891308003105223], [0.012809463776648045, 0.0006999541074037552], [0.013006182387471199, 0.0007107035489752889], [0.013201436959207058, 0.0007213729550130665], [0.013395113870501518, 0.0007319561555050313], [0.013587097637355328, 0.0007424468058161438], [0.013777274638414383, 0.0007528387359343469], [0.013965529389679432, 0.0007631256594322622], [0.014151749201118946, 0.0007733013480901718], [0.014335819520056248, 0.000783359631896019], [0.014517628587782383, 0.0007932942826300859], [0.01469705905765295, 0.000803099072072655], [0.014874002896249294, 0.0008127678302116692], [0.015048346482217312, 0.0008222946198657155], [0.01521997805684805, 0.0008316730963997543], [0.015388787724077702, 0.0008408974390476942], [0.015554666519165039, 0.0008499617106281221], [0.015717508271336555, 0.0008588599157519639], [0.01587720215320587, 0.0008675861754454672], [0.01603364571928978, 0.0008761349017731845], [0.01618673838675022, 0.0008845003321766853], [0.01633637212216854, 0.000892676820512861], [0.01648245006799698, 0.0009006590116769075], [0.016624869778752327, 0.0009084413759410381], [0.016763538122177124, 0.0009160187910310924], [0.01689836196601391, 0.0009233858436346054], [0.01702924445271492, 0.0009305378189310431], [0.017156098037958145, 0.0009374695364385843], [0.01727883331477642, 0.000944176281336695], [0.01739736646413803, 0.000950653338804841], [0.01751161552965641, 0.0009568962850607932], [0.017621496692299843, 0.0009629006963223219], [0.017726939171552658, 0.0009686623234301805], [0.01782786287367344, 0.0009741771500557661], [0.017924197018146515, 0.0009794412180781364], [0.018015874549746513, 0.0009844506857916713], [0.018102828413248062, 0.0009892021771520376], [0.018184999004006386, 0.0009936923161149025], [0.01826232485473156, 0.000997917610220611], [0.018334753811359406, 0.0010018753819167614], [0.018402228131890297, 0.001005562487989664], [0.0184647049754858, 0.0010089764837175608], [0.01852213405072689, 0.0010121145751327276], [0.018574479967355728, 0.0010149748995900154], [0.018621699884533882, 0.0010175551287829876], [0.018663758412003517, 0.001019853400066495], [0.018700625747442245, 0.0010218680836260319], [0.018732279539108276, 0.0010235975496470928], [0.01875869184732437, 0.0010250408668071032], [0.018779844045639038, 0.0010261967545375228], [0.01879572495818138, 0.001027064397931099], [0.01880631595849991, 0.0010276433313265443], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018812276422977448, 0.0010279689449816942], [0.018805475905537605, 0.0010276640532538295], [0.018793391063809395, 0.001027122139930725], [0.018775274977087975, 0.0010263097938150167], [0.01875113882124424, 0.0010252275969833136], [0.018721003085374832, 0.0010238763643428683], [0.018684888258576393, 0.0010222569108009338], [0.018642820417881012, 0.0010203707497566938], [0.018594833090901375, 0.0010182190453633666], [0.01854095794260502, 0.0010158033110201359], [0.018481234088540077, 0.001013125409372151], [0.01841570995748043, 0.0010101873194798827], [0.018344424664974213, 0.0010069909039884806], [0.0182674378156662, 0.0010035388404503465], [0.018184799700975418, 0.0009998335735872388], [0.018096573650836945, 0.0009958775481209159], [0.018002819269895554, 0.0009916736744344234], [0.017903607338666916, 0.0009872250957414508], [0.017799004912376404, 0.0009825348388403654], [0.017689092084765434, 0.0009776063961908221], [0.017573941498994827, 0.0009724431438371539], [0.017453638836741447, 0.0009670489234849811], [0.01732826419174671, 0.0009614272858016193], [0.01719791255891323, 0.0009555823635309935], [0.01706266961991787, 0.0009495182312093675], [0.01692263036966324, 0.0009432390215806663], [0.016777893528342247, 0.0009367491584271193], [0.016628561541438103, 0.0009300532401539385], [0.016474733129143715, 0.0009231557487510145], [0.01631651632487774, 0.000916061457246542], [0.01615401916205883, 0.0009087751968763769], [0.015987349674105644, 0.0009013019152916968], [0.015816621482372284, 0.0008936466183513403], [0.015641950070858, 0.0008858145447447896], [0.015463451854884624, 0.000877810874953866], [0.015281244181096554, 0.0008696408476680517], [0.01509544812142849, 0.0008613099926151335], [0.014906185679137707, 0.0008528236066922545], [0.01471357885748148, 0.0008441873360425234], [0.014517753385007381, 0.0008354066521860659], [0.014318833127617836, 0.0008264873176813126], [0.01411694660782814, 0.000817434920463711], [0.013912220485508442, 0.0008082551648840308], [0.013704784214496613, 0.0007989539299160242], [0.0134947644546628, 0.0007895368617027998], [0.013282294385135174, 0.0007800098974257708], [0.013067500665783882, 0.0007703787996433675], [0.012850514613091946, 0.0007606493309140205], [0.01263146847486496, 0.0007508274866268039], [0.012410488910973072, 0.0007409189711324871], [0.012187709100544453, 0.0007309297798201442], [0.011963259428739548, 0.0007208656170405447], [0.01173726562410593, 0.000710732361767441], [0.01150986086577177, 0.0007005357183516026], [0.011281170882284641, 0.0006902815075591207], [0.011051325127482414, 0.0006799754337407649], [0.010820451192557812, 0.0006696232594549656], [0.010588672012090683, 0.0006592305144295096], [0.010356113314628601, 0.0006488028448075056], [0.010122901760041714, 0.0006383458385244012], [0.009889156557619572, 0.0006278649088926613], [0.009655000641942024, 0.0006173655856400728], [0.009420552290976048, 0.0006068531656637788], [0.009185929782688618, 0.0005963328876532614], [0.008951248601078987, 0.0005858100485056639], [0.008716625161468983, 0.0005752897704951465], [0.008482172153890133, 0.0005647771176882088], [0.008247999474406242, 0.0005542770377360284], [0.008014215156435966, 0.0005437943618744612], [0.007780927233397961, 0.0005333339795470238], [0.007548240479081869, 0.0005229005473665893], [0.0073162573389709, 0.0005124986637383699], [0.007085076998919249, 0.0005021327524445951], [0.006854798644781113, 0.0004918072954751551], [0.006625516340136528, 0.00048152648378163576], [0.006397324614226818, 0.0004712945665232837], [0.006170313339680433, 0.00046111561823636293], [0.005944570992141962, 0.0004509935388341546], [0.005720182321965694, 0.000440932170022279], [0.005497231148183346, 0.00043093529529869556], [0.005275797564536333, 0.00042100640712305903], [0.005055958870798349, 0.00041114905616268516], [0.004837790969759226, 0.0004013666184619069], [0.004621366038918495, 0.00039166235364973545], [0.004406752996146679, 0.0003820392885245383], [0.004194018896669149, 0.0003725005080923438], [0.00398322893306613, 0.00036304889363236725], [0.0037744431756436825, 0.0003536871518008411], [0.003567721229046583, 0.0003444179310463369], [0.0033631192054599524, 0.00033524379250593483], [0.0031606899574398994, 0.000326167035382241], [0.0029604840092360973, 0.0003171900170855224], [0.0027625493239611387, 0.00030831480398774147], [0.0025669310707598925, 0.00029954349156469107], [0.0023736716248095036, 0.00029087791335769], [0.002182810800150037, 0.000282319902908057], [0.0019943853840231895, 0.00027387109003029764], [0.0018084305338561535, 0.00026553304633125663], [0.0016249775653705, 0.00025730719789862633], [0.0014440559316426516, 0.0002491948544047773], [0.0012656927574425936, 0.00024119722365867347], [0.0010899121407419443, 0.00023331538250204176], [0.0009167359094135463, 0.00022555033501703292], [0.0007461836212314665, 0.00021790293976664543], [0.0005782723892480135, 0.00021037395345047116], [0.00041301685268990695, 0.00020296406000852585], [0.0002504295262042433, 0.00019567381241358817], [9.052058157976717e-05, 0.00018850364722311497], [-6.670198490610346e-05, 0.0001814539427869022], [-0.00022123231610748917, 0.00017452494648750871], [-0.0003730666358023882, 0.0001677168474998325], [-0.000522203219588846, 0.0001610297040315345], [-0.0006686424603685737, 0.00015446351608261466], [-0.0008123864536173642, 0.00014801816723775119], [-0.0009534394484944642, 0.00014169349742587656], [-0.001091807265765965, 0.0001354892156086862], [-0.0012274975888431072, 0.00012940498709212989], [-0.0013605200219899416, 0.0001234404044225812], [-0.0014908856246620417, 0.00011759492917917669], [-0.0016186069697141647, 0.00011186802294105291], [-0.0017436984926462173, 0.00010625904542393982], [-0.0018661759095266461, 0.00010076727630803362], [-0.0019860563334077597, 9.539195889374241e-05], [-0.0021033580414950848, 9.013227099785581e-05], [-0.002218101406469941, 8.498728857375681e-05], [-0.0023303069174289703, 7.995609485078603e-05], [-0.002439997624605894, 7.503767847083509e-05], [-0.002547196578234434, 7.023098442004994e-05], [-0.002756659872829914, 6.083885091356933e-05], [-0.0028638585936278105, 5.603216413874179e-05], [-0.0029735493008047342, 5.111374775879085e-05], [-0.0030857548117637634, 4.608255403582007e-05], [-0.00320049817673862, 4.0937564335763454e-05], [-0.0033178001176565886, 3.5677861887961626e-05], [-0.0034376804251223803, 3.030255902558565e-05], [-0.0035601577255874872, 2.481078263372183e-05], [-0.003685249015688896, 1.9201819668523967e-05], [-0.003812970593571663, 1.3474898878484964e-05], [-0.003943335730582476, 7.629452738910913e-06], [-0.004076358396559954, 1.6648409655317664e-06], [-0.004212049301713705, -4.419387551024556e-06], [-0.004350416827946901, -1.0623654816299677e-05], [-0.004491469822824001, -1.6948324628174305e-05], [-0.004635213408619165, -2.339367347303778e-05], [-0.004781653173267841, -2.9959861421957612e-05], [-0.004930789582431316, -3.664700489025563e-05], [-0.0050826240330934525, -4.345511842984706e-05], [-0.005237154196947813, -5.038410017732531e-05], [-0.0053943763487041, -5.7433804613538086e-05], [-0.005554285366088152, -6.460396980401129e-05], [-0.005716873332858086, -7.189421739894897e-05], [-0.005882128607481718, -7.930411084089428e-05], [-0.006050040014088154, -8.683309715706855e-05], [-0.006220592185854912, -9.448050695937127e-05], [-0.006393768358975649, -0.0001022455544443801], [-0.006569548975676298, -0.00011012736649718136], [-0.006747912149876356, -0.00011812501179520041], [-0.00692883413285017, -0.0001262373843928799], [-0.007112286984920502, -0.0001344632328255102], [-0.0072982413694262505, -0.00014280124742072076], [-0.007486667018383741, -0.0001512500602984801], [-0.007677528075873852, -0.00015980809985194355], [-0.007870787754654884, -0.00016847367805894464], [-0.008066405542194843, -0.00017724499048199505], [-0.008264339528977871, -0.00018612017447594553], [-0.00846454594284296, -0.0001950972218764946], [-0.008666975423693657, -0.00020417394989635795], [-0.008871577680110931, -0.00021334811754059047], [-0.009078298695385456, -0.00022261728008743376], [-0.009287084452807903, -0.00023197902191895992], [-0.009497874416410923, -0.00024143066548276693], [-0.00971060898154974, -0.0002509694895707071], [-0.009925221092998981, -0.00026059249648824334], [-0.010141647420823574, -0.0002702968195080757], [-0.010359814390540123, -0.00028007919900119305], [-0.010579653084278107, -0.0002899365499615669], [-0.010801087133586407, -0.00029986543813720345], [-0.011024038307368755, -0.00030986237106844783], [-0.011248426511883736, -0.0003199237398803234], [-0.011474168859422207, -0.00033004581928253174], [-0.011701180599629879, -0.0003402247675694525], [-0.011929372325539589, -0.00035045668482780457], [-0.012158654630184174, -0.000360737438313663], [-0.012388932518661022, -0.000371062895283103], [-0.012620112858712673, -0.00038142880657687783], [-0.012852096930146217, -0.0003918307484127581], [-0.013084783218801022, -0.0004022641805931926], [-0.013318071141839027, -0.00041272456292063], [-0.013551854528486729, -0.0004232071805745363], [-0.01378602720797062, -0.0004337072605267167], [-0.014020481146872044, -0.0004442199715413153], [-0.014255104586482048, -0.0004547402495518327], [-0.014489784836769104, -0.00046526308869943023], [-0.014724407345056534, -0.00047578330850228667], [-0.01495885569602251, -0.0004862957284785807], [-0.015193012543022633, -0.0004967951099388301], [-0.0154267568141222, -0.0005072759813629091], [-0.015659969300031662, -0.0005177330458536744], [-0.015892527997493744, -0.0005281607154756784], [-0.016124306246638298, -0.0005385534022934735], [-0.016355181112885475, -0.0005489056347869337], [-0.016585025936365128, -0.0005592116503976285], [-0.016813715919852257, -0.0005694658611901104], [-0.017041120678186417, -0.0005796625046059489], [-0.01726711355149746, -0.0005897958180867136], [-0.01749156415462494, -0.000599859980866313], [-0.01771434396505356, -0.0006098491721786559], [-0.01793532446026802, -0.0006197576876729727], [-0.01815437152981758, -0.0006295795319601893], [-0.018371356651186943, -0.0006393089424818754], [-0.01858614943921566, -0.0006489400402642787], [-0.018798619508743286, -0.0006584670627489686], [-0.019008640199899673, -0.000667884130962193], [-0.019216075539588928, -0.0006771853659301996], [-0.019420800730586052, -0.0006863650633022189], [-0.019622689113020897, -0.0006954174605198205], [-0.019821608439087868, -0.0007043368532322347], [-0.020017435774207115, -0.0007131175370886922], [-0.020210040733218193, -0.0007217537495307624], [-0.02039930410683155, -0.0007302401354536414], [-0.02058509923517704, -0.0007385711069218814], [-0.02076730690896511, -0.0007467410760000348], [-0.020945806056261063, -0.0007547447457909584], [-0.021120477467775345, -0.00076257687760517], [-0.021291205659508705, -0.0007702321163378656], [-0.02145787514746189, -0.0007777054561302066], [-0.0216203723102808, -0.0007849916582927108], [-0.021778589114546776, -0.0007920859497971833], [-0.021932417526841164, -0.0007989834412001073], [-0.022081749513745308, -0.000805679417680949], [-0.0222264863550663, -0.0008121692226268351], [-0.022366521880030632, -0.0008184483158402145], [-0.022501766681671143, -0.0008245125063695014], [-0.022632120177149773, -0.0008303574868477881], [-0.02275749295949936, -0.000835979066323489], [-0.022877797484397888, -0.0008413734030909836], [-0.022992948070168495, -0.0008465366554446518], [-0.023102860897779465, -0.0008514650980941951], [-0.023207463324069977, -0.0008561552385799587], [-0.023306673392653465, -0.0008606038172729313], [-0.023400429636240005, -0.0008648076909594238], [-0.02348865568637848, -0.0008687637164257467], [-0.02357129380106926, -0.0008724690997041762], [-0.023648280650377274, -0.0008759211632423103], [-0.023719564080238342, -0.0008791173459030688], [-0.023785090073943138, -0.0008820555522106588], [-0.02384481392800808, -0.0008847334538586438], [-0.023898689076304436, -0.0008871491882018745], [-0.023946676403284073, -0.0008893008925952017], [-0.023988742381334305, -0.0008911871700547636], [-0.024024859070777893, -0.0008928065071813762], [-0.0240549948066473, -0.0008941577398218215], [-0.024079129099845886, -0.0008952399366535246], [-0.024097247049212456, -0.000896052282769233], [-0.024109330028295517, -0.0008965941960923374], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.02411613240838051, -0.0008968990878202021], [-0.024108491837978363, -0.0008966149180196226], [-0.02409491129219532, -0.0008961099083535373], [-0.024074558168649673, -0.0008953529177233577], [-0.02404744178056717, -0.0008943444117903709], [-0.0240135807543993, -0.000893085147254169], [-0.023973004892468452, -0.0008915759972296655], [-0.023925740271806717, -0.0008898183587007225], [-0.02387182228267193, -0.0008878129883669317], [-0.02381129190325737, -0.0008855618652887642], [-0.023744190111756325, -0.0008830662118270993], [-0.023670567199587822, -0.0008803281234577298], [-0.02359047904610634, -0.0008773495210334659], [-0.023503979668021202, -0.0008741325582377613], [-0.023411130532622337, -0.0008706793887540698], [-0.023312000557780266, -0.0008669928065501153], [-0.023206666111946106, -0.0008630752563476562], [-0.02309519611299038, -0.0008589295903220773], [-0.022977670654654503, -0.0008545586606487632], [-0.02285417541861534, -0.000849965843372047], [-0.022724799811840057, -0.0008451542817056179], [-0.022589633241295815, -0.0008401272352784872], [-0.022448768839240074, -0.0008348884293809533], [-0.022302310913801193, -0.0008294415893033147], [-0.02215035818517208, -0.000823790265712887], [-0.021993018686771393, -0.0008179387077689171], [-0.021830398589372635, -0.000811890815384686], [-0.021662617102265358, -0.0008056508377194405], [-0.021489784121513367, -0.0007992229657247663], [-0.021312018856406212, -0.0007926117978058755], [-0.021129442378878593, -0.0007858216413296759], [-0.02094218134880066, -0.0007788572111167014], [-0.020750362426042557, -0.0007717232219874859], [-0.020554108545184135, -0.0007644244469702244], [-0.02035355754196644, -0.0007569657755084336], [-0.020148836076259613, -0.0007493520388379693], [-0.01994008757174015, -0.0007415884756483138], [-0.019727438688278198, -0.0007336798589676619], [-0.019511036574840546, -0.0007256317767314613], [-0.019291017204523087, -0.000717449001967907], [-0.019067518413066864, -0.0007091368897818029], [-0.018840687349438667, -0.000700700911693275], [-0.018610667437314987, -0.0006921462481841445], [-0.018377602100372314, -0.0006834783125668764], [-0.01814163476228714, -0.0006747025763615966], [-0.017902914434671402, -0.0006658243364654481], [-0.017661580815911293, -0.0006568489479832351], [-0.0174177885055542, -0.000647782115265727], [-0.017171677201986313, -0.0006386290770024061], [-0.01692339777946472, -0.0006293952465057373], [-0.016673091799020767, -0.0006200862117111683], [-0.016420908272266388, -0.0006107073277235031], [-0.016166996210813522, -0.0006012640660628676], [-0.015911495313048363, -0.000591761723626405], [-0.0156545490026474, -0.000582205830141902], [-0.015396306291222572, -0.000572601449675858], [-0.015136906877160072, -0.0005629541701637208], [-0.014876491390168667, -0.0005532691720873117], [-0.014615201391279697, -0.0005435515195131302], [-0.014353174716234207, -0.0005338065675459802], [-0.014090551063418388, -0.0005240393220447004], [-0.013827462680637836, -0.0005142549052834511], [-0.013564049266278744, -0.00050445826491341], [-0.013300438411533833, -0.0004946543485857546], [-0.013036763295531273, -0.00048484813305549324], [-0.012773151509463787, -0.00047504418762400746], [-0.012509731575846672, -0.0004652473726309836], [-0.012246625497937202, -0.0004554622573778033], [-0.011983958072960377, -0.0004456933820620179], [-0.011721847578883171, -0.0004359452868811786], [-0.011460412293672562, -0.0004262223083060235], [-0.011199766770005226, -0.00041652866639196873], [-0.010940022766590118, -0.00040686861029826105], [-0.010681293904781342, -0.0003972462145611644], [-0.010423684492707253, -0.0003876655246131122], [-0.010167298838496208, -0.0003781303239520639], [-0.009912240318953991, -0.00036864448338747025], [-0.00965860579162836, -0.0003592116408981383], [-0.009406494908034801, -0.0003498353762552142], [-0.009155997075140476, -0.00034051918191835284], [-0.008907205425202847, -0.0003312664048280567], [-0.008660206571221352, -0.0003220803046133369], [-0.008415083400905132, -0.0003129639953840524], [-0.008171917870640755, -0.0003039204457309097], [-0.007930789142847061, -0.00029495268245227635], [-0.007691771723330021, -0.0002860634122043848], [-0.007454938255250454, -0.00027725539985112846], [-0.0072203571908175945, -0.00026853111921809614], [-0.00698809465393424, -0.0002598930732347071], [-0.006758213508874178, -0.00025134359020739794], [-0.00653077382594347, -0.000242884925683029], [-0.006305832881480455, -0.00023451916058547795], [-0.006083442363888025, -0.0002262483030790463], [-0.005863655358552933, -0.00021807423036079854], [-0.005646518897265196, -0.00020999876142013818], [-0.005432076286524534, -0.00020202345331199467], [-0.005220371298491955, -0.00019414996495470405], [-0.005011441186070442, -0.000186379678780213], [-0.004805322270840406, -0.00017871394811663777], [-0.004602047614753246, -0.0001711539807729423], [-0.004401647485792637, -0.00016370094090234488], [-0.004204148892313242, -0.0001563558034831658], [-0.004009576980024576, -0.00014911949983797967], [-0.0038179524708539248, -0.0001419928448740393], [-0.0036292956210672855, -0.0001349765225313604], [-0.0034436224959790707, -0.00012807120219804347], [-0.003260947298258543, -0.00012127734953537583], [-0.0030812814366072416, -0.00011459542292868719], [-0.002904633991420269, -0.00010802575707202777], [-0.00273101101629436, -0.00010156858479604125], [-0.0025604176335036755, -9.522405889583752e-05], [-0.002392854541540146, -8.899226668290794e-05], [-0.0022283229045569897, -8.287318632937968e-05], [-0.0020668189972639084, -7.686672324780375e-05], [-0.00190833886153996, -7.097272464307025e-05], [-0.0017528756288811564, -6.519090675283223e-05], [-0.0016004204517230392, -5.952097490080632e-05], [-0.0014509629691019654, -5.396252527134493e-05], [-0.001304490608163178, -4.8515095841139555e-05], [-0.001160989049822092, -4.3178151827305555e-05], [-0.0010204423451796174, -3.795110387727618e-05], [-0.0008828327991068363, -3.2833289878908545e-05], [-0.0007481411448679864, -2.782399496936705e-05], [-0.0006163465441204607, -2.292244062118698e-05], [-0.000487426616018638, -1.8127802832168527e-05], [-0.0003613576991483569, -1.3439193935482763e-05], [-0.00023811474966350943, -8.855686246533878e-06], [-0.00011767136311391369, -4.376296146801906e-06]]}, {"name": "CX_d8_u22", "samples": [[9.4236085715238e-05, 4.109816927666543e-06], [0.0001906921243062243, 8.316449566336814e-06], [0.00028939018375240266, 1.2620861525647342e-05], [0.0003903513425029814, 1.702397275948897e-05], [0.0004935957840643823, 2.1526659111259505e-05], [0.0005991423386149108, 2.612974822113756e-05], [0.0007070089923217893, 3.083402043557726e-05], [0.0008172123925760388, 3.564020153135061e-05], [0.0009297679644078016, 4.054896635352634e-05], [0.0010446897940710187, 4.556093335850164e-05], [0.0011619910364970565, 5.067665915703401e-05], [0.0012816827511414886, 5.5896649428177625e-05], [0.0014037750661373138, 6.122132617747411e-05], [0.0015282765962183475, 6.665108230663463e-05], [0.0016551940934732556, 7.218619430204853e-05], [0.0017845329130068421, 7.782690954627469e-05], [0.0019162967801094055, 8.357339538633823e-05], [0.0020504880230873823, 8.94257245818153e-05], [0.002187106292694807, 9.538391896057874e-05], [0.002326150657609105, 0.00010144789848709479], [0.002467617392539978, 0.00010761753947008401], [0.0026115011423826218, 0.00011389258725102991], [0.0027577951550483704, 0.0001202727435156703], [0.0029064896516501904, 0.0001267576008103788], [0.0030575739219784737, 0.00013334666437003762], [0.0032110344618558884, 0.00014003939577378333], [0.0033668559044599533, 0.0001468350674258545], [0.003525021020323038, 0.0001537329371785745], [0.0036855097860097885, 0.00016073216102086008], [0.0038483005482703447, 0.00016783177852630615], [0.004013368859887123, 0.00017503072740510106], [0.004180688410997391, 0.000182327872607857], [0.0043502310290932655, 0.00018972193356603384], [0.004521965514868498, 0.00019721160060726106], [0.004695857409387827, 0.0002047953603323549], [0.004871871788054705, 0.00021247169934213161], [0.005049970466643572, 0.0002202389296144247], [0.005230113863945007, 0.00022809530491940677], [0.005412256810814142, 0.00023603890440426767], [0.005596354603767395, 0.0002440677781123668], [0.005782360211014748, 0.00025217983056791127], [0.005970222409814596, 0.00026037287898361683], [0.006159888580441475, 0.00026864459505304694], [0.0063513037748634815, 0.0002769925631582737], [0.006544408854097128, 0.0002854142803698778], [0.006739146076142788, 0.00029390709823928773], [0.0069354502484202385, 0.000302468310110271], [0.007133258040994406, 0.00031109509291127324], [0.007332500535994768, 0.0003197844489477575], [0.0075331092812120914, 0.00032853338052518666], [0.007735010702162981, 0.0003373386862222105], [0.00793813169002533, 0.00034619716461747885], [0.008142393082380295, 0.0003551053814589977], [0.008347716182470322, 0.0003640599607024342], [0.008554020896553993, 0.00037305732257664204], [0.00876122247427702, 0.0003820937708951533], [0.008969235233962536, 0.0003911656094714999], [0.009177970699965954, 0.0004002689674962312], [0.00938733946532011, 0.00040939991595223546], [0.009597248397767544, 0.0004185544385109097], [0.009807603433728218, 0.00042772843153215945], [0.010018309578299522, 0.000436917704064399], [0.010229268111288548, 0.00044611800694838166], [0.01044037751853466, 0.0004553249746095389], [0.010651540011167526, 0.0004645341250579804], [0.010862650349736214, 0.0004737410636153072], [0.011073603294789791, 0.00048294110456481576], [0.011284294538199902, 0.0004921297659166157], [0.011494615115225315, 0.0005013022455386817], [0.011704456061124802, 0.0005104538286104798], [0.011913708411157131, 0.0005195796838961542], [0.012122259475290775, 0.0005286750383675098], [0.01232999749481678, 0.0005377348861657083], [0.012536809779703617, 0.0005467543960548937], [0.012742580845952034, 0.0005557284457609057], [0.012947197072207928, 0.0005646521458402276], [0.013150542974472046, 0.0005735204322263598], [0.013352500274777412, 0.0005823281826451421], [0.01355295442044735, 0.0005910703912377357], [0.013751788064837456, 0.0005997419357299805], [0.01394888386130333, 0.0006083376356400549], [0.01414412446320057, 0.0006168524269014597], [0.014337392523884773, 0.0006252812454476953], [0.01452857069671154, 0.0006336189107969403], [0.014717542566359043, 0.0006418603588826954], [0.014904191717505455, 0.0006500004674308002], [0.015088400803506374, 0.0006580341141670942], [0.015270055271685123, 0.0006659564678557217], [0.015449040569365025, 0.0006737623480148613], [0.0156252421438694, 0.0006814468652009964], [0.015798548236489296, 0.0006890050135552883], [0.015968842431902885, 0.0006964319618418813], [0.01613602042198181, 0.0007037228788249195], [0.01629996858537197, 0.0007108729332685471], [0.01646057888865471, 0.0007178775267675519], [0.016617747023701668, 0.0007247318280860782], [0.016771363094449043, 0.0007314314134418964], [0.016921330243349075, 0.0007379717426374555], [0.017067542299628258, 0.0007443483918905258], [0.01720990613102913, 0.0007505570538341999], [0.017348317429423332, 0.0007565934211015701], [0.017482684925198555, 0.0007624534773640335], [0.017612915486097336, 0.000768133089877665], [0.01773892156779766, 0.0007736284751445055], [0.017860611900687218, 0.0007789356168359518], [0.017977898940443993, 0.0007840507896617055], [0.018090708181262016, 0.0007889706175774336], [0.018198957666754723, 0.0007936914917081594], [0.018302565440535545, 0.0007982101524248719], [0.01840146817266941, 0.0008025233983062208], [0.0184955857694149, 0.0008066280279308558], [0.018584856763482094, 0.0008105213055387139], [0.018669214099645615, 0.0008142002625390887], [0.01874859817326069, 0.0008176624542102218], [0.018822956830263138, 0.000820905261207372], [0.018892228603363037, 0.0008239264134317636], [0.018956366926431656, 0.0008267236407846212], [0.019015328958630562, 0.0008292950224131346], [0.019069064408540726, 0.0008316385792568326], [0.01911754161119461, 0.0008337526815012097], [0.019160721451044083, 0.0008356358739547431], [0.019198572263121605, 0.0008372866432182491], [0.019231067970395088, 0.0008387038251385093], [0.019258182495832443, 0.0008398863719776273], [0.019279899075627327, 0.0008408334688283503], [0.019296202808618546, 0.0008415444754064083], [0.019307075068354607, 0.0008420186350122094], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.01931319385766983, 0.0008422855171374977], [0.019305601716041565, 0.0008420951780863106], [0.019292108714580536, 0.0008417568751610816], [0.019271884113550186, 0.0008412497700192034], [0.019244937226176262, 0.0008405741536989808], [0.019211294129490852, 0.0008397306082770228], [0.01917097717523575, 0.0008387197158299387], [0.01912401244044304, 0.0008375421166419983], [0.019070439040660858, 0.0008361989166587591], [0.01901029236614704, 0.000834690872579813], [0.01894361712038517, 0.0008330191485583782], [0.018870463594794273, 0.000831184908747673], [0.01879088208079338, 0.0008291895501315594], [0.018704932183027267, 0.000827034586109221], [0.018612675368785858, 0.0008247214136645198], [0.018514178693294525, 0.0008222517790272832], [0.01840951107442379, 0.0008196274284273386], [0.01829875074326992, 0.0008168503409251571], [0.018181974068284035, 0.0008139223791658878], [0.0180592630058527, 0.0008108456386253238], [0.017930710688233376, 0.0008076224476099014], [0.017796402797102928, 0.0008042549015954137], [0.017656434327363968, 0.0008007455035112798], [0.017510907724499702, 0.0007970966398715973], [0.01735992170870304, 0.000793311046436429], [0.01720358431339264, 0.0007893911097198725], [0.017041999846696854, 0.0007853397401049733], [0.016875283792614937, 0.0007811596151441336], [0.016703549772500992, 0.0007768537616357207], [0.01652691513299942, 0.0007724249735474586], [0.01634550280869007, 0.0007678763940930367], [0.016159432008862495, 0.0007632110500708222], [0.01596883125603199, 0.0007584320846945047], [0.015773827210068703, 0.0007535427575930953], [0.015574551187455654, 0.0007485462119802833], [0.015371134504675865, 0.0007434459403157234], [0.015163710340857506, 0.0007382452022284269], [0.014952416531741619, 0.0007329474319703877], [0.014737389981746674, 0.0007275560637935996], [0.014518768526613712, 0.0007220745319500566], [0.014296693727374077, 0.0007165063871070743], [0.014071307145059109, 0.0007108552963472903], [0.013842749409377575, 0.0007051246357150376], [0.013611165806651115, 0.0006993181305006146], [0.013376699760556221, 0.0006934393895789981], [0.013139496557414532, 0.0006874919636175036], [0.012899700552225113, 0.0006814795196987689], [0.012657457031309605, 0.0006754057249054313], [0.012412911280989647, 0.0006692742463201284], [0.012166209518909454, 0.0006630886346101761], [0.011917497031390667, 0.0006568526732735336], [0.0116669200360775, 0.0006505699129775167], [0.011414620094001293, 0.0006442440208047628], [0.011160744354128838, 0.0006378785474225879], [0.010905434377491474, 0.0006314771017059684], [0.010648833587765694, 0.0006250433507375419], [0.010391083545982838, 0.0006185807869769633], [0.010132324881851673, 0.0006120929028838873], [0.009872695431113243, 0.0006055831909179688], [0.00961233675479889, 0.0005990552017465234], [0.009351382963359356, 0.0005925123114138842], [0.009089970029890537, 0.0005859578959643841], [0.008828230202198029, 0.0005793952150270343], [0.00856629665941, 0.0005728277610614896], [0.008304298855364323, 0.0005662586772814393], [0.00804236438125372, 0.0005596911651082337], [0.007780618965625763, 0.000553128425963223], [0.007519186940044165, 0.0005465735448524356], [0.007258189842104912, 0.0005400294903665781], [0.006997746415436268, 0.0005334994057193398], [0.006737973541021347, 0.0005269860848784447], [0.006478986237198114, 0.0005204924964345992], [0.0062208957970142365, 0.0005140213761478662], [0.005963812116533518, 0.0005075754597783089], [0.005707840900868177, 0.00050115748308599], [0.005453086458146572, 0.0004947700072079897], [0.005199649836868048, 0.0004884155932813883], [0.0049476297572255135, 0.0004820966860279441], [0.00469712121412158, 0.00047581567196175456], [0.004448217805474997, 0.00046957487938925624], [0.004201008006930351, 0.00046337657840922475], [0.003955579362809658, 0.0004572229227051139], [0.0037120154593139887, 0.000451116036856547], [0.0034703973215073347, 0.0004450579290278256], [0.003230802249163389, 0.0004390505491755903], [0.0029933054465800524, 0.0004330957599449903], [0.0027579781599342823, 0.00042719539487734437], [0.002524889074265957, 0.00042135114199481905], [0.0022941038478165865, 0.0004155646311119199], [0.0020656853448599577, 0.00040983749204315245], [0.0018396921223029494, 0.00040417115087620914], [0.0016161814564839005, 0.0003985670336987823], [0.0013952063163742423, 0.0003930265083909035], [0.0011768172262236476, 0.0003875508264172822], [0.0009610615088604391, 0.0003821411810349673], [0.0007479834603145719, 0.0003767986490856856], [0.0005376246408559382, 0.00037152430741116405], [0.0003300234966445714, 0.0003663191164378077], [0.00012521578173618764, 0.0003611839492805302], [-7.67658420954831e-05, 0.0003561196499504149], [-0.0002758913906291127, 0.0003511269751470536], [-0.0004721337172668427, 0.00034620656515471637], [-0.0006654683384113014, 0.00034135906025767326], [-0.0008558736299164593, 0.00033658501342870295], [-0.0010433306451886892, 0.00033188489032909274], [-0.0012278227368369699, 0.0003272591275162995], [-0.001409335876815021, 0.00032270801602862775], [-0.0015878590056672692, 0.000318231905112043], [-0.00176338292658329, 0.00031383096938952804], [-0.001935901353135705, 0.000309505412587896], [-0.0021054097451269627, 0.00030525532201863825], [-0.0022719064727425575, 0.0003010807267855853], [-0.002435392001643777, 0.00029698165599256754], [-0.0025958684273064137, 0.0002929579932242632], [-0.0027533406391739845, 0.0002890097093768418], [-0.002907815156504512, 0.0002851365425158292], [-0.0030593005940318108, 0.0002813383471220732], [-0.003207807196304202, 0.0002776148321572691], [-0.0033533480018377304, 0.000273965677479282], [-0.0034959367476403713, 0.0002703905338421464], [-0.003635589499026537, 0.00026688899379223585], [-0.0037723237182945013, 0.000263460649875924], [-0.0039061587303876877, 0.00026010500732809305], [-0.004037114325910807, 0.0002568215422797948], [-0.004165214486420155, 0.00025360967265442014], [-0.004290481563657522, 0.00025046884547919035], [-0.004412940703332424, 0.0002473984204698354], [-0.00453261798247695, 0.0002443977282382548], [-0.00476646376773715, 0.00023853449965827167], [-0.004886140581220388, 0.0002355338365305215], [-0.005008600186556578, 0.00023246341152116656], [-0.005133866798132658, 0.00022932258434593678], [-0.005261966958642006, 0.00022611072927247733], [-0.005392923019826412, 0.00022282724967226386], [-0.005526758264750242, 0.0002194715925725177], [-0.00566349271684885, 0.00021604324865620583], [-0.005803145468235016, 0.00021254172315821052], [-0.0059457337483763695, 0.0002089665795210749], [-0.006091274321079254, 0.00020531743939500302], [-0.006239781621843576, 0.00020159390987828374], [-0.006391266826540232, 0.0001977957144845277], [-0.006545741111040115, 0.00019392256217543036], [-0.006703213322907686, 0.0001899742492241785], [-0.006863689981400967, 0.0001859506155597046], [-0.007027175277471542, 0.0001818515156628564], [-0.007193672005087137, 0.0001776769495336339], [-0.0073631806299090385, 0.00017342684441246092], [-0.00753569882363081, 0.00016910127305891365], [-0.0077112228609621525, 0.0001647003518883139], [-0.007889746688306332, 0.00016022422641981393], [-0.008071258664131165, 0.00015567314403597265], [-0.008255750872194767, 0.00015104736667126417], [-0.008443208411335945, 0.00014634722901973873], [-0.008633613586425781, 0.00014157319674268365], [-0.008826947771012783, 0.00013672569184564054], [-0.009023190476000309, 0.00013180529640521854], [-0.00922231562435627, 0.00012681262160185724], [-0.009424298070371151, 0.00012174829316791147], [-0.009629106149077415, 0.00011661314056254923], [-0.009836707264184952, 0.00011140794958919287], [-0.010047066025435925, 0.0001061336079146713], [-0.0102601433172822, 0.00010079110506922007], [-0.01047589909285307, 9.538143058307469e-05], [-0.010694287717342377, 8.990574860945344e-05], [-0.010915263555943966, 8.436522330157459e-05], [-0.011138773523271084, 7.876113522797823e-05], [-0.011364767327904701, 7.309476495720446e-05], [-0.011593186296522617, 6.736759678460658e-05], [-0.011823970824480057, 6.158111500553787e-05], [-0.012057059444487095, 5.573686212301254e-05], [-0.012292386963963509, 4.9836497055366635e-05], [-0.012529884465038776, 4.3881707824766636e-05], [-0.012769479304552078, 3.787432797253132e-05], [-0.013011096976697445, 3.1816220143809915e-05], [-0.013254661113023758, 2.5709334295243025e-05], [-0.013500089757144451, 1.9555678591132164e-05], [-0.01374729909002781, 1.3357377611100674e-05], [-0.013996203429996967, 7.116585038602352e-06], [-0.014246710576117039, 8.356000762432814e-07], [-0.01449873112142086, -5.48333628103137e-06], [-0.014752168208360672, -1.1837779311463237e-05], [-0.01500692218542099, -1.8225255189463496e-05], [-0.015262894332408905, -2.4643231881782413e-05], [-0.015519977547228336, -3.1089119147509336e-05], [-0.0157780684530735, -3.756023943424225e-05], [-0.01603705808520317, -4.405388608574867e-05], [-0.016296830028295517, -5.056717782281339e-05], [-0.016557272523641586, -5.7097262470051646e-05], [-0.016818270087242126, -6.364125874824822e-05], [-0.017079701647162437, -7.019616896286607e-05], [-0.01734144799411297, -7.675893721170723e-05], [-0.017603380605578423, -8.332642028108239e-05], [-0.0178653784096241, -8.989550406113267e-05], [-0.018127312883734703, -9.646298713050783e-05], [-0.018389051780104637, -0.00010302558075636625], [-0.018650466576218605, -0.00010958005441352725], [-0.018911419436335564, -0.00011612294474616647], [-0.019171779975295067, -0.00012265099212527275], [-0.019431406632065773, -0.00012916064588353038], [-0.019690165296196938, -0.0001356485008727759], [-0.019947916269302368, -0.00014211112284101546], [-0.020204517990350723, -0.00014854487380944192], [-0.020459825173020363, -0.0001549462613184005], [-0.020713703706860542, -0.00016131173470057547], [-0.020966002717614174, -0.0001676376850809902], [-0.021216580644249916, -0.00017392044537700713], [-0.021465294063091278, -0.00018015640671364963], [-0.02171199396252632, -0.00018634196021594107], [-0.021956538781523705, -0.0001924734388012439], [-0.022198783233761787, -0.0001985472918022424], [-0.02243858017027378, -0.00020455967751331627], [-0.022675784304738045, -0.00021050710347481072], [-0.02291024848818779, -0.0002163859026040882], [-0.023141833022236824, -0.00022219240781851113], [-0.02337038889527321, -0.00022792306845076382], [-0.02359577640891075, -0.00023357421741820872], [-0.02381785213947296, -0.0002391423040535301], [-0.024036472663283348, -0.00024462377768941224], [-0.024251500144600868, -0.00025001514586620033], [-0.02446279302239418, -0.0002553129743319005], [-0.02467021718621254, -0.00026051371241919696], [-0.024873634800314903, -0.0002656139840837568], [-0.025072909891605377, -0.00027061047148890793], [-0.025267913937568665, -0.00027549979859031737], [-0.02545851469039917, -0.00028027876396663487], [-0.025644585490226746, -0.0002849441079888493], [-0.025825999677181244, -0.0002894927456509322], [-0.026002632454037666, -0.00029392147553153336], [-0.02617436647415161, -0.0002982273872476071], [-0.026341082528233528, -0.00030240745400078595], [-0.026502666994929314, -0.0003064588236156851], [-0.026659004390239716, -0.00031037876033224165], [-0.026809992268681526, -0.00031416447018273175], [-0.02695551887154579, -0.00031781327561475337], [-0.027095487341284752, -0.00032132267369888723], [-0.02722979336977005, -0.00032469016150571406], [-0.027358347550034523, -0.0003279134107287973], [-0.02748105674982071, -0.00033099009306170046], [-0.027597833424806595, -0.0003339180548209697], [-0.027708595618605614, -0.00033669520053081214], [-0.02781326323747635, -0.0003393194929230958], [-0.027911759912967682, -0.0003417891275603324], [-0.02800401672720909, -0.0003441023000050336], [-0.028089966624975204, -0.0003462573222350329], [-0.028169548138976097, -0.0003482526808511466], [-0.028242699801921844, -0.00035008686245419085], [-0.028309375047683716, -0.00035175858647562563], [-0.028369521722197533, -0.00035326663055457175], [-0.028423096984624863, -0.00035460994695313275], [-0.028470059856772423, -0.0003557874297257513], [-0.028510378673672676, -0.0003567983803804964], [-0.028544021770358086, -0.00035764192580245435], [-0.02857096679508686, -0.00035831748391501606], [-0.02859119139611721, -0.0003588245890568942], [-0.02860468439757824, -0.00035916289198212326], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.028612276539206505, -0.0003593532310333103], [-0.02860320918262005, -0.00035923943505622447], [-0.02858709916472435, -0.0003590370179153979], [-0.02856294997036457, -0.0003587337560020387], [-0.028530778363347054, -0.0003583296784199774], [-0.02849060483276844, -0.0003578251344151795], [-0.028442464768886566, -0.0003572204732336104], [-0.028386389836668968, -0.00035651627695187926], [-0.02832241915166378, -0.00035571283660829067], [-0.02825060300529003, -0.00035481087979860604], [-0.028170989826321602, -0.0003538109885994345], [-0.028083642944693565, -0.0003527139197103679], [-0.027988620102405548, -0.0003515204880386591], [-0.02788599207997322, -0.0003502315958030522], [-0.02777583710849285, -0.0003488480579108], [-0.02765822783112526, -0.00034737098030745983], [-0.02753325179219246, -0.0003458013234194368], [-0.027400998398661613, -0.00034414033871144056], [-0.027261562645435333, -0.00034238904481753707], [-0.027115045115351677, -0.0003405489260330796], [-0.026961546391248703, -0.0003386210591997951], [-0.026801178231835365, -0.00033660692861303687], [-0.026634056121110916, -0.0003345079894643277], [-0.02646028995513916, -0.00033232560963369906], [-0.026280008256435394, -0.0003300613316241652], [-0.026093335822224617, -0.00032771684345789254], [-0.025900397449731827, -0.0003252937167417258], [-0.025701334699988365, -0.0003227935521863401], [-0.02549627609550953, -0.00032021812512539327], [-0.025285372510552406, -0.000317569327307865], [-0.02506875805556774, -0.00031484875944443047], [-0.024846583604812622, -0.0003120583714917302], [-0.024618998169898987, -0.0003092000843025744], [-0.02438615821301937, -0.00030627570231445134], [-0.02414821647107601, -0.00030328729189932346], [-0.023905329406261444, -0.0003002367739100009], [-0.0236576609313488, -0.00029712621471844614], [-0.023405367508530617, -0.0002939575642812997], [-0.023148616775870323, -0.00029073291807435453], [-0.0228875782340765, -0.00028745445888489485], [-0.02262241207063198, -0.0002841241075657308], [-0.022353295236825943, -0.0002807441633194685], [-0.02208038978278637, -0.0002773166343104094], [-0.02180386893451214, -0.0002738436742220074], [-0.021523911505937576, -0.00027032761136069894], [-0.021240683272480965, -0.00026677039568312466], [-0.020954357460141182, -0.00026317432639189065], [-0.020665111020207405, -0.00025954158627428114], [-0.020373119041323662, -0.00025587427080608904], [-0.020078547298908234, -0.0002521746791899204], [-0.019781576469540596, -0.0002484449069015682], [-0.019482379779219627, -0.00024468713672831655], [-0.01918112486600876, -0.00024090358056128025], [-0.018877988681197166, -0.00023709637753199786], [-0.01857314072549343, -0.00023326763766817749], [-0.018266750499606133, -0.00022941958741284907], [-0.017958989366889, -0.00022555429313797504], [-0.017650021240115166, -0.00022167382121551782], [-0.01734001748263836, -0.00021778035443276167], [-0.017029142007231712, -0.00021387593005783856], [-0.01671755313873291, -0.0002099625999107957], [-0.016405418515205383, -0.00020604235760401934], [-0.016092892736196518, -0.0002021171967498958], [-0.015780134126544, -0.0001981891691684723], [-0.01546730101108551, -0.00019426012295298278], [-0.015154542401432991, -0.00019033208081964403], [-0.014842010103166103, -0.00018640687630977482], [-0.014529852196574211, -0.0001824863429646939], [-0.014218213967978954, -0.00017857235798146576], [-0.013907235115766525, -0.00017466663848608732], [-0.013597059063613415, -0.00017077100346796215], [-0.013287818990647793, -0.00016688715550117195], [-0.012979650869965553, -0.00016301675350405276], [-0.012672685086727142, -0.00015916142729111016], [-0.012367046438157558, -0.0001553227921249345], [-0.01206286158412695, -0.00015150239050853997], [-0.011760249733924866, -0.00014770177949685603], [-0.011459329165518284, -0.00014392238517757505], [-0.011160214431583881, -0.0001401656772941351], [-0.010863015428185463, -0.0001364330673823133], [-0.010567840188741684, -0.00013272582145873457], [-0.010274790227413177, -0.00012904529285151511], [-0.009983967058360577, -0.00012539273302536458], [-0.009695466607809067, -0.00012176932068541646], [-0.009409383870661259, -0.00011817630002042279], [-0.009125803597271442, -0.00011461469694040716], [-0.008844816125929356, -0.00011108566104667261], [-0.008566499687731266, -0.00010759016004158184], [-0.008290935307741165, -0.00010412926349090412], [-0.008018196560442448, -0.0001007038081297651], [-0.007748352829366922, -9.731471800478175e-05], [-0.0074814739637076855, -9.396288805874065e-05], [-0.007217622362077236, -9.064906771527603e-05], [-0.0069568585604429245, -8.737403550185263e-05], [-0.006699239835143089, -8.41384899104014e-05], [-0.006444817874580622, -8.094309305306524e-05], [-0.006193642504513264, -7.778848521411419e-05], [-0.005945760291069746, -7.467524119419977e-05], [-0.005701213143765926, -7.160386303439736e-05], [-0.005460040643811226, -6.857487460365519e-05], [-0.00522227818146348, -6.558872701134533e-05], [-0.0049879588186740875, -6.264580588322133e-05], [-0.004757110495120287, -5.9746496845036745e-05], [-0.004529760684818029, -5.6891116400947794e-05], [-0.004305931273847818, -5.4079951951280236e-05], [-0.0040856413543224335, -5.131323996465653e-05], [-0.0038689090870320797, -4.8591213271720335e-05], [-0.0036557468120008707, -4.591401739162393e-05], [-0.003446165705099702, -4.3281801481498405e-05], [-0.00324017321690917, -4.069465649081394e-05], [-0.003037774469703436, -3.815264790318906e-05], [-0.0028389717917889357, -3.565580482245423e-05], [-0.0026437651831656694, -3.3204130886588246e-05], [-0.0024521509185433388, -3.079756424995139e-05], [-0.0022641243413090706, -2.8436063075787388e-05], [-0.0020796768367290497, -2.6119510948774405e-05], [-0.001898798393085599, -2.3847785996622406e-05], [-0.001721476437523961, -2.1620726329274476e-05], [-0.001547696185298264, -1.9438146409811452e-05], [-0.001377440639771521, -1.729983887344133e-05], [-0.0012106908252462745, -1.5205559066089336e-05], [-0.0010474256705492735, -1.3155045962776057e-05], [-0.0008876225329004228, -1.114801398216514e-05], [-0.0007312564412131906, -9.18414934858447e-06], [-0.0005783010856248438, -7.26311964172055e-06], [-0.0004287282354198396, -5.384573341871146e-06], [-0.00028250820469111204, -3.5481359645928023e-06], [-0.00013960967771708965, -1.7534148355480283e-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]]}, {"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]]}, {"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]]}, {"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]]}, {"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]]}, {"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]]}, {"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]]}, {"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]]}, {"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]]}, {"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]]}, {"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]]}, {"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]]}, {"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]]}, {"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]]}, {"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]]}, {"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]]}, {"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]]}, {"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]]}, {"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]]}, {"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]]}, {"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]]}, {"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]]}, {"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]]}, {"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]]}, {"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]]}, {"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]]}, {"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]]}], "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": [-5.822706867995675e-17, -0.31697339848243977], "beta": -0.4950839561397558, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 688, "ch": "d0", "label": "Xp_d0", "pulse_shape": "drag", "parameters": {"amp": [0.31697339848243977, 0.0], "beta": -0.4950839561397558, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.1564567301458053, -0.002256834548888052], "beta": 0.9542241249038057, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d1", "label": "CR90p_d1_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05032179887193187, -0.00223496494222033], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 784, "ch": "d1", "label": "CR90m_d1_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05032179887193187, 0.002234964942220336], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 96, "ch": "u0", "label": "CR90p_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.6153053442754297, -0.40813236710314676], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 784, "ch": "u0", "label": "CR90m_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.6153053442754297, 0.4081323671031467], "duration": 592, "sigma": 64, "width": 336}}, {"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.15774386893037737, 0.0006278099039564522], "beta": -0.4710234832966056, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 688, "ch": "d0", "label": "Xp_d0", "pulse_shape": "drag", "parameters": {"amp": [0.31697339848243977, 0.0], "beta": -0.4950839561397558, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 1376, "ch": "d0", "label": "Y90m_d0", "pulse_shape": "drag", "parameters": {"amp": [0.0006278099039564829, -0.15774386893037737], "beta": -0.4710234832966056, "duration": 96, "sigma": 24}}, {"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.002256834548888062, 0.1564567301458053], "beta": 0.9542241249038057, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d1", "label": "CR90p_d1_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05032179887193187, -0.00223496494222033], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 784, "ch": "d1", "label": "CR90m_d1_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05032179887193187, 0.002234964942220336], "duration": 592, "sigma": 64, "width": 336}}, {"name": "fc", "t0": 1376, "ch": "d1", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1376, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.1564567301458053, -0.002256834548888052], "beta": 0.9542241249038057, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u0", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 96, "ch": "u0", "label": "CR90p_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.6153053442754297, -0.40813236710314676], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 784, "ch": "u0", "label": "CR90m_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.6153053442754297, 0.4081323671031467], "duration": 592, "sigma": 64, "width": 336}}, {"name": "fc", "t0": 1376, "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": 1376, "ch": "u4", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u8", "phase": -3.141592653589793}, {"name": "fc", "t0": 1376, "ch": "u8", "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.002256834548888062, 0.1564567301458053], "beta": 0.9542241249038057, "duration": 96, "sigma": 24}}, {"name": "CX_d1_u4", "t0": 96, "ch": "d1"}, {"name": "fc", "t0": 992, "ch": "d1", "phase": 0.012294449270050897}, {"name": "fc", "t0": 992, "ch": "d1", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 992, "ch": "d1", "label": "Y90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.002256834548888062, 0.1564567301458053], "beta": 0.9542241249038057, "duration": 96, "sigma": 24}}, {"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.002151199231042608, 0.15822675399905328], "beta": -0.7328260898428217, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 992, "ch": "d2", "phase": -2.6411003271716735}, {"name": "fc", "t0": 992, "ch": "d2", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 992, "ch": "d2", "label": "Y90p_d2", "pulse_shape": "drag", "parameters": {"amp": [-0.002151199231042608, 0.15822675399905328], "beta": -0.7328260898428217, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u0", "phase": -3.141592653589793}, {"name": "fc", "t0": 992, "ch": "u0", "phase": 0.012294449270050897}, {"name": "fc", "t0": 992, "ch": "u0", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u2", "phase": -3.141592653589793}, {"name": "fc", "t0": 992, "ch": "u2", "phase": -2.6411003271716735}, {"name": "fc", "t0": 992, "ch": "u2", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u4", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 96, "ch": "u4", "label": "CX_u4", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3127815297071894, -0.2725188418789506], "duration": 896, "sigma": 64, "width": 640}}, {"name": "fc", "t0": 992, "ch": "u4", "phase": 0.012294449270050897}, {"name": "fc", "t0": 992, "ch": "u4", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u6", "phase": -3.141592653589793}, {"name": "fc", "t0": 992, "ch": "u6", "phase": -2.6411003271716735}, {"name": "fc", "t0": 992, "ch": "u6", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u8", "phase": -3.141592653589793}, {"name": "fc", "t0": 992, "ch": "u8", "phase": 0.012294449270050897}, {"name": "fc", "t0": 992, "ch": "u8", "phase": -3.141592653589793}]}, {"name": "cx", "qubits": [1, 4], "sequence": [{"name": "fc", "t0": 816, "ch": "d1", "phase": -2.2589641845675135}, {"name": "CX_d4_u3", "t0": 0, "ch": "d4"}, {"name": "fc", "t0": 816, "ch": "d4", "phase": 0.05005425703643391}, {"name": "fc", "t0": 816, "ch": "u0", "phase": -2.2589641845675135}, {"name": "fc", "t0": 816, "ch": "u13", "phase": 0.05005425703643391}, {"name": "parametric_pulse", "t0": 0, "ch": "u3", "label": "CX_u3", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.4425053394542114, -0.05421129482065242], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 816, "ch": "u3", "phase": 0.05005425703643391}, {"name": "fc", "t0": 816, "ch": "u4", "phase": -2.2589641845675135}, {"name": "fc", "t0": 816, "ch": "u8", "phase": -2.2589641845675135}]}, {"name": "cx", "qubits": [2, 1], "sequence": [{"name": "CX_d1_u4", "t0": 0, "ch": "d1"}, {"name": "fc", "t0": 896, "ch": "d1", "phase": 0.012294449270050897}, {"name": "fc", "t0": 896, "ch": "d2", "phase": -2.6411003271716735}, {"name": "fc", "t0": 896, "ch": "u0", "phase": 0.012294449270050897}, {"name": "fc", "t0": 896, "ch": "u2", "phase": -2.6411003271716735}, {"name": "parametric_pulse", "t0": 0, "ch": "u4", "label": "CX_u4", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3127815297071894, -0.2725188418789506], "duration": 896, "sigma": 64, "width": 640}}, {"name": "fc", "t0": 896, "ch": "u4", "phase": 0.012294449270050897}, {"name": "fc", "t0": 896, "ch": "u6", "phase": -2.6411003271716735}, {"name": "fc", "t0": 896, "ch": "u8", "phase": 0.012294449270050897}]}, {"name": "cx", "qubits": [2, 3], "sequence": [{"name": "fc", "t0": 1504, "ch": "d2", "phase": 2.7169454092197696}, {"name": "CX_d3_u5", "t0": 0, "ch": "d3"}, {"name": "fc", "t0": 1504, "ch": "d3", "phase": 0.06735952240010619}, {"name": "fc", "t0": 1504, "ch": "u10", "phase": 0.06735952240010619}, {"name": "fc", "t0": 1504, "ch": "u2", "phase": 2.7169454092197696}, {"name": "parametric_pulse", "t0": 0, "ch": "u5", "label": "CX_u5", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2737451119459445, -0.007816127560110287], "duration": 1504, "sigma": 64, "width": 1248}}, {"name": "fc", "t0": 1504, "ch": "u5", "phase": 0.06735952240010619}, {"name": "fc", "t0": 1504, "ch": "u6", "phase": 2.7169454092197696}]}, {"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.002151199231042608, 0.15822675399905328], "beta": -0.7328260898428217, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 1600, "ch": "d2", "phase": 2.7169454092197696}, {"name": "fc", "t0": 1600, "ch": "d2", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1600, "ch": "d2", "label": "Y90p_d2", "pulse_shape": "drag", "parameters": {"amp": [-0.002151199231042608, 0.15822675399905328], "beta": -0.7328260898428217, "duration": 96, "sigma": 24}}, {"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.001700976334608921, 0.15500278005568494], "beta": -0.21198323234491373, "duration": 96, "sigma": 24}}, {"name": "CX_d3_u5", "t0": 96, "ch": "d3"}, {"name": "fc", "t0": 1600, "ch": "d3", "phase": 0.06735952240010619}, {"name": "fc", "t0": 1600, "ch": "d3", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1600, "ch": "d3", "label": "Y90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.001700976334608921, 0.15500278005568494], "beta": -0.21198323234491373, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u10", "phase": -3.141592653589793}, {"name": "fc", "t0": 1600, "ch": "u10", "phase": 0.06735952240010619}, {"name": "fc", "t0": 1600, "ch": "u10", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u2", "phase": -3.141592653589793}, {"name": "fc", "t0": 1600, "ch": "u2", "phase": 2.7169454092197696}, {"name": "fc", "t0": 1600, "ch": "u2", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u5", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 96, "ch": "u5", "label": "CX_u5", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2737451119459445, -0.007816127560110287], "duration": 1504, "sigma": 64, "width": 1248}}, {"name": "fc", "t0": 1600, "ch": "u5", "phase": 0.06735952240010619}, {"name": "fc", "t0": 1600, "ch": "u5", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u6", "phase": -3.141592653589793}, {"name": "fc", "t0": 1600, "ch": "u6", "phase": 2.7169454092197696}, {"name": "fc", "t0": 1600, "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.001700976334608921, 0.15500278005568494], "beta": -0.21198323234491373, "duration": 96, "sigma": 24}}, {"name": "CX_d3_u10", "t0": 96, "ch": "d3"}, {"name": "fc", "t0": 928, "ch": "d3", "phase": 0.058300715841827964}, {"name": "fc", "t0": 928, "ch": "d3", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 928, "ch": "d3", "label": "Y90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.001700976334608921, 0.15500278005568494], "beta": -0.21198323234491373, "duration": 96, "sigma": 24}}, {"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.0010317088824174571, 0.164857433996522], "beta": -0.059582933453111414, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 928, "ch": "d5", "phase": -2.0673178140163055}, {"name": "fc", "t0": 928, "ch": "d5", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 928, "ch": "d5", "label": "Y90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.0010317088824174571, 0.164857433996522], "beta": -0.059582933453111414, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u10", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 96, "ch": "u10", "label": "CX_u10", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.4471053170718341, 0.3647209895994778], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 928, "ch": "u10", "phase": 0.058300715841827964}, {"name": "fc", "t0": 928, "ch": "u10", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u16", "phase": -3.141592653589793}, {"name": "fc", "t0": 928, "ch": "u16", "phase": -2.0673178140163055}, {"name": "fc", "t0": 928, "ch": "u16", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u5", "phase": -3.141592653589793}, {"name": "fc", "t0": 928, "ch": "u5", "phase": 0.058300715841827964}, {"name": "fc", "t0": 928, "ch": "u5", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u7", "phase": -3.141592653589793}, {"name": "fc", "t0": 928, "ch": "u7", "phase": -2.0673178140163055}, {"name": "fc", "t0": 928, "ch": "u7", "phase": -3.141592653589793}]}, {"name": "cx", "qubits": [4, 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.002256834548888062, 0.1564567301458053], "beta": 0.9542241249038057, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 912, "ch": "d1", "phase": -2.2589641845675135}, {"name": "fc", "t0": 912, "ch": "d1", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 912, "ch": "d1", "label": "Y90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.002256834548888062, 0.1564567301458053], "beta": 0.9542241249038057, "duration": 96, "sigma": 24}}, {"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.0024529138667694, 0.1632520111745599], "beta": 0.2952864488310726, "duration": 96, "sigma": 24}}, {"name": "CX_d4_u3", "t0": 96, "ch": "d4"}, {"name": "fc", "t0": 912, "ch": "d4", "phase": 0.05005425703643391}, {"name": "fc", "t0": 912, "ch": "d4", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 912, "ch": "d4", "label": "Y90p_d4", "pulse_shape": "drag", "parameters": {"amp": [0.0024529138667694, 0.1632520111745599], "beta": 0.2952864488310726, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u0", "phase": -3.141592653589793}, {"name": "fc", "t0": 912, "ch": "u0", "phase": -2.2589641845675135}, {"name": "fc", "t0": 912, "ch": "u0", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u13", "phase": -3.141592653589793}, {"name": "fc", "t0": 912, "ch": "u13", "phase": 0.05005425703643391}, {"name": "fc", "t0": 912, "ch": "u13", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u3", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 96, "ch": "u3", "label": "CX_u3", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.4425053394542114, -0.05421129482065242], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 912, "ch": "u3", "phase": 0.05005425703643391}, {"name": "fc", "t0": 912, "ch": "u3", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u4", "phase": -3.141592653589793}, {"name": "fc", "t0": 912, "ch": "u4", "phase": -2.2589641845675135}, {"name": "fc", "t0": 912, "ch": "u4", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u8", "phase": -3.141592653589793}, {"name": "fc", "t0": 912, "ch": "u8", "phase": -2.2589641845675135}, {"name": "fc", "t0": 912, "ch": "u8", "phase": -3.141592653589793}]}, {"name": "cx", "qubits": [4, 7], "sequence": [{"name": "fc", "t0": 1152, "ch": "d4", "phase": -0.36196924207779907}, {"name": "CX_d7_u9", "t0": 0, "ch": "d7"}, {"name": "fc", "t0": 1152, "ch": "d7", "phase": 0.05854632692635043}, {"name": "fc", "t0": 1152, "ch": "u12", "phase": 0.05854632692635043}, {"name": "fc", "t0": 1152, "ch": "u13", "phase": -0.36196924207779907}, {"name": "fc", "t0": 1152, "ch": "u20", "phase": 0.05854632692635043}, {"name": "fc", "t0": 1152, "ch": "u3", "phase": -0.36196924207779907}, {"name": "parametric_pulse", "t0": 0, "ch": "u9", "label": "CX_u9", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0087680289069487, 0.43970437006673113], "duration": 1152, "sigma": 64, "width": 896}}, {"name": "fc", "t0": 1152, "ch": "u9", "phase": 0.05854632692635043}]}, {"name": "cx", "qubits": [5, 3], "sequence": [{"name": "CX_d3_u10", "t0": 0, "ch": "d3"}, {"name": "fc", "t0": 832, "ch": "d3", "phase": 0.058300715841827964}, {"name": "fc", "t0": 832, "ch": "d5", "phase": -2.0673178140163055}, {"name": "parametric_pulse", "t0": 0, "ch": "u10", "label": "CX_u10", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.4471053170718341, 0.3647209895994778], "duration": 832, "sigma": 64, "width": 576}}, {"name": "fc", "t0": 832, "ch": "u10", "phase": 0.058300715841827964}, {"name": "fc", "t0": 832, "ch": "u16", "phase": -2.0673178140163055}, {"name": "fc", "t0": 832, "ch": "u5", "phase": 0.058300715841827964}, {"name": "fc", "t0": 832, "ch": "u7", "phase": -2.0673178140163055}]}, {"name": "cx", "qubits": [5, 8], "sequence": [{"name": "fc", "t0": 1456, "ch": "d5", "phase": -0.5241646776050404}, {"name": "CX_d8_u11", "t0": 0, "ch": "d8"}, {"name": "fc", "t0": 1456, "ch": "d8", "phase": 0.011873280659453762}, {"name": "parametric_pulse", "t0": 0, "ch": "u11", "label": "CX_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.24171489453979517, 0.006454449774037637], "duration": 1456, "sigma": 64, "width": 1200}}, {"name": "fc", "t0": 1456, "ch": "u11", "phase": 0.011873280659453762}, {"name": "fc", "t0": 1456, "ch": "u16", "phase": -0.5241646776050404}, {"name": "fc", "t0": 1456, "ch": "u19", "phase": 0.011873280659453762}, {"name": "fc", "t0": 1456, "ch": "u22", "phase": 0.011873280659453762}, {"name": "fc", "t0": 1456, "ch": "u7", "phase": -0.5241646776050404}]}, {"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": [-5.726284249838489e-17, -0.3117243956284839], "beta": -0.8152941671684616, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 592, "ch": "d6", "label": "Xp_d6", "pulse_shape": "drag", "parameters": {"amp": [0.3117243956284839, 0.0], "beta": -0.8152941671684616, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "X90p_d7", "pulse_shape": "drag", "parameters": {"amp": [0.1406328104361194, 8.382431406254624e-05], "beta": -0.25625061802694327, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d7", "label": "CR90p_d7_u12", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07551260036690269, 0.001086479094915693], "duration": 496, "sigma": 64, "width": 240}}, {"name": "parametric_pulse", "t0": 688, "ch": "d7", "label": "CR90m_d7_u12", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07551260036690269, -0.0010864790949156836], "duration": 496, "sigma": 64, "width": 240}}, {"name": "parametric_pulse", "t0": 96, "ch": "u12", "label": "CR90p_u12", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2995576820673417, 0.2946216050068331], "duration": 496, "sigma": 64, "width": 240}}, {"name": "parametric_pulse", "t0": 688, "ch": "u12", "label": "CR90m_u12", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.29955768206734174, -0.29462160500683304], "duration": 496, "sigma": 64, "width": 240}}, {"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.0024529138667694, 0.1632520111745599], "beta": 0.2952864488310726, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 1248, "ch": "d4", "phase": -0.36196924207779907}, {"name": "fc", "t0": 1248, "ch": "d4", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1248, "ch": "d4", "label": "Y90p_d4", "pulse_shape": "drag", "parameters": {"amp": [0.0024529138667694, 0.1632520111745599], "beta": 0.2952864488310726, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "d7", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "Y90p_d7", "pulse_shape": "drag", "parameters": {"amp": [-8.382431406252677e-05, 0.1406328104361194], "beta": -0.25625061802694327, "duration": 96, "sigma": 24}}, {"name": "CX_d7_u9", "t0": 96, "ch": "d7"}, {"name": "fc", "t0": 1248, "ch": "d7", "phase": 0.05854632692635043}, {"name": "fc", "t0": 1248, "ch": "d7", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1248, "ch": "d7", "label": "Y90p_d7", "pulse_shape": "drag", "parameters": {"amp": [-8.382431406252677e-05, 0.1406328104361194], "beta": -0.25625061802694327, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u12", "phase": -3.141592653589793}, {"name": "fc", "t0": 1248, "ch": "u12", "phase": 0.05854632692635043}, {"name": "fc", "t0": 1248, "ch": "u12", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u13", "phase": -3.141592653589793}, {"name": "fc", "t0": 1248, "ch": "u13", "phase": -0.36196924207779907}, {"name": "fc", "t0": 1248, "ch": "u13", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u20", "phase": -3.141592653589793}, {"name": "fc", "t0": 1248, "ch": "u20", "phase": 0.05854632692635043}, {"name": "fc", "t0": 1248, "ch": "u20", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u3", "phase": -3.141592653589793}, {"name": "fc", "t0": 1248, "ch": "u3", "phase": -0.36196924207779907}, {"name": "fc", "t0": 1248, "ch": "u3", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u9", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 96, "ch": "u9", "label": "CX_u9", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0087680289069487, 0.43970437006673113], "duration": 1152, "sigma": 64, "width": 896}}, {"name": "fc", "t0": 1248, "ch": "u9", "phase": 0.05854632692635043}, {"name": "fc", "t0": 1248, "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.15530334844125887, 0.0006080326814432486], "beta": -0.7798212399455098, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 592, "ch": "d6", "label": "Xp_d6", "pulse_shape": "drag", "parameters": {"amp": [0.3117243956284839, 0.0], "beta": -0.8152941671684616, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 1184, "ch": "d6", "label": "Y90m_d6", "pulse_shape": "drag", "parameters": {"amp": [0.0006080326814432782, -0.15530334844125887], "beta": -0.7798212399455098, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "d7", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "Y90p_d7", "pulse_shape": "drag", "parameters": {"amp": [-8.382431406252677e-05, 0.1406328104361194], "beta": -0.25625061802694327, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d7", "label": "CR90p_d7_u12", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07551260036690269, 0.001086479094915693], "duration": 496, "sigma": 64, "width": 240}}, {"name": "parametric_pulse", "t0": 688, "ch": "d7", "label": "CR90m_d7_u12", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07551260036690269, -0.0010864790949156836], "duration": 496, "sigma": 64, "width": 240}}, {"name": "fc", "t0": 1184, "ch": "d7", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1184, "ch": "d7", "label": "X90p_d7", "pulse_shape": "drag", "parameters": {"amp": [0.1406328104361194, 8.382431406254624e-05], "beta": -0.25625061802694327, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u12", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 96, "ch": "u12", "label": "CR90p_u12", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.2995576820673417, 0.2946216050068331], "duration": 496, "sigma": 64, "width": 240}}, {"name": "parametric_pulse", "t0": 688, "ch": "u12", "label": "CR90m_u12", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.29955768206734174, -0.29462160500683304], "duration": 496, "sigma": 64, "width": 240}}, {"name": "fc", "t0": 1184, "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": 1184, "ch": "u20", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u9", "phase": -3.141592653589793}, {"name": "fc", "t0": 1184, "ch": "u9", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [7, 10], "sequence": [{"name": "CX_d10_u15", "t0": 0, "ch": "d10"}, {"name": "fc", "t0": 912, "ch": "d10", "phase": -0.005914252189761101}, {"name": "fc", "t0": 912, "ch": "d7", "phase": 0.6537496827203516}, {"name": "fc", "t0": 912, "ch": "u12", "phase": 0.6537496827203516}, {"name": "parametric_pulse", "t0": 0, "ch": "u15", "label": "CX_u15", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1964446590817461, 0.3419742780845078], "duration": 912, "sigma": 64, "width": 656}}, {"name": "fc", "t0": 912, "ch": "u15", "phase": -0.005914252189761101}, {"name": "fc", "t0": 912, "ch": "u20", "phase": 0.6537496827203516}, {"name": "fc", "t0": 912, "ch": "u24", "phase": -0.005914252189761101}, {"name": "fc", "t0": 912, "ch": "u9", "phase": 0.6537496827203516}]}, {"name": "cx", "qubits": [8, 5], "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.0010317088824174571, 0.164857433996522], "beta": -0.059582933453111414, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 1552, "ch": "d5", "phase": -0.5241646776050404}, {"name": "fc", "t0": 1552, "ch": "d5", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1552, "ch": "d5", "label": "Y90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.0010317088824174571, 0.164857433996522], "beta": -0.059582933453111414, "duration": 96, "sigma": 24}}, {"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.0019653379746373423, 0.1556863667188167], "beta": -0.13752313589480156, "duration": 96, "sigma": 24}}, {"name": "CX_d8_u11", "t0": 96, "ch": "d8"}, {"name": "fc", "t0": 1552, "ch": "d8", "phase": 0.011873280659453762}, {"name": "fc", "t0": 1552, "ch": "d8", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1552, "ch": "d8", "label": "Y90p_d8", "pulse_shape": "drag", "parameters": {"amp": [0.0019653379746373423, 0.1556863667188167], "beta": -0.13752313589480156, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u11", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 96, "ch": "u11", "label": "CX_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.24171489453979517, 0.006454449774037637], "duration": 1456, "sigma": 64, "width": 1200}}, {"name": "fc", "t0": 1552, "ch": "u11", "phase": 0.011873280659453762}, {"name": "fc", "t0": 1552, "ch": "u11", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u16", "phase": -3.141592653589793}, {"name": "fc", "t0": 1552, "ch": "u16", "phase": -0.5241646776050404}, {"name": "fc", "t0": 1552, "ch": "u16", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u19", "phase": -3.141592653589793}, {"name": "fc", "t0": 1552, "ch": "u19", "phase": 0.011873280659453762}, {"name": "fc", "t0": 1552, "ch": "u19", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u22", "phase": -3.141592653589793}, {"name": "fc", "t0": 1552, "ch": "u22", "phase": 0.011873280659453762}, {"name": "fc", "t0": 1552, "ch": "u22", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u7", "phase": -3.141592653589793}, {"name": "fc", "t0": 1552, "ch": "u7", "phase": -0.5241646776050404}, {"name": "fc", "t0": 1552, "ch": "u7", "phase": -3.141592653589793}]}, {"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.0019653379746373423, 0.1556863667188167], "beta": -0.13752313589480156, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d8", "label": "CR90p_d8_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03799006664518848, 0.0001714904507451772], "duration": 1072, "sigma": 64, "width": 816}}, {"name": "parametric_pulse", "t0": 1264, "ch": "d8", "label": "CR90m_d8_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03799006664518848, -0.00017149045074517255], "duration": 1072, "sigma": 64, "width": 816}}, {"name": "fc", "t0": 2336, "ch": "d8", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 2336, "ch": "d8", "label": "X90p_d8", "pulse_shape": "drag", "parameters": {"amp": [0.1556863667188167, -0.001965337974637343], "beta": -0.13752313589480156, "duration": 96, "sigma": 24}}, {"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.159631733855157, 0.00514774945264717], "beta": -2.2834769260859216, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 1168, "ch": "d9", "label": "Xp_d9", "pulse_shape": "drag", "parameters": {"amp": [0.32111493061234503, 0.0], "beta": -2.230530502757003, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 2336, "ch": "d9", "label": "Y90m_d9", "pulse_shape": "drag", "parameters": {"amp": [0.0051477494526471395, -0.159631733855157], "beta": -2.2834769260859216, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u11", "phase": -3.141592653589793}, {"name": "fc", "t0": 2336, "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": 96, "ch": "u19", "label": "CR90p_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.40064613711376, 0.04383077386011531], "duration": 1072, "sigma": 64, "width": 816}}, {"name": "parametric_pulse", "t0": 1264, "ch": "u19", "label": "CR90m_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.40064613711376, -0.04383077386011536], "duration": 1072, "sigma": 64, "width": 816}}, {"name": "fc", "t0": 2336, "ch": "u19", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u22", "phase": -3.141592653589793}, {"name": "fc", "t0": 2336, "ch": "u22", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [8, 11], "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": [-1.912309532595168e-05, 0.15742893533557556], "beta": -0.7315063525627234, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 1312, "ch": "d11", "phase": 0.956691700508927}, {"name": "fc", "t0": 1312, "ch": "d11", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1312, "ch": "d11", "label": "Y90p_d11", "pulse_shape": "drag", "parameters": {"amp": [-1.912309532595168e-05, 0.15742893533557556], "beta": -0.7315063525627234, "duration": 96, "sigma": 24}}, {"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.0019653379746373423, 0.1556863667188167], "beta": -0.13752313589480156, "duration": 96, "sigma": 24}}, {"name": "CX_d8_u22", "t0": 96, "ch": "d8"}, {"name": "fc", "t0": 1312, "ch": "d8", "phase": 0.04823218501525398}, {"name": "fc", "t0": 1312, "ch": "d8", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1312, "ch": "d8", "label": "Y90p_d8", "pulse_shape": "drag", "parameters": {"amp": [0.0019653379746373423, 0.1556863667188167], "beta": -0.13752313589480156, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u11", "phase": -3.141592653589793}, {"name": "fc", "t0": 1312, "ch": "u11", "phase": 0.04823218501525398}, {"name": "fc", "t0": 1312, "ch": "u11", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u18", "phase": -3.141592653589793}, {"name": "fc", "t0": 1312, "ch": "u18", "phase": 0.956691700508927}, {"name": "fc", "t0": 1312, "ch": "u18", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u19", "phase": -3.141592653589793}, {"name": "fc", "t0": 1312, "ch": "u19", "phase": 0.04823218501525398}, {"name": "fc", "t0": 1312, "ch": "u19", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u22", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 96, "ch": "u22", "label": "CX_u22", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.14018393541301305, -0.2548393978017551], "duration": 1216, "sigma": 64, "width": 960}}, {"name": "fc", "t0": 1312, "ch": "u22", "phase": 0.04823218501525398}, {"name": "fc", "t0": 1312, "ch": "u22", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u29", "phase": -3.141592653589793}, {"name": "fc", "t0": 1312, "ch": "u29", "phase": 0.956691700508927}, {"name": "fc", "t0": 1312, "ch": "u29", "phase": -3.141592653589793}]}, {"name": "cx", "qubits": [9, 8], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d8", "label": "X90p_d8", "pulse_shape": "drag", "parameters": {"amp": [0.1556863667188167, -0.001965337974637343], "beta": -0.13752313589480156, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d8", "label": "CR90p_d8_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03799006664518848, 0.0001714904507451772], "duration": 1072, "sigma": 64, "width": 816}}, {"name": "parametric_pulse", "t0": 1264, "ch": "d8", "label": "CR90m_d8_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03799006664518848, -0.00017149045074517255], "duration": 1072, "sigma": 64, "width": 816}}, {"name": "fc", "t0": 0, "ch": "d9", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d9", "label": "Ym_d9", "pulse_shape": "drag", "parameters": {"amp": [-5.898785578992491e-17, -0.32111493061234503], "beta": -2.230530502757003, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 1168, "ch": "d9", "label": "Xp_d9", "pulse_shape": "drag", "parameters": {"amp": [0.32111493061234503, 0.0], "beta": -2.230530502757003, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u17", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 96, "ch": "u19", "label": "CR90p_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.40064613711376, 0.04383077386011531], "duration": 1072, "sigma": 64, "width": 816}}, {"name": "parametric_pulse", "t0": 1264, "ch": "u19", "label": "CR90m_u19", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.40064613711376, -0.04383077386011536], "duration": 1072, "sigma": 64, "width": 816}}]}, {"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.000732300638868539, 0.1494879217747371], "beta": -0.9803963406427126, "duration": 96, "sigma": 24}}, {"name": "CX_d10_u15", "t0": 96, "ch": "d10"}, {"name": "fc", "t0": 1008, "ch": "d10", "phase": -0.005914252189761101}, {"name": "fc", "t0": 1008, "ch": "d10", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1008, "ch": "d10", "label": "Y90p_d10", "pulse_shape": "drag", "parameters": {"amp": [-0.000732300638868539, 0.1494879217747371], "beta": -0.9803963406427126, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "d7", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "Y90p_d7", "pulse_shape": "drag", "parameters": {"amp": [-8.382431406252677e-05, 0.1406328104361194], "beta": -0.25625061802694327, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 1008, "ch": "d7", "phase": 0.6537496827203516}, {"name": "fc", "t0": 1008, "ch": "d7", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1008, "ch": "d7", "label": "Y90p_d7", "pulse_shape": "drag", "parameters": {"amp": [-8.382431406252677e-05, 0.1406328104361194], "beta": -0.25625061802694327, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u12", "phase": -3.141592653589793}, {"name": "fc", "t0": 1008, "ch": "u12", "phase": 0.6537496827203516}, {"name": "fc", "t0": 1008, "ch": "u12", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u15", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 96, "ch": "u15", "label": "CX_u15", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1964446590817461, 0.3419742780845078], "duration": 912, "sigma": 64, "width": 656}}, {"name": "fc", "t0": 1008, "ch": "u15", "phase": -0.005914252189761101}, {"name": "fc", "t0": 1008, "ch": "u15", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u20", "phase": -3.141592653589793}, {"name": "fc", "t0": 1008, "ch": "u20", "phase": 0.6537496827203516}, {"name": "fc", "t0": 1008, "ch": "u20", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u24", "phase": -3.141592653589793}, {"name": "fc", "t0": 1008, "ch": "u24", "phase": -0.005914252189761101}, {"name": "fc", "t0": 1008, "ch": "u24", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u9", "phase": -3.141592653589793}, {"name": "fc", "t0": 1008, "ch": "u9", "phase": 0.6537496827203516}, {"name": "fc", "t0": 1008, "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": [-5.5132760982830984e-17, -0.30012877193770787], "beta": -0.939962694489014, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 624, "ch": "d10", "label": "Xp_d10", "pulse_shape": "drag", "parameters": {"amp": [0.30012877193770787, 0.0], "beta": -0.939962694489014, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "X90p_d12", "pulse_shape": "drag", "parameters": {"amp": [0.18084237079143614, -0.00205582703476618], "beta": -0.9419812464998938, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d12", "label": "CR90p_d12_u21", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07368068750983833, 0.0007299325362113637], "duration": 528, "sigma": 64, "width": 272}}, {"name": "parametric_pulse", "t0": 720, "ch": "d12", "label": "CR90m_d12_u21", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07368068750983833, -0.0007299325362113547], "duration": 528, "sigma": 64, "width": 272}}, {"name": "fc", "t0": 0, "ch": "u15", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 96, "ch": "u21", "label": "CR90p_u21", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.4171954521665945, -0.024297202110200256], "duration": 528, "sigma": 64, "width": 272}}, {"name": "parametric_pulse", "t0": 720, "ch": "u21", "label": "CR90m_u21", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.4171954521665945, 0.024297202110200204], "duration": 528, "sigma": 64, "width": 272}}, {"name": "fc", "t0": 0, "ch": "u24", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [11, 8], "sequence": [{"name": "fc", "t0": 1216, "ch": "d11", "phase": 0.956691700508927}, {"name": "CX_d8_u22", "t0": 0, "ch": "d8"}, {"name": "fc", "t0": 1216, "ch": "d8", "phase": 0.04823218501525398}, {"name": "fc", "t0": 1216, "ch": "u11", "phase": 0.04823218501525398}, {"name": "fc", "t0": 1216, "ch": "u18", "phase": 0.956691700508927}, {"name": "fc", "t0": 1216, "ch": "u19", "phase": 0.04823218501525398}, {"name": "parametric_pulse", "t0": 0, "ch": "u22", "label": "CX_u22", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.14018393541301305, -0.2548393978017551], "duration": 1216, "sigma": 64, "width": 960}}, {"name": "fc", "t0": 1216, "ch": "u22", "phase": 0.04823218501525398}, {"name": "fc", "t0": 1216, "ch": "u29", "phase": 0.956691700508927}]}, {"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": [-1.912309532595168e-05, 0.15742893533557556], "beta": -0.7315063525627234, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d11", "label": "CR90p_d11_u29", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03999164616632481, 0.0004082263093628788], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1008, "ch": "d11", "label": "CR90m_d11_u29", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03999164616632481, -0.00040822630936287395], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 1824, "ch": "d11", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1824, "ch": "d11", "label": "X90p_d11", "pulse_shape": "drag", "parameters": {"amp": [0.15742893533557556, 1.912309532594517e-05], "beta": -0.7315063525627234, "duration": 96, "sigma": 24}}, {"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.16249428516138684, 0.0011830976540895455], "beta": -0.674818965264572, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 912, "ch": "d14", "label": "Xp_d14", "pulse_shape": "drag", "parameters": {"amp": [0.3269359497013626, 0.0], "beta": -0.697837712341214, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 1824, "ch": "d14", "label": "Y90m_d14", "pulse_shape": "drag", "parameters": {"amp": [0.0011830976540894754, -0.16249428516138684], "beta": -0.674818965264572, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u18", "phase": -3.141592653589793}, {"name": "fc", "t0": 1824, "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": 96, "ch": "u29", "label": "CR90p_u29", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.027872660411338967, 0.41207198265949335], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1008, "ch": "u29", "label": "CR90m_u29", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.027872660411338915, -0.41207198265949335], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 1824, "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.1494879217747371, 0.000732300638868563], "beta": -0.9803963406427126, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 624, "ch": "d10", "label": "Xp_d10", "pulse_shape": "drag", "parameters": {"amp": [0.30012877193770787, 0.0], "beta": -0.939962694489014, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 1248, "ch": "d10", "label": "Y90m_d10", "pulse_shape": "drag", "parameters": {"amp": [0.0007323006388684875, -0.1494879217747371], "beta": -0.9803963406427126, "duration": 96, "sigma": 24}}, {"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.0020558270347661805, 0.18084237079143614], "beta": -0.9419812464998938, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d12", "label": "CR90p_d12_u21", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07368068750983833, 0.0007299325362113637], "duration": 528, "sigma": 64, "width": 272}}, {"name": "parametric_pulse", "t0": 720, "ch": "d12", "label": "CR90m_d12_u21", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07368068750983833, -0.0007299325362113547], "duration": 528, "sigma": 64, "width": 272}}, {"name": "fc", "t0": 1248, "ch": "d12", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1248, "ch": "d12", "label": "X90p_d12", "pulse_shape": "drag", "parameters": {"amp": [0.18084237079143614, -0.00205582703476618], "beta": -0.9419812464998938, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u15", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u21", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 96, "ch": "u21", "label": "CR90p_u21", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.4171954521665945, -0.024297202110200256], "duration": 528, "sigma": 64, "width": 272}}, {"name": "parametric_pulse", "t0": 720, "ch": "u21", "label": "CR90m_u21", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.4171954521665945, 0.024297202110200204], "duration": 528, "sigma": 64, "width": 272}}, {"name": "fc", "t0": 1248, "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": 1248, "ch": "u27", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u32", "phase": -3.141592653589793}, {"name": "fc", "t0": 1248, "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.0020558270347661805, 0.18084237079143614], "beta": -0.9419812464998938, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d12", "label": "CR90p_d12_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.054242035110184474, 0.0005322460281129292], "duration": 768, "sigma": 64, "width": 512}}, {"name": "parametric_pulse", "t0": 960, "ch": "d12", "label": "CR90m_d12_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.054242035110184474, -0.0005322460281129226], "duration": 768, "sigma": 64, "width": 512}}, {"name": "fc", "t0": 1728, "ch": "d12", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1728, "ch": "d12", "label": "X90p_d12", "pulse_shape": "drag", "parameters": {"amp": [0.18084237079143614, -0.00205582703476618], "beta": -0.9419812464998938, "duration": 96, "sigma": 24}}, {"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.16517184207153707, -0.001582133842445449], "beta": 0.05068633655303779, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 864, "ch": "d13", "label": "Xp_d13", "pulse_shape": "drag", "parameters": {"amp": [0.33168978642219793, 0.0], "beta": 0.05922266617509076, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 1728, "ch": "d13", "label": "Y90m_d13", "pulse_shape": "drag", "parameters": {"amp": [-0.0015821338424455214, -0.16517184207153707], "beta": 0.05068633655303779, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u21", "phase": -3.141592653589793}, {"name": "fc", "t0": 1728, "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": 96, "ch": "u27", "label": "CR90p_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.18018032873610668, -0.1736110145357701], "duration": 768, "sigma": 64, "width": 512}}, {"name": "parametric_pulse", "t0": 960, "ch": "u27", "label": "CR90m_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1801803287361067, 0.17361101453577008], "duration": 768, "sigma": 64, "width": 512}}, {"name": "fc", "t0": 1728, "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": 1728, "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.0020558270347661805, 0.18084237079143614], "beta": -0.9419812464998938, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d12", "label": "CR90p_d12_u32", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04887681521975499, 0.001035355427242878], "duration": 768, "sigma": 64, "width": 512}}, {"name": "parametric_pulse", "t0": 960, "ch": "d12", "label": "CR90m_d12_u32", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04887681521975499, -0.001035355427242872], "duration": 768, "sigma": 64, "width": 512}}, {"name": "fc", "t0": 1728, "ch": "d12", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1728, "ch": "d12", "label": "X90p_d12", "pulse_shape": "drag", "parameters": {"amp": [0.18084237079143614, -0.00205582703476618], "beta": -0.9419812464998938, "duration": 96, "sigma": 24}}, {"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.1993954173299256, 0.00019669884707466923], "beta": -0.3090561996429837, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 864, "ch": "d15", "label": "Xp_d15", "pulse_shape": "drag", "parameters": {"amp": [0.40262076357233284, 0.0], "beta": -0.27818348187266817, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 1728, "ch": "d15", "label": "Y90m_d15", "pulse_shape": "drag", "parameters": {"amp": [0.00019669884707459556, -0.1993954173299256], "beta": -0.3090561996429837, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u21", "phase": -3.141592653589793}, {"name": "fc", "t0": 1728, "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": 1728, "ch": "u27", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u32", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 96, "ch": "u32", "label": "CR90p_u32", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.4034516815449471, -0.047260435108165987], "duration": 768, "sigma": 64, "width": 512}}, {"name": "parametric_pulse", "t0": 960, "ch": "u32", "label": "CR90m_u32", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.4034516815449471, 0.04726043510816594], "duration": 768, "sigma": 64, "width": 512}}, {"name": "fc", "t0": 1728, "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.18084237079143614, -0.00205582703476618], "beta": -0.9419812464998938, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d12", "label": "CR90p_d12_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.054242035110184474, 0.0005322460281129292], "duration": 768, "sigma": 64, "width": 512}}, {"name": "parametric_pulse", "t0": 960, "ch": "d12", "label": "CR90m_d12_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.054242035110184474, -0.0005322460281129226], "duration": 768, "sigma": 64, "width": 512}}, {"name": "fc", "t0": 0, "ch": "d13", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d13", "label": "Ym_d13", "pulse_shape": "drag", "parameters": {"amp": [-6.093042528777208e-17, -0.33168978642219793], "beta": 0.05922266617509076, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 864, "ch": "d13", "label": "Xp_d13", "pulse_shape": "drag", "parameters": {"amp": [0.33168978642219793, 0.0], "beta": 0.05922266617509076, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u25", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 96, "ch": "u27", "label": "CR90p_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.18018032873610668, -0.1736110145357701], "duration": 768, "sigma": 64, "width": 512}}, {"name": "parametric_pulse", "t0": 960, "ch": "u27", "label": "CR90m_u27", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.1801803287361067, 0.17361101453577008], "duration": 768, "sigma": 64, "width": 512}}, {"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.0015821338424454648, 0.16517184207153707], "beta": 0.05068633655303779, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d13", "label": "CR90p_d13_u30", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.08897093690124148, -0.00036313630133174955], "duration": 432, "sigma": 64, "width": 176}}, {"name": "parametric_pulse", "t0": 624, "ch": "d13", "label": "CR90m_d13_u30", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.08897093690124148, 0.00036313630133176045], "duration": 432, "sigma": 64, "width": 176}}, {"name": "fc", "t0": 1056, "ch": "d13", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1056, "ch": "d13", "label": "X90p_d13", "pulse_shape": "drag", "parameters": {"amp": [0.16517184207153707, -0.001582133842445449], "beta": 0.05068633655303779, "duration": 96, "sigma": 24}}, {"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.16249428516138684, 0.0011830976540895455], "beta": -0.674818965264572, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 528, "ch": "d14", "label": "Xp_d14", "pulse_shape": "drag", "parameters": {"amp": [0.3269359497013626, 0.0], "beta": -0.697837712341214, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 1056, "ch": "d14", "label": "Y90m_d14", "pulse_shape": "drag", "parameters": {"amp": [0.0011830976540894754, -0.16249428516138684], "beta": -0.674818965264572, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u23", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u25", "phase": -3.141592653589793}, {"name": "fc", "t0": 1056, "ch": "u25", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u28", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u30", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 96, "ch": "u30", "label": "CR90p_u30", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.37879866352425623, -0.3809944960160061], "duration": 432, "sigma": 64, "width": 176}}, {"name": "parametric_pulse", "t0": 624, "ch": "u30", "label": "CR90m_u30", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3787986635242563, 0.38099449601600605], "duration": 432, "sigma": 64, "width": 176}}, {"name": "fc", "t0": 1056, "ch": "u30", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u34", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [14, 11], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d11", "label": "X90p_d11", "pulse_shape": "drag", "parameters": {"amp": [0.15742893533557556, 1.912309532594517e-05], "beta": -0.7315063525627234, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d11", "label": "CR90p_d11_u29", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03999164616632481, 0.0004082263093628788], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1008, "ch": "d11", "label": "CR90m_d11_u29", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03999164616632481, -0.00040822630936287395], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 0, "ch": "d14", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d14", "label": "Ym_d14", "pulse_shape": "drag", "parameters": {"amp": [-6.005715964919606e-17, -0.3269359497013626], "beta": -0.697837712341214, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 912, "ch": "d14", "label": "Xp_d14", "pulse_shape": "drag", "parameters": {"amp": [0.3269359497013626, 0.0], "beta": -0.697837712341214, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u23", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u28", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 96, "ch": "u29", "label": "CR90p_u29", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.027872660411338967, 0.41207198265949335], "duration": 816, "sigma": 64, "width": 560}}, {"name": "parametric_pulse", "t0": 1008, "ch": "u29", "label": "CR90m_u29", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.027872660411338915, -0.41207198265949335], "duration": 816, "sigma": 64, "width": 560}}, {"name": "fc", "t0": 0, "ch": "u34", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [14, 13], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d13", "label": "X90p_d13", "pulse_shape": "drag", "parameters": {"amp": [0.16517184207153707, -0.001582133842445449], "beta": 0.05068633655303779, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d13", "label": "CR90p_d13_u30", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.08897093690124148, -0.00036313630133174955], "duration": 432, "sigma": 64, "width": 176}}, {"name": "parametric_pulse", "t0": 624, "ch": "d13", "label": "CR90m_d13_u30", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.08897093690124148, 0.00036313630133176045], "duration": 432, "sigma": 64, "width": 176}}, {"name": "fc", "t0": 0, "ch": "d14", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d14", "label": "Ym_d14", "pulse_shape": "drag", "parameters": {"amp": [-6.005715964919606e-17, -0.3269359497013626], "beta": -0.697837712341214, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 528, "ch": "d14", "label": "Xp_d14", "pulse_shape": "drag", "parameters": {"amp": [0.3269359497013626, 0.0], "beta": -0.697837712341214, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u23", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u28", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 96, "ch": "u30", "label": "CR90p_u30", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.37879866352425623, -0.3809944960160061], "duration": 432, "sigma": 64, "width": 176}}, {"name": "parametric_pulse", "t0": 624, "ch": "u30", "label": "CR90m_u30", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3787986635242563, 0.38099449601600605], "duration": 432, "sigma": 64, "width": 176}}, {"name": "fc", "t0": 0, "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": [-6.005715964919606e-17, -0.3269359497013626], "beta": -0.697837712341214, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 944, "ch": "d14", "label": "Xp_d14", "pulse_shape": "drag", "parameters": {"amp": [0.3269359497013626, 0.0], "beta": -0.697837712341214, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 0, "ch": "d16", "label": "X90p_d16", "pulse_shape": "drag", "parameters": {"amp": [0.15578396778543022, -0.0009395851439274077], "beta": 0.3694355026580886, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d16", "label": "CR90p_d16_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03160909427437605, 0.00046589345651818517], "duration": 848, "sigma": 64, "width": 592}}, {"name": "parametric_pulse", "t0": 1040, "ch": "d16", "label": "CR90m_d16_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03160909427437605, -0.0004658934565181813], "duration": 848, "sigma": 64, "width": 592}}, {"name": "fc", "t0": 0, "ch": "u23", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u28", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 96, "ch": "u31", "label": "CR90p_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2289001287249654, 0.19101883500062036], "duration": 848, "sigma": 64, "width": 592}}, {"name": "parametric_pulse", "t0": 1040, "ch": "u31", "label": "CR90m_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.22890012872496537, -0.1910188350006204], "duration": 848, "sigma": 64, "width": 592}}, {"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.18084237079143614, -0.00205582703476618], "beta": -0.9419812464998938, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d12", "label": "CR90p_d12_u32", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04887681521975499, 0.001035355427242878], "duration": 768, "sigma": 64, "width": 512}}, {"name": "parametric_pulse", "t0": 960, "ch": "d12", "label": "CR90m_d12_u32", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04887681521975499, -0.001035355427242872], "duration": 768, "sigma": 64, "width": 512}}, {"name": "fc", "t0": 0, "ch": "d15", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d15", "label": "Ym_d15", "pulse_shape": "drag", "parameters": {"amp": [-7.39602344068681e-17, -0.40262076357233284], "beta": -0.27818348187266817, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 864, "ch": "d15", "label": "Xp_d15", "pulse_shape": "drag", "parameters": {"amp": [0.40262076357233284, 0.0], "beta": -0.27818348187266817, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u26", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 96, "ch": "u32", "label": "CR90p_u32", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.4034516815449471, -0.047260435108165987], "duration": 768, "sigma": 64, "width": 512}}, {"name": "parametric_pulse", "t0": 960, "ch": "u32", "label": "CR90m_u32", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.4034516815449471, 0.04726043510816594], "duration": 768, "sigma": 64, "width": 512}}, {"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.00019669884707466427, 0.1993954173299256], "beta": -0.3090561996429837, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d15", "label": "CR90p_d15_u37", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06846995767245367, 0.002698395618204826], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 784, "ch": "d15", "label": "CR90m_d15_u37", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06846995767245367, -0.0026983956182048178], "duration": 592, "sigma": 64, "width": 336}}, {"name": "fc", "t0": 1376, "ch": "d15", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1376, "ch": "d15", "label": "X90p_d15", "pulse_shape": "drag", "parameters": {"amp": [0.1993954173299256, 0.00019669884707466923], "beta": -0.3090561996429837, "duration": 96, "sigma": 24}}, {"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.17197377691400392, -0.0012733390537395088], "beta": 0.0937932437517005, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 688, "ch": "d18", "label": "Xp_d18", "pulse_shape": "drag", "parameters": {"amp": [0.34524990353466256, 0.0], "beta": -0.042262138224706404, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 1376, "ch": "d18", "label": "Y90m_d18", "pulse_shape": "drag", "parameters": {"amp": [-0.0012733390537394726, -0.17197377691400392], "beta": 0.0937932437517005, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u26", "phase": -3.141592653589793}, {"name": "fc", "t0": 1376, "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": 96, "ch": "u37", "label": "CR90p_u37", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.19829544969935284, -0.08570541164115558], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 784, "ch": "u37", "label": "CR90m_u37", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.19829544969935284, 0.08570541164115555], "duration": 592, "sigma": 64, "width": 336}}, {"name": "fc", "t0": 1376, "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.16249428516138684, 0.0011830976540895455], "beta": -0.674818965264572, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 944, "ch": "d14", "label": "Xp_d14", "pulse_shape": "drag", "parameters": {"amp": [0.3269359497013626, 0.0], "beta": -0.697837712341214, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 1888, "ch": "d14", "label": "Y90m_d14", "pulse_shape": "drag", "parameters": {"amp": [0.0011830976540894754, -0.16249428516138684], "beta": -0.674818965264572, "duration": 96, "sigma": 24}}, {"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.0009395851439274179, 0.15578396778543022], "beta": 0.3694355026580886, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d16", "label": "CR90p_d16_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03160909427437605, 0.00046589345651818517], "duration": 848, "sigma": 64, "width": 592}}, {"name": "parametric_pulse", "t0": 1040, "ch": "d16", "label": "CR90m_d16_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.03160909427437605, -0.0004658934565181813], "duration": 848, "sigma": 64, "width": 592}}, {"name": "fc", "t0": 1888, "ch": "d16", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1888, "ch": "d16", "label": "X90p_d16", "pulse_shape": "drag", "parameters": {"amp": [0.15578396778543022, -0.0009395851439274077], "beta": 0.3694355026580886, "duration": 96, "sigma": 24}}, {"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": 96, "ch": "u31", "label": "CR90p_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2289001287249654, 0.19101883500062036], "duration": 848, "sigma": 64, "width": 592}}, {"name": "parametric_pulse", "t0": 1040, "ch": "u31", "label": "CR90m_u31", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.22890012872496537, -0.1910188350006204], "duration": 848, "sigma": 64, "width": 592}}, {"name": "fc", "t0": 1888, "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": 1888, "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": [0.0009395851439274179, 0.15578396778543022], "beta": 0.3694355026580886, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d16", "label": "CR90p_d16_u40", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05728479453204911, 2.1847801862480637e-05], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 784, "ch": "d16", "label": "CR90m_d16_u40", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05728479453204911, -2.184780186247362e-05], "duration": 592, "sigma": 64, "width": 336}}, {"name": "fc", "t0": 1376, "ch": "d16", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1376, "ch": "d16", "label": "X90p_d16", "pulse_shape": "drag", "parameters": {"amp": [0.15578396778543022, -0.0009395851439274077], "beta": 0.3694355026580886, "duration": 96, "sigma": 24}}, {"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.15862945862324201, -0.0007113090309505842], "beta": -0.08938043356078003, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 688, "ch": "d19", "label": "Xp_d19", "pulse_shape": "drag", "parameters": {"amp": [0.3181821017279743, 0.0], "beta": -0.12094169311543869, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 1376, "ch": "d19", "label": "Y90m_d19", "pulse_shape": "drag", "parameters": {"amp": [-0.0007113090309505579, -0.15862945862324201], "beta": -0.08938043356078003, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u31", "phase": -3.141592653589793}, {"name": "fc", "t0": 1376, "ch": "u31", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u35", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u40", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 96, "ch": "u40", "label": "CR90p_u40", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.4025129004239625, -0.04740063542212419], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 784, "ch": "u40", "label": "CR90m_u40", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.4025129004239625, 0.04740063542212424], "duration": 592, "sigma": 64, "width": 336}}, {"name": "fc", "t0": 1376, "ch": "u40", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u43", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u46", "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": [-5.651175497291597e-17, -0.3076356655772732], "beta": 0.39739583400884354, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 944, "ch": "d17", "label": "Xp_d17", "pulse_shape": "drag", "parameters": {"amp": [0.3076356655772732, 0.0], "beta": 0.39739583400884354, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "X90p_d18", "pulse_shape": "drag", "parameters": {"amp": [0.17197377691400392, -0.0012733390537395088], "beta": 0.0937932437517005, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d18", "label": "CR90p_d18_u36", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.045270892109982516, 0.0005489315987896901], "duration": 848, "sigma": 64, "width": 592}}, {"name": "parametric_pulse", "t0": 1040, "ch": "d18", "label": "CR90m_d18_u36", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.045270892109982516, -0.0005489315987896846], "duration": 848, "sigma": 64, "width": 592}}, {"name": "parametric_pulse", "t0": 96, "ch": "u36", "label": "CR90p_u36", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.015991039722218707, -0.16580392356107], "duration": 848, "sigma": 64, "width": 592}}, {"name": "parametric_pulse", "t0": 1040, "ch": "u36", "label": "CR90m_u36", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.015991039722218728, 0.16580392356107], "duration": 848, "sigma": 64, "width": 592}}, {"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.1993954173299256, 0.00019669884707466923], "beta": -0.3090561996429837, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d15", "label": "CR90p_d15_u37", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06846995767245367, 0.002698395618204826], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 784, "ch": "d15", "label": "CR90m_d15_u37", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06846995767245367, -0.0026983956182048178], "duration": 592, "sigma": 64, "width": 336}}, {"name": "fc", "t0": 0, "ch": "d18", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "Ym_d18", "pulse_shape": "drag", "parameters": {"amp": [-6.342137839044854e-17, -0.34524990353466256], "beta": -0.042262138224706404, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 688, "ch": "d18", "label": "Xp_d18", "pulse_shape": "drag", "parameters": {"amp": [0.34524990353466256, 0.0], "beta": -0.042262138224706404, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u33", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u36", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 96, "ch": "u37", "label": "CR90p_u37", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.19829544969935284, -0.08570541164115558], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 784, "ch": "u37", "label": "CR90m_u37", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.19829544969935284, 0.08570541164115555], "duration": 592, "sigma": 64, "width": 336}}, {"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.15346818633025178, -0.0012144685092786356], "beta": 0.38916243463949746, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 944, "ch": "d17", "label": "Xp_d17", "pulse_shape": "drag", "parameters": {"amp": [0.3076356655772732, 0.0], "beta": 0.39739583400884354, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 1888, "ch": "d17", "label": "Y90m_d17", "pulse_shape": "drag", "parameters": {"amp": [-0.0012144685092786462, -0.15346818633025178], "beta": 0.38916243463949746, "duration": 96, "sigma": 24}}, {"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.0012733390537395279, 0.17197377691400392], "beta": 0.0937932437517005, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d18", "label": "CR90p_d18_u36", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.045270892109982516, 0.0005489315987896901], "duration": 848, "sigma": 64, "width": 592}}, {"name": "parametric_pulse", "t0": 1040, "ch": "d18", "label": "CR90m_d18_u36", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.045270892109982516, -0.0005489315987896846], "duration": 848, "sigma": 64, "width": 592}}, {"name": "fc", "t0": 1888, "ch": "d18", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1888, "ch": "d18", "label": "X90p_d18", "pulse_shape": "drag", "parameters": {"amp": [0.17197377691400392, -0.0012733390537395088], "beta": 0.0937932437517005, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u33", "phase": -3.141592653589793}, {"name": "fc", "t0": 1888, "ch": "u33", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u36", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 96, "ch": "u36", "label": "CR90p_u36", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.015991039722218707, -0.16580392356107], "duration": 848, "sigma": 64, "width": 592}}, {"name": "parametric_pulse", "t0": 1040, "ch": "u36", "label": "CR90m_u36", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.015991039722218728, 0.16580392356107], "duration": 848, "sigma": 64, "width": 592}}, {"name": "fc", "t0": 1888, "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": 1888, "ch": "u44", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [18, 21], "sequence": [{"name": "fc", "t0": 1072, "ch": "d18", "phase": -0.7788001992459254}, {"name": "CX_d21_u39", "t0": 0, "ch": "d21"}, {"name": "fc", "t0": 1072, "ch": "d21", "phase": 0.11607276347360015}, {"name": "fc", "t0": 1072, "ch": "u33", "phase": -0.7788001992459254}, {"name": "fc", "t0": 1072, "ch": "u36", "phase": -0.7788001992459254}, {"name": "parametric_pulse", "t0": 0, "ch": "u39", "label": "CX_u39", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2914518814335473, -0.30126129151775777], "duration": 1072, "sigma": 64, "width": 816}}, {"name": "fc", "t0": 1072, "ch": "u39", "phase": 0.11607276347360015}, {"name": "fc", "t0": 1072, "ch": "u44", "phase": -0.7788001992459254}, {"name": "fc", "t0": 1072, "ch": "u48", "phase": 0.11607276347360015}]}, {"name": "cx", "qubits": [19, 16], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d16", "label": "X90p_d16", "pulse_shape": "drag", "parameters": {"amp": [0.15578396778543022, -0.0009395851439274077], "beta": 0.3694355026580886, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d16", "label": "CR90p_d16_u40", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05728479453204911, 2.1847801862480637e-05], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 784, "ch": "d16", "label": "CR90m_d16_u40", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05728479453204911, -2.184780186247362e-05], "duration": 592, "sigma": 64, "width": 336}}, {"name": "fc", "t0": 0, "ch": "d19", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d19", "label": "Ym_d19", "pulse_shape": "drag", "parameters": {"amp": [-5.844910386407118e-17, -0.3181821017279743], "beta": -0.12094169311543869, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 688, "ch": "d19", "label": "Xp_d19", "pulse_shape": "drag", "parameters": {"amp": [0.3181821017279743, 0.0], "beta": -0.12094169311543869, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u35", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 96, "ch": "u40", "label": "CR90p_u40", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.4025129004239625, -0.04740063542212419], "duration": 592, "sigma": 64, "width": 336}}, {"name": "parametric_pulse", "t0": 784, "ch": "u40", "label": "CR90m_u40", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.4025129004239625, 0.04740063542212424], "duration": 592, "sigma": 64, "width": 336}}, {"name": "fc", "t0": 0, "ch": "u43", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "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": [-5.844910386407118e-17, -0.3181821017279743], "beta": -0.12094169311543869, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 656, "ch": "d19", "label": "Xp_d19", "pulse_shape": "drag", "parameters": {"amp": [0.3181821017279743, 0.0], "beta": -0.12094169311543869, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 0, "ch": "d20", "label": "X90p_d20", "pulse_shape": "drag", "parameters": {"amp": [0.15684854113081004, -0.00013641015213278912], "beta": -0.9300587784605402, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d20", "label": "CR90p_d20_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.051689679745647955, -0.0001550572933220417], "duration": 560, "sigma": 64, "width": 304}}, {"name": "parametric_pulse", "t0": 752, "ch": "d20", "label": "CR90m_d20_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.051689679745647955, 0.00015505729332204805], "duration": 560, "sigma": 64, "width": 304}}, {"name": "fc", "t0": 0, "ch": "u35", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 96, "ch": "u41", "label": "CR90p_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.579741785343308, 0.15832914596475087], "duration": 560, "sigma": 64, "width": 304}}, {"name": "parametric_pulse", "t0": 752, "ch": "u41", "label": "CR90m_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.579741785343308, -0.15832914596475078], "duration": 560, "sigma": 64, "width": 304}}, {"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": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d19", "label": "Ym_d19", "pulse_shape": "drag", "parameters": {"amp": [-5.844910386407118e-17, -0.3181821017279743], "beta": -0.12094169311543869, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 512, "ch": "d19", "label": "Xp_d19", "pulse_shape": "drag", "parameters": {"amp": [0.3181821017279743, 0.0], "beta": -0.12094169311543869, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "X90p_d22", "pulse_shape": "drag", "parameters": {"amp": [0.15744221779294026, 0.0032887325288609133], "beta": -1.9796822401357297, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d22", "label": "CR90p_d22_u42", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.08764177754225944, 0.007643796440772827], "duration": 416, "sigma": 64, "width": 160}}, {"name": "parametric_pulse", "t0": 608, "ch": "d22", "label": "CR90m_d22_u42", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.08764177754225944, -0.007643796440772816], "duration": 416, "sigma": 64, "width": 160}}, {"name": "fc", "t0": 0, "ch": "u35", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 96, "ch": "u42", "label": "CR90p_u42", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.34201968272462824, -0.5805672922236661], "duration": 416, "sigma": 64, "width": 160}}, {"name": "parametric_pulse", "t0": 608, "ch": "u42", "label": "CR90m_u42", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3420196827246282, 0.5805672922236661], "duration": 416, "sigma": 64, "width": 160}}, {"name": "fc", "t0": 0, "ch": "u43", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u46", "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.15862945862324201, -0.0007113090309505842], "beta": -0.08938043356078003, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 656, "ch": "d19", "label": "Xp_d19", "pulse_shape": "drag", "parameters": {"amp": [0.3181821017279743, 0.0], "beta": -0.12094169311543869, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 1312, "ch": "d19", "label": "Y90m_d19", "pulse_shape": "drag", "parameters": {"amp": [-0.0007113090309505579, -0.15862945862324201], "beta": -0.08938043356078003, "duration": 96, "sigma": 24}}, {"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.00013641015213281416, 0.15684854113081004], "beta": -0.9300587784605402, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d20", "label": "CR90p_d20_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.051689679745647955, -0.0001550572933220417], "duration": 560, "sigma": 64, "width": 304}}, {"name": "parametric_pulse", "t0": 752, "ch": "d20", "label": "CR90m_d20_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.051689679745647955, 0.00015505729332204805], "duration": 560, "sigma": 64, "width": 304}}, {"name": "fc", "t0": 1312, "ch": "d20", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1312, "ch": "d20", "label": "X90p_d20", "pulse_shape": "drag", "parameters": {"amp": [0.15684854113081004, -0.00013641015213278912], "beta": -0.9300587784605402, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u35", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u41", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 96, "ch": "u41", "label": "CR90p_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.579741785343308, 0.15832914596475087], "duration": 560, "sigma": 64, "width": 304}}, {"name": "parametric_pulse", "t0": 752, "ch": "u41", "label": "CR90m_u41", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.579741785343308, -0.15832914596475078], "duration": 560, "sigma": 64, "width": 304}}, {"name": "fc", "t0": 1312, "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": "fc", "t0": 0, "ch": "d18", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "Y90p_d18", "pulse_shape": "drag", "parameters": {"amp": [0.0012733390537395279, 0.17197377691400392], "beta": 0.0937932437517005, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 1168, "ch": "d18", "phase": -0.7788001992459254}, {"name": "fc", "t0": 1168, "ch": "d18", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1168, "ch": "d18", "label": "Y90p_d18", "pulse_shape": "drag", "parameters": {"amp": [0.0012733390537395279, 0.17197377691400392], "beta": 0.0937932437517005, "duration": 96, "sigma": 24}}, {"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.0004058617076622846, 0.1555604175819821], "beta": -0.7993720433737146, "duration": 96, "sigma": 24}}, {"name": "CX_d21_u39", "t0": 96, "ch": "d21"}, {"name": "fc", "t0": 1168, "ch": "d21", "phase": 0.11607276347360015}, {"name": "fc", "t0": 1168, "ch": "d21", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1168, "ch": "d21", "label": "Y90p_d21", "pulse_shape": "drag", "parameters": {"amp": [-0.0004058617076622846, 0.1555604175819821], "beta": -0.7993720433737146, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u33", "phase": -3.141592653589793}, {"name": "fc", "t0": 1168, "ch": "u33", "phase": -0.7788001992459254}, {"name": "fc", "t0": 1168, "ch": "u33", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u36", "phase": -3.141592653589793}, {"name": "fc", "t0": 1168, "ch": "u36", "phase": -0.7788001992459254}, {"name": "fc", "t0": 1168, "ch": "u36", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u39", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 96, "ch": "u39", "label": "CX_u39", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.2914518814335473, -0.30126129151775777], "duration": 1072, "sigma": 64, "width": 816}}, {"name": "fc", "t0": 1168, "ch": "u39", "phase": 0.11607276347360015}, {"name": "fc", "t0": 1168, "ch": "u39", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u44", "phase": -3.141592653589793}, {"name": "fc", "t0": 1168, "ch": "u44", "phase": -0.7788001992459254}, {"name": "fc", "t0": 1168, "ch": "u44", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u48", "phase": -3.141592653589793}, {"name": "fc", "t0": 1168, "ch": "u48", "phase": 0.11607276347360015}, {"name": "fc", "t0": 1168, "ch": "u48", "phase": -3.141592653589793}]}, {"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": [-5.733494115424727e-17, -0.31211688243046126], "beta": -0.828538592557013, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 576, "ch": "d21", "label": "Xp_d21", "pulse_shape": "drag", "parameters": {"amp": [0.31211688243046126, 0.0], "beta": -0.828538592557013, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 0, "ch": "d23", "label": "X90p_d23", "pulse_shape": "drag", "parameters": {"amp": [0.16393062969410704, 0.0019387946847995413], "beta": -1.5630230309777167, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d23", "label": "CR90p_d23_u45", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.064443562758363, 0.0013333620694938317], "duration": 480, "sigma": 64, "width": 224}}, {"name": "parametric_pulse", "t0": 672, "ch": "d23", "label": "CR90m_d23_u45", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.064443562758363, -0.001333362069493824], "duration": 480, "sigma": 64, "width": 224}}, {"name": "fc", "t0": 0, "ch": "u39", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 96, "ch": "u45", "label": "CR90p_u45", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.681134296615025, 0.18301080643053796], "duration": 480, "sigma": 64, "width": 224}}, {"name": "parametric_pulse", "t0": 672, "ch": "u45", "label": "CR90m_u45", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.681134296615025, -0.18301080643053805], "duration": 480, "sigma": 64, "width": 224}}, {"name": "fc", "t0": 0, "ch": "u48", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [22, 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.15862945862324201, -0.0007113090309505842], "beta": -0.08938043356078003, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 512, "ch": "d19", "label": "Xp_d19", "pulse_shape": "drag", "parameters": {"amp": [0.3181821017279743, 0.0], "beta": -0.12094169311543869, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 1024, "ch": "d19", "label": "Y90m_d19", "pulse_shape": "drag", "parameters": {"amp": [-0.0007113090309505579, -0.15862945862324201], "beta": -0.08938043356078003, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "d22", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "Y90p_d22", "pulse_shape": "drag", "parameters": {"amp": [-0.003288732528860913, 0.15744221779294026], "beta": -1.9796822401357297, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d22", "label": "CR90p_d22_u42", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.08764177754225944, 0.007643796440772827], "duration": 416, "sigma": 64, "width": 160}}, {"name": "parametric_pulse", "t0": 608, "ch": "d22", "label": "CR90m_d22_u42", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.08764177754225944, -0.007643796440772816], "duration": 416, "sigma": 64, "width": 160}}, {"name": "fc", "t0": 1024, "ch": "d22", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1024, "ch": "d22", "label": "X90p_d22", "pulse_shape": "drag", "parameters": {"amp": [0.15744221779294026, 0.0032887325288609133], "beta": -1.9796822401357297, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u35", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u42", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 96, "ch": "u42", "label": "CR90p_u42", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.34201968272462824, -0.5805672922236661], "duration": 416, "sigma": 64, "width": 160}}, {"name": "parametric_pulse", "t0": 608, "ch": "u42", "label": "CR90m_u42", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3420196827246282, 0.5805672922236661], "duration": 416, "sigma": 64, "width": 160}}, {"name": "fc", "t0": 1024, "ch": "u42", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u43", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u46", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u52", "phase": -3.141592653589793}, {"name": "fc", "t0": 1024, "ch": "u52", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [22, 25], "sequence": [{"name": "fc", "t0": 0, "ch": "d22", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "Y90p_d22", "pulse_shape": "drag", "parameters": {"amp": [-0.003288732528860913, 0.15744221779294026], "beta": -1.9796822401357297, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d22", "label": "CR90p_d22_u52", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05620259412823114, 0.003211386153104213], "duration": 560, "sigma": 64, "width": 304}}, {"name": "parametric_pulse", "t0": 752, "ch": "d22", "label": "CR90m_d22_u52", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05620259412823114, -0.003211386153104206], "duration": 560, "sigma": 64, "width": 304}}, {"name": "fc", "t0": 1312, "ch": "d22", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1312, "ch": "d22", "label": "X90p_d22", "pulse_shape": "drag", "parameters": {"amp": [0.15744221779294026, 0.0032887325288609133], "beta": -1.9796822401357297, "duration": 96, "sigma": 24}}, {"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.15737996805494298, 0.004764805917492122], "beta": -2.01836384023658, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 656, "ch": "d25", "label": "Xp_d25", "pulse_shape": "drag", "parameters": {"amp": [0.31639262881276276, 0.0], "beta": -1.9720152957062593, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 1312, "ch": "d25", "label": "Y90m_d25", "pulse_shape": "drag", "parameters": {"amp": [0.00476480591749204, -0.15737996805494298], "beta": -2.01836384023658, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u42", "phase": -3.141592653589793}, {"name": "fc", "t0": 1312, "ch": "u42", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u47", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u51", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u52", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 96, "ch": "u52", "label": "CR90p_u52", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.28781013397258165, 0.6980195058098709], "duration": 560, "sigma": 64, "width": 304}}, {"name": "parametric_pulse", "t0": 752, "ch": "u52", "label": "CR90m_u52", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.28781013397258176, -0.6980195058098709], "duration": 560, "sigma": 64, "width": 304}}, {"name": "fc", "t0": 1312, "ch": "u52", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u55", "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.1555604175819821, 0.000405861707662296], "beta": -0.7993720433737146, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 576, "ch": "d21", "label": "Xp_d21", "pulse_shape": "drag", "parameters": {"amp": [0.31211688243046126, 0.0], "beta": -0.828538592557013, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 1152, "ch": "d21", "label": "Y90m_d21", "pulse_shape": "drag", "parameters": {"amp": [0.0004058617076622656, -0.1555604175819821], "beta": -0.7993720433737146, "duration": 96, "sigma": 24}}, {"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.0019387946847995309, 0.16393062969410704], "beta": -1.5630230309777167, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d23", "label": "CR90p_d23_u45", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.064443562758363, 0.0013333620694938317], "duration": 480, "sigma": 64, "width": 224}}, {"name": "parametric_pulse", "t0": 672, "ch": "d23", "label": "CR90m_d23_u45", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.064443562758363, -0.001333362069493824], "duration": 480, "sigma": 64, "width": 224}}, {"name": "fc", "t0": 1152, "ch": "d23", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1152, "ch": "d23", "label": "X90p_d23", "pulse_shape": "drag", "parameters": {"amp": [0.16393062969410704, 0.0019387946847995413], "beta": -1.5630230309777167, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u39", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u45", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 96, "ch": "u45", "label": "CR90p_u45", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.681134296615025, 0.18301080643053796], "duration": 480, "sigma": 64, "width": 224}}, {"name": "parametric_pulse", "t0": 672, "ch": "u45", "label": "CR90m_u45", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.681134296615025, -0.18301080643053805], "duration": 480, "sigma": 64, "width": 224}}, {"name": "fc", "t0": 1152, "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": 1152, "ch": "u50", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [23, 24], "sequence": [{"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.0019387946847995309, 0.16393062969410704], "beta": -1.5630230309777167, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d23", "label": "CR90p_d23_u50", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0780059843945897, 0.005691483052770985], "duration": 464, "sigma": 64, "width": 208}}, {"name": "parametric_pulse", "t0": 656, "ch": "d23", "label": "CR90m_d23_u50", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0780059843945897, -0.005691483052770976], "duration": 464, "sigma": 64, "width": 208}}, {"name": "fc", "t0": 1120, "ch": "d23", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1120, "ch": "d23", "label": "X90p_d23", "pulse_shape": "drag", "parameters": {"amp": [0.16393062969410704, 0.0019387946847995413], "beta": -1.5630230309777167, "duration": 96, "sigma": 24}}, {"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.13890553470296665, 0.003155819943026602], "beta": -0.8002313498903486, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 560, "ch": "d24", "label": "Xp_d24", "pulse_shape": "drag", "parameters": {"amp": [0.2806719714114787, 0.0], "beta": -0.7982115544611899, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d24", "label": "Y90m_d24", "pulse_shape": "drag", "parameters": {"amp": [0.0031558199430266136, -0.13890553470296665], "beta": -0.8002313498903486, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u45", "phase": -3.141592653589793}, {"name": "fc", "t0": 1120, "ch": "u45", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u49", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u50", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 96, "ch": "u50", "label": "CR90p_u50", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3485481397211566, 0.3253494714057114], "duration": 464, "sigma": 64, "width": 208}}, {"name": "parametric_pulse", "t0": 656, "ch": "u50", "label": "CR90m_u50", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.34854813972115656, -0.32534947140571147], "duration": 464, "sigma": 64, "width": 208}}, {"name": "fc", "t0": 1120, "ch": "u50", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u53", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [24, 23], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d23", "label": "X90p_d23", "pulse_shape": "drag", "parameters": {"amp": [0.16393062969410704, 0.0019387946847995413], "beta": -1.5630230309777167, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d23", "label": "CR90p_d23_u50", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0780059843945897, 0.005691483052770985], "duration": 464, "sigma": 64, "width": 208}}, {"name": "parametric_pulse", "t0": 656, "ch": "d23", "label": "CR90m_d23_u50", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0780059843945897, -0.005691483052770976], "duration": 464, "sigma": 64, "width": 208}}, {"name": "fc", "t0": 0, "ch": "d24", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d24", "label": "Ym_d24", "pulse_shape": "drag", "parameters": {"amp": [-5.155860470991672e-17, -0.2806719714114787], "beta": -0.7982115544611899, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 560, "ch": "d24", "label": "Xp_d24", "pulse_shape": "drag", "parameters": {"amp": [0.2806719714114787, 0.0], "beta": -0.7982115544611899, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u49", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 96, "ch": "u50", "label": "CR90p_u50", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.3485481397211566, 0.3253494714057114], "duration": 464, "sigma": 64, "width": 208}}, {"name": "parametric_pulse", "t0": 656, "ch": "u50", "label": "CR90m_u50", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.34854813972115656, -0.32534947140571147], "duration": 464, "sigma": 64, "width": 208}}, {"name": "fc", "t0": 0, "ch": "u53", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [24, 25], "sequence": [{"name": "fc", "t0": 1456, "ch": "d24", "phase": 1.695978148979458}, {"name": "CX_d25_u51", "t0": 0, "ch": "d25"}, {"name": "fc", "t0": 1456, "ch": "d25", "phase": 0.03618930047082676}, {"name": "fc", "t0": 1456, "ch": "u47", "phase": 0.03618930047082676}, {"name": "fc", "t0": 1456, "ch": "u49", "phase": 1.695978148979458}, {"name": "parametric_pulse", "t0": 0, "ch": "u51", "label": "CX_u51", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03807505604819415, 0.2087367773701757], "duration": 1456, "sigma": 64, "width": 1200}}, {"name": "fc", "t0": 1456, "ch": "u51", "phase": 0.03618930047082676}, {"name": "fc", "t0": 1456, "ch": "u53", "phase": 1.695978148979458}, {"name": "fc", "t0": 1456, "ch": "u55", "phase": 0.03618930047082676}]}, {"name": "cx", "qubits": [25, 22], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "X90p_d22", "pulse_shape": "drag", "parameters": {"amp": [0.15744221779294026, 0.0032887325288609133], "beta": -1.9796822401357297, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 96, "ch": "d22", "label": "CR90p_d22_u52", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05620259412823114, 0.003211386153104213], "duration": 560, "sigma": 64, "width": 304}}, {"name": "parametric_pulse", "t0": 752, "ch": "d22", "label": "CR90m_d22_u52", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.05620259412823114, -0.003211386153104206], "duration": 560, "sigma": 64, "width": 304}}, {"name": "fc", "t0": 0, "ch": "d25", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 0, "ch": "d25", "label": "Ym_d25", "pulse_shape": "drag", "parameters": {"amp": [-5.812038302240498e-17, -0.31639262881276276], "beta": -1.9720152957062593, "duration": 96, "sigma": 24}}, {"name": "parametric_pulse", "t0": 656, "ch": "d25", "label": "Xp_d25", "pulse_shape": "drag", "parameters": {"amp": [0.31639262881276276, 0.0], "beta": -1.9720152957062593, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u47", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u51", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 96, "ch": "u52", "label": "CR90p_u52", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.28781013397258165, 0.6980195058098709], "duration": 560, "sigma": 64, "width": 304}}, {"name": "parametric_pulse", "t0": 752, "ch": "u52", "label": "CR90m_u52", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.28781013397258176, -0.6980195058098709], "duration": 560, "sigma": 64, "width": 304}}, {"name": "fc", "t0": 0, "ch": "u55", "phase": 1.5707963267948966}]}, {"name": "cx", "qubits": [25, 24], "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": [-0.0031558199430265998, 0.13890553470296665], "beta": -0.8002313498903486, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 1552, "ch": "d24", "phase": 1.695978148979458}, {"name": "fc", "t0": 1552, "ch": "d24", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1552, "ch": "d24", "label": "Y90p_d24", "pulse_shape": "drag", "parameters": {"amp": [-0.0031558199430265998, 0.13890553470296665], "beta": -0.8002313498903486, "duration": 96, "sigma": 24}}, {"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.00476480591749213, 0.15737996805494298], "beta": -2.01836384023658, "duration": 96, "sigma": 24}}, {"name": "CX_d25_u51", "t0": 96, "ch": "d25"}, {"name": "fc", "t0": 1552, "ch": "d25", "phase": 0.03618930047082676}, {"name": "fc", "t0": 1552, "ch": "d25", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1552, "ch": "d25", "label": "Y90p_d25", "pulse_shape": "drag", "parameters": {"amp": [-0.00476480591749213, 0.15737996805494298], "beta": -2.01836384023658, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u47", "phase": -3.141592653589793}, {"name": "fc", "t0": 1552, "ch": "u47", "phase": 0.03618930047082676}, {"name": "fc", "t0": 1552, "ch": "u47", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u49", "phase": -3.141592653589793}, {"name": "fc", "t0": 1552, "ch": "u49", "phase": 1.695978148979458}, {"name": "fc", "t0": 1552, "ch": "u49", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u51", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 96, "ch": "u51", "label": "CX_u51", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.03807505604819415, 0.2087367773701757], "duration": 1456, "sigma": 64, "width": 1200}}, {"name": "fc", "t0": 1552, "ch": "u51", "phase": 0.03618930047082676}, {"name": "fc", "t0": 1552, "ch": "u51", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u53", "phase": -3.141592653589793}, {"name": "fc", "t0": 1552, "ch": "u53", "phase": 1.695978148979458}, {"name": "fc", "t0": 1552, "ch": "u53", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u55", "phase": -3.141592653589793}, {"name": "fc", "t0": 1552, "ch": "u55", "phase": 0.03618930047082676}, {"name": "fc", "t0": 1552, "ch": "u55", "phase": -3.141592653589793}]}, {"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.00476480591749213, 0.15737996805494298], "beta": -2.01836384023658, "duration": 96, "sigma": 24}}, {"name": "CX_d25_u55", "t0": 96, "ch": "d25"}, {"name": "fc", "t0": 1104, "ch": "d25", "phase": 0.07132624222443677}, {"name": "fc", "t0": 1104, "ch": "d25", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1104, "ch": "d25", "label": "Y90p_d25", "pulse_shape": "drag", "parameters": {"amp": [-0.00476480591749213, 0.15737996805494298], "beta": -2.01836384023658, "duration": 96, "sigma": 24}}, {"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.001853094793603797, 0.15795871529932215], "beta": -1.2894317521630763, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 1104, "ch": "d26", "phase": -0.9455635290005145}, {"name": "fc", "t0": 1104, "ch": "d26", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 1104, "ch": "d26", "label": "Y90p_d26", "pulse_shape": "drag", "parameters": {"amp": [-0.001853094793603797, 0.15795871529932215], "beta": -1.2894317521630763, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 0, "ch": "u47", "phase": -3.141592653589793}, {"name": "fc", "t0": 1104, "ch": "u47", "phase": 0.07132624222443677}, {"name": "fc", "t0": 1104, "ch": "u47", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u51", "phase": -3.141592653589793}, {"name": "fc", "t0": 1104, "ch": "u51", "phase": 0.07132624222443677}, {"name": "fc", "t0": 1104, "ch": "u51", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u54", "phase": -3.141592653589793}, {"name": "fc", "t0": 1104, "ch": "u54", "phase": -0.9455635290005145}, {"name": "fc", "t0": 1104, "ch": "u54", "phase": -3.141592653589793}, {"name": "fc", "t0": 0, "ch": "u55", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 96, "ch": "u55", "label": "CX_u55", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3794666797923624, 0.010725452856042716], "duration": 1008, "sigma": 64, "width": 752}}, {"name": "fc", "t0": 1104, "ch": "u55", "phase": 0.07132624222443677}, {"name": "fc", "t0": 1104, "ch": "u55", "phase": -3.141592653589793}]}, {"name": "cx", "qubits": [26, 25], "sequence": [{"name": "CX_d25_u55", "t0": 0, "ch": "d25"}, {"name": "fc", "t0": 1008, "ch": "d25", "phase": 0.07132624222443677}, {"name": "fc", "t0": 1008, "ch": "d26", "phase": -0.9455635290005145}, {"name": "fc", "t0": 1008, "ch": "u47", "phase": 0.07132624222443677}, {"name": "fc", "t0": 1008, "ch": "u51", "phase": 0.07132624222443677}, {"name": "fc", "t0": 1008, "ch": "u54", "phase": -0.9455635290005145}, {"name": "parametric_pulse", "t0": 0, "ch": "u55", "label": "CX_u55", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.3794666797923624, 0.010725452856042716], "duration": 1008, "sigma": 64, "width": 752}}, {"name": "fc", "t0": 1008, "ch": "u55", "phase": 0.07132624222443677}]}, {"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.3927139098867291, 0.0323648487338966], "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.3927139098867291, 0.0323648487338966], "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.045896238218917994, 0.29626605495289593], "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.012120522048478537, 0.2497060130338722], "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.3258251723985101, 0.20706995021122968], "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.20443753388890348, 0.15157686082454483], "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.2357111982365288, 0.08330804898627638], "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.08957759758490648, -0.22265635856834753], "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.35989903386119937, 0.008525574806149457], "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.32608476861731767, 0.28030113035053994], "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.14916829768339646, 0.23695742015441854], "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.4959721684907404, -0.08959692005081772], "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.1822999440603857, -0.17107521853144086], "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.2651693178336773, -0.14030407292599253], "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.05039234156283412, 0.3495866872634235], "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.21876963571650615, -0.32346575782989334], "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.005519899348732778, 0.2999492135531944], "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.19493808533691834, 0.24616080696401763], "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.43900869959640987, -0.04731434538984116], "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.27753832930805483, 0.24468852806148003], "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.21324734090224484, 0.1814540481723177], "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.3075269526417359, -0.0027221168027006895], "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.495639961081143, -0.02638958020664765], "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.42591259898848555, -0.16041406553938314], "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.22036771302180688, 0.00313419168822888], "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.3874092808867427, -0.044878158193233875], "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.3098028638103177, 0.19299529935966248], "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.3145634453142269, 0.28778001986941937], "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.045896238218917994, 0.29626605495289593], "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.2651693178336773, -0.14030407292599253], "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.3075269526417359, -0.0027221168027006895], "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.495639961081143, -0.02638958020664765], "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.42591259898848555, -0.16041406553938314], "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.22036771302180688, 0.00313419168822888], "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.3874092808867427, -0.044878158193233875], "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.3098028638103177, 0.19299529935966248], "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.3145634453142269, 0.28778001986941937], "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.012120522048478537, 0.2497060130338722], "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.3258251723985101, 0.20706995021122968], "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.20443753388890348, 0.15157686082454483], "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.2357111982365288, 0.08330804898627638], "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.08957759758490648, -0.22265635856834753], "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.35989903386119937, 0.008525574806149457], "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.32608476861731767, 0.28030113035053994], "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.14916829768339646, 0.23695742015441854], "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.4959721684907404, -0.08959692005081772], "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.1822999440603857, -0.17107521853144086], "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.05039234156283412, 0.3495866872634235], "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.21876963571650615, -0.32346575782989334], "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.005519899348732778, 0.2999492135531944], "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.19493808533691834, 0.24616080696401763], "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.43900869959640987, -0.04731434538984116], "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.27753832930805483, 0.24468852806148003], "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.21324734090224484, 0.1814540481723177], "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.15774386893037737, 0.0006278099039564522], "beta": -0.4710234832966056, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [1], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.1564567301458053, -0.002256834548888052], "beta": 0.9542241249038057, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [2], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "X90p_d2", "pulse_shape": "drag", "parameters": {"amp": [0.15822675399905328, 0.002151199231042627], "beta": -0.7328260898428217, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [3], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "X90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.15500278005568494, -0.001700976334608915], "beta": -0.21198323234491373, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [4], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "X90p_d4", "pulse_shape": "drag", "parameters": {"amp": [0.1632520111745599, -0.0024529138667693765], "beta": 0.2952864488310726, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [5], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "X90p_d5", "pulse_shape": "drag", "parameters": {"amp": [0.164857433996522, -0.0010317088824174441], "beta": -0.059582933453111414, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [6], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "X90p_d6", "pulse_shape": "drag", "parameters": {"amp": [0.15530334844125887, 0.0006080326814432486], "beta": -0.7798212399455098, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [7], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "X90p_d7", "pulse_shape": "drag", "parameters": {"amp": [0.1406328104361194, 8.382431406254624e-05], "beta": -0.25625061802694327, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [8], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d8", "label": "X90p_d8", "pulse_shape": "drag", "parameters": {"amp": [0.1556863667188167, -0.001965337974637343], "beta": -0.13752313589480156, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [9], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d9", "label": "X90p_d9", "pulse_shape": "drag", "parameters": {"amp": [0.159631733855157, 0.00514774945264717], "beta": -2.2834769260859216, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [10], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d10", "label": "X90p_d10", "pulse_shape": "drag", "parameters": {"amp": [0.1494879217747371, 0.000732300638868563], "beta": -0.9803963406427126, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [11], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d11", "label": "X90p_d11", "pulse_shape": "drag", "parameters": {"amp": [0.15742893533557556, 1.912309532594517e-05], "beta": -0.7315063525627234, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [12], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "X90p_d12", "pulse_shape": "drag", "parameters": {"amp": [0.18084237079143614, -0.00205582703476618], "beta": -0.9419812464998938, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [13], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d13", "label": "X90p_d13", "pulse_shape": "drag", "parameters": {"amp": [0.16517184207153707, -0.001582133842445449], "beta": 0.05068633655303779, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [14], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d14", "label": "X90p_d14", "pulse_shape": "drag", "parameters": {"amp": [0.16249428516138684, 0.0011830976540895455], "beta": -0.674818965264572, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [15], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d15", "label": "X90p_d15", "pulse_shape": "drag", "parameters": {"amp": [0.1993954173299256, 0.00019669884707466923], "beta": -0.3090561996429837, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [16], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d16", "label": "X90p_d16", "pulse_shape": "drag", "parameters": {"amp": [0.15578396778543022, -0.0009395851439274077], "beta": 0.3694355026580886, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [17], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d17", "label": "X90p_d17", "pulse_shape": "drag", "parameters": {"amp": [0.15346818633025178, -0.0012144685092786356], "beta": 0.38916243463949746, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [18], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "X90p_d18", "pulse_shape": "drag", "parameters": {"amp": [0.17197377691400392, -0.0012733390537395088], "beta": 0.0937932437517005, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [19], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d19", "label": "X90p_d19", "pulse_shape": "drag", "parameters": {"amp": [0.15862945862324201, -0.0007113090309505842], "beta": -0.08938043356078003, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [20], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d20", "label": "X90p_d20", "pulse_shape": "drag", "parameters": {"amp": [0.15684854113081004, -0.00013641015213278912], "beta": -0.9300587784605402, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [21], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d21", "label": "X90p_d21", "pulse_shape": "drag", "parameters": {"amp": [0.1555604175819821, 0.000405861707662296], "beta": -0.7993720433737146, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [22], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "X90p_d22", "pulse_shape": "drag", "parameters": {"amp": [0.15744221779294026, 0.0032887325288609133], "beta": -1.9796822401357297, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [23], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d23", "label": "X90p_d23", "pulse_shape": "drag", "parameters": {"amp": [0.16393062969410704, 0.0019387946847995413], "beta": -1.5630230309777167, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [24], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d24", "label": "X90p_d24", "pulse_shape": "drag", "parameters": {"amp": [0.13890553470296665, 0.003155819943026602], "beta": -0.8002313498903486, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [25], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d25", "label": "X90p_d25", "pulse_shape": "drag", "parameters": {"amp": [0.15737996805494298, 0.004764805917492122], "beta": -2.01836384023658, "duration": 96, "sigma": 24}}]}, {"name": "sx", "qubits": [26], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d26", "label": "X90p_d26", "pulse_shape": "drag", "parameters": {"amp": [0.15795871529932215, 0.001853094793603819], "beta": -1.2894317521630763, "duration": 96, "sigma": 24}}]}, {"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.0006278099039564322, 0.15774386893037737], "beta": -0.4710234832966056, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u1", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.002256834548888062, 0.1564567301458053], "beta": 0.9542241249038057, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d1", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u0", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u0", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u4", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u8", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.002151199231042608, 0.15822675399905328], "beta": -0.7328260898428217, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u2", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u2", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u6", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.001700976334608921, 0.15500278005568494], "beta": -0.21198323234491373, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d3", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u10", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u10", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u5", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.0024529138667694, 0.1632520111745599], "beta": 0.2952864488310726, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d4", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u13", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u13", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u3", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.0010317088824174571, 0.164857433996522], "beta": -0.059582933453111414, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d5", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u16", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u16", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u7", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.0006080326814432282, 0.15530334844125887], "beta": -0.7798212399455098, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d6", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u14", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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": [-8.382431406252677e-05, 0.1406328104361194], "beta": -0.25625061802694327, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d7", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u12", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u12", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u20", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u20", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u9", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.0019653379746373423, 0.1556863667188167], "beta": -0.13752313589480156, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d8", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u11", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u19", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u19", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u22", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.005147749452647159, 0.159631733855157], "beta": -2.2834769260859216, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d9", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u17", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.000732300638868539, 0.1494879217747371], "beta": -0.9803963406427126, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d10", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u15", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u15", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u24", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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": [-1.912309532595168e-05, 0.15742893533557556], "beta": -0.7315063525627234, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d11", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u18", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u18", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u29", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.0020558270347661805, 0.18084237079143614], "beta": -0.9419812464998938, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d12", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u21", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u21", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u27", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u27", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u32", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.0015821338424454648, 0.16517184207153707], "beta": 0.05068633655303779, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d13", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u25", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u25", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u30", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.0011830976540895314, 0.16249428516138684], "beta": -0.674818965264572, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d14", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u23", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u23", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u28", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u28", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u34", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.00019669884707466427, 0.1993954173299256], "beta": -0.3090561996429837, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d15", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u26", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u26", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u37", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.0009395851439274179, 0.15578396778543022], "beta": 0.3694355026580886, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d16", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u31", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u31", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u40", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.0012144685092786614, 0.15346818633025178], "beta": 0.38916243463949746, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d17", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u38", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.0012733390537395279, 0.17197377691400392], "beta": 0.0937932437517005, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d18", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u33", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u33", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u36", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u36", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u44", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.0007113090309506089, 0.15862945862324201], "beta": -0.08938043356078003, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d19", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u35", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u35", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u43", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u43", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u46", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.00013641015213281416, 0.15684854113081004], "beta": -0.9300587784605402, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d20", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u41", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.0004058617076622846, 0.1555604175819821], "beta": -0.7993720433737146, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d21", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u39", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u39", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u48", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.003288732528860913, 0.15744221779294026], "beta": -1.9796822401357297, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d22", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u42", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u42", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u52", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.0019387946847995309, 0.16393062969410704], "beta": -1.5630230309777167, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d23", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u45", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u45", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u50", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.0031558199430265998, 0.13890553470296665], "beta": -0.8002313498903486, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d24", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u49", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u49", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u53", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.00476480591749213, 0.15737996805494298], "beta": -2.01836384023658, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d25", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u47", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u47", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u51", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "ch": "u51", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u55", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.001853094793603797, 0.15795871529932215], "beta": -1.2894317521630763, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d26", "phase": "-(P0)"}, {"name": "fc", "t0": 0, "ch": "u54", "phase": "-(P1)"}, {"name": "fc", "t0": 96, "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.15774386893037737, 0.0006278099039564522], "beta": -0.4710234832966056, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d0", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d0", "label": "X90m_d0", "pulse_shape": "drag", "parameters": {"amp": [-0.15774386893037737, -0.0006278099039564224], "beta": -0.4710234832966056, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d0", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u1", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u1", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.1564567301458053, -0.002256834548888052], "beta": 0.9542241249038057, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d1", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d1", "label": "X90m_d1", "pulse_shape": "drag", "parameters": {"amp": [-0.1564567301458053, 0.002256834548888037], "beta": 0.9542241249038057, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d1", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u0", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u0", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u0", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u4", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u4", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u4", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u8", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u8", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.15822675399905328, 0.002151199231042627], "beta": -0.7328260898428217, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d2", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d2", "label": "X90m_d2", "pulse_shape": "drag", "parameters": {"amp": [-0.15822675399905328, -0.0021511992310426337], "beta": -0.7328260898428217, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d2", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u2", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u2", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u2", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u6", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u6", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.15500278005568494, -0.001700976334608915], "beta": -0.21198323234491373, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d3", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d3", "label": "X90m_d3", "pulse_shape": "drag", "parameters": {"amp": [-0.15500278005568494, 0.0017009763346089648], "beta": -0.21198323234491373, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d3", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u10", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u10", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u10", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u5", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u5", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.1632520111745599, -0.0024529138667693765], "beta": 0.2952864488310726, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d4", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d4", "label": "X90m_d4", "pulse_shape": "drag", "parameters": {"amp": [-0.1632520111745599, 0.00245291386676941], "beta": 0.2952864488310726, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d4", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u13", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u13", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u13", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u3", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u3", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.164857433996522, -0.0010317088824174441], "beta": -0.059582933453111414, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d5", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d5", "label": "X90m_d5", "pulse_shape": "drag", "parameters": {"amp": [-0.164857433996522, 0.0010317088824174671], "beta": -0.059582933453111414, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d5", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u16", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u16", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u16", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u7", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u7", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.15530334844125887, 0.0006080326814432486], "beta": -0.7798212399455098, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d6", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d6", "label": "X90m_d6", "pulse_shape": "drag", "parameters": {"amp": [-0.15530334844125887, -0.0006080326814432187], "beta": -0.7798212399455098, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d6", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u14", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u14", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.1406328104361194, 8.382431406254624e-05], "beta": -0.25625061802694327, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d7", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d7", "label": "X90m_d7", "pulse_shape": "drag", "parameters": {"amp": [-0.1406328104361194, -8.382431406254938e-05], "beta": -0.25625061802694327, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d7", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u12", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u12", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u12", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u20", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u20", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u20", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u9", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u9", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.1556863667188167, -0.001965337974637343], "beta": -0.13752313589480156, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d8", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d8", "label": "X90m_d8", "pulse_shape": "drag", "parameters": {"amp": [-0.1556863667188167, 0.001965337974637386], "beta": -0.13752313589480156, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d8", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u11", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u11", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u11", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u19", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u19", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u19", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u22", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u22", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.159631733855157, 0.00514774945264717], "beta": -2.2834769260859216, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d9", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d9", "label": "X90m_d9", "pulse_shape": "drag", "parameters": {"amp": [-0.159631733855157, -0.00514774945264715], "beta": -2.2834769260859216, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d9", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u17", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u17", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.1494879217747371, 0.000732300638868563], "beta": -0.9803963406427126, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d10", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d10", "label": "X90m_d10", "pulse_shape": "drag", "parameters": {"amp": [-0.1494879217747371, -0.0007323006388685632], "beta": -0.9803963406427126, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d10", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u15", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u15", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u15", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u24", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u24", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.15742893533557556, 1.912309532594517e-05], "beta": -0.7315063525627234, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d11", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d11", "label": "X90m_d11", "pulse_shape": "drag", "parameters": {"amp": [-0.15742893533557556, -1.9123095325942042e-05], "beta": -0.7315063525627234, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d11", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u18", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u18", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u18", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u29", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u29", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.18084237079143614, -0.00205582703476618], "beta": -0.9419812464998938, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d12", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d12", "label": "X90m_d12", "pulse_shape": "drag", "parameters": {"amp": [-0.18084237079143614, 0.0020558270347661913], "beta": -0.9419812464998938, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d12", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u21", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u21", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u21", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u27", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u27", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u27", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u32", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u32", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.16517184207153707, -0.001582133842445449], "beta": 0.05068633655303779, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d13", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d13", "label": "X90m_d13", "pulse_shape": "drag", "parameters": {"amp": [-0.16517184207153707, 0.0015821338424454382], "beta": 0.05068633655303779, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d13", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u25", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u25", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u25", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u30", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u30", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.16249428516138684, 0.0011830976540895455], "beta": -0.674818965264572, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d14", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d14", "label": "X90m_d14", "pulse_shape": "drag", "parameters": {"amp": [-0.16249428516138684, -0.0011830976540895576], "beta": -0.674818965264572, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d14", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u23", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u23", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u23", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u28", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u28", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u28", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u34", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u34", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.1993954173299256, 0.00019669884707466923], "beta": -0.3090561996429837, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d15", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d15", "label": "X90m_d15", "pulse_shape": "drag", "parameters": {"amp": [-0.1993954173299256, -0.0001966988470746078], "beta": -0.3090561996429837, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d15", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u26", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u26", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u26", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u37", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u37", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.15578396778543022, -0.0009395851439274077], "beta": 0.3694355026580886, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d16", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d16", "label": "X90m_d16", "pulse_shape": "drag", "parameters": {"amp": [-0.15578396778543022, 0.0009395851439273927], "beta": 0.3694355026580886, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d16", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u31", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u31", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u31", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u40", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u40", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.15346818633025178, -0.0012144685092786356], "beta": 0.38916243463949746, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d17", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d17", "label": "X90m_d17", "pulse_shape": "drag", "parameters": {"amp": [-0.15346818633025178, 0.0012144685092786364], "beta": 0.38916243463949746, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d17", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u38", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u38", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.17197377691400392, -0.0012733390537395088], "beta": 0.0937932437517005, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d18", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d18", "label": "X90m_d18", "pulse_shape": "drag", "parameters": {"amp": [-0.17197377691400392, 0.0012733390537395385], "beta": 0.0937932437517005, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d18", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u33", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u33", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u33", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u36", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u36", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u36", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u44", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u44", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.15862945862324201, -0.0007113090309505842], "beta": -0.08938043356078003, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d19", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d19", "label": "X90m_d19", "pulse_shape": "drag", "parameters": {"amp": [-0.15862945862324201, 0.0007113090309506186], "beta": -0.08938043356078003, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d19", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u35", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u35", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u35", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u43", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u43", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u43", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u46", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u46", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.15684854113081004, -0.00013641015213278912], "beta": -0.9300587784605402, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d20", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d20", "label": "X90m_d20", "pulse_shape": "drag", "parameters": {"amp": [-0.15684854113081004, 0.00013641015213282378], "beta": -0.9300587784605402, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d20", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u41", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u41", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.1555604175819821, 0.000405861707662296], "beta": -0.7993720433737146, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d21", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d21", "label": "X90m_d21", "pulse_shape": "drag", "parameters": {"amp": [-0.1555604175819821, -0.00040586170766227506], "beta": -0.7993720433737146, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d21", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u39", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u39", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u39", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u48", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u48", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.15744221779294026, 0.0032887325288609133], "beta": -1.9796822401357297, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d22", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d22", "label": "X90m_d22", "pulse_shape": "drag", "parameters": {"amp": [-0.15744221779294026, -0.0032887325288609034], "beta": -1.9796822401357297, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d22", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u42", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u42", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u42", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u52", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u52", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.16393062969410704, 0.0019387946847995413], "beta": -1.5630230309777167, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d23", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d23", "label": "X90m_d23", "pulse_shape": "drag", "parameters": {"amp": [-0.16393062969410704, -0.0019387946847995209], "beta": -1.5630230309777167, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d23", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u45", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u45", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u45", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u50", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u50", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.13890553470296665, 0.003155819943026602], "beta": -0.8002313498903486, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d24", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d24", "label": "X90m_d24", "pulse_shape": "drag", "parameters": {"amp": [-0.13890553470296665, -0.00315581994302656], "beta": -0.8002313498903486, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d24", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u49", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u49", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u49", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u53", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u53", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.15737996805494298, 0.004764805917492122], "beta": -2.01836384023658, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d25", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d25", "label": "X90m_d25", "pulse_shape": "drag", "parameters": {"amp": [-0.15737996805494298, -0.00476480591749212], "beta": -2.01836384023658, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d25", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u47", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u47", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u47", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u51", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u51", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "ch": "u51", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u55", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u55", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.15795871529932215, 0.001853094793603819], "beta": -1.2894317521630763, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 96, "ch": "d26", "phase": "-(P0)"}, {"name": "parametric_pulse", "t0": 96, "ch": "d26", "label": "X90m_d26", "pulse_shape": "drag", "parameters": {"amp": [-0.15795871529932215, -0.0018530947936037875], "beta": -1.2894317521630763, "duration": 96, "sigma": 24}}, {"name": "fc", "t0": 192, "ch": "d26", "phase": "-(P1)"}, {"name": "fc", "t0": 0, "ch": "u54", "phase": "-(P2)"}, {"name": "fc", "t0": 96, "ch": "u54", "phase": "-(P0)"}, {"name": "fc", "t0": 192, "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.31697339848243977, 0.0], "beta": -0.4950839561397558, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [1], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "Xp_d1", "pulse_shape": "drag", "parameters": {"amp": [0.31402783038722454, 0.0], "beta": 0.9080740416772184, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [2], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d2", "label": "Xp_d2", "pulse_shape": "drag", "parameters": {"amp": [0.31731866778436096, 0.0], "beta": -0.6847100559051099, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [3], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "Xp_d3", "pulse_shape": "drag", "parameters": {"amp": [0.3110277063627932, 0.0], "beta": -0.20669747696198648, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [4], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "Xp_d4", "pulse_shape": "drag", "parameters": {"amp": [0.327546314349462, 0.0], "beta": 0.27240735862222965, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [5], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d5", "label": "Xp_d5", "pulse_shape": "drag", "parameters": {"amp": [0.3310088852084038, 0.0], "beta": -0.021325791591808682, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [6], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d6", "label": "Xp_d6", "pulse_shape": "drag", "parameters": {"amp": [0.3117243956284839, 0.0], "beta": -0.8152941671684616, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [7], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d7", "label": "Xp_d7", "pulse_shape": "drag", "parameters": {"amp": [0.28217960204624604, 0.0], "beta": -0.2530358833074108, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [8], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d8", "label": "Xp_d8", "pulse_shape": "drag", "parameters": {"amp": [0.3124680536672489, 0.0], "beta": -0.1230208583882192, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [9], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d9", "label": "Xp_d9", "pulse_shape": "drag", "parameters": {"amp": [0.32111493061234503, 0.0], "beta": -2.230530502757003, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [10], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d10", "label": "Xp_d10", "pulse_shape": "drag", "parameters": {"amp": [0.30012877193770787, 0.0], "beta": -0.939962694489014, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [11], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d11", "label": "Xp_d11", "pulse_shape": "drag", "parameters": {"amp": [0.31644747676522056, 0.0], "beta": -0.711307970935591, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [12], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d12", "label": "Xp_d12", "pulse_shape": "drag", "parameters": {"amp": [0.36411098730206054, 0.0], "beta": -0.9631254097470127, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [13], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d13", "label": "Xp_d13", "pulse_shape": "drag", "parameters": {"amp": [0.33168978642219793, 0.0], "beta": 0.05922266617509076, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [14], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d14", "label": "Xp_d14", "pulse_shape": "drag", "parameters": {"amp": [0.3269359497013626, 0.0], "beta": -0.697837712341214, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [15], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d15", "label": "Xp_d15", "pulse_shape": "drag", "parameters": {"amp": [0.40262076357233284, 0.0], "beta": -0.27818348187266817, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [16], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d16", "label": "Xp_d16", "pulse_shape": "drag", "parameters": {"amp": [0.31288344810140484, 0.0], "beta": 0.25183365274798286, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [17], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d17", "label": "Xp_d17", "pulse_shape": "drag", "parameters": {"amp": [0.3076356655772732, 0.0], "beta": 0.39739583400884354, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [18], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d18", "label": "Xp_d18", "pulse_shape": "drag", "parameters": {"amp": [0.34524990353466256, 0.0], "beta": -0.042262138224706404, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [19], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d19", "label": "Xp_d19", "pulse_shape": "drag", "parameters": {"amp": [0.3181821017279743, 0.0], "beta": -0.12094169311543869, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [20], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d20", "label": "Xp_d20", "pulse_shape": "drag", "parameters": {"amp": [0.3146447706561048, 0.0], "beta": -0.9237232480509827, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [21], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d21", "label": "Xp_d21", "pulse_shape": "drag", "parameters": {"amp": [0.31211688243046126, 0.0], "beta": -0.828538592557013, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [22], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d22", "label": "Xp_d22", "pulse_shape": "drag", "parameters": {"amp": [0.3158896048325534, 0.0], "beta": -1.9814530356810187, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [23], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d23", "label": "Xp_d23", "pulse_shape": "drag", "parameters": {"amp": [0.32993010642208204, 0.0], "beta": -1.5392680079501584, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [24], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d24", "label": "Xp_d24", "pulse_shape": "drag", "parameters": {"amp": [0.2806719714114787, 0.0], "beta": -0.7982115544611899, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [25], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d25", "label": "Xp_d25", "pulse_shape": "drag", "parameters": {"amp": [0.31639262881276276, 0.0], "beta": -1.9720152957062593, "duration": 96, "sigma": 24}}]}, {"name": "x", "qubits": [26], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d26", "label": "Xp_d26", "pulse_shape": "drag", "parameters": {"amp": [0.31679861772592516, 0.0], "beta": -1.2388785995488343, "duration": 96, "sigma": 24}}]}], "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_v1/fake_27q_pulse/fake_27q_pulse_v1.py b/qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/fake_27q_pulse_v1.py deleted file mode 100644 index 5f2c6daad1af..000000000000 --- a/qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/fake_27q_pulse_v1.py +++ /dev/null @@ -1,50 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2023. -# -# 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. - -""" -A 27 qubit fake :class:`.BackendV1` with pulse capabilities. -""" - -import os -from qiskit.providers.fake_provider import fake_pulse_backend - - -class Fake27QPulseV1(fake_pulse_backend.FakePulseBackend): - """A fake **pulse** backend with the following characteristics: - - * num_qubits: 27 - * coupling_map: - - .. code-block:: text - - 06 17 - ↕ ↕ - 00 ↔ 01 ↔ 04 ↔ 07 ↔ 10 ↔ 12 ↔ 15 ↔ 18 ↔ 20 ↔ 23 - ↕ ↕ ↕ - 02 13 24 - ↕ ↕ ↕ - 03 ↔ 05 ↔ 08 ↔ 11 ↔ 14 ↔ 16 ↔ 19 ↔ 22 ↔ 25 ↔ 26 - ↕ ↕ - 09 20 - - * basis_gates: ``["id", "rz", "sx", "x", "cx", "reset"]`` - * scheduled instructions: - # ``{'id', 'rz', 'u2', 'x', 'u3', 'sx', 'measure', 'u1'}`` for all individual qubits - # ``{'cx'}`` for all edges - # ``{'measure'}`` for (0, ..., 26) - """ - - dirname = os.path.dirname(__file__) - conf_filename = "conf_hanoi.json" - props_filename = "props_hanoi.json" - defs_filename = "defs_hanoi.json" - backend_name = "fake_27q_pulse_v1" diff --git a/qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/props_hanoi.json b/qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/props_hanoi.json deleted file mode 100644 index f858472f81af..000000000000 --- a/qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/props_hanoi.json +++ /dev/null @@ -1 +0,0 @@ -{"backend_name": "ibm_hanoi", "backend_version": "1.0.18", "last_update_date": "2021-12-09T14:06:00-05:00", "qubits": [[{"date": "2021-12-09T12:50:09-05:00", "name": "T1", "unit": "us", "value": 162.29562357444243}, {"date": "2021-12-09T00:33:20-05:00", "name": "T2", "unit": "us", "value": 171.74648699183206}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 5.035257503599211}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34330377338500506}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.008299999999999974}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.01}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.00660000000000005}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T06:44:07-05:00", "name": "T1", "unit": "us", "value": 200.26740936185635}, {"date": "2021-12-09T00:36:53-05:00", "name": "T2", "unit": "us", "value": 128.87798722328756}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 5.155565118090405}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3417201958319424}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.008700000000000041}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0096}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.007800000000000029}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T06:41:48-05:00", "name": "T1", "unit": "us", "value": 165.10451031202692}, {"date": "2021-12-09T00:33:20-05:00", "name": "T2", "unit": "us", "value": 70.85282786333991}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 5.255995040248669}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.33968683435284497}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.01629999999999998}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.014000000000000012}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0186}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T06:44:07-05:00", "name": "T1", "unit": "us", "value": 189.7038976397337}, {"date": "2021-12-09T00:36:53-05:00", "name": "T2", "unit": "us", "value": 66.07411297176124}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 5.097246059676533}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3421099914283281}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.013399999999999967}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.015199999999999991}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0116}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T12:50:09-05:00", "name": "T1", "unit": "us", "value": 228.1800197180789}, {"date": "2021-07-07T00:26:58-04:00", "name": "T2", "unit": "us", "value": 15.786673508605832}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 5.073268319137003}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34373895038391267}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.009600000000000053}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.01100000000000001}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0082}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T00:31:30-05:00", "name": "T1", "unit": "us", "value": 160.33951633948288}, {"date": "2021-12-09T00:33:20-05:00", "name": "T2", "unit": "us", "value": 27.4002314834531}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 5.207464807502694}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3403819082691016}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.010599999999999943}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.012399999999999967}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0088}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T12:50:09-05:00", "name": "T1", "unit": "us", "value": 150.41844470973578}, {"date": "2021-12-09T00:33:20-05:00", "name": "T2", "unit": "us", "value": 215.42527635779587}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 5.0210015516417}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34266740557687625}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.0129999999999999}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0166}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.009399999999999964}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T00:34:38-05:00", "name": "T1", "unit": "us", "value": 250.97739096997458}, {"date": "2021-12-09T00:36:53-05:00", "name": "T2", "unit": "us", "value": 321.8316917163186}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 4.9191505084130815}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34503425423379974}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.013800000000000034}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.016199999999999992}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0114}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T06:44:07-05:00", "name": "T1", "unit": "us", "value": 197.62610070865514}, {"date": "2021-12-09T00:36:53-05:00", "name": "T2", "unit": "us", "value": 54.912785602088746}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 5.030713370275684}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3446988549826478}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.03279999999999994}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0228}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.04279999999999995}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T12:50:09-05:00", "name": "T1", "unit": "us", "value": 150.00212117169139}, {"date": "2021-12-09T00:33:20-05:00", "name": "T2", "unit": "us", "value": 49.60038191130937}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 4.8740868671878745}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34527473731890873}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.02510000000000001}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.033}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.017199999999999993}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T12:50:09-05:00", "name": "T1", "unit": "us", "value": 145.16727102423198}, {"date": "2021-12-09T00:33:20-05:00", "name": "T2", "unit": "us", "value": 223.40286890830592}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 4.820985528731567}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34683032931717594}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.02180000000000004}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0232}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0204}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T12:50:09-05:00", "name": "T1", "unit": "us", "value": 201.45607029272736}, {"date": "2021-12-09T00:33:20-05:00", "name": "T2", "unit": "us", "value": 189.86228443182952}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 5.161695558780752}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.341908817026974}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.0121}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0132}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.01100000000000001}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T00:34:38-05:00", "name": "T1", "unit": "us", "value": 107.57004336376815}, {"date": "2021-12-09T00:36:53-05:00", "name": "T2", "unit": "us", "value": 117.8720161751282}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 4.718894123006918}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3481829188022179}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.07820000000000005}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.08699999999999997}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0694}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T12:50:09-05:00", "name": "T1", "unit": "us", "value": 112.74691945994516}, {"date": "2021-12-09T00:33:20-05:00", "name": "T2", "unit": "us", "value": 164.34563941412085}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 4.96239280214447}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34503454234379327}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.018000000000000016}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0214}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.014599999999999946}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T06:44:07-05:00", "name": "T1", "unit": "us", "value": 142.92395675015214}, {"date": "2021-11-10T04:52:02-05:00", "name": "T2", "unit": "us", "value": 21.03279749884081}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 5.046578733357967}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.344564182745183}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.008900000000000019}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0108}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.007000000000000006}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T12:50:09-05:00", "name": "T1", "unit": "us", "value": 229.26512818791585}, {"date": "2021-12-09T00:33:20-05:00", "name": "T2", "unit": "us", "value": 23.959394896033672}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 4.9233696440290196}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.32012685787445805}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.06930000000000003}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.06940000000000002}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0692}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T12:50:09-05:00", "name": "T1", "unit": "us", "value": 171.27102231962618}, {"date": "2021-12-09T00:33:20-05:00", "name": "T2", "unit": "us", "value": 191.15681870560078}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 4.883763459999275}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34451145689727636}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.014499999999999957}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0146}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.014399999999999968}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T12:50:09-05:00", "name": "T1", "unit": "us", "value": 77.74626321416429}, {"date": "2021-12-09T00:33:20-05:00", "name": "T2", "unit": "us", "value": 52.31008943280704}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 5.223019531456885}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3399506710463379}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.01200000000000001}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.011800000000000033}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0122}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T06:44:07-05:00", "name": "T1", "unit": "us", "value": 136.92828577722096}, {"date": "2021-12-09T00:36:53-05:00", "name": "T2", "unit": "us", "value": 214.64593927736612}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 4.968043966959381}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3439987144902337}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.009700000000000042}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0112}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.008199999999999985}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T06:44:07-05:00", "name": "T1", "unit": "us", "value": 149.55535399935732}, {"date": "2021-12-09T00:36:53-05:00", "name": "T2", "unit": "us", "value": 158.26039829425585}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 5.003050223752749}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3431781100974163}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.006299999999999972}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.008399999999999963}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0042}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T12:50:09-05:00", "name": "T1", "unit": "us", "value": 155.18610011758446}, {"date": "2021-12-09T00:33:20-05:00", "name": "T2", "unit": "us", "value": 99.96516734455751}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 5.094892970591303}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34102857576824874}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.028200000000000003}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0446}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.011800000000000033}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T12:50:09-05:00", "name": "T1", "unit": "us", "value": 129.77487292411521}, {"date": "2021-11-28T08:04:04-05:00", "name": "T2", "unit": "us", "value": 25.788257592273474}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 4.839318141468997}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3459283774773837}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.010099999999999998}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.013}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.007199999999999984}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T00:31:30-05:00", "name": "T1", "unit": "us", "value": 131.68699104939938}, {"date": "2021-12-09T00:33:20-05:00", "name": "T2", "unit": "us", "value": 140.44473893338957}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 4.918673448292978}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3460569638786575}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.010599999999999943}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.016}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.005199999999999982}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T06:44:07-05:00", "name": "T1", "unit": "us", "value": 140.7706520647807}, {"date": "2021-12-09T00:36:53-05:00", "name": "T2", "unit": "us", "value": 24.591596113614052}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 4.9076099256247945}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3298207386132699}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.01869999999999994}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0204}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.017000000000000015}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T12:50:09-05:00", "name": "T1", "unit": "us", "value": 138.20480709857213}, {"date": "2021-12-09T00:33:20-05:00", "name": "T2", "unit": "us", "value": 35.963413779866315}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 4.991553956799851}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34346573363448263}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.013800000000000034}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.016800000000000037}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0108}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T00:34:38-05:00", "name": "T1", "unit": "us", "value": 209.10050643128665}, {"date": "2021-12-09T00:36:53-05:00", "name": "T2", "unit": "us", "value": 86.49874122513746}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 4.812437397584483}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3466747118776749}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.01859999999999995}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.020199999999999996}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.017}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}], [{"date": "2021-12-09T12:50:09-05:00", "name": "T1", "unit": "us", "value": 127.57011007072889}, {"date": "2021-12-09T00:33:20-05:00", "name": "T2", "unit": "us", "value": 40.771382450554775}, {"date": "2021-12-09T14:06:00-05:00", "name": "frequency", "unit": "GHz", "value": 5.0198818619488375}, {"date": "2021-12-09T14:06:00-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34268404767752714}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_error", "unit": "", "value": 0.007000000000000006}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0086}, {"date": "2021-12-09T00:30:10-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.00539999999999996}, {"date": "2021-12-09T00:30:10-05:00", "name": "readout_length", "unit": "ns", "value": 757.3333333333333}]], "gates": [{"qubits": [0], "gate": "id", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00013790682762652163}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id0"}, {"qubits": [1], "gate": "id", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.00015157374263301623}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id1"}, {"qubits": [2], "gate": "id", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00016393621420542743}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id2"}, {"qubits": [3], "gate": "id", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.00014780011919478462}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id3"}, {"qubits": [4], "gate": "id", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00015781468511476068}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id4"}, {"qubits": [5], "gate": "id", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00027756496231637746}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id5"}, {"qubits": [6], "gate": "id", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.0001885422462640474}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id6"}, {"qubits": [7], "gate": "id", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.00011454203030407228}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id7"}, {"qubits": [8], "gate": "id", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.00020613384927090794}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id8"}, {"qubits": [9], "gate": "id", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00022556897197118007}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id9"}, {"qubits": [10], "gate": "id", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.0001561651483167148}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id10"}, {"qubits": [11], "gate": "id", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00010057601299122221}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id11"}, {"qubits": [12], "gate": "id", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.00012071151678724592}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id12"}, {"qubits": [13], "gate": "id", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00012657380561906245}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id13"}, {"qubits": [14], "gate": "id", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.00020637437176042607}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id14"}, {"qubits": [15], "gate": "id", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.0004358587992589599}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id15"}, {"qubits": [16], "gate": "id", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00013355297581763646}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id16"}, {"qubits": [17], "gate": "id", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.0003560167055274531}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id17"}, {"qubits": [18], "gate": "id", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.0002733840988349284}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id18"}, {"qubits": [19], "gate": "id", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.0001327881676002659}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id19"}, {"qubits": [20], "gate": "id", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.0005683250307041167}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id20"}, {"qubits": [21], "gate": "id", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.0002273922906038985}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id21"}, {"qubits": [22], "gate": "id", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00020918361091333906}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id22"}, {"qubits": [23], "gate": "id", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.00047279579221251356}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id23"}, {"qubits": [24], "gate": "id", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00030802838217055064}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id24"}, {"qubits": [25], "gate": "id", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 9.814733917736364e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id25"}, {"qubits": [26], "gate": "id", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00015163384492023144}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "id26"}, {"qubits": [0], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz0"}, {"qubits": [1], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz1"}, {"qubits": [2], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz2"}, {"qubits": [3], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz3"}, {"qubits": [4], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz4"}, {"qubits": [5], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz5"}, {"qubits": [6], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz6"}, {"qubits": [7], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz7"}, {"qubits": [8], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz8"}, {"qubits": [9], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz9"}, {"qubits": [10], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz10"}, {"qubits": [11], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz11"}, {"qubits": [12], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz12"}, {"qubits": [13], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz13"}, {"qubits": [14], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz14"}, {"qubits": [15], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz15"}, {"qubits": [16], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz16"}, {"qubits": [17], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz17"}, {"qubits": [18], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz18"}, {"qubits": [19], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz19"}, {"qubits": [20], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz20"}, {"qubits": [21], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz21"}, {"qubits": [22], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz22"}, {"qubits": [23], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz23"}, {"qubits": [24], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz24"}, {"qubits": [25], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz25"}, {"qubits": [26], "gate": "rz", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz26"}, {"qubits": [0], "gate": "sx", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00013790682762652163}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx0"}, {"qubits": [1], "gate": "sx", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.00015157374263301623}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx1"}, {"qubits": [2], "gate": "sx", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00016393621420542743}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx2"}, {"qubits": [3], "gate": "sx", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.00014780011919478462}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx3"}, {"qubits": [4], "gate": "sx", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00015781468511476068}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx4"}, {"qubits": [5], "gate": "sx", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00027756496231637746}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx5"}, {"qubits": [6], "gate": "sx", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.0001885422462640474}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx6"}, {"qubits": [7], "gate": "sx", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.00011454203030407228}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx7"}, {"qubits": [8], "gate": "sx", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.00020613384927090794}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx8"}, {"qubits": [9], "gate": "sx", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00022556897197118007}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx9"}, {"qubits": [10], "gate": "sx", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.0001561651483167148}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx10"}, {"qubits": [11], "gate": "sx", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00010057601299122221}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx11"}, {"qubits": [12], "gate": "sx", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.00012071151678724592}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx12"}, {"qubits": [13], "gate": "sx", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00012657380561906245}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx13"}, {"qubits": [14], "gate": "sx", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.00020637437176042607}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx14"}, {"qubits": [15], "gate": "sx", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.0004358587992589599}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx15"}, {"qubits": [16], "gate": "sx", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00013355297581763646}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx16"}, {"qubits": [17], "gate": "sx", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.0003560167055274531}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx17"}, {"qubits": [18], "gate": "sx", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.0002733840988349284}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx18"}, {"qubits": [19], "gate": "sx", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.0001327881676002659}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx19"}, {"qubits": [20], "gate": "sx", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.0005683250307041167}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx20"}, {"qubits": [21], "gate": "sx", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.0002273922906038985}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx21"}, {"qubits": [22], "gate": "sx", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00020918361091333906}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx22"}, {"qubits": [23], "gate": "sx", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.00047279579221251356}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx23"}, {"qubits": [24], "gate": "sx", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00030802838217055064}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx24"}, {"qubits": [25], "gate": "sx", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 9.814733917736364e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx25"}, {"qubits": [26], "gate": "sx", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00015163384492023144}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "sx26"}, {"qubits": [0], "gate": "x", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00013790682762652163}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x0"}, {"qubits": [1], "gate": "x", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.00015157374263301623}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x1"}, {"qubits": [2], "gate": "x", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00016393621420542743}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x2"}, {"qubits": [3], "gate": "x", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.00014780011919478462}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x3"}, {"qubits": [4], "gate": "x", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00015781468511476068}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x4"}, {"qubits": [5], "gate": "x", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00027756496231637746}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x5"}, {"qubits": [6], "gate": "x", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.0001885422462640474}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x6"}, {"qubits": [7], "gate": "x", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.00011454203030407228}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x7"}, {"qubits": [8], "gate": "x", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.00020613384927090794}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x8"}, {"qubits": [9], "gate": "x", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00022556897197118007}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x9"}, {"qubits": [10], "gate": "x", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.0001561651483167148}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x10"}, {"qubits": [11], "gate": "x", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00010057601299122221}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x11"}, {"qubits": [12], "gate": "x", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.00012071151678724592}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x12"}, {"qubits": [13], "gate": "x", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00012657380561906245}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x13"}, {"qubits": [14], "gate": "x", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.00020637437176042607}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x14"}, {"qubits": [15], "gate": "x", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.0004358587992589599}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x15"}, {"qubits": [16], "gate": "x", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00013355297581763646}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x16"}, {"qubits": [17], "gate": "x", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.0003560167055274531}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x17"}, {"qubits": [18], "gate": "x", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.0002733840988349284}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x18"}, {"qubits": [19], "gate": "x", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.0001327881676002659}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x19"}, {"qubits": [20], "gate": "x", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.0005683250307041167}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x20"}, {"qubits": [21], "gate": "x", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.0002273922906038985}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x21"}, {"qubits": [22], "gate": "x", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00020918361091333906}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x22"}, {"qubits": [23], "gate": "x", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 0.00047279579221251356}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x23"}, {"qubits": [24], "gate": "x", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00030802838217055064}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x24"}, {"qubits": [25], "gate": "x", "parameters": [{"date": "2021-12-09T00:42:48-05:00", "name": "gate_error", "unit": "", "value": 9.814733917736364e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x25"}, {"qubits": [26], "gate": "x", "parameters": [{"date": "2021-12-09T00:39:04-05:00", "name": "gate_error", "unit": "", "value": 0.00015163384492023144}, {"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 21.333333333333332}], "name": "x26"}, {"qubits": [19, 16], "gate": "cx", "parameters": [{"date": "2021-12-09T02:59:52-05:00", "name": "gate_error", "unit": "", "value": 0.006337542369056093}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 305.77777777777777}], "name": "cx19_16"}, {"qubits": [16, 19], "gate": "cx", "parameters": [{"date": "2021-12-09T02:59:52-05:00", "name": "gate_error", "unit": "", "value": 0.006337542369056093}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 327.1111111111111}], "name": "cx16_19"}, {"qubits": [19, 22], "gate": "cx", "parameters": [{"date": "2021-12-09T02:54:25-05:00", "name": "gate_error", "unit": "", "value": 0.008353026850019152}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 227.55555555555554}], "name": "cx19_22"}, {"qubits": [22, 19], "gate": "cx", "parameters": [{"date": "2021-12-09T02:54:25-05:00", "name": "gate_error", "unit": "", "value": 0.008353026850019152}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 248.88888888888889}], "name": "cx22_19"}, {"qubits": [9, 8], "gate": "cx", "parameters": [{"date": "2021-12-09T02:48:55-05:00", "name": "gate_error", "unit": "", "value": 0.008506915871418552}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 519.1111111111111}], "name": "cx9_8"}, {"qubits": [8, 9], "gate": "cx", "parameters": [{"date": "2021-12-09T02:48:55-05:00", "name": "gate_error", "unit": "", "value": 0.008506915871418552}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 540.4444444444445}], "name": "cx8_9"}, {"qubits": [6, 7], "gate": "cx", "parameters": [{"date": "2021-12-09T02:43:23-05:00", "name": "gate_error", "unit": "", "value": 0.00429950285120731}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 263.1111111111111}], "name": "cx6_7"}, {"qubits": [7, 6], "gate": "cx", "parameters": [{"date": "2021-12-09T02:43:23-05:00", "name": "gate_error", "unit": "", "value": 0.00429950285120731}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 284.44444444444446}], "name": "cx7_6"}, {"qubits": [24, 23], "gate": "cx", "parameters": [{"date": "2021-12-09T02:43:23-05:00", "name": "gate_error", "unit": "", "value": 0.022998772467994755}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 248.88888888888889}], "name": "cx24_23"}, {"qubits": [23, 24], "gate": "cx", "parameters": [{"date": "2021-12-09T02:43:23-05:00", "name": "gate_error", "unit": "", "value": 0.022998772467994755}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 270.22222222222223}], "name": "cx23_24"}, {"qubits": [13, 12], "gate": "cx", "parameters": [{"date": "2021-12-09T02:35:35-05:00", "name": "gate_error", "unit": "", "value": 0.005247526291353555}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 384}], "name": "cx13_12"}, {"qubits": [12, 13], "gate": "cx", "parameters": [{"date": "2021-12-09T02:35:35-05:00", "name": "gate_error", "unit": "", "value": 0.005247526291353555}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx12_13"}, {"qubits": [14, 13], "gate": "cx", "parameters": [{"date": "2021-12-09T02:29:35-05:00", "name": "gate_error", "unit": "", "value": 0.004709347951406734}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 234.66666666666666}], "name": "cx14_13"}, {"qubits": [13, 14], "gate": "cx", "parameters": [{"date": "2021-12-09T02:29:35-05:00", "name": "gate_error", "unit": "", "value": 0.004709347951406734}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 256}], "name": "cx13_14"}, {"qubits": [21, 23], "gate": "cx", "parameters": [{"date": "2021-12-09T02:29:35-05:00", "name": "gate_error", "unit": "", "value": 0.01727369895539732}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 256}], "name": "cx21_23"}, {"qubits": [23, 21], "gate": "cx", "parameters": [{"date": "2021-12-09T02:29:35-05:00", "name": "gate_error", "unit": "", "value": 0.01727369895539732}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 277.3333333333333}], "name": "cx23_21"}, {"qubits": [14, 11], "gate": "cx", "parameters": [{"date": "2021-12-09T02:24:11-05:00", "name": "gate_error", "unit": "", "value": 0.00707849526409296}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx14_11"}, {"qubits": [11, 14], "gate": "cx", "parameters": [{"date": "2021-12-09T02:24:11-05:00", "name": "gate_error", "unit": "", "value": 0.00707849526409296}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 426.66666666666663}], "name": "cx11_14"}, {"qubits": [0, 1], "gate": "cx", "parameters": [{"date": "2021-12-09T02:18:18-05:00", "name": "gate_error", "unit": "", "value": 0.006357420265272751}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 305.77777777777777}], "name": "cx0_1"}, {"qubits": [1, 0], "gate": "cx", "parameters": [{"date": "2021-12-09T02:18:18-05:00", "name": "gate_error", "unit": "", "value": 0.006357420265272751}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 327.1111111111111}], "name": "cx1_0"}, {"qubits": [18, 15], "gate": "cx", "parameters": [{"date": "2021-12-09T02:18:18-05:00", "name": "gate_error", "unit": "", "value": 0.013049747614580776}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 305.77777777777777}], "name": "cx18_15"}, {"qubits": [15, 18], "gate": "cx", "parameters": [{"date": "2021-12-09T02:18:18-05:00", "name": "gate_error", "unit": "", "value": 0.013049747614580776}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 327.1111111111111}], "name": "cx15_18"}, {"qubits": [25, 22], "gate": "cx", "parameters": [{"date": "2021-12-09T02:18:18-05:00", "name": "gate_error", "unit": "", "value": 0.0061355063177596925}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 291.55555555555554}], "name": "cx25_22"}, {"qubits": [22, 25], "gate": "cx", "parameters": [{"date": "2021-12-09T02:18:18-05:00", "name": "gate_error", "unit": "", "value": 0.0061355063177596925}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 312.88888888888886}], "name": "cx22_25"}, {"qubits": [14, 16], "gate": "cx", "parameters": [{"date": "2021-12-09T02:12:12-05:00", "name": "gate_error", "unit": "", "value": 0.009847791267468736}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 419.55555555555554}], "name": "cx14_16"}, {"qubits": [16, 14], "gate": "cx", "parameters": [{"date": "2021-12-09T02:12:12-05:00", "name": "gate_error", "unit": "", "value": 0.009847791267468736}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 440.88888888888886}], "name": "cx16_14"}, {"qubits": [17, 18], "gate": "cx", "parameters": [{"date": "2021-12-09T02:12:12-05:00", "name": "gate_error", "unit": "", "value": 0.007561349832055975}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 419.55555555555554}], "name": "cx17_18"}, {"qubits": [18, 17], "gate": "cx", "parameters": [{"date": "2021-12-09T02:12:12-05:00", "name": "gate_error", "unit": "", "value": 0.007561349832055975}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 440.88888888888886}], "name": "cx18_17"}, {"qubits": [15, 12], "gate": "cx", "parameters": [{"date": "2021-12-09T02:06:50-05:00", "name": "gate_error", "unit": "", "value": 0.01309719449542407}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 384}], "name": "cx15_12"}, {"qubits": [12, 15], "gate": "cx", "parameters": [{"date": "2021-12-09T02:06:50-05:00", "name": "gate_error", "unit": "", "value": 0.01309719449542407}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 405.3333333333333}], "name": "cx12_15"}, {"qubits": [10, 12], "gate": "cx", "parameters": [{"date": "2021-12-09T01:56:09-05:00", "name": "gate_error", "unit": "", "value": 0.012336794143630897}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 277.3333333333333}], "name": "cx10_12"}, {"qubits": [12, 10], "gate": "cx", "parameters": [{"date": "2021-12-09T01:56:09-05:00", "name": "gate_error", "unit": "", "value": 0.012336794143630897}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 298.66666666666663}], "name": "cx12_10"}, {"qubits": [19, 20], "gate": "cx", "parameters": [{"date": "2021-12-09T01:56:09-05:00", "name": "gate_error", "unit": "", "value": 0.006482538837842389}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 291.55555555555554}], "name": "cx19_20"}, {"qubits": [20, 19], "gate": "cx", "parameters": [{"date": "2021-12-09T01:56:09-05:00", "name": "gate_error", "unit": "", "value": 0.006482538837842389}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 312.88888888888886}], "name": "cx20_19"}, {"qubits": [5, 8], "gate": "cx", "parameters": [{"date": "2021-12-09T01:50:32-05:00", "name": "gate_error", "unit": "", "value": 0.024196133150740873}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 323.55555555555554}], "name": "cx5_8"}, {"qubits": [8, 5], "gate": "cx", "parameters": [{"date": "2021-12-09T01:50:32-05:00", "name": "gate_error", "unit": "", "value": 0.024196133150740873}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 366.22222222222223}], "name": "cx8_5"}, {"qubits": [4, 7], "gate": "cx", "parameters": [{"date": "2021-12-09T01:40:48-05:00", "name": "gate_error", "unit": "", "value": 0.00762651350114224}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 256}], "name": "cx4_7"}, {"qubits": [7, 4], "gate": "cx", "parameters": [{"date": "2021-12-09T01:40:48-05:00", "name": "gate_error", "unit": "", "value": 0.00762651350114224}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 298.66666666666663}], "name": "cx7_4"}, {"qubits": [11, 8], "gate": "cx", "parameters": [{"date": "2021-12-09T01:40:48-05:00", "name": "gate_error", "unit": "", "value": 0.006642075980445833}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 270.22222222222223}], "name": "cx11_8"}, {"qubits": [8, 11], "gate": "cx", "parameters": [{"date": "2021-12-09T01:40:48-05:00", "name": "gate_error", "unit": "", "value": 0.006642075980445833}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 312.88888888888886}], "name": "cx8_11"}, {"qubits": [5, 3], "gate": "cx", "parameters": [{"date": "2021-12-09T01:31:39-05:00", "name": "gate_error", "unit": "", "value": 0.006968307084630532}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 184.88888888888889}], "name": "cx5_3"}, {"qubits": [3, 5], "gate": "cx", "parameters": [{"date": "2021-12-09T01:31:39-05:00", "name": "gate_error", "unit": "", "value": 0.006968307084630532}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 227.55555555555554}], "name": "cx3_5"}, {"qubits": [7, 10], "gate": "cx", "parameters": [{"date": "2021-12-09T01:31:39-05:00", "name": "gate_error", "unit": "", "value": 0.00759069213567834}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 202.66666666666666}], "name": "cx7_10"}, {"qubits": [10, 7], "gate": "cx", "parameters": [{"date": "2021-12-09T01:31:39-05:00", "name": "gate_error", "unit": "", "value": 0.00759069213567834}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 245.33333333333331}], "name": "cx10_7"}, {"qubits": [26, 25], "gate": "cx", "parameters": [{"date": "2021-12-09T01:31:39-05:00", "name": "gate_error", "unit": "", "value": 0.005525208032735179}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 224}], "name": "cx26_25"}, {"qubits": [25, 26], "gate": "cx", "parameters": [{"date": "2021-12-09T01:31:39-05:00", "name": "gate_error", "unit": "", "value": 0.005525208032735179}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 266.66666666666663}], "name": "cx25_26"}, {"qubits": [2, 3], "gate": "cx", "parameters": [{"date": "2021-12-09T01:16:21-05:00", "name": "gate_error", "unit": "", "value": 0.012094161701677514}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 334.22222222222223}], "name": "cx2_3"}, {"qubits": [3, 2], "gate": "cx", "parameters": [{"date": "2021-12-09T01:16:21-05:00", "name": "gate_error", "unit": "", "value": 0.012094161701677514}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 376.88888888888886}], "name": "cx3_2"}, {"qubits": [24, 25], "gate": "cx", "parameters": [{"date": "2021-12-09T01:16:21-05:00", "name": "gate_error", "unit": "", "value": 0.0175616132547268}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 323.55555555555554}], "name": "cx24_25"}, {"qubits": [25, 24], "gate": "cx", "parameters": [{"date": "2021-12-09T01:16:21-05:00", "name": "gate_error", "unit": "", "value": 0.0175616132547268}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 366.22222222222223}], "name": "cx25_24"}, {"qubits": [1, 4], "gate": "cx", "parameters": [{"date": "2021-12-09T01:06:04-05:00", "name": "gate_error", "unit": "", "value": 0.005321346562177809}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 181.33333333333331}], "name": "cx1_4"}, {"qubits": [4, 1], "gate": "cx", "parameters": [{"date": "2021-12-09T01:06:04-05:00", "name": "gate_error", "unit": "", "value": 0.005321346562177809}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 224}], "name": "cx4_1"}, {"qubits": [2, 1], "gate": "cx", "parameters": [{"date": "2021-12-09T00:57:45-05:00", "name": "gate_error", "unit": "", "value": 0.0036825930396536255}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 199.1111111111111}], "name": "cx2_1"}, {"qubits": [1, 2], "gate": "cx", "parameters": [{"date": "2021-12-09T00:57:45-05:00", "name": "gate_error", "unit": "", "value": 0.0036825930396536255}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 241.77777777777777}], "name": "cx1_2"}, {"qubits": [18, 21], "gate": "cx", "parameters": [{"date": "2021-12-09T00:57:45-05:00", "name": "gate_error", "unit": "", "value": 0.004606278511712469}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 238.2222222222222}], "name": "cx18_21"}, {"qubits": [21, 18], "gate": "cx", "parameters": [{"date": "2021-12-09T00:57:45-05:00", "name": "gate_error", "unit": "", "value": 0.004606278511712469}, {"date": "2021-12-06T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 280.88888888888886}], "name": "cx21_18"}, {"qubits": [0], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1013.3333333333333}], "name": "reset0"}, {"qubits": [1], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1034.6666666666665}], "name": "reset1"}, {"qubits": [2], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 796.4444444444443}], "name": "reset2"}, {"qubits": [3], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1027.5555555555554}], "name": "reset3"}, {"qubits": [4], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1027.5555555555554}], "name": "reset4"}, {"qubits": [5], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1027.5555555555554}], "name": "reset5"}, {"qubits": [6], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1027.5555555555554}], "name": "reset6"}, {"qubits": [7], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1027.5555555555554}], "name": "reset7"}, {"qubits": [8], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1027.5555555555554}], "name": "reset8"}, {"qubits": [9], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1027.5555555555554}], "name": "reset9"}, {"qubits": [10], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 785.7777777777777}], "name": "reset10"}, {"qubits": [11], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1027.5555555555554}], "name": "reset11"}, {"qubits": [12], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1027.5555555555554}], "name": "reset12"}, {"qubits": [13], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1027.5555555555554}], "name": "reset13"}, {"qubits": [14], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1027.5555555555554}], "name": "reset14"}, {"qubits": [15], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1027.5555555555554}], "name": "reset15"}, {"qubits": [16], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1027.5555555555554}], "name": "reset16"}, {"qubits": [17], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1027.5555555555554}], "name": "reset17"}, {"qubits": [18], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1027.5555555555554}], "name": "reset18"}, {"qubits": [19], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1027.5555555555554}], "name": "reset19"}, {"qubits": [20], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1027.5555555555554}], "name": "reset20"}, {"qubits": [21], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1027.5555555555554}], "name": "reset21"}, {"qubits": [22], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1027.5555555555554}], "name": "reset22"}, {"qubits": [23], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1027.5555555555554}], "name": "reset23"}, {"qubits": [24], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1027.5555555555554}], "name": "reset24"}, {"qubits": [25], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1027.5555555555554}], "name": "reset25"}, {"qubits": [26], "gate": "reset", "parameters": [{"date": "2021-12-09T14:06:00-05:00", "name": "gate_length", "unit": "ns", "value": 1027.5555555555554}], "name": "reset26"}], "general": [{"date": "2021-12-09T14:06:00-05:00", "name": "jq_1213", "unit": "GHz", "value": 0.0018887236719288803}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_1213", "unit": "GHz", "value": -8.234561335428781e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_1416", "unit": "GHz", "value": 0.001886878632181137}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_1416", "unit": "GHz", "value": -5.351795176349092e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_89", "unit": "GHz", "value": 0.0019522580008889305}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_89", "unit": "GHz", "value": -5.6179176377601576e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_1718", "unit": "GHz", "value": 0.0020129599348760684}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_1718", "unit": "GHz", "value": -0.0001089817423086943}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_1114", "unit": "GHz", "value": 0.001964504165732513}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_1114", "unit": "GHz", "value": -5.1105539518314186e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_1012", "unit": "GHz", "value": 0.0018171515493103328}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_1012", "unit": "GHz", "value": -4.152126804777608e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_1314", "unit": "GHz", "value": 0.002009355790829741}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_1314", "unit": "GHz", "value": -5.003314383138693e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_710", "unit": "GHz", "value": 0.0016720559973090238}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_710", "unit": "GHz", "value": -3.558744539115089e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_1619", "unit": "GHz", "value": 0.0018865517451473871}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_1619", "unit": "GHz", "value": -4.6846675496043986e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_1215", "unit": "GHz", "value": 0.0017715580797881506}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_1215", "unit": "GHz", "value": -6.623513249544847e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_2225", "unit": "GHz", "value": 0.0018650051385189213}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_2225", "unit": "GHz", "value": -4.457069533109141e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_2324", "unit": "GHz", "value": 0.0028155952283568757}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_2324", "unit": "GHz", "value": -9.947834440658777e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_811", "unit": "GHz", "value": 0.0019464431539896285}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_811", "unit": "GHz", "value": -5.2153323741519595e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_01", "unit": "GHz", "value": 0.002026799863637165}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_01", "unit": "GHz", "value": -5.4860351649404975e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_12", "unit": "GHz", "value": 0.0021214366380768687}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_12", "unit": "GHz", "value": -5.7961962001162e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_1920", "unit": "GHz", "value": 0.001960640268264794}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_1920", "unit": "GHz", "value": -4.846053225616354e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_67", "unit": "GHz", "value": 0.001784439951172113}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_67", "unit": "GHz", "value": -4.113328592300485e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_2425", "unit": "GHz", "value": 0.0019445944403997987}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_2425", "unit": "GHz", "value": -6.018795412879298e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_1821", "unit": "GHz", "value": 0.0019693214801490165}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_1821", "unit": "GHz", "value": -5.229576499801676e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_47", "unit": "GHz", "value": 0.001867309326589659}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_47", "unit": "GHz", "value": -5.1310401070554394e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_35", "unit": "GHz", "value": 0.002073349452691569}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_35", "unit": "GHz", "value": -5.647914430786984e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_2123", "unit": "GHz", "value": 0.001945591309938483}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_2123", "unit": "GHz", "value": -4.7412089208261694e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_58", "unit": "GHz", "value": 0.0020719183799323766}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_58", "unit": "GHz", "value": -6.920573798835464e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_14", "unit": "GHz", "value": 0.0019935247922118248}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_14", "unit": "GHz", "value": -4.9393369033263765e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_23", "unit": "GHz", "value": 0.0020950421591516616}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_23", "unit": "GHz", "value": -6.597855192291888e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_1922", "unit": "GHz", "value": 0.001959802322799525}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_1922", "unit": "GHz", "value": -4.738868896285107e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_1518", "unit": "GHz", "value": 0.0016845752063501366}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_1518", "unit": "GHz", "value": -3.4580347913212845e-05}, {"date": "2021-12-09T14:06:00-05:00", "name": "jq_2526", "unit": "GHz", "value": 0.0019201876227456542}, {"date": "2021-12-09T14:06:00-05:00", "name": "zz_2526", "unit": "GHz", "value": -6.82030387638762e-05}]} \ No newline at end of file diff --git a/qiskit/providers/fake_provider/backends_v1/fake_5q/__init__.py b/qiskit/providers/fake_provider/backends_v1/fake_5q/__init__.py deleted file mode 100644 index f7faf0ca1384..000000000000 --- a/qiskit/providers/fake_provider/backends_v1/fake_5q/__init__.py +++ /dev/null @@ -1,18 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2023. -# -# 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. - - -""" -A 5 qubit fake :class:`.BackendV1` without pulse capabilities. -""" - -from .fake_5q_v1 import Fake5QV1 diff --git a/qiskit/providers/fake_provider/backends_v1/fake_5q/conf_yorktown.json b/qiskit/providers/fake_provider/backends_v1/fake_5q/conf_yorktown.json deleted file mode 100644 index 2e8f2aa5fd1b..000000000000 --- a/qiskit/providers/fake_provider/backends_v1/fake_5q/conf_yorktown.json +++ /dev/null @@ -1 +0,0 @@ -{"backend_name": "ibmqx2", "backend_version": "2.3.3", "n_qubits": 5, "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]]}, {"name": "rz", "parameters": ["theta"], "qasm_def": "gate rz(theta) q { U(0, 0, theta) q; }", "coupling_map": [[0], [1], [2], [3], [4]]}, {"name": "sx", "parameters": [], "qasm_def": "gate sx q { U(pi/2, 3*pi/2, pi/2) q; }", "coupling_map": [[0], [1], [2], [3], [4]]}, {"name": "x", "parameters": [], "qasm_def": "gate x q { U(pi, 0, pi) q; }", "coupling_map": [[0], [1], [2], [3], [4]]}, {"name": "cx", "parameters": [], "qasm_def": "gate cx q0, q1 { CX q0, q1; }", "coupling_map": [[0, 1], [0, 2], [1, 0], [1, 2], [2, 0], [2, 1], [2, 3], [2, 4], [3, 2], [3, 4], [4, 2], [4, 3]]}, {"name": "reset", "parameters": null, "qasm_def": null}], "local": false, "simulator": false, "conditional": false, "open_pulse": false, "memory": true, "max_shots": 8192, "coupling_map": [[0, 1], [0, 2], [1, 0], [1, 2], [2, 0], [2, 1], [2, 3], [2, 4], [3, 2], [3, 4], [4, 2], [4, 3]], "dynamic_reprate_enabled": true, "supported_instructions": ["rz", "sx", "id", "reset", "delay", "play", "u1", "measure", "acquire", "u2", "cx", "setf", "shiftf", "u3", "x"], "rep_delay_range": [0.0, 500.0], "default_rep_delay": 250.0, "max_experiments": 75, "sample_name": "family: Canary, revision: 1", "n_registers": 1, "credits_required": true, "online_date": "2017-01-24T05:00:00+00:00", "description": "5 qubit device Yorktown", "dt": 0.2222222222222222, "dtm": 0.2222222222222222, "processor_type": {"family": "Canary", "revision": 1}, "acquisition_latency": [], "allow_q_object": true, "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"}, "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"}, "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"}, "u0": {"operates": {"qubits": [0, 1]}, "purpose": "cross-resonance", "type": "control"}, "u1": {"operates": {"qubits": [0, 2]}, "purpose": "cross-resonance", "type": "control"}, "u10": {"operates": {"qubits": [4, 2]}, "purpose": "cross-resonance", "type": "control"}, "u11": {"operates": {"qubits": [4, 3]}, "purpose": "cross-resonance", "type": "control"}, "u2": {"operates": {"qubits": [1, 0]}, "purpose": "cross-resonance", "type": "control"}, "u3": {"operates": {"qubits": [1, 2]}, "purpose": "cross-resonance", "type": "control"}, "u4": {"operates": {"qubits": [2, 0]}, "purpose": "cross-resonance", "type": "control"}, "u5": {"operates": {"qubits": [2, 1]}, "purpose": "cross-resonance", "type": "control"}, "u6": {"operates": {"qubits": [2, 3]}, "purpose": "cross-resonance", "type": "control"}, "u7": {"operates": {"qubits": [2, 4]}, "purpose": "cross-resonance", "type": "control"}, "u8": {"operates": {"qubits": [3, 2]}, "purpose": "cross-resonance", "type": "control"}, "u9": {"operates": {"qubits": [3, 4]}, "purpose": "cross-resonance", "type": "control"}}, "conditional_latency": [], "discriminators": ["quadratic_discriminator", "hw_centroid", "linear_discriminator"], "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}^{4}\\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_{2,3}(\\sigma_{2}^{+}\\sigma_{3}^{-}+\\sigma_{2}^{-}\\sigma_{3}^{+}) + J_{2,4}(\\sigma_{2}^{+}\\sigma_{4}^{-}+\\sigma_{2}^{-}\\sigma_{4}^{+}) \\\\ & + J_{3,4}(\\sigma_{3}^{+}\\sigma_{4}^{-}+\\sigma_{3}^{-}\\sigma_{4}^{+}) + J_{0,2}(\\sigma_{0}^{+}\\sigma_{2}^{-}+\\sigma_{0}^{-}\\sigma_{2}^{+}) \\\\ & + \\Omega_{d,0}(U_{0}^{(0,1)}(t)+U_{1}^{(0,2)}(t))\\sigma_{0}^{X} + \\Omega_{d,1}(U_{2}^{(1,0)}(t)+U_{3}^{(1,2)}(t))\\sigma_{1}^{X} \\\\ & + \\Omega_{d,2}(U_{6}^{(2,3)}(t)+U_{5}^{(2,1)}(t)+U_{7}^{(2,4)}(t)+U_{4}^{(2,0)}(t))\\sigma_{2}^{X} + \\Omega_{d,3}(U_{8}^{(3,2)}(t)+U_{9}^{(3,4)}(t))\\sigma_{3}^{X} \\\\ & + \\Omega_{d,4}(U_{11}^{(4,3)}(t)+U_{10}^{(4,2)}(t))\\sigma_{4}^{X} \\\\ \\end{align}", "h_str": ["_SUM[i,0,4,wq{i}/2*(I{i}-Z{i})]", "_SUM[i,0,4,delta{i}/2*O{i}*O{i}]", "_SUM[i,0,4,-delta{i}/2*O{i}]", "_SUM[i,0,4,omegad{i}*X{i}||D{i}]", "jq0q1*Sp0*Sm1", "jq0q1*Sm0*Sp1", "jq1q2*Sp1*Sm2", "jq1q2*Sm1*Sp2", "jq2q3*Sp2*Sm3", "jq2q3*Sm2*Sp3", "jq2q4*Sp2*Sm4", "jq2q4*Sm2*Sp4", "jq3q4*Sp3*Sm4", "jq3q4*Sm3*Sp4", "jq0q2*Sp0*Sm2", "jq0q2*Sm0*Sp2", "omegad1*X0||U0", "omegad2*X0||U1", "omegad0*X1||U2", "omegad2*X1||U3", "omegad3*X2||U6", "omegad1*X2||U5", "omegad4*X2||U7", "omegad0*X2||U4", "omegad2*X3||U8", "omegad4*X3||U9", "omegad3*X4||U11", "omegad2*X4||U10"], "osc": {}, "qub": {"0": 3, "1": 3, "2": 3, "3": 3, "4": 3}, "vars": {"delta0": -2.078515989791283, "delta1": -2.076140198460304, "delta2": -2.3632544243955147, "delta3": -2.071793501418874, "delta4": -2.092928090491978, "jq0q1": 0.011968734726718661, "jq0q2": 0.01143731530238952, "jq1q2": 0.0077637124867075335, "jq2q3": 0.011434086611531646, "jq2q4": 0.011382837107272241, "jq3q4": 0.012622615872488169, "omegad0": 0.31227678627828565, "omegad1": 0.3287329454702026, "omegad2": 0.2641052707637787, "omegad3": 0.24124632745223779, "omegad4": 0.42046738820058555, "wq0": 33.18944334684542, "wq1": 32.97119189144383, "wq2": 31.62559984414466, "wq3": 33.25055909747699, "wq4": 31.908861733581208}}, "meas_kernels": ["hw_boxcar"], "meas_levels": [1, 2], "meas_lo_range": [[6.030433052, 7.030433052], [5.981651108, 6.981651108], [5.93654928, 6.93654928], [6.078886966, 7.078886966], [6.030066921, 7.030066921]], "meas_map": [[0, 1, 2, 3, 4]], "multi_meas_enabled": true, "n_uchannels": 12, "parametric_pulses": ["gaussian", "gaussian_square", "drag", "constant"], "quantum_volume": 8, "qubit_channel_mapping": [["u4", "u0", "m0", "d0", "u1", "u2"], ["d1", "u0", "u2", "u3", "u5", "m1"], ["d2", "u4", "u7", "u8", "u10", "u1", "m2", "u3", "u5", "u6"], ["u8", "u11", "u9", "m3", "d3", "u6"], ["u7", "u11", "m4", "u9", "d4", "u10"]], "qubit_lo_range": [[4.782263967118866, 5.782263967118866], [4.747528169154703, 5.747528169154703], [4.5333705434418975, 5.533370543441897], [4.791990840932652, 5.791990840932652], [4.578453073335274, 5.578453073335273]], "rep_times": [0.001], "u_channel_lo": [[{"q": 1, "scale": [1.0, 0.0]}], [{"q": 2, "scale": [1.0, 0.0]}], [{"q": 0, "scale": [1.0, 0.0]}], [{"q": 2, "scale": [1.0, 0.0]}], [{"q": 0, "scale": [1.0, 0.0]}], [{"q": 1, "scale": [1.0, 0.0]}], [{"q": 3, "scale": [1.0, 0.0]}], [{"q": 4, "scale": [1.0, 0.0]}], [{"q": 2, "scale": [1.0, 0.0]}], [{"q": 4, "scale": [1.0, 0.0]}], [{"q": 2, "scale": [1.0, 0.0]}], [{"q": 3, "scale": [1.0, 0.0]}]], "uchannels_enabled": true, "url": "None", "allow_object_storage": true} \ No newline at end of file diff --git a/qiskit/providers/fake_provider/backends_v1/fake_5q/fake_5q_v1.py b/qiskit/providers/fake_provider/backends_v1/fake_5q/fake_5q_v1.py deleted file mode 100644 index 20f64d3b92b9..000000000000 --- a/qiskit/providers/fake_provider/backends_v1/fake_5q/fake_5q_v1.py +++ /dev/null @@ -1,41 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2023. -# -# 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. - -""" -A 5 qubit fake :class:`.BackendV1` without pulse capabilities. -""" - -import os -from qiskit.providers.fake_provider import fake_qasm_backend - - -class Fake5QV1(fake_qasm_backend.FakeQasmBackend): - """A fake backend with the following characteristics: - - * num_qubits: 5 - * coupling_map: - - .. code-block:: text - - 1 - / | - 0 - 2 - 3 - | / - 4 - - * basis_gates: ``["id", "rz", "sx", "x", "cx", "reset"]`` - """ - - dirname = os.path.dirname(__file__) - conf_filename = "conf_yorktown.json" - props_filename = "props_yorktown.json" - backend_name = "fake_5q_v1" diff --git a/qiskit/providers/fake_provider/backends_v1/fake_5q/props_yorktown.json b/qiskit/providers/fake_provider/backends_v1/fake_5q/props_yorktown.json deleted file mode 100644 index 58cad7066353..000000000000 --- a/qiskit/providers/fake_provider/backends_v1/fake_5q/props_yorktown.json +++ /dev/null @@ -1 +0,0 @@ -{"backend_name": "ibmqx2", "backend_version": "2.3.3", "last_update_date": "2021-03-15T01:02:20-04:00", "qubits": [[{"date": "2021-03-15T00:18:25-04:00", "name": "T1", "unit": "us", "value": 48.23393547580996}, {"date": "2021-03-15T00:19:28-04:00", "name": "T2", "unit": "us", "value": 22.946009132253206}, {"date": "2021-03-15T01:02:20-04:00", "name": "frequency", "unit": "GHz", "value": 5.282263967118867}, {"date": "2021-03-15T01:02:20-04:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3308060940708262}, {"date": "2021-03-15T00:17:54-04:00", "name": "readout_error", "unit": "", "value": 0.06330000000000002}, {"date": "2021-03-15T00:17:54-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0776}, {"date": "2021-03-15T00:17:54-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.049000000000000044}, {"date": "2021-03-15T00:17:54-04:00", "name": "readout_length", "unit": "ns", "value": 3352.8888888888887}], [{"date": "2021-03-15T00:18:25-04:00", "name": "T1", "unit": "us", "value": 42.86533281094276}, {"date": "2021-03-15T00:20:28-04:00", "name": "T2", "unit": "us", "value": 24.54508080735243}, {"date": "2021-03-15T01:02:20-04:00", "name": "frequency", "unit": "GHz", "value": 5.2475281691547035}, {"date": "2021-03-15T01:02:20-04:00", "name": "anharmonicity", "unit": "GHz", "value": -0.33042797513674593}, {"date": "2021-03-15T00:17:54-04:00", "name": "readout_error", "unit": "", "value": 0.031100000000000017}, {"date": "2021-03-15T00:17:54-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0408}, {"date": "2021-03-15T00:17:54-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.021399999999999975}, {"date": "2021-03-15T00:17:54-04:00", "name": "readout_length", "unit": "ns", "value": 3352.8888888888887}], [{"date": "2021-03-15T00:18:25-04:00", "name": "T1", "unit": "us", "value": 64.96063166056538}, {"date": "2021-03-15T00:21:30-04:00", "name": "T2", "unit": "us", "value": 68.66934540094697}, {"date": "2021-03-15T01:02:20-04:00", "name": "frequency", "unit": "GHz", "value": 5.033370543441897}, {"date": "2021-03-15T01:02:20-04:00", "name": "anharmonicity", "unit": "GHz", "value": -0.376123623426338}, {"date": "2021-03-15T00:17:54-04:00", "name": "readout_error", "unit": "", "value": 0.11519999999999997}, {"date": "2021-03-15T00:17:54-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.1388}, {"date": "2021-03-15T00:17:54-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.09160000000000001}, {"date": "2021-03-15T00:17:54-04:00", "name": "readout_length", "unit": "ns", "value": 3352.8888888888887}], [{"date": "2021-03-15T00:18:25-04:00", "name": "T1", "unit": "us", "value": 54.844955470162034}, {"date": "2021-03-15T00:19:28-04:00", "name": "T2", "unit": "us", "value": 30.759930969381355}, {"date": "2021-03-15T01:02:20-04:00", "name": "frequency", "unit": "GHz", "value": 5.291990840932653}, {"date": "2021-03-15T01:02:20-04:00", "name": "anharmonicity", "unit": "GHz", "value": -0.32973617681647954}, {"date": "2021-03-15T00:17:54-04:00", "name": "readout_error", "unit": "", "value": 0.027700000000000058}, {"date": "2021-03-15T00:17:54-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.04239999999999999}, {"date": "2021-03-15T00:17:54-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.013}, {"date": "2021-03-15T00:17:54-04:00", "name": "readout_length", "unit": "ns", "value": 3352.8888888888887}], [{"date": "2021-03-14T00:19:57-05:00", "name": "T1", "unit": "us", "value": 46.86728923564854}, {"date": "2021-03-15T00:20:28-04:00", "name": "T2", "unit": "us", "value": 3.443082999663734}, {"date": "2021-03-15T01:02:20-04:00", "name": "frequency", "unit": "GHz", "value": 5.078453073335274}, {"date": "2021-03-15T01:02:20-04:00", "name": "anharmonicity", "unit": "GHz", "value": -0.33309985113768}, {"date": "2021-03-15T00:17:54-04:00", "name": "readout_error", "unit": "", "value": 0.2923}, {"date": "2021-03-15T00:17:54-04:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.49860000000000004}, {"date": "2021-03-15T00:17:54-04:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.086}, {"date": "2021-03-15T00:17:54-04:00", "name": "readout_length", "unit": "ns", "value": 3352.8888888888887}]], "gates": [{"qubits": [0], "gate": "id", "parameters": [{"date": "2021-03-15T00:22:15-04:00", "name": "gate_error", "unit": "", "value": 0.0013043388897769352}, {"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id0"}, {"qubits": [1], "gate": "id", "parameters": [{"date": "2021-03-15T00:24:31-04:00", "name": "gate_error", "unit": "", "value": 0.0016225037300878712}, {"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id1"}, {"qubits": [2], "gate": "id", "parameters": [{"date": "2021-03-15T00:26:15-04:00", "name": "gate_error", "unit": "", "value": 0.0006173446629852812}, {"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id2"}, {"qubits": [3], "gate": "id", "parameters": [{"date": "2021-03-15T00:27:58-04:00", "name": "gate_error", "unit": "", "value": 0.0003956947295829953}, {"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id3"}, {"qubits": [4], "gate": "id", "parameters": [{"date": "2021-03-15T00:29:42-04:00", "name": "gate_error", "unit": "", "value": 0.0032277421851412153}, {"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id4"}, {"qubits": [0], "gate": "rz", "parameters": [{"date": "2021-03-15T01:02:20-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz0"}, {"qubits": [1], "gate": "rz", "parameters": [{"date": "2021-03-15T01:02:20-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz1"}, {"qubits": [2], "gate": "rz", "parameters": [{"date": "2021-03-15T01:02:20-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz2"}, {"qubits": [3], "gate": "rz", "parameters": [{"date": "2021-03-15T01:02:20-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz3"}, {"qubits": [4], "gate": "rz", "parameters": [{"date": "2021-03-15T01:02:20-04:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz4"}, {"qubits": [0], "gate": "sx", "parameters": [{"date": "2021-03-15T00:22:15-04:00", "name": "gate_error", "unit": "", "value": 0.0013043388897769352}, {"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx0"}, {"qubits": [1], "gate": "sx", "parameters": [{"date": "2021-03-15T00:24:31-04:00", "name": "gate_error", "unit": "", "value": 0.0016225037300878712}, {"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx1"}, {"qubits": [2], "gate": "sx", "parameters": [{"date": "2021-03-15T00:26:15-04:00", "name": "gate_error", "unit": "", "value": 0.0006173446629852812}, {"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx2"}, {"qubits": [3], "gate": "sx", "parameters": [{"date": "2021-03-15T00:27:58-04:00", "name": "gate_error", "unit": "", "value": 0.0003956947295829953}, {"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx3"}, {"qubits": [4], "gate": "sx", "parameters": [{"date": "2021-03-15T00:29:42-04:00", "name": "gate_error", "unit": "", "value": 0.0032277421851412153}, {"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx4"}, {"qubits": [0], "gate": "x", "parameters": [{"date": "2021-03-15T00:22:15-04:00", "name": "gate_error", "unit": "", "value": 0.0013043388897769352}, {"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x0"}, {"qubits": [1], "gate": "x", "parameters": [{"date": "2021-03-15T00:24:31-04:00", "name": "gate_error", "unit": "", "value": 0.0016225037300878712}, {"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x1"}, {"qubits": [2], "gate": "x", "parameters": [{"date": "2021-03-15T00:26:15-04:00", "name": "gate_error", "unit": "", "value": 0.0006173446629852812}, {"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x2"}, {"qubits": [3], "gate": "x", "parameters": [{"date": "2021-03-15T00:27:58-04:00", "name": "gate_error", "unit": "", "value": 0.0003956947295829953}, {"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x3"}, {"qubits": [4], "gate": "x", "parameters": [{"date": "2021-03-15T00:29:42-04:00", "name": "gate_error", "unit": "", "value": 0.0032277421851412153}, {"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x4"}, {"qubits": [4, 2], "gate": "cx", "parameters": [{"date": "2021-03-15T01:02:20-04:00", "name": "gate_error", "unit": "", "value": 0.0394454366954671}, {"date": "2021-03-12T01:02:20-05:00", "name": "gate_length", "unit": "ns", "value": 355.55555555555554}], "name": "cx4_2"}, {"qubits": [2, 4], "gate": "cx", "parameters": [{"date": "2021-03-15T01:02:20-04:00", "name": "gate_error", "unit": "", "value": 0.0394454366954671}, {"date": "2021-03-12T01:02:20-05:00", "name": "gate_length", "unit": "ns", "value": 391.1111111111111}], "name": "cx2_4"}, {"qubits": [3, 2], "gate": "cx", "parameters": [{"date": "2021-03-15T00:50:18-04:00", "name": "gate_error", "unit": "", "value": 0.0177363241903033}, {"date": "2021-03-12T01:02:20-05:00", "name": "gate_length", "unit": "ns", "value": 483.55555555555554}], "name": "cx3_2"}, {"qubits": [2, 3], "gate": "cx", "parameters": [{"date": "2021-03-15T00:50:18-04:00", "name": "gate_error", "unit": "", "value": 0.0177363241903033}, {"date": "2021-03-12T01:02:20-05:00", "name": "gate_length", "unit": "ns", "value": 519.1111111111111}], "name": "cx2_3"}, {"qubits": [1, 2], "gate": "cx", "parameters": [{"date": "2021-03-15T00:45:01-04:00", "name": "gate_error", "unit": "", "value": 0.0222732707463274}, {"date": "2021-03-12T01:02:20-05:00", "name": "gate_length", "unit": "ns", "value": 583.1111111111111}], "name": "cx1_2"}, {"qubits": [2, 1], "gate": "cx", "parameters": [{"date": "2021-03-15T00:45:01-04:00", "name": "gate_error", "unit": "", "value": 0.0222732707463274}, {"date": "2021-03-12T01:02:20-05:00", "name": "gate_length", "unit": "ns", "value": 618.6666666666666}], "name": "cx2_1"}, {"qubits": [0, 2], "gate": "cx", "parameters": [{"date": "2021-03-15T00:39:55-04:00", "name": "gate_error", "unit": "", "value": 0.02167489052376287}, {"date": "2021-03-12T01:02:20-05:00", "name": "gate_length", "unit": "ns", "value": 419.55555555555554}], "name": "cx0_2"}, {"qubits": [2, 0], "gate": "cx", "parameters": [{"date": "2021-03-15T00:39:55-04:00", "name": "gate_error", "unit": "", "value": 0.02167489052376287}, {"date": "2021-03-12T01:02:20-05:00", "name": "gate_length", "unit": "ns", "value": 455.1111111111111}], "name": "cx2_0"}, {"qubits": [0, 1], "gate": "cx", "parameters": [{"date": "2021-03-15T00:34:45-04:00", "name": "gate_error", "unit": "", "value": 0.021170783846888724}, {"date": "2021-03-12T01:02:20-05:00", "name": "gate_length", "unit": "ns", "value": 440.88888888888886}], "name": "cx0_1"}, {"qubits": [1, 0], "gate": "cx", "parameters": [{"date": "2021-03-15T00:34:45-04:00", "name": "gate_error", "unit": "", "value": 0.021170783846888724}, {"date": "2021-03-12T01:02:20-05:00", "name": "gate_length", "unit": "ns", "value": 476.4444444444444}], "name": "cx1_0"}, {"qubits": [3, 4], "gate": "cx", "parameters": [{"date": "2021-03-14T00:56:06-05:00", "name": "gate_error", "unit": "", "value": 0.015858131645591494}, {"date": "2021-03-12T01:02:20-05:00", "name": "gate_length", "unit": "ns", "value": 469.3333333333333}], "name": "cx3_4"}, {"qubits": [4, 3], "gate": "cx", "parameters": [{"date": "2021-03-14T00:56:06-05:00", "name": "gate_error", "unit": "", "value": 0.015858131645591494}, {"date": "2021-03-12T01:02:20-05:00", "name": "gate_length", "unit": "ns", "value": 504.88888888888886}], "name": "cx4_3"}, {"qubits": [0], "gate": "reset", "parameters": [{"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 5344}], "name": "reset0"}, {"qubits": [1], "gate": "reset", "parameters": [{"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 5344}], "name": "reset1"}, {"qubits": [2], "gate": "reset", "parameters": [{"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 5344}], "name": "reset2"}, {"qubits": [3], "gate": "reset", "parameters": [{"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 5344}], "name": "reset3"}, {"qubits": [4], "gate": "reset", "parameters": [{"date": "2021-03-15T01:02:20-04:00", "name": "gate_length", "unit": "ns", "value": 5344}], "name": "reset4"}], "general": [{"date": "2021-03-15T01:02:20-04:00", "name": "jq_01", "unit": "GHz", "value": 0.0019048832943129}, {"date": "2021-03-15T01:02:20-04:00", "name": "zz_01", "unit": "GHz", "value": -4.4398488162847355e-05}, {"date": "2021-03-15T01:02:20-04:00", "name": "jq_12", "unit": "GHz", "value": 0.0012356332190037748}, {"date": "2021-03-15T01:02:20-04:00", "name": "zz_12", "unit": "GHz", "value": -3.143188075660228e-05}, {"date": "2021-03-15T01:02:20-04:00", "name": "jq_02", "unit": "GHz", "value": 0.0018203052660758679}, {"date": "2021-03-15T01:02:20-04:00", "name": "zz_02", "unit": "GHz", "value": -9.193504368395755e-05}, {"date": "2021-03-15T01:02:20-04:00", "name": "jq_23", "unit": "GHz", "value": 0.0018197914039661215}, {"date": "2021-03-15T01:02:20-04:00", "name": "zz_23", "unit": "GHz", "value": -0.00010375981304385374}, {"date": "2021-03-15T01:02:20-04:00", "name": "jq_34", "unit": "GHz", "value": 0.002008951710856709}, {"date": "2021-03-15T01:02:20-04:00", "name": "zz_34", "unit": "GHz", "value": -8.438162979241823e-05}, {"date": "2021-03-15T01:02:20-04:00", "name": "jq_24", "unit": "GHz", "value": 0.0018116347920322281}, {"date": "2021-03-15T01:02:20-04:00", "name": "zz_24", "unit": "GHz", "value": -3.837006496679632e-05}]} \ No newline at end of file diff --git a/qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/__init__.py b/qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/__init__.py deleted file mode 100644 index cf3aa1af6db7..000000000000 --- a/qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/__init__.py +++ /dev/null @@ -1,18 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2023. -# -# 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. - - -""" -A 7 qubit fake :class:`.BackendV1` with pulse capabilities. -""" - -from .fake_7q_pulse_v1 import Fake7QPulseV1 diff --git a/qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/conf_nairobi.json b/qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/conf_nairobi.json deleted file mode 100644 index 3c87bb42f8c9..000000000000 --- a/qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/conf_nairobi.json +++ /dev/null @@ -1 +0,0 @@ -{"backend_name": "ibm_nairobi", "backend_version": "1.0.13", "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": ["cx", "u2", "sx", "delay", "measure", "reset", "rz", "setf", "u3", "acquire", "shiftf", "u1", "x", "id", "play"], "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-05-20T04: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, "quantum_volume": 32, "qubit_channel_mapping": [["d0", "u0", "m0", "u1"], ["u2", "u5", "m1", "u3", "u1", "d1", "u0", "u4"], ["u2", "m2", "u4", "d2"], ["d3", "u8", "u5", "u6", "u3", "m3"], ["u9", "u7", "d4", "m4"], ["u8", "d5", "u9", "u10", "u6", "u11", "m5", "u7"], ["u10", "u11", "d6", "m6"]], "supported_features": ["q", "o", "b", "j"], "timing_constraints": {"acquire_alignment": 16, "granularity": 16, "min_length": 64, "pulse_alignment": 1}, "uchannels_enabled": true, "url": "None", "input_allowed": ["job", "runtime"], "allow_object_storage": true, "pulse_num_channels": 9, "pulse_num_qubits": 3, "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.760483791030155, 5.760483791030155], [4.670333454748703, 5.670333454748703], [4.774436548447222, 5.774436548447222], [4.526646125967889, 5.526646125967889], [4.677223413479857, 5.677223413479857], [4.79284383826766, 5.79284383826766], [4.6286976963519475, 5.6286976963519475]], "meas_lo_range": [[6.692252553, 7.692252553], [6.628685982, 7.628685982], [6.875559376, 7.875559376000001], [6.750891115000001, 7.750891115000001], [6.691408487, 7.691408487], [6.794383799, 7.794383799], [6.692597760000001, 7.692597760000001]], "meas_kernels": ["hw_qmfk"], "discriminators": ["quadratic_discriminator", "linear_discriminator", "hw_qmfk"], "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.135243733769955, "delta1": -2.13994911280816, "delta2": -2.129394678066021, "delta3": -2.1521818261888614, "delta4": -2.139992595470489, "delta5": -2.1396276723776833, "delta6": -2.1390204375856214, "jq0q1": 0.015232735472195266, "jq1q2": 0.020731271939206836, "jq1q3": 0.02043730274123934, "jq3q5": 0.015020857056561223, "jq4q5": 0.021264092348739026, "jq5q6": 0.02072534082080968, "omegad0": 1.373110659068891, "omegad1": 1.1780873207435267, "omegad2": 0.9139845233449416, "omegad3": 0.9656993163503216, "omegad4": 0.9298407995337947, "omegad5": 0.9577198276355297, "omegad6": 0.9685069625647934, "wq0": 33.052594464457044, "wq1": 32.48616319609612, "wq2": 33.140262224854595, "wq3": 31.58334908307263, "wq4": 32.52945408356278, "wq5": 33.255918637799375, "wq6": 32.22455801068434}}, "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_v1/fake_7q_pulse/defs_nairobi.json b/qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/defs_nairobi.json deleted file mode 100644 index cf55696a18f6..000000000000 --- a/qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/defs_nairobi.json +++ /dev/null @@ -1 +0,0 @@ -{"qubit_freq_est": [5.260483791030155, 5.170333454748703, 5.274436548447222, 5.026646125967889, 5.177223413479857, 5.29284383826766, 5.1286976963519475], "meas_freq_est": [7.192252553, 7.128685982, 7.375559376000001, 7.250891115000001, 7.191408487, 7.294383799, 7.192597760000001], "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.5357141060492343e-17, -0.13803784665721291], "beta": -0.3021255920291164, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 560, "ch": "d0", "label": "Xp_d0", "pulse_shape": "drag", "parameters": {"amp": [0.13803784665721291, 0.0], "beta": -0.3021255920291164, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.0806155063849806, 0.0012138954378855442], "beta": -0.7029520016067141, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d1", "label": "CR90p_d1_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.08863622524623377, 0.007269508342975345], "duration": 400, "sigma": 64, "width": 144}}, {"name": "parametric_pulse", "t0": 720, "ch": "d1", "label": "CR90m_d1_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.08863622524623377, -0.007269508342975334], "duration": 400, "sigma": 64, "width": 144}}, {"name": "parametric_pulse", "t0": 160, "ch": "u0", "label": "CR90p_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.08593778273963346, 0.33714981558492746], "duration": 400, "sigma": 64, "width": 144}}, {"name": "parametric_pulse", "t0": 720, "ch": "u0", "label": "CR90m_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0859377827396335, -0.33714981558492746], "duration": 400, "sigma": 64, "width": 144}}, {"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.06898810104354877, -4.232956317542851e-05], "beta": -0.3811344922255435, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 560, "ch": "d0", "label": "Xp_d0", "pulse_shape": "drag", "parameters": {"amp": [0.13803784665721291, 0.0], "beta": -0.3021255920291164, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1120, "ch": "d0", "label": "Y90m_d0", "pulse_shape": "drag", "parameters": {"amp": [0.00010082089490069105, -0.0689880403587025], "beta": -0.3811344922255435, "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.0010082199830323095, 0.08061834099202726], "beta": -0.7029520016067141, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d1", "label": "CR90p_d1_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.08863622524623377, 0.007269508342975345], "duration": 400, "sigma": 64, "width": 144}}, {"name": "parametric_pulse", "t0": 720, "ch": "d1", "label": "CR90m_d1_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.08863622524623377, -0.007269508342975334], "duration": 400, "sigma": 64, "width": 144}}, {"name": "fc", "t0": 1120, "ch": "d1", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1120, "ch": "d1", "label": "X90p_d1", "pulse_shape": "drag", "parameters": {"amp": [0.0806155063849806, 0.0012138954378855442], "beta": -0.7029520016067141, "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.08593778273963346, 0.33714981558492746], "duration": 400, "sigma": 64, "width": 144}}, {"name": "parametric_pulse", "t0": 720, "ch": "u0", "label": "CR90m_u0", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0859377827396335, -0.33714981558492746], "duration": 400, "sigma": 64, "width": 144}}, {"name": "fc", "t0": 1120, "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": 1120, "ch": "u4", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u5", "phase": -3.141592653589793}, {"name": "fc", "t0": 1120, "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.0010082199830323095, 0.08061834099202726], "beta": -0.7029520016067141, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d1", "label": "CR90p_d1_u4", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04813526109776704, 0.0014942671618965331], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 1040, "ch": "d1", "label": "CR90m_d1_u4", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04813526109776704, -0.0014942671618965273], "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.0806155063849806, 0.0012138954378855442], "beta": -0.7029520016067141, "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.10371910088292566, 0.0011326190673325745], "beta": -0.6831909328371424, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 880, "ch": "d2", "label": "Xp_d2", "pulse_shape": "drag", "parameters": {"amp": [0.20737902363209756, 0.0], "beta": -0.6282018967411466, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1760, "ch": "d2", "label": "Y90m_d2", "pulse_shape": "drag", "parameters": {"amp": [0.0009733835721556201, -0.10372071749817223], "beta": -0.6831909328371424, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u0", "phase": -3.141592653589793}, {"name": "fc", "t0": 1760, "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.05337184393520376, 0.13019185069080774], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 1040, "ch": "u4", "label": "CR90m_u4", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05337184393520374, -0.13019185069080774], "duration": 720, "sigma": 64, "width": 464}}, {"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, 3], "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": [-2.955481868666583e-17, -0.1608889393374103], "beta": -1.7557151694395088, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 608, "ch": "d1", "label": "Xp_d1", "pulse_shape": "drag", "parameters": {"amp": [0.1608889393374103, 0.0], "beta": -1.7557151694395088, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "X90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.09807275176102961, 0.0011291345929712094], "beta": -2.054907442496601, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d3", "label": "CR90p_d3_u3", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0814293112152542, 0.004206764245458347], "duration": 448, "sigma": 64, "width": 192}}, {"name": "parametric_pulse", "t0": 768, "ch": "d3", "label": "CR90m_d3_u3", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0814293112152542, -0.004206764245458338], "duration": 448, "sigma": 64, "width": 192}}, {"name": "fc", "t0": 0, "ch": "u0", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u3", "label": "CR90p_u3", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.19155169360505847, 0.19024318448958547], "duration": 448, "sigma": 64, "width": 192}}, {"name": "parametric_pulse", "t0": 768, "ch": "u3", "label": "CR90m_u3", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.19155169360505844, -0.1902431844895855], "duration": 448, "sigma": 64, "width": 192}}, {"name": "fc", "t0": 0, "ch": "u4", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u5", "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.0806155063849806, 0.0012138954378855442], "beta": -0.7029520016067141, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d1", "label": "CR90p_d1_u4", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.04813526109776704, 0.0014942671618965331], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 1040, "ch": "d1", "label": "CR90m_d1_u4", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.04813526109776704, -0.0014942671618965273], "duration": 720, "sigma": 64, "width": 464}}, {"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.809490862520274e-17, -0.20737902363209756], "beta": -0.6282018967411466, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 880, "ch": "d2", "label": "Xp_d2", "pulse_shape": "drag", "parameters": {"amp": [0.20737902363209756, 0.0], "beta": -0.6282018967411466, "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.05337184393520376, 0.13019185069080774], "duration": 720, "sigma": 64, "width": 464}}, {"name": "parametric_pulse", "t0": 1040, "ch": "u4", "label": "CR90m_u4", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.05337184393520374, -0.13019185069080774], "duration": 720, "sigma": 64, "width": 464}}]}, {"name": "cx", "qubits": [3, 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.0806155063849806, 0.0012138954378855442], "beta": -0.7029520016067141, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 608, "ch": "d1", "label": "Xp_d1", "pulse_shape": "drag", "parameters": {"amp": [0.1608889393374103, 0.0], "beta": -1.7557151694395088, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1216, "ch": "d1", "label": "Y90m_d1", "pulse_shape": "drag", "parameters": {"amp": [0.0010082199830322995, -0.08061834099202726], "beta": -0.7029520016067141, "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.0013194230301066731, 0.09807037629058638], "beta": -2.054907442496601, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d3", "label": "CR90p_d3_u3", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.0814293112152542, 0.004206764245458347], "duration": 448, "sigma": 64, "width": 192}}, {"name": "parametric_pulse", "t0": 768, "ch": "d3", "label": "CR90m_d3_u3", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.0814293112152542, -0.004206764245458338], "duration": 448, "sigma": 64, "width": 192}}, {"name": "fc", "t0": 1216, "ch": "d3", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1216, "ch": "d3", "label": "X90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.09807275176102961, 0.0011291345929712094], "beta": -2.054907442496601, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u0", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u3", "phase": -3.141592653589793}, {"name": "parametric_pulse", "t0": 160, "ch": "u3", "label": "CR90p_u3", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.19155169360505847, 0.19024318448958547], "duration": 448, "sigma": 64, "width": 192}}, {"name": "parametric_pulse", "t0": 768, "ch": "u3", "label": "CR90m_u3", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.19155169360505844, -0.1902431844895855], "duration": 448, "sigma": 64, "width": 192}}, {"name": "fc", "t0": 1216, "ch": "u3", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u4", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u5", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u8", "phase": -3.141592653589793}, {"name": "fc", "t0": 1216, "ch": "u8", "phase": -1.5707963267948966}]}, {"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.0013194230301066731, 0.09807037629058638], "beta": -2.054907442496601, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d3", "label": "CR90p_d3_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.11111466334214123, 0.0005635802966127636], "duration": 368, "sigma": 64, "width": 112}}, {"name": "parametric_pulse", "t0": 688, "ch": "d3", "label": "CR90m_d3_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.11111466334214123, -0.0005635802966127499], "duration": 368, "sigma": 64, "width": 112}}, {"name": "fc", "t0": 1056, "ch": "d3", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1056, "ch": "d3", "label": "X90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.09807275176102961, 0.0011291345929712094], "beta": -2.054907442496601, "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.09894056020487856, -0.00034903572521790475], "beta": 0.1282264980409688, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 528, "ch": "d5", "label": "Xp_d5", "pulse_shape": "drag", "parameters": {"amp": [0.19790885510608502, 0.0], "beta": 0.6552557409875844, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1056, "ch": "d5", "label": "Y90m_d5", "pulse_shape": "drag", "parameters": {"amp": [-0.0002671526339833292, -0.09894081518293062], "beta": 0.1282264980409688, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u11", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u3", "phase": -3.141592653589793}, {"name": "fc", "t0": 1056, "ch": "u3", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u6", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u7", "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.5313550994725853, 0.36498968408998445], "duration": 368, "sigma": 64, "width": 112}}, {"name": "parametric_pulse", "t0": 688, "ch": "u8", "label": "CR90m_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.5313550994725853, -0.3649896840899845], "duration": 368, "sigma": 64, "width": 112}}, {"name": "fc", "t0": 1056, "ch": "u8", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [4, 5], "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.00043271179908717144, 0.10175479169852428], "beta": -1.0507173387200506, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d4", "label": "CR90p_d4_u9", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07950574144659196, 0.002411989630329751], "duration": 464, "sigma": 64, "width": 208}}, {"name": "parametric_pulse", "t0": 784, "ch": "d4", "label": "CR90m_d4_u9", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07950574144659196, -0.0024119896303297413], "duration": 464, "sigma": 64, "width": 208}}, {"name": "fc", "t0": 1248, "ch": "d4", "phase": -1.5707963267948966}, {"name": "parametric_pulse", "t0": 1248, "ch": "d4", "label": "X90p_d4", "pulse_shape": "drag", "parameters": {"amp": [0.10175569289899734, 6.193348105168277e-05], "beta": -1.0507173387200506, "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.09894056020487856, -0.00034903572521790475], "beta": 0.1282264980409688, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 624, "ch": "d5", "label": "Xp_d5", "pulse_shape": "drag", "parameters": {"amp": [0.19790885510608502, 0.0], "beta": 0.6552557409875844, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1248, "ch": "d5", "label": "Y90m_d5", "pulse_shape": "drag", "parameters": {"amp": [-0.0002671526339833292, -0.09894081518293062], "beta": 0.1282264980409688, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u11", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u6", "phase": -1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u7", "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.22793496420829948, 0.17308618078756108], "duration": 464, "sigma": 64, "width": 208}}, {"name": "parametric_pulse", "t0": 784, "ch": "u9", "label": "CR90m_u9", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.22793496420829945, -0.1730861807875611], "duration": 464, "sigma": 64, "width": 208}}, {"name": "fc", "t0": 1248, "ch": "u9", "phase": -1.5707963267948966}]}, {"name": "cx", "qubits": [5, 3], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d3", "label": "X90p_d3", "pulse_shape": "drag", "parameters": {"amp": [0.09807275176102961, 0.0011291345929712094], "beta": -2.054907442496601, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d3", "label": "CR90p_d3_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.11111466334214123, 0.0005635802966127636], "duration": 368, "sigma": 64, "width": 112}}, {"name": "parametric_pulse", "t0": 688, "ch": "d3", "label": "CR90m_d3_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.11111466334214123, -0.0005635802966127499], "duration": 368, "sigma": 64, "width": 112}}, {"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.635526688928765e-17, -0.19790885510608502], "beta": 0.6552557409875844, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 528, "ch": "d5", "label": "Xp_d5", "pulse_shape": "drag", "parameters": {"amp": [0.19790885510608502, 0.0], "beta": 0.6552557409875844, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u11", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u6", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u7", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u8", "label": "CR90p_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.5313550994725853, 0.36498968408998445], "duration": 368, "sigma": 64, "width": 112}}, {"name": "parametric_pulse", "t0": 688, "ch": "u8", "label": "CR90m_u8", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.5313550994725853, -0.3649896840899845], "duration": 368, "sigma": 64, "width": 112}}]}, {"name": "cx", "qubits": [5, 4], "sequence": [{"name": "parametric_pulse", "t0": 0, "ch": "d4", "label": "X90p_d4", "pulse_shape": "drag", "parameters": {"amp": [0.10175569289899734, 6.193348105168277e-05], "beta": -1.0507173387200506, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d4", "label": "CR90p_d4_u9", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.07950574144659196, 0.002411989630329751], "duration": 464, "sigma": 64, "width": 208}}, {"name": "parametric_pulse", "t0": 784, "ch": "d4", "label": "CR90m_d4_u9", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07950574144659196, -0.0024119896303297413], "duration": 464, "sigma": 64, "width": 208}}, {"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.635526688928765e-17, -0.19790885510608502], "beta": 0.6552557409875844, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 624, "ch": "d5", "label": "Xp_d5", "pulse_shape": "drag", "parameters": {"amp": [0.19790885510608502, 0.0], "beta": 0.6552557409875844, "duration": 160, "sigma": 40}}, {"name": "fc", "t0": 0, "ch": "u11", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u6", "phase": 1.5707963267948966}, {"name": "fc", "t0": 0, "ch": "u7", "phase": 1.5707963267948966}, {"name": "parametric_pulse", "t0": 160, "ch": "u9", "label": "CR90p_u9", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.22793496420829948, 0.17308618078756108], "duration": 464, "sigma": 64, "width": 208}}, {"name": "parametric_pulse", "t0": 784, "ch": "u9", "label": "CR90m_u9", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.22793496420829945, -0.1730861807875611], "duration": 464, "sigma": 64, "width": 208}}]}, {"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.00026715263398331706, 0.09894081518293062], "beta": 0.1282264980409688, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d5", "label": "CR90p_d5_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06470860535696249, -0.00011874259770551375], "duration": 528, "sigma": 64, "width": 272}}, {"name": "parametric_pulse", "t0": 848, "ch": "d5", "label": "CR90m_d5_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06470860535696249, 0.00011874259770552168], "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.09894056020487856, -0.00034903572521790475], "beta": 0.1282264980409688, "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.09774839859617002, 0.0014181980154262224], "beta": -1.2239831108192651, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 688, "ch": "d6", "label": "Xp_d6", "pulse_shape": "drag", "parameters": {"amp": [0.19570454467079734, 0.0], "beta": -1.11157592503581, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 1376, "ch": "d6", "label": "Y90m_d6", "pulse_shape": "drag", "parameters": {"amp": [0.0013957949176611887, -0.09774872106720642], "beta": -1.2239831108192651, "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.7282535375880578, -0.018305625179417133], "duration": 528, "sigma": 64, "width": 272}}, {"name": "parametric_pulse", "t0": 848, "ch": "u11", "label": "CR90m_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.7282535375880578, 0.018305625179417223], "duration": 528, "sigma": 64, "width": 272}}, {"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": "fc", "t0": 1376, "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.09894056020487856, -0.00034903572521790475], "beta": 0.1282264980409688, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 160, "ch": "d5", "label": "CR90p_d5_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.06470860535696249, -0.00011874259770551375], "duration": 528, "sigma": 64, "width": 272}}, {"name": "parametric_pulse", "t0": 848, "ch": "d5", "label": "CR90m_d5_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.06470860535696249, 0.00011874259770552168], "duration": 528, "sigma": 64, "width": 272}}, {"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.595034163145232e-17, -0.19570454467079734], "beta": -1.11157592503581, "duration": 160, "sigma": 40}}, {"name": "parametric_pulse", "t0": 688, "ch": "d6", "label": "Xp_d6", "pulse_shape": "drag", "parameters": {"amp": [0.19570454467079734, 0.0], "beta": -1.11157592503581, "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.7282535375880578, -0.018305625179417133], "duration": 528, "sigma": 64, "width": 272}}, {"name": "parametric_pulse", "t0": 848, "ch": "u11", "label": "CR90m_u11", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.7282535375880578, 0.018305625179417223], "duration": 528, "sigma": 64, "width": 272}}]}, {"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.35504283669282355, 0.18424056044506887], "duration": 22400, "sigma": 64, "width": 22144}}, {"name": "delay", "t0": 22400, "ch": "m0", "duration": 1664}, {"name": "acquire", "t0": 0, "duration": 22400, "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.35504283669282355, 0.18424056044506887], "duration": 22400, "sigma": 64, "width": 22144}}, {"name": "delay", "t0": 22400, "ch": "m0", "duration": 1664}, {"name": "parametric_pulse", "t0": 0, "ch": "m1", "label": "M_m1", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.16284250027120173, 0.3653523232517123], "duration": 22400, "sigma": 64, "width": 22144}}, {"name": "delay", "t0": 22400, "ch": "m1", "duration": 1664}, {"name": "parametric_pulse", "t0": 0, "ch": "m2", "label": "M_m2", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.26715779530515044, -0.32407825043913596], "duration": 22400, "sigma": 64, "width": 22144}}, {"name": "delay", "t0": 22400, "ch": "m2", "duration": 1664}, {"name": "parametric_pulse", "t0": 0, "ch": "m3", "label": "M_m3", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.07016762258754601, 0.4140972165330403], "duration": 22400, "sigma": 64, "width": 22144}}, {"name": "delay", "t0": 22400, "ch": "m3", "duration": 1664}, {"name": "parametric_pulse", "t0": 0, "ch": "m4", "label": "M_m4", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.1990345002226279, 0.2878980161813011], "duration": 22400, "sigma": 64, "width": 22144}}, {"name": "delay", "t0": 22400, "ch": "m4", "duration": 1664}, {"name": "parametric_pulse", "t0": 0, "ch": "m5", "label": "M_m5", "pulse_shape": "gaussian_square", "parameters": {"amp": [-0.022634129553006123, 0.3191985215808146], "duration": 22400, "sigma": 64, "width": 22144}}, {"name": "delay", "t0": 22400, "ch": "m5", "duration": 1664}, {"name": "parametric_pulse", "t0": 0, "ch": "m6", "label": "M_m6", "pulse_shape": "gaussian_square", "parameters": {"amp": [0.14677530588624732, -0.3720981182188356], "duration": 22400, "sigma": 64, "width": 22144}}, {"name": "delay", "t0": 22400, "ch": "m6", "duration": 1664}, {"name": "acquire", "t0": 0, "duration": 22400, "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.16284250027120173, 0.3653523232517123], "duration": 22400, "sigma": 64, "width": 22144}}, {"name": "delay", "t0": 22400, "ch": "m1", "duration": 1664}, {"name": "acquire", "t0": 0, "duration": 22400, "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.26715779530515044, -0.32407825043913596], "duration": 22400, "sigma": 64, "width": 22144}}, {"name": "delay", "t0": 22400, "ch": "m2", "duration": 1664}, {"name": "acquire", "t0": 0, "duration": 22400, "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.07016762258754601, 0.4140972165330403], "duration": 22400, "sigma": 64, "width": 22144}}, {"name": "delay", "t0": 22400, "ch": "m3", "duration": 1664}, {"name": "acquire", "t0": 0, "duration": 22400, "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.1990345002226279, 0.2878980161813011], "duration": 22400, "sigma": 64, "width": 22144}}, {"name": "delay", "t0": 22400, "ch": "m4", "duration": 1664}, {"name": "acquire", "t0": 0, "duration": 22400, "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.022634129553006123, 0.3191985215808146], "duration": 22400, "sigma": 64, "width": 22144}}, {"name": "delay", "t0": 22400, "ch": "m5", "duration": 1664}, {"name": "acquire", "t0": 0, "duration": 22400, "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.14677530588624732, -0.3720981182188356], "duration": 22400, "sigma": 64, "width": 22144}}, {"name": "delay", "t0": 22400, "ch": "m6", "duration": 1664}, {"name": "acquire", "t0": 0, "duration": 22400, "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.06898810104354877, -4.232956317542851e-05], "beta": -0.3811344922255435, "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.0806155063849806, 0.0012138954378855442], "beta": -0.7029520016067141, "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.10371910088292566, 0.0011326190673325745], "beta": -0.6831909328371424, "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.09807275176102961, 0.0011291345929712094], "beta": -2.054907442496601, "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.10175569289899734, 6.193348105168277e-05], "beta": -1.0507173387200506, "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.09894056020487856, -0.00034903572521790475], "beta": 0.1282264980409688, "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.09774839859617002, 0.0014181980154262224], "beta": -1.2239831108192651, "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.00010082089490068418, 0.0689880403587025], "beta": -0.3811344922255435, "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.0010082199830323095, 0.08061834099202726], "beta": -0.7029520016067141, "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.0009733835721556096, 0.10372071749817223], "beta": -0.6831909328371424, "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.0013194230301066731, 0.09807037629058638], "beta": -2.054907442496601, "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.00043271179908717144, 0.10175479169852428], "beta": -1.0507173387200506, "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.00026715263398331706, 0.09894081518293062], "beta": 0.1282264980409688, "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.0013957949176612004, 0.09774872106720642], "beta": -1.2239831108192651, "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.06898810104354877, -4.232956317542851e-05], "beta": -0.3811344922255435, "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.0689880403587025, -0.00010082089490069527], "beta": -0.3811344922255435, "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.0806155063849806, 0.0012138954378855442], "beta": -0.7029520016067141, "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.08061834099202726, -0.0010082199830323043], "beta": -0.7029520016067141, "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.10371910088292566, 0.0011326190673325745], "beta": -0.6831909328371424, "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.10372071749817223, -0.0009733835721556265], "beta": -0.6831909328371424, "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.09807275176102961, 0.0011291345929712094], "beta": -2.054907442496601, "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.09807037629058638, -0.001319423030106667], "beta": -2.054907442496601, "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.10175569289899734, 6.193348105168277e-05], "beta": -1.0507173387200506, "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.10175479169852428, -0.00043271179908716526], "beta": -1.0507173387200506, "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.09894056020487856, -0.00034903572521790475], "beta": 0.1282264980409688, "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.09894081518293062, 0.00026715263398332313], "beta": 0.1282264980409688, "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.09774839859617002, 0.0014181980154262224], "beta": -1.2239831108192651, "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.09774872106720642, -0.0013957949176611945], "beta": -1.2239831108192651, "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.13803784665721291, 0.0], "beta": -0.3021255920291164, "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.1608889393374103, 0.0], "beta": -1.7557151694395088, "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.20737902363209756, 0.0], "beta": -0.6282018967411466, "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.19627353160994626, 0.0], "beta": -1.051678430759538, "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.20384266608590032, 0.0], "beta": -0.7705656921661587, "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.19790885510608502, 0.0], "beta": 0.6552557409875844, "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.19570454467079734, 0.0], "beta": -1.11157592503581, "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_v1/fake_7q_pulse/fake_7q_pulse_v1.py b/qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/fake_7q_pulse_v1.py deleted file mode 100644 index d3a1d33ebee5..000000000000 --- a/qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/fake_7q_pulse_v1.py +++ /dev/null @@ -1,44 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2023. -# -# 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. - -""" -A 7 qubit fake :class:`.BackendV1` with pulse capabilities. -""" - -import os -from qiskit.providers.fake_provider import fake_pulse_backend - - -class Fake7QPulseV1(fake_pulse_backend.FakePulseBackend): - """A fake **pulse** backend with the following characteristics: - - * num_qubits: 7 - * coupling_map: - - .. code-block:: text - - 0 ↔ 1 ↔ 3 ↔ 5 ↔ 6 - ↕ ↕ - 2 4 - - * basis_gates: ``["id", "rz", "sx", "x", "cx", "reset"]`` - * scheduled instructions: - # ``{'u3', 'id', 'measure', 'u2', 'x', 'u1', 'sx', 'rz'}`` for all individual qubits - # ``{'cx'}`` for all edges - # ``{'measure'}`` for (0, 1, 2, 3, 4, 5, 6) - """ - - dirname = os.path.dirname(__file__) - conf_filename = "conf_nairobi.json" - props_filename = "props_nairobi.json" - defs_filename = "defs_nairobi.json" - backend_name = "fake_7q_pulse_v1" diff --git a/qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/props_nairobi.json b/qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/props_nairobi.json deleted file mode 100644 index 3cd8c700583b..000000000000 --- a/qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/props_nairobi.json +++ /dev/null @@ -1 +0,0 @@ -{"backend_name": "ibm_nairobi", "backend_version": "1.0.13", "last_update_date": "2021-12-09T14:02:06-05:00", "qubits": [[{"date": "2021-12-09T11:30:18-05:00", "name": "T1", "unit": "us", "value": 209.26307583699622}, {"date": "2021-12-09T00:35:50-05:00", "name": "T2", "unit": "us", "value": 51.356207758388386}, {"date": "2021-12-09T14:02:06-05:00", "name": "frequency", "unit": "GHz", "value": 5.260483791030155}, {"date": "2021-12-09T14:02:06-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3398345949354833}, {"date": "2021-12-09T00:33:50-05:00", "name": "readout_error", "unit": "", "value": 0.021199999999999997}, {"date": "2021-12-09T00:33:50-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.028800000000000048}, {"date": "2021-12-09T00:33:50-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0136}, {"date": "2021-12-09T00:33:50-05:00", "name": "readout_length", "unit": "ns", "value": 5347.555555555556}], [{"date": "2021-12-09T11:32:42-05:00", "name": "T1", "unit": "us", "value": 109.68501080336374}, {"date": "2021-12-09T00:47:58-05:00", "name": "T2", "unit": "us", "value": 135.26831435320162}, {"date": "2021-12-09T14:02:06-05:00", "name": "frequency", "unit": "GHz", "value": 5.170333454748703}, {"date": "2021-12-09T14:02:06-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3405834792685346}, {"date": "2021-12-09T00:33:50-05:00", "name": "readout_error", "unit": "", "value": 0.02740000000000009}, {"date": "2021-12-09T00:33:50-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.042}, {"date": "2021-12-09T00:33:50-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.012800000000000034}, {"date": "2021-12-09T00:33:50-05:00", "name": "readout_length", "unit": "ns", "value": 5347.555555555556}], [{"date": "2021-12-09T11:30:18-05:00", "name": "T1", "unit": "us", "value": 137.09323422858205}, {"date": "2021-12-09T00:35:50-05:00", "name": "T2", "unit": "us", "value": 168.29289411620812}, {"date": "2021-12-09T14:02:06-05:00", "name": "frequency", "unit": "GHz", "value": 5.274436548447222}, {"date": "2021-12-09T14:02:06-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3389036888077824}, {"date": "2021-12-09T00:33:50-05:00", "name": "readout_error", "unit": "", "value": 0.02510000000000001}, {"date": "2021-12-09T00:33:50-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0374}, {"date": "2021-12-09T00:33:50-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.012800000000000034}, {"date": "2021-12-09T00:33:50-05:00", "name": "readout_length", "unit": "ns", "value": 5347.555555555556}], [{"date": "2021-12-09T11:30:18-05:00", "name": "T1", "unit": "us", "value": 122.15901398132361}, {"date": "2021-12-09T00:35:50-05:00", "name": "T2", "unit": "us", "value": 56.228061592660424}, {"date": "2021-12-09T14:02:06-05:00", "name": "frequency", "unit": "GHz", "value": 5.026646125967889}, {"date": "2021-12-09T14:02:06-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34253037607049963}, {"date": "2021-12-09T00:33:50-05:00", "name": "readout_error", "unit": "", "value": 0.02939999999999998}, {"date": "2021-12-09T00:33:50-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0446}, {"date": "2021-12-09T00:33:50-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.01419999999999999}, {"date": "2021-12-09T00:33:50-05:00", "name": "readout_length", "unit": "ns", "value": 5347.555555555556}], [{"date": "2021-12-09T11:30:18-05:00", "name": "T1", "unit": "us", "value": 127.53250584114997}, {"date": "2021-12-09T00:35:50-05:00", "name": "T2", "unit": "us", "value": 86.48741785670725}, {"date": "2021-12-09T14:02:06-05:00", "name": "frequency", "unit": "GHz", "value": 5.177223413479857}, {"date": "2021-12-09T14:02:06-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34059039974918304}, {"date": "2021-12-09T00:33:50-05:00", "name": "readout_error", "unit": "", "value": 0.02859999999999996}, {"date": "2021-12-09T00:33:50-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.04720000000000002}, {"date": "2021-12-09T00:33:50-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.01}, {"date": "2021-12-09T00:33:50-05:00", "name": "readout_length", "unit": "ns", "value": 5347.555555555556}], [{"date": "2021-12-09T11:32:42-05:00", "name": "T1", "unit": "us", "value": 148.0397074053982}, {"date": "2021-12-09T00:47:58-05:00", "name": "T2", "unit": "us", "value": 39.22297388061366}, {"date": "2021-12-09T14:02:06-05:00", "name": "frequency", "unit": "GHz", "value": 5.29284383826766}, {"date": "2021-12-09T14:02:06-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.34053232043511467}, {"date": "2021-12-09T00:33:50-05:00", "name": "readout_error", "unit": "", "value": 0.028299999999999992}, {"date": "2021-12-09T00:33:50-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.0386}, {"date": "2021-12-09T00:33:50-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.018000000000000016}, {"date": "2021-12-09T00:33:50-05:00", "name": "readout_length", "unit": "ns", "value": 5347.555555555556}], [{"date": "2021-12-09T11:30:18-05:00", "name": "T1", "unit": "us", "value": 107.8791652204177}, {"date": "2021-12-09T00:35:50-05:00", "name": "T2", "unit": "us", "value": 178.79523310711417}, {"date": "2021-12-09T14:02:06-05:00", "name": "frequency", "unit": "GHz", "value": 5.1286976963519475}, {"date": "2021-12-09T14:02:06-05:00", "name": "anharmonicity", "unit": "GHz", "value": -0.3404356760163406}, {"date": "2021-12-09T00:33:50-05:00", "name": "readout_error", "unit": "", "value": 0.02859999999999996}, {"date": "2021-12-09T00:33:50-05:00", "name": "prob_meas0_prep1", "unit": "", "value": 0.04600000000000004}, {"date": "2021-12-09T00:33:50-05:00", "name": "prob_meas1_prep0", "unit": "", "value": 0.0112}, {"date": "2021-12-09T00:33:50-05:00", "name": "readout_length", "unit": "ns", "value": 5347.555555555556}]], "gates": [{"qubits": [0], "gate": "id", "parameters": [{"date": "2021-12-09T00:54:17-05:00", "name": "gate_error", "unit": "", "value": 0.0002409827161319061}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id0"}, {"qubits": [1], "gate": "id", "parameters": [{"date": "2021-12-09T00:54:17-05:00", "name": "gate_error", "unit": "", "value": 0.00042630736355316545}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id1"}, {"qubits": [2], "gate": "id", "parameters": [{"date": "2021-12-09T00:55:52-05:00", "name": "gate_error", "unit": "", "value": 0.0002203290287725651}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id2"}, {"qubits": [3], "gate": "id", "parameters": [{"date": "2021-12-09T00:54:17-05:00", "name": "gate_error", "unit": "", "value": 0.00028800768161162403}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id3"}, {"qubits": [4], "gate": "id", "parameters": [{"date": "2021-12-09T00:54:17-05:00", "name": "gate_error", "unit": "", "value": 0.0002901045509968039}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id4"}, {"qubits": [5], "gate": "id", "parameters": [{"date": "2021-12-09T00:54:17-05:00", "name": "gate_error", "unit": "", "value": 0.00047069490539712925}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id5"}, {"qubits": [6], "gate": "id", "parameters": [{"date": "2021-12-09T00:55:52-05:00", "name": "gate_error", "unit": "", "value": 0.00020598982496566794}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "id6"}, {"qubits": [0], "gate": "rz", "parameters": [{"date": "2021-12-09T14:02:06-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz0"}, {"qubits": [1], "gate": "rz", "parameters": [{"date": "2021-12-09T14:02:06-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz1"}, {"qubits": [2], "gate": "rz", "parameters": [{"date": "2021-12-09T14:02:06-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz2"}, {"qubits": [3], "gate": "rz", "parameters": [{"date": "2021-12-09T14:02:06-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz3"}, {"qubits": [4], "gate": "rz", "parameters": [{"date": "2021-12-09T14:02:06-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz4"}, {"qubits": [5], "gate": "rz", "parameters": [{"date": "2021-12-09T14:02:06-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz5"}, {"qubits": [6], "gate": "rz", "parameters": [{"date": "2021-12-09T14:02:06-05:00", "name": "gate_error", "unit": "", "value": 0}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 0}], "name": "rz6"}, {"qubits": [0], "gate": "sx", "parameters": [{"date": "2021-12-09T00:54:17-05:00", "name": "gate_error", "unit": "", "value": 0.0002409827161319061}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx0"}, {"qubits": [1], "gate": "sx", "parameters": [{"date": "2021-12-09T00:54:17-05:00", "name": "gate_error", "unit": "", "value": 0.00042630736355316545}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx1"}, {"qubits": [2], "gate": "sx", "parameters": [{"date": "2021-12-09T00:55:52-05:00", "name": "gate_error", "unit": "", "value": 0.0002203290287725651}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx2"}, {"qubits": [3], "gate": "sx", "parameters": [{"date": "2021-12-09T00:54:17-05:00", "name": "gate_error", "unit": "", "value": 0.00028800768161162403}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx3"}, {"qubits": [4], "gate": "sx", "parameters": [{"date": "2021-12-09T00:54:17-05:00", "name": "gate_error", "unit": "", "value": 0.0002901045509968039}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx4"}, {"qubits": [5], "gate": "sx", "parameters": [{"date": "2021-12-09T00:54:17-05:00", "name": "gate_error", "unit": "", "value": 0.00047069490539712925}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx5"}, {"qubits": [6], "gate": "sx", "parameters": [{"date": "2021-12-09T00:55:52-05:00", "name": "gate_error", "unit": "", "value": 0.00020598982496566794}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "sx6"}, {"qubits": [0], "gate": "x", "parameters": [{"date": "2021-12-09T00:54:17-05:00", "name": "gate_error", "unit": "", "value": 0.0002409827161319061}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x0"}, {"qubits": [1], "gate": "x", "parameters": [{"date": "2021-12-09T00:54:17-05:00", "name": "gate_error", "unit": "", "value": 0.00042630736355316545}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x1"}, {"qubits": [2], "gate": "x", "parameters": [{"date": "2021-12-09T00:55:52-05:00", "name": "gate_error", "unit": "", "value": 0.0002203290287725651}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x2"}, {"qubits": [3], "gate": "x", "parameters": [{"date": "2021-12-09T00:54:17-05:00", "name": "gate_error", "unit": "", "value": 0.00028800768161162403}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x3"}, {"qubits": [4], "gate": "x", "parameters": [{"date": "2021-12-09T00:54:17-05:00", "name": "gate_error", "unit": "", "value": 0.0002901045509968039}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x4"}, {"qubits": [5], "gate": "x", "parameters": [{"date": "2021-12-09T00:54:17-05:00", "name": "gate_error", "unit": "", "value": 0.00047069490539712925}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x5"}, {"qubits": [6], "gate": "x", "parameters": [{"date": "2021-12-09T00:55:52-05:00", "name": "gate_error", "unit": "", "value": 0.00020598982496566794}, {"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 35.55555555555556}], "name": "x6"}, {"qubits": [6, 5], "gate": "cx", "parameters": [{"date": "2021-12-09T01:11:04-05:00", "name": "gate_error", "unit": "", "value": 0.009177135385763452}, {"date": "2021-12-06T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 305.77777777777777}], "name": "cx6_5"}, {"qubits": [5, 6], "gate": "cx", "parameters": [{"date": "2021-12-09T01:11:04-05:00", "name": "gate_error", "unit": "", "value": 0.009177135385763452}, {"date": "2021-12-06T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 341.3333333333333}], "name": "cx5_6"}, {"qubits": [5, 4], "gate": "cx", "parameters": [{"date": "2021-12-09T01:08:50-05:00", "name": "gate_error", "unit": "", "value": 0.006194862109557553}, {"date": "2021-12-06T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 277.3333333333333}], "name": "cx5_4"}, {"qubits": [4, 5], "gate": "cx", "parameters": [{"date": "2021-12-09T01:08:50-05:00", "name": "gate_error", "unit": "", "value": 0.006194862109557553}, {"date": "2021-12-06T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 312.88888888888886}], "name": "cx4_5"}, {"qubits": [5, 3], "gate": "cx", "parameters": [{"date": "2021-12-09T01:06:05-05:00", "name": "gate_error", "unit": "", "value": 0.01015514536884643}, {"date": "2021-12-06T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 234.66666666666666}], "name": "cx5_3"}, {"qubits": [3, 5], "gate": "cx", "parameters": [{"date": "2021-12-09T01:06:05-05:00", "name": "gate_error", "unit": "", "value": 0.01015514536884643}, {"date": "2021-12-06T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 270.22222222222223}], "name": "cx3_5"}, {"qubits": [1, 3], "gate": "cx", "parameters": [{"date": "2021-12-09T01:03:55-05:00", "name": "gate_error", "unit": "", "value": 0.007921173114945335}, {"date": "2021-12-06T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 270.22222222222223}], "name": "cx1_3"}, {"qubits": [3, 1], "gate": "cx", "parameters": [{"date": "2021-12-09T01:03:55-05:00", "name": "gate_error", "unit": "", "value": 0.007921173114945335}, {"date": "2021-12-06T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 305.77777777777777}], "name": "cx3_1"}, {"qubits": [2, 1], "gate": "cx", "parameters": [{"date": "2021-12-09T01:01:31-05:00", "name": "gate_error", "unit": "", "value": 0.006071005105904914}, {"date": "2021-12-06T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 391.1111111111111}], "name": "cx2_1"}, {"qubits": [1, 2], "gate": "cx", "parameters": [{"date": "2021-12-09T01:01:31-05:00", "name": "gate_error", "unit": "", "value": 0.006071005105904914}, {"date": "2021-12-06T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 426.66666666666663}], "name": "cx1_2"}, {"qubits": [0, 1], "gate": "cx", "parameters": [{"date": "2021-12-09T00:58:35-05:00", "name": "gate_error", "unit": "", "value": 0.007771866789264448}, {"date": "2021-12-06T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 248.88888888888889}], "name": "cx0_1"}, {"qubits": [1, 0], "gate": "cx", "parameters": [{"date": "2021-12-09T00:58:35-05:00", "name": "gate_error", "unit": "", "value": 0.007771866789264448}, {"date": "2021-12-06T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 284.44444444444446}], "name": "cx1_0"}, {"qubits": [0], "gate": "reset", "parameters": [{"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 5696}], "name": "reset0"}, {"qubits": [1], "gate": "reset", "parameters": [{"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 5681.777777777777}], "name": "reset1"}, {"qubits": [2], "gate": "reset", "parameters": [{"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 5681.777777777777}], "name": "reset2"}, {"qubits": [3], "gate": "reset", "parameters": [{"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 5696}], "name": "reset3"}, {"qubits": [4], "gate": "reset", "parameters": [{"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 5696}], "name": "reset4"}, {"qubits": [5], "gate": "reset", "parameters": [{"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 5696}], "name": "reset5"}, {"qubits": [6], "gate": "reset", "parameters": [{"date": "2021-12-09T14:02:06-05:00", "name": "gate_length", "unit": "ns", "value": 5696}], "name": "reset6"}], "general": [{"date": "2021-12-09T14:02:06-05:00", "name": "jq_01", "unit": "GHz", "value": 0.002424365147211133}, {"date": "2021-12-09T14:02:06-05:00", "name": "zz_01", "unit": "GHz", "value": -7.44245306702971e-05}, {"date": "2021-12-09T14:02:06-05:00", "name": "jq_12", "unit": "GHz", "value": 0.003299484405707071}, {"date": "2021-12-09T14:02:06-05:00", "name": "zz_12", "unit": "GHz", "value": -0.00014195540167377774}, {"date": "2021-12-09T14:02:06-05:00", "name": "jq_45", "unit": "GHz", "value": 0.0033842854076643666}, {"date": "2021-12-09T14:02:06-05:00", "name": "zz_45", "unit": "GHz", "value": -0.00015121873088148923}, {"date": "2021-12-09T14:02:06-05:00", "name": "jq_56", "unit": "GHz", "value": 0.003298540438896099}, {"date": "2021-12-09T14:02:06-05:00", "name": "zz_56", "unit": "GHz", "value": -0.00016524485201342335}, {"date": "2021-12-09T14:02:06-05:00", "name": "jq_13", "unit": "GHz", "value": 0.0032526977547337834}, {"date": "2021-12-09T14:02:06-05:00", "name": "zz_13", "unit": "GHz", "value": -0.00015085979775338062}, {"date": "2021-12-09T14:02:06-05:00", "name": "jq_35", "unit": "GHz", "value": 0.0023906436500284963}, {"date": "2021-12-09T14:02:06-05:00", "name": "zz_35", "unit": "GHz", "value": -0.0001688529115642526}]} \ No newline at end of file diff --git a/qiskit/providers/fake_provider/fake_1q.py b/qiskit/providers/fake_provider/fake_1q.py deleted file mode 100644 index 09959620bc92..000000000000 --- a/qiskit/providers/fake_provider/fake_1q.py +++ /dev/null @@ -1,91 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2019. -# -# 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 1Q device (1 qubit). -""" -import datetime - -from qiskit.providers.models.backendproperties import BackendProperties, Gate, Nduv - -from .fake_backend import FakeBackend - - -class Fake1Q(FakeBackend): - """A fake 1Q backend.""" - - def __init__(self): - """ - 0 - """ - mock_time = datetime.datetime.now() - dt = 1.3333 - configuration = BackendProperties( - backend_name="fake_1q", - backend_version="0.0.0", - num_qubits=1, - basis_gates=["u1", "u2", "u3", "cx"], - simulator=False, - local=True, - conditional=False, - memory=False, - max_shots=1024, - qubits=[ - [ - Nduv(date=mock_time, name="T1", unit="µs", value=71.9500421005539), - Nduv(date=mock_time, name="frequency", unit="MHz", value=4919.96800692), - ] - ], - gates=[ - Gate( - gate="u1", - name="u1_0", - qubits=[0], - parameters=[ - Nduv(date=mock_time, name="gate_error", unit="", value=1.0), - Nduv(date=mock_time, name="gate_length", unit="ns", value=0.0), - ], - ), - Gate( - gate="u3", - name="u3_0", - qubits=[0], - parameters=[ - Nduv(date=mock_time, name="gate_error", unit="", value=1.0), - Nduv(date=mock_time, name="gate_length", unit="ns", value=2 * dt), - ], - ), - Gate( - gate="u3", - name="u3_1", - qubits=[1], - parameters=[ - Nduv(date=mock_time, name="gate_error", unit="", value=1.0), - Nduv(date=mock_time, name="gate_length", unit="ns", value=4 * dt), - ], - ), - Gate( - gate="cx", - name="cx0_1", - qubits=[0, 1], - parameters=[ - Nduv(date=mock_time, name="gate_error", unit="", value=1.0), - Nduv(date=mock_time, name="gate_length", unit="ns", value=22 * dt), - ], - ), - ], - coupling_map=None, - n_registers=1, - last_update_date=mock_time, - general=[], - ) - super().__init__(configuration) diff --git a/qiskit/providers/fake_provider/fake_backend.py b/qiskit/providers/fake_provider/fake_backend.py deleted file mode 100644 index 21d221b68c04..000000000000 --- a/qiskit/providers/fake_provider/fake_backend.py +++ /dev/null @@ -1,165 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2019, 2024. -# -# 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. - -# pylint: disable=no-name-in-module - -""" -Base class for dummy backends. -""" - -import warnings - -from qiskit import circuit -from qiskit.providers.models import BackendProperties -from qiskit.providers import BackendV1 -from qiskit import pulse -from qiskit.exceptions import QiskitError -from qiskit.utils import optionals as _optionals, deprecate_func -from qiskit.providers import basic_provider - - -class _Credentials: - def __init__(self, token="123456", url="https://"): - self.token = token - self.url = url - self.hub = "hub" - self.group = "group" - self.project = "project" - - -class FakeBackend(BackendV1): - """This is a dummy backend just for testing purposes.""" - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="Fake backends using BackendV1 are deprecated in favor of " - ":class:`.GenericBackendV2`. You can convert BackendV1 to " - ":class:`.BackendV2` with :class:`.BackendV2Converter`.", - ) - def __init__(self, configuration, time_alive=10): - """FakeBackend initializer. - - Args: - configuration (BackendConfiguration): backend configuration - time_alive (int): time to wait before returning result - """ - super().__init__(configuration) - self.time_alive = time_alive - self._credentials = _Credentials() - self.sim = None - - def _setup_sim(self): - if _optionals.HAS_AER: - from qiskit_aer import AerSimulator - from qiskit_aer.noise import NoiseModel - - self.sim = AerSimulator() - if self.properties(): - noise_model = NoiseModel.from_backend(self) - self.sim.set_options(noise_model=noise_model) - # Update fake backend default options too to avoid overwriting - # it when run() is called - self.set_options(noise_model=noise_model) - else: - self.sim = basic_provider.BasicSimulator() - - def properties(self): - """Return backend properties""" - coupling_map = self.configuration().coupling_map - if coupling_map is None: - return None - unique_qubits = list(set().union(*coupling_map)) - - properties = { - "backend_name": self.name(), - "backend_version": self.configuration().backend_version, - "last_update_date": "2000-01-01 00:00:00Z", - "qubits": [ - [ - {"date": "2000-01-01 00:00:00Z", "name": "T1", "unit": "\u00b5s", "value": 0.0}, - {"date": "2000-01-01 00:00:00Z", "name": "T2", "unit": "\u00b5s", "value": 0.0}, - { - "date": "2000-01-01 00:00:00Z", - "name": "frequency", - "unit": "GHz", - "value": 0.0, - }, - { - "date": "2000-01-01 00:00:00Z", - "name": "readout_error", - "unit": "", - "value": 0.0, - }, - {"date": "2000-01-01 00:00:00Z", "name": "operational", "unit": "", "value": 1}, - ] - for _ in range(len(unique_qubits)) - ], - "gates": [ - { - "gate": "cx", - "name": "CX" + str(pair[0]) + "_" + str(pair[1]), - "parameters": [ - { - "date": "2000-01-01 00:00:00Z", - "name": "gate_error", - "unit": "", - "value": 0.0, - } - ], - "qubits": [pair[0], pair[1]], - } - for pair in coupling_map - ], - "general": [], - } - - return BackendProperties.from_dict(properties) - - @classmethod - def _default_options(cls): - if _optionals.HAS_AER: - from qiskit_aer import QasmSimulator - - return QasmSimulator._default_options() - else: - return basic_provider.BasicSimulator._default_options() - - def run(self, run_input, **kwargs): - """Main job in simulator""" - circuits = run_input - pulse_job = None - if isinstance(circuits, (pulse.Schedule, pulse.ScheduleBlock)): - pulse_job = True - elif isinstance(circuits, circuit.QuantumCircuit): - pulse_job = False - elif isinstance(circuits, list): - if circuits: - if all(isinstance(x, (pulse.Schedule, pulse.ScheduleBlock)) for x in circuits): - pulse_job = True - elif all(isinstance(x, circuit.QuantumCircuit) for x in circuits): - pulse_job = False - if pulse_job is None: - raise QiskitError( - f"Invalid input object {circuits}, must be either a " - "QuantumCircuit, Schedule, or a list of either" - ) - if pulse_job: - raise QiskitError("Pulse simulation is currently not supported for fake backends.") - # circuit job - if not _optionals.HAS_AER: - warnings.warn("Aer not found using BasicAer and no noise", RuntimeWarning) - if self.sim is None: - self._setup_sim() - self.sim._options = self._options - job = self.sim.run(circuits, **kwargs) - return job diff --git a/qiskit/providers/fake_provider/fake_openpulse_2q.py b/qiskit/providers/fake_provider/fake_openpulse_2q.py deleted file mode 100644 index 036c0bc6c1b7..000000000000 --- a/qiskit/providers/fake_provider/fake_openpulse_2q.py +++ /dev/null @@ -1,391 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2019. -# -# 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 backend supporting OpenPulse. -""" -import datetime -import warnings - -from qiskit.providers.models.backendconfiguration import ( - GateConfig, - PulseBackendConfiguration, - UchannelLO, -) - -from qiskit.providers.models.backendproperties import Nduv, Gate, BackendProperties -from qiskit.providers.models.pulsedefaults import PulseDefaults, Command -from qiskit.qobj import PulseQobjInstruction - -from .fake_backend import FakeBackend - - -class FakeOpenPulse2Q(FakeBackend): - """A fake 2 qubit backend for pulse test.""" - - def __init__(self): - configuration = PulseBackendConfiguration( - backend_name="fake_openpulse_2q", - backend_version="0.0.0", - n_qubits=2, - meas_levels=[0, 1, 2], - basis_gates=["u1", "u2", "u3", "cx", "id"], - simulator=False, - local=True, - conditional=True, - open_pulse=True, - memory=False, - max_shots=65536, - gates=[GateConfig(name="TODO", parameters=[], qasm_def="TODO")], - coupling_map=[[0, 1]], - n_registers=2, - n_uchannels=2, - u_channel_lo=[ - [UchannelLO(q=0, scale=1.0 + 0.0j)], - [UchannelLO(q=0, scale=-1.0 + 0.0j), UchannelLO(q=1, scale=1.0 + 0.0j)], - ], - qubit_lo_range=[[4.5, 5.5], [4.5, 5.5]], - meas_lo_range=[[6.0, 7.0], [6.0, 7.0]], - dt=1.3333, - dtm=10.5, - rep_times=[100, 250, 500, 1000], - meas_map=[[0, 1]], - channel_bandwidth=[ - [-0.2, 0.4], - [-0.3, 0.3], - [-0.3, 0.3], - [-0.02, 0.02], - [-0.02, 0.02], - [-0.02, 0.02], - ], - meas_kernels=["kernel1"], - discriminators=["max_1Q_fidelity"], - acquisition_latency=[[100, 100], [100, 100]], - conditional_latency=[ - [100, 1000], - [1000, 100], - [100, 1000], - [1000, 100], - [100, 1000], - [1000, 100], - ], - hamiltonian={ - "h_str": [ - "np.pi*(2*v0-alpha0)*O0", - "np.pi*alpha0*O0*O0", - "2*np.pi*r*X0||D0", - "2*np.pi*r*X0||U1", - "2*np.pi*r*X1||U0", - "np.pi*(2*v1-alpha1)*O1", - "np.pi*alpha1*O1*O1", - "2*np.pi*r*X1||D1", - "2*np.pi*j*(Sp0*Sm1+Sm0*Sp1)", - ], - "description": "A hamiltonian for a mocked 2Q device, with 1Q and 2Q terms.", - "qub": {"0": 3, "1": 3}, - "vars": { - "v0": 5.00, - "v1": 5.1, - "j": 0.01, - "r": 0.02, - "alpha0": -0.33, - "alpha1": -0.33, - }, - }, - channels={ - "acquire0": {"operates": {"qubits": [0]}, "purpose": "acquire", "type": "acquire"}, - "acquire1": {"operates": {"qubits": [1]}, "purpose": "acquire", "type": "acquire"}, - "d0": {"operates": {"qubits": [0]}, "purpose": "drive", "type": "drive"}, - "d1": {"operates": {"qubits": [1]}, "purpose": "drive", "type": "drive"}, - "m0": {"type": "measure", "purpose": "measure", "operates": {"qubits": [0]}}, - "m1": {"type": "measure", "purpose": "measure", "operates": {"qubits": [1]}}, - "u0": { - "operates": {"qubits": [0, 1]}, - "purpose": "cross-resonance", - "type": "control", - }, - "u1": { - "operates": {"qubits": [1, 0]}, - "purpose": "cross-resonance", - "type": "control", - }, - }, - processor_type={ - "family": "Canary", - "revision": "1.0", - "segment": "A", - }, - description="A fake test backend with pulse defaults", - ) - - with warnings.catch_warnings(): - # The class PulseQobjInstruction is deprecated - warnings.filterwarnings("ignore", category=DeprecationWarning, module="qiskit") - self._defaults = PulseDefaults.from_dict( - { - "qubit_freq_est": [4.9, 5.0], - "meas_freq_est": [6.5, 6.6], - "buffer": 10, - "pulse_library": [ - {"name": "x90p_d0", "samples": 2 * [0.1 + 0j]}, - {"name": "x90p_d1", "samples": 2 * [0.1 + 0j]}, - {"name": "x90m_d0", "samples": 2 * [-0.1 + 0j]}, - {"name": "x90m_d1", "samples": 2 * [-0.1 + 0j]}, - {"name": "y90p_d0", "samples": 2 * [0.1j]}, - {"name": "y90p_d1", "samples": 2 * [0.1j]}, - {"name": "xp_d0", "samples": 2 * [0.2 + 0j]}, - {"name": "ym_d0", "samples": 2 * [-0.2j]}, - {"name": "cr90p_u0", "samples": 9 * [0.1 + 0j]}, - {"name": "cr90m_u0", "samples": 9 * [-0.1 + 0j]}, - {"name": "measure_m0", "samples": 10 * [0.1 + 0j]}, - {"name": "measure_m1", "samples": 10 * [0.1 + 0j]}, - ], - "cmd_def": [ - Command.from_dict( - { - "name": "u1", - "qubits": [0], - "sequence": [ - PulseQobjInstruction( - name="fc", ch="d0", t0=0, phase="-P0" - ).to_dict() - ], - } - ).to_dict(), - Command.from_dict( - { - "name": "u1", - "qubits": [1], - "sequence": [ - PulseQobjInstruction( - name="fc", ch="d1", t0=0, phase="-P0" - ).to_dict() - ], - } - ).to_dict(), - Command.from_dict( - { - "name": "u2", - "qubits": [0], - "sequence": [ - PulseQobjInstruction( - name="fc", ch="d0", t0=0, phase="-P1" - ).to_dict(), - PulseQobjInstruction(name="y90p_d0", ch="d0", t0=0).to_dict(), - PulseQobjInstruction( - name="fc", ch="d0", t0=2, phase="-P0" - ).to_dict(), - ], - } - ).to_dict(), - Command.from_dict( - { - "name": "u2", - "qubits": [1], - "sequence": [ - PulseQobjInstruction( - name="fc", ch="d1", t0=0, phase="-P1" - ).to_dict(), - PulseQobjInstruction(name="y90p_d1", ch="d1", t0=0).to_dict(), - PulseQobjInstruction( - name="fc", ch="d1", t0=2, phase="-P0" - ).to_dict(), - ], - } - ).to_dict(), - Command.from_dict( - { - "name": "u3", - "qubits": [0], - "sequence": [ - PulseQobjInstruction( - name="fc", ch="d0", t0=0, phase="-P2" - ).to_dict(), - PulseQobjInstruction(name="x90p_d0", ch="d0", t0=0).to_dict(), - PulseQobjInstruction( - name="fc", ch="d0", t0=2, phase="-P0" - ).to_dict(), - PulseQobjInstruction(name="x90m_d0", ch="d0", t0=2).to_dict(), - PulseQobjInstruction( - name="fc", ch="d0", t0=4, phase="-P1" - ).to_dict(), - ], - } - ).to_dict(), - Command.from_dict( - { - "name": "u3", - "qubits": [1], - "sequence": [ - PulseQobjInstruction( - name="fc", ch="d1", t0=0, phase="-P2" - ).to_dict(), - PulseQobjInstruction(name="x90p_d1", ch="d1", t0=0).to_dict(), - PulseQobjInstruction( - name="fc", ch="d1", t0=2, phase="-P0" - ).to_dict(), - PulseQobjInstruction(name="x90m_d1", ch="d1", t0=2).to_dict(), - PulseQobjInstruction( - name="fc", ch="d1", t0=4, phase="-P1" - ).to_dict(), - ], - } - ).to_dict(), - Command.from_dict( - { - "name": "cx", - "qubits": [0, 1], - "sequence": [ - PulseQobjInstruction( - name="fc", ch="d0", t0=0, phase=1.57 - ).to_dict(), - PulseQobjInstruction(name="ym_d0", ch="d0", t0=0).to_dict(), - PulseQobjInstruction(name="xp_d0", ch="d0", t0=11).to_dict(), - PulseQobjInstruction(name="x90p_d1", ch="d1", t0=0).to_dict(), - PulseQobjInstruction(name="cr90p_u0", ch="u0", t0=2).to_dict(), - PulseQobjInstruction(name="cr90m_u0", ch="u0", t0=13).to_dict(), - ], - } - ).to_dict(), - Command.from_dict( - { - "name": "measure", - "qubits": [0, 1], - "sequence": [ - PulseQobjInstruction( - name="measure_m0", ch="m0", t0=0 - ).to_dict(), - PulseQobjInstruction( - name="measure_m1", ch="m1", t0=0 - ).to_dict(), - PulseQobjInstruction( - name="acquire", - duration=10, - t0=0, - qubits=[0, 1], - memory_slot=[0, 1], - ).to_dict(), - ], - } - ).to_dict(), - ], - } - ) - - mock_time = datetime.datetime.now() - dt = 1.3333 - self._properties = BackendProperties( - backend_name="fake_openpulse_2q", - backend_version="0.0.0", - last_update_date=mock_time, - qubits=[ - [ - Nduv(date=mock_time, name="T1", unit="µs", value=71.9500421005539), - Nduv(date=mock_time, name="T2", unit="µs", value=69.4240447362455), - Nduv(date=mock_time, name="frequency", unit="MHz", value=4919.96800692), - Nduv(date=mock_time, name="readout_error", unit="", value=0.02), - ], - [ - Nduv(date=mock_time, name="T1", unit="µs", value=81.9500421005539), - Nduv(date=mock_time, name="T2", unit="µs", value=75.5598482446578), - Nduv(date=mock_time, name="frequency", unit="GHz", value=5.01996800692), - Nduv(date=mock_time, name="readout_error", unit="", value=0.02), - ], - ], - gates=[ - Gate( - gate="id", - qubits=[0], - parameters=[ - Nduv(date=mock_time, name="gate_error", unit="", value=0), - Nduv(date=mock_time, name="gate_length", unit="ns", value=2 * dt), - ], - ), - Gate( - gate="id", - qubits=[1], - parameters=[ - Nduv(date=mock_time, name="gate_error", unit="", value=0), - Nduv(date=mock_time, name="gate_length", unit="ns", value=2 * dt), - ], - ), - Gate( - gate="u1", - qubits=[0], - parameters=[ - Nduv(date=mock_time, name="gate_error", unit="", value=0.06), - Nduv(date=mock_time, name="gate_length", unit="ns", value=0.0), - ], - ), - Gate( - gate="u1", - qubits=[1], - parameters=[ - Nduv(date=mock_time, name="gate_error", unit="", value=0.06), - Nduv(date=mock_time, name="gate_length", unit="ns", value=0.0), - ], - ), - Gate( - gate="u2", - qubits=[0], - parameters=[ - Nduv(date=mock_time, name="gate_error", unit="", value=0.06), - Nduv(date=mock_time, name="gate_length", unit="ns", value=2 * dt), - ], - ), - Gate( - gate="u2", - qubits=[1], - parameters=[ - Nduv(date=mock_time, name="gate_error", unit="", value=0.06), - Nduv(date=mock_time, name="gate_length", unit="ns", value=2 * dt), - ], - ), - Gate( - gate="u3", - qubits=[0], - parameters=[ - Nduv(date=mock_time, name="gate_error", unit="", value=0.06), - Nduv(date=mock_time, name="gate_length", unit="ns", value=4 * dt), - ], - ), - Gate( - gate="u3", - qubits=[1], - parameters=[ - Nduv(date=mock_time, name="gate_error", unit="", value=0.06), - Nduv(date=mock_time, name="gate_length", unit="ns", value=4 * dt), - ], - ), - Gate( - gate="cx", - qubits=[0, 1], - parameters=[ - Nduv(date=mock_time, name="gate_error", unit="", value=1.0), - Nduv(date=mock_time, name="gate_length", unit="ns", value=22 * dt), - ], - ), - ], - general=[], - ) - - super().__init__(configuration) - - def defaults(self): - """Return the default pulse-related settings provided by the backend (such as gate - to Schedule mappings). - """ - return self._defaults - - def properties(self): - """Return the measured characteristics of the backend.""" - return self._properties diff --git a/qiskit/providers/fake_provider/fake_openpulse_3q.py b/qiskit/providers/fake_provider/fake_openpulse_3q.py deleted file mode 100644 index 424cad006ed8..000000000000 --- a/qiskit/providers/fake_provider/fake_openpulse_3q.py +++ /dev/null @@ -1,340 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2019. -# -# 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 backend supporting OpenPulse. -""" -import warnings - -from qiskit.providers.models.backendconfiguration import ( - GateConfig, - PulseBackendConfiguration, - UchannelLO, -) -from qiskit.providers.models.pulsedefaults import PulseDefaults, Command -from qiskit.qobj import PulseQobjInstruction - -from .fake_backend import FakeBackend - - -class FakeOpenPulse3Q(FakeBackend): - """Trivial extension of the FakeOpenPulse2Q.""" - - def __init__(self): - configuration = PulseBackendConfiguration( - backend_name="fake_openpulse_3q", - backend_version="0.0.0", - n_qubits=3, - meas_levels=[0, 1, 2], - basis_gates=["u1", "u2", "u3", "cx", "id"], - simulator=False, - local=True, - conditional=True, - open_pulse=True, - memory=False, - max_shots=65536, - gates=[GateConfig(name="TODO", parameters=[], qasm_def="TODO")], - coupling_map=[[0, 1], [1, 2]], - n_registers=3, - n_uchannels=3, - u_channel_lo=[ - [UchannelLO(q=0, scale=1.0 + 0.0j)], - [UchannelLO(q=0, scale=-1.0 + 0.0j), UchannelLO(q=1, scale=1.0 + 0.0j)], - [UchannelLO(q=0, scale=1.0 + 0.0j)], - ], - qubit_lo_range=[[4.5, 5.5], [4.5, 5.5], [4.5, 5.5]], - meas_lo_range=[[6.0, 7.0], [6.0, 7.0], [6.0, 7.0]], - dt=1.3333, - dtm=10.5, - rep_times=[100, 250, 500, 1000], - meas_map=[[0, 1, 2]], - channel_bandwidth=[ - [-0.2, 0.4], - [-0.3, 0.3], - [-0.3, 0.3], - [-0.02, 0.02], - [-0.02, 0.02], - [-0.02, 0.02], - [-0.2, 0.4], - [-0.3, 0.3], - [-0.3, 0.3], - ], - meas_kernels=["kernel1"], - discriminators=["max_1Q_fidelity"], - acquisition_latency=[[100, 100], [100, 100], [100, 100]], - conditional_latency=[ - [100, 1000], - [1000, 100], - [100, 1000], - [100, 1000], - [1000, 100], - [100, 1000], - [1000, 100], - [100, 1000], - [1000, 100], - ], - channels={ - "acquire0": {"type": "acquire", "purpose": "acquire", "operates": {"qubits": [0]}}, - "acquire1": {"type": "acquire", "purpose": "acquire", "operates": {"qubits": [1]}}, - "acquire2": {"type": "acquire", "purpose": "acquire", "operates": {"qubits": [2]}}, - "d0": {"type": "drive", "purpose": "drive", "operates": {"qubits": [0]}}, - "d1": {"type": "drive", "purpose": "drive", "operates": {"qubits": [1]}}, - "d2": {"type": "drive", "purpose": "drive", "operates": {"qubits": [2]}}, - "m0": {"type": "measure", "purpose": "measure", "operates": {"qubits": [0]}}, - "m1": {"type": "measure", "purpose": "measure", "operates": {"qubits": [1]}}, - "m2": {"type": "measure", "purpose": "measure", "operates": {"qubits": [2]}}, - "u0": { - "type": "control", - "purpose": "cross-resonance", - "operates": {"qubits": [0, 1]}, - }, - "u1": { - "type": "control", - "purpose": "cross-resonance", - "operates": {"qubits": [1, 0]}, - }, - "u2": { - "type": "control", - "purpose": "cross-resonance", - "operates": {"qubits": [2, 1]}, - }, - }, - ) - with warnings.catch_warnings(): - # The class PulseQobjInstruction is deprecated - warnings.filterwarnings("ignore", category=DeprecationWarning, module="qiskit") - self._defaults = PulseDefaults.from_dict( - { - "qubit_freq_est": [4.9, 5.0, 4.8], - "meas_freq_est": [6.5, 6.6, 6.4], - "buffer": 10, - "pulse_library": [ - {"name": "x90p_d0", "samples": 2 * [0.1 + 0j]}, - {"name": "x90p_d1", "samples": 2 * [0.1 + 0j]}, - {"name": "x90p_d2", "samples": 2 * [0.1 + 0j]}, - {"name": "x90m_d0", "samples": 2 * [-0.1 + 0j]}, - {"name": "x90m_d1", "samples": 2 * [-0.1 + 0j]}, - {"name": "x90m_d2", "samples": 2 * [-0.1 + 0j]}, - {"name": "y90p_d0", "samples": 2 * [0.1j]}, - {"name": "y90p_d1", "samples": 2 * [0.1j]}, - {"name": "y90p_d2", "samples": 2 * [0.1j]}, - {"name": "xp_d0", "samples": 2 * [0.2 + 0j]}, - {"name": "ym_d0", "samples": 2 * [-0.2j]}, - {"name": "xp_d1", "samples": 2 * [0.2 + 0j]}, - {"name": "ym_d1", "samples": 2 * [-0.2j]}, - {"name": "cr90p_u0", "samples": 9 * [0.1 + 0j]}, - {"name": "cr90m_u0", "samples": 9 * [-0.1 + 0j]}, - {"name": "cr90p_u1", "samples": 9 * [0.1 + 0j]}, - {"name": "cr90m_u1", "samples": 9 * [-0.1 + 0j]}, - {"name": "measure_m0", "samples": 10 * [0.1 + 0j]}, - {"name": "measure_m1", "samples": 10 * [0.1 + 0j]}, - {"name": "measure_m2", "samples": 10 * [0.1 + 0j]}, - ], - "cmd_def": [ - Command.from_dict( - { - "name": "u1", - "qubits": [0], - "sequence": [ - PulseQobjInstruction( - name="fc", ch="d0", t0=0, phase="-P0" - ).to_dict() - ], - } - ).to_dict(), - Command.from_dict( - { - "name": "u1", - "qubits": [1], - "sequence": [ - PulseQobjInstruction( - name="fc", ch="d1", t0=0, phase="-P0" - ).to_dict() - ], - } - ).to_dict(), - Command.from_dict( - { - "name": "u1", - "qubits": [2], - "sequence": [ - PulseQobjInstruction( - name="fc", ch="d2", t0=0, phase="-P0" - ).to_dict() - ], - } - ).to_dict(), - Command.from_dict( - { - "name": "u2", - "qubits": [0], - "sequence": [ - PulseQobjInstruction( - name="fc", ch="d0", t0=0, phase="-P1" - ).to_dict(), - PulseQobjInstruction(name="y90p_d0", ch="d0", t0=0).to_dict(), - PulseQobjInstruction( - name="fc", ch="d0", t0=2, phase="-P0" - ).to_dict(), - ], - } - ).to_dict(), - Command.from_dict( - { - "name": "u2", - "qubits": [1], - "sequence": [ - PulseQobjInstruction( - name="fc", ch="d1", t0=0, phase="-P1" - ).to_dict(), - PulseQobjInstruction(name="y90p_d1", ch="d1", t0=0).to_dict(), - PulseQobjInstruction( - name="fc", ch="d1", t0=2, phase="-P0" - ).to_dict(), - ], - } - ).to_dict(), - Command.from_dict( - { - "name": "u2", - "qubits": [2], - "sequence": [ - PulseQobjInstruction( - name="fc", ch="d2", t0=0, phase="-P1" - ).to_dict(), - PulseQobjInstruction(name="y90p_d2", ch="d2", t0=0).to_dict(), - PulseQobjInstruction( - name="fc", ch="d2", t0=2, phase="-P0" - ).to_dict(), - ], - } - ).to_dict(), - Command.from_dict( - { - "name": "u3", - "qubits": [0], - "sequence": [ - PulseQobjInstruction( - name="fc", ch="d0", t0=0, phase="-P2" - ).to_dict(), - PulseQobjInstruction(name="x90p_d0", ch="d0", t0=0).to_dict(), - PulseQobjInstruction( - name="fc", ch="d0", t0=2, phase="-P0" - ).to_dict(), - PulseQobjInstruction(name="x90m_d0", ch="d0", t0=2).to_dict(), - PulseQobjInstruction( - name="fc", ch="d0", t0=4, phase="-P1" - ).to_dict(), - ], - } - ).to_dict(), - Command.from_dict( - { - "name": "u3", - "qubits": [1], - "sequence": [ - PulseQobjInstruction( - name="fc", ch="d1", t0=0, phase="-P2" - ).to_dict(), - PulseQobjInstruction(name="x90p_d1", ch="d1", t0=0).to_dict(), - PulseQobjInstruction( - name="fc", ch="d1", t0=2, phase="-P0" - ).to_dict(), - PulseQobjInstruction(name="x90m_d1", ch="d1", t0=2).to_dict(), - PulseQobjInstruction( - name="fc", ch="d1", t0=4, phase="-P1" - ).to_dict(), - ], - } - ).to_dict(), - Command.from_dict( - { - "name": "u3", - "qubits": [2], - "sequence": [ - PulseQobjInstruction( - name="fc", ch="d2", t0=0, phase="-P2" - ).to_dict(), - PulseQobjInstruction(name="x90p_d2", ch="d2", t0=0).to_dict(), - PulseQobjInstruction( - name="fc", ch="d2", t0=2, phase="-P0" - ).to_dict(), - PulseQobjInstruction(name="x90m_d2", ch="d2", t0=2).to_dict(), - PulseQobjInstruction( - name="fc", ch="d2", t0=4, phase="-P1" - ).to_dict(), - ], - } - ).to_dict(), - Command.from_dict( - { - "name": "cx", - "qubits": [0, 1], - "sequence": [ - PulseQobjInstruction( - name="fc", ch="d0", t0=0, phase=1.57 - ).to_dict(), - PulseQobjInstruction(name="ym_d0", ch="d0", t0=0).to_dict(), - PulseQobjInstruction(name="xp_d0", ch="d0", t0=11).to_dict(), - PulseQobjInstruction(name="x90p_d1", ch="d1", t0=0).to_dict(), - PulseQobjInstruction(name="cr90p_u0", ch="u0", t0=2).to_dict(), - PulseQobjInstruction(name="cr90m_u0", ch="u0", t0=13).to_dict(), - ], - } - ).to_dict(), - Command.from_dict( - { - "name": "cx", - "qubits": [1, 2], - "sequence": [ - PulseQobjInstruction( - name="fc", ch="d1", t0=0, phase=1.57 - ).to_dict(), - PulseQobjInstruction(name="ym_d1", ch="d1", t0=0).to_dict(), - PulseQobjInstruction(name="xp_d1", ch="d1", t0=11).to_dict(), - PulseQobjInstruction(name="x90p_d2", ch="d2", t0=0).to_dict(), - PulseQobjInstruction(name="cr90p_u1", ch="u1", t0=2).to_dict(), - PulseQobjInstruction(name="cr90m_u1", ch="u1", t0=13).to_dict(), - ], - } - ).to_dict(), - Command.from_dict( - { - "name": "measure", - "qubits": [0, 1, 2], - "sequence": [ - PulseQobjInstruction( - name="measure_m0", ch="m0", t0=0 - ).to_dict(), - PulseQobjInstruction( - name="measure_m1", ch="m1", t0=0 - ).to_dict(), - PulseQobjInstruction( - name="measure_m2", ch="m2", t0=0 - ).to_dict(), - PulseQobjInstruction( - name="acquire", - duration=10, - t0=0, - qubits=[0, 1, 2], - memory_slot=[0, 1, 2], - ).to_dict(), - ], - } - ).to_dict(), - ], - } - ) - super().__init__(configuration) - - def defaults(self): # pylint: disable=missing-function-docstring - return self._defaults diff --git a/qiskit/providers/fake_provider/fake_pulse_backend.py b/qiskit/providers/fake_provider/fake_pulse_backend.py deleted file mode 100644 index 65d5fe61df98..000000000000 --- a/qiskit/providers/fake_provider/fake_pulse_backend.py +++ /dev/null @@ -1,49 +0,0 @@ -# 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. - -""" -Fake backend abstract class for mock backends supporting OpenPulse. -""" - -import warnings - -from qiskit.exceptions import QiskitError -from qiskit.providers.models.backendconfiguration import PulseBackendConfiguration -from qiskit.providers.models.pulsedefaults import PulseDefaults - -from .fake_qasm_backend import FakeQasmBackend -from .utils.json_decoder import decode_pulse_defaults - - -class FakePulseBackend(FakeQasmBackend): - """A fake pulse backend.""" - - defs_filename = None - - def defaults(self): - """Returns a snapshot of device defaults""" - if not self._defaults: - with warnings.catch_warnings(): - warnings.simplefilter(action="ignore", category=DeprecationWarning) - # Filter deprecation warnings emitted from Qiskit Pulse - self._set_defaults_from_json() - return self._defaults - - def _set_defaults_from_json(self): - if not self.props_filename: - raise QiskitError("No properties file has been defined") - defs = self._load_json(self.defs_filename) - decode_pulse_defaults(defs) - self._defaults = PulseDefaults.from_dict(defs) - - def _get_config_from_dict(self, conf): - return PulseBackendConfiguration.from_dict(conf) diff --git a/qiskit/providers/fake_provider/fake_qasm_backend.py b/qiskit/providers/fake_provider/fake_qasm_backend.py deleted file mode 100644 index a570ac401601..000000000000 --- a/qiskit/providers/fake_provider/fake_qasm_backend.py +++ /dev/null @@ -1,77 +0,0 @@ -# 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. - -""" -Fake backend abstract class for mock backends. -""" - -import json -import os -import warnings - -from qiskit.exceptions import QiskitError -from qiskit.providers.models.backendproperties import BackendProperties -from qiskit.providers.models.backendconfiguration import QasmBackendConfiguration - -from .utils.json_decoder import ( - decode_backend_configuration, - decode_backend_properties, -) -from .fake_backend import FakeBackend - - -class FakeQasmBackend(FakeBackend): - """A fake OpenQASM backend.""" - - dirname = None - conf_filename = None - props_filename = None - backend_name = None - - def __init__(self): - configuration = self._get_conf_from_json() - self._defaults = None - self._properties = None - super().__init__(configuration) - - def properties(self): - """Returns a snapshot of device properties""" - if not self._properties: - self._set_props_from_json() - return self._properties - - def _get_conf_from_json(self): - if not self.conf_filename: - raise QiskitError("No configuration file has been defined") - conf = self._load_json(self.conf_filename) - decode_backend_configuration(conf) - configuration = self._get_config_from_dict(conf) - configuration.backend_name = self.backend_name - return configuration - - def _set_props_from_json(self): - if not self.props_filename: - raise QiskitError("No properties file has been defined") - props = self._load_json(self.props_filename) - decode_backend_properties(props) - with warnings.catch_warnings(): - # This raises the BackendProperties deprecation warning internally - warnings.filterwarnings("ignore", category=DeprecationWarning, module="qiskit") - self._properties = BackendProperties.from_dict(props) - - def _load_json(self, filename): - with open(os.path.join(self.dirname, filename)) as f_json: - the_json = json.load(f_json) - return the_json - - def _get_config_from_dict(self, conf): - return QasmBackendConfiguration.from_dict(conf) diff --git a/qiskit/providers/fake_provider/generic_backend_v2.py b/qiskit/providers/fake_provider/generic_backend_v2.py index afb2c6b2bf82..163c8abfdc38 100644 --- a/qiskit/providers/fake_provider/generic_backend_v2.py +++ b/qiskit/providers/fake_provider/generic_backend_v2.py @@ -530,6 +530,7 @@ def __init__( control_flow: bool = False, calibrate_instructions: bool | InstructionScheduleMap | None = None, dtm: float | None = None, + dt: float | None = None, seed: int | None = None, pulse_channels: bool = True, noise_info: bool = True, @@ -579,6 +580,9 @@ def __init__( dtm: System time resolution of output signals in nanoseconds. None by default. + dt: System time resolution of input signals in nanoseconds. + None by default. + seed: Optional seed for generation of default values. pulse_channels: DEPRECATED. If true, sets default pulse channel information on the backend. @@ -596,6 +600,7 @@ def __init__( self._sim = None self._rng = np.random.default_rng(seed=seed) self._dtm = dtm + self._dt = dt self._num_qubits = num_qubits self._control_flow = control_flow self._calibrate_instructions = calibrate_instructions @@ -788,7 +793,7 @@ def _build_generic_target(self): self._target = Target( description=f"Generic Target with {self._num_qubits} qubits", num_qubits=self._num_qubits, - dt=properties["dt"], + dt=properties["dt"] if self._dt is None else self._dt, qubit_properties=None, concurrent_measurements=[list(range(self._num_qubits))], ) @@ -796,7 +801,7 @@ def _build_generic_target(self): self._target = Target( description=f"Generic Target with {self._num_qubits} qubits", num_qubits=self._num_qubits, - dt=properties["dt"], + dt=properties["dt"] if self._dt is None else self._dt, qubit_properties=[ QubitProperties( t1=self._rng.uniform(properties["t1"][0], properties["t1"][1]), diff --git a/qiskit/result/__init__.py b/qiskit/result/__init__.py index 2eaa7803c5fd..979225f9a72d 100644 --- a/qiskit/result/__init__.py +++ b/qiskit/result/__init__.py @@ -47,16 +47,6 @@ ================== .. autofunction:: sampled_expectation_value - -Mitigation -========== -.. autosummary:: - :toctree: ../stubs/ - - BaseReadoutMitigator - CorrelatedReadoutMitigator - LocalReadoutMitigator - """ from .result import Result @@ -68,6 +58,3 @@ from .distributions import QuasiDistribution, ProbDistribution from .sampled_expval import sampled_expectation_value -from .mitigation.base_readout_mitigator import BaseReadoutMitigator -from .mitigation.correlated_readout_mitigator import CorrelatedReadoutMitigator -from .mitigation.local_readout_mitigator import LocalReadoutMitigator diff --git a/qiskit/result/mitigation/__init__.py b/qiskit/result/mitigation/__init__.py deleted file mode 100644 index 43491f4406b9..000000000000 --- a/qiskit/result/mitigation/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2021. -# -# 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. - -"""Readout error mitigation.""" diff --git a/qiskit/result/mitigation/base_readout_mitigator.py b/qiskit/result/mitigation/base_readout_mitigator.py deleted file mode 100644 index 296565d47d01..000000000000 --- a/qiskit/result/mitigation/base_readout_mitigator.py +++ /dev/null @@ -1,79 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021 -# -# 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. -""" -Base class for readout error mitigation. -""" - -from abc import ABC, abstractmethod -from typing import Optional, List, Iterable, Tuple, Union, Callable -import numpy as np -from ..distributions.quasi import QuasiDistribution -from ..counts import Counts - - -class BaseReadoutMitigator(ABC): - """This class is DEPRECATED. Base readout error mitigator class.""" - - @abstractmethod - def quasi_probabilities( - self, - data: Counts, - qubits: Iterable[int] = None, - clbits: Optional[List[int]] = None, - shots: Optional[int] = None, - ) -> QuasiDistribution: - """Convert counts to a dictionary of quasi-probabilities - - Args: - data: Counts to be mitigated. - qubits: the physical qubits measured to obtain the counts clbits. - If None these are assumed to be qubits [0, ..., N-1] - for N-bit counts. - clbits: Optional, marginalize counts to just these bits. - shots: Optional, the total number of shots, if None shots will - be calculated as the sum of all counts. - - Returns: - QuasiDistribution: A dictionary containing pairs of [output, mean] where "output" - is the key in the dictionaries, - which is the length-N bitstring of a measured standard basis state, - and "mean" is the mean of non-zero quasi-probability estimates. - """ - - @abstractmethod - def expectation_value( - self, - data: Counts, - diagonal: Union[Callable, dict, str, np.ndarray], - qubits: Iterable[int] = None, - clbits: Optional[List[int]] = None, - shots: Optional[int] = None, - ) -> Tuple[float, float]: - """Calculate the expectation value of a diagonal Hermitian operator. - - Args: - data: Counts object to be mitigated. - diagonal: the diagonal operator. This may either be specified - as a string containing I,Z,0,1 characters, or as a - real valued 1D array_like object supplying the full diagonal, - or as a dictionary, or as Callable. - qubits: the physical qubits measured to obtain the counts clbits. - If None these are assumed to be qubits [0, ..., N-1] - for N-bit counts. - clbits: Optional, marginalize counts to just these bits. - shots: Optional, the total number of shots, if None shots will - be calculated as the sum of all counts. - - Returns: - The mean and an upper bound of the standard deviation of operator - expectation value calculated from the current counts. - """ diff --git a/qiskit/result/mitigation/correlated_readout_mitigator.py b/qiskit/result/mitigation/correlated_readout_mitigator.py deleted file mode 100644 index 190c0509af0e..000000000000 --- a/qiskit/result/mitigation/correlated_readout_mitigator.py +++ /dev/null @@ -1,277 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021 -# -# 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. -""" -Readout mitigator class based on the A-matrix inversion method -""" - -import math -from typing import Optional, List, Tuple, Iterable, Callable, Union, Dict -import numpy as np - -from qiskit.exceptions import QiskitError -from qiskit.utils.deprecation import deprecate_func -from ..distributions.quasi import QuasiDistribution -from ..counts import Counts -from .base_readout_mitigator import BaseReadoutMitigator -from .utils import counts_probability_vector, z_diagonal, str2diag - - -class CorrelatedReadoutMitigator(BaseReadoutMitigator): - """This class is DEPRECATED. N-qubit readout error mitigator. - - Mitigates :meth:`expectation_value` and :meth:`quasi_probabilities`. - The mitigation_matrix should be calibrated using qiskit experiments. - This mitigation method should be used in case the readout errors of the qubits - are assumed to be correlated. The mitigation_matrix of *N* qubits is of size - :math:`2^N x 2^N` so the mitigation complexity is :math:`O(4^N)`. - """ - - @deprecate_func( - since="1.3", - package_name="Qiskit", - removal_timeline="in Qiskit 2.0", - additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of " - "the https://github.com/Qiskit/qiskit-addon-mthree package.", - ) - def __init__(self, assignment_matrix: np.ndarray, qubits: Optional[Iterable[int]] = None): - """Initialize a CorrelatedReadoutMitigator - - Args: - assignment_matrix: readout error assignment matrix. - qubits: Optional, the measured physical qubits for mitigation. - - Raises: - QiskitError: matrix size does not agree with number of qubits - """ - if np.any(assignment_matrix < 0) or not np.allclose(np.sum(assignment_matrix, axis=0), 1): - raise QiskitError("Assignment matrix columns must be valid probability distributions") - assignment_matrix = np.asarray(assignment_matrix, dtype=float) - matrix_qubits_num = int(math.log2(assignment_matrix.shape[0])) - if qubits is None: - self._num_qubits = matrix_qubits_num - self._qubits = range(self._num_qubits) - else: - if len(qubits) != matrix_qubits_num: - raise QiskitError( - f"The number of given qubits ({len(qubits)}) is different than the number of " - f"qubits inferred from the matrices ({matrix_qubits_num})" - ) - self._qubits = qubits - self._num_qubits = len(self._qubits) - self._qubit_index = dict(zip(self._qubits, range(self._num_qubits))) - self._assignment_mat = assignment_matrix - self._mitigation_mats = {} - - @property - def settings(self) -> Dict: - """Return settings.""" - return {"assignment_matrix": self._assignment_mat, "qubits": self._qubits} - - def expectation_value( - self, - data: Counts, - diagonal: Union[Callable, dict, str, np.ndarray] = None, - qubits: Iterable[int] = None, - clbits: Optional[List[int]] = None, - shots: Optional[int] = None, - ) -> Tuple[float, float]: - r"""Compute the mitigated expectation value of a diagonal observable. - - This computes the mitigated estimator of - :math:`\langle O \rangle = \mbox{Tr}[\rho. O]` of a diagonal observable - :math:`O = \sum_{x\in\{0, 1\}^n} O(x)|x\rangle\!\langle x|`. - - Args: - data: Counts object - diagonal: Optional, the vector of diagonal values for summing the - expectation value. If ``None`` the default value is - :math:`[1, -1]^\otimes n`. - qubits: Optional, the measured physical qubits the count - bitstrings correspond to. If None qubits are assumed to be - :math:`[0, ..., n-1]`. - clbits: Optional, if not None marginalize counts to the specified bits. - shots: the number of shots. - - Returns: - (float, float): the expectation value and an upper bound of the standard deviation. - - Additional Information: - The diagonal observable :math:`O` is input using the ``diagonal`` kwarg as - a list or Numpy array :math:`[O(0), ..., O(2^n -1)]`. If no diagonal is specified - the diagonal of the Pauli operator - :math`O = \mbox{diag}(Z^{\otimes n}) = [1, -1]^{\otimes n}` is used. - The ``clbits`` kwarg is used to marginalize the input counts dictionary - over the specified bit-values, and the ``qubits`` kwarg is used to specify - which physical qubits these bit-values correspond to as - ``circuit.measure(qubits, clbits)``. - """ - - if qubits is None: - qubits = self._qubits - probs_vec, shots = counts_probability_vector( - data, qubit_index=self._qubit_index, clbits=clbits, qubits=qubits - ) - - # Get qubit mitigation matrix and mitigate probs - mit_mat = self.mitigation_matrix(qubits) - - # Get operator coeffs - if diagonal is None: - diagonal = z_diagonal(2**self._num_qubits) - elif isinstance(diagonal, str): - diagonal = str2diag(diagonal) - - # Apply transpose of mitigation matrix - coeffs = mit_mat.T.dot(diagonal) - expval = coeffs.dot(probs_vec) - stddev_upper_bound = self.stddev_upper_bound(shots) - - return (expval, stddev_upper_bound) - - def quasi_probabilities( - self, - data: Counts, - qubits: Optional[List[int]] = None, - clbits: Optional[List[int]] = None, - shots: Optional[int] = None, - ) -> QuasiDistribution: - """Compute mitigated quasi probabilities value. - - Args: - data: counts object - qubits: qubits the count bitstrings correspond to. - clbits: Optional, marginalize counts to just these bits. - shots: Optional, the total number of shots, if None shots will - be calculated as the sum of all counts. - - Returns: - QuasiDistribution: A dictionary containing pairs of [output, mean] where "output" - is the key in the dictionaries, - which is the length-N bitstring of a measured standard basis state, - and "mean" is the mean of non-zero quasi-probability estimates. - """ - if qubits is None: - qubits = self._qubits - probs_vec, calculated_shots = counts_probability_vector( - data, qubit_index=self._qubit_index, clbits=clbits, qubits=qubits - ) - if shots is None: - shots = calculated_shots - - # Get qubit mitigation matrix and mitigate probs - mit_mat = self.mitigation_matrix(qubits) - - # Apply transpose of mitigation matrix - probs_vec = mit_mat.dot(probs_vec) - probs_dict = {} - for index, _ in enumerate(probs_vec): - probs_dict[index] = probs_vec[index] - - quasi_dist = QuasiDistribution( - probs_dict, stddev_upper_bound=self.stddev_upper_bound(shots) - ) - - return quasi_dist - - def mitigation_matrix(self, qubits: List[int] = None) -> np.ndarray: - r"""Return the readout mitigation matrix for the specified qubits. - - The mitigation matrix :math:`A^{-1}` is defined as the inverse of the - :meth:`assignment_matrix` :math:`A`. - - Args: - qubits: Optional, qubits being measured. - - Returns: - np.ndarray: the measurement error mitigation matrix :math:`A^{-1}`. - """ - if qubits is None: - qubits = self._qubits - qubits = tuple(sorted(qubits)) - - # Check for cached mitigation matrix - # if not present compute - if qubits not in self._mitigation_mats: - marginal_matrix = self.assignment_matrix(qubits) - try: - mit_mat = np.linalg.inv(marginal_matrix) - except np.linalg.LinAlgError: - # Use pseudo-inverse if matrix is singular - mit_mat = np.linalg.pinv(marginal_matrix) - self._mitigation_mats[qubits] = mit_mat - - return self._mitigation_mats[qubits] - - def assignment_matrix(self, qubits: List[int] = None) -> np.ndarray: - r"""Return the readout assignment matrix for specified qubits. - - The assignment matrix is the stochastic matrix :math:`A` which assigns - a noisy readout probability distribution to an ideal input - readout distribution: :math:`P(i|j) = \langle i | A | j \rangle`. - - Args: - qubits: Optional, qubits being measured. - - Returns: - np.ndarray: the assignment matrix A. - """ - if qubits is None: - qubits = self._qubits - if qubits == self._num_qubits: - return self._assignment_mat - - if isinstance(qubits, int): - qubits = [qubits] - - qubit_indices = [self._qubit_index[qubit] for qubit in qubits] - # Compute marginal matrix - axis = tuple( - self._num_qubits - 1 - i for i in set(range(self._num_qubits)).difference(qubit_indices) - ) - num_qubits = len(qubits) - - new_amat = np.zeros(2 * [2**num_qubits], dtype=float) - for i, col in enumerate(self._assignment_mat.T[self._keep_indexes(qubit_indices)]): - new_amat[i] = ( - np.reshape(col, self._num_qubits * [2]).sum(axis=axis).reshape([2**num_qubits]) - ) - new_amat = new_amat.T - return new_amat - - @staticmethod - def _keep_indexes(qubits): - indexes = [0] - for i in sorted(qubits): - indexes += [idx + (1 << i) for idx in indexes] - return indexes - - def _compute_gamma(self): - """Compute gamma for N-qubit mitigation""" - mitmat = self.mitigation_matrix(qubits=self._qubits) - return np.max(np.sum(np.abs(mitmat), axis=0)) - - def stddev_upper_bound(self, shots: int): - """Return an upper bound on standard deviation of expval estimator. - - Args: - shots: Number of shots used for expectation value measurement. - - Returns: - float: the standard deviation upper bound. - """ - gamma = self._compute_gamma() - return gamma / math.sqrt(shots) - - @property - def qubits(self) -> Tuple[int]: - """The device qubits for this mitigator""" - return self._qubits diff --git a/qiskit/result/mitigation/local_readout_mitigator.py b/qiskit/result/mitigation/local_readout_mitigator.py deleted file mode 100644 index ee4b970e085c..000000000000 --- a/qiskit/result/mitigation/local_readout_mitigator.py +++ /dev/null @@ -1,328 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021 -# -# 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. -""" -Readout mitigator class based on the 1-qubit local tensored mitigation method -""" - - -import math -from typing import Optional, List, Tuple, Iterable, Callable, Union, Dict -import numpy as np - -from qiskit.exceptions import QiskitError -from qiskit.utils.deprecation import deprecate_func -from ..distributions.quasi import QuasiDistribution -from ..counts import Counts -from .base_readout_mitigator import BaseReadoutMitigator -from .utils import counts_probability_vector, z_diagonal, str2diag - - -class LocalReadoutMitigator(BaseReadoutMitigator): - """This class is DEPRECATED. 1-qubit tensor product readout error mitigator. - - Mitigates :meth:`expectation_value` and :meth:`quasi_probabilities`. - The mitigator should either be calibrated using qiskit experiments, - or calculated directly from the backend properties. - This mitigation method should be used in case the readout errors of the qubits - are assumed to be uncorrelated. For *N* qubits there are *N* mitigation matrices, - each of size :math:`2 x 2` and the mitigation complexity is :math:`O(2^N)`, - so it is more efficient than the :class:`CorrelatedReadoutMitigator` class. - """ - - @deprecate_func( - since="1.3", - package_name="Qiskit", - removal_timeline="in Qiskit 2.0", - additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of " - "the https://github.com/Qiskit/qiskit-addon-mthree package.", - ) - def __init__( - self, - assignment_matrices: Optional[List[np.ndarray]] = None, - qubits: Optional[Iterable[int]] = None, - backend=None, - ): - """Initialize a LocalReadoutMitigator - - Args: - assignment_matrices: Optional, list of single-qubit readout error assignment matrices. - qubits: Optional, the measured physical qubits for mitigation. - backend: Optional, backend name. - - Raises: - QiskitError: matrices sizes do not agree with number of qubits - """ - if assignment_matrices is None: - assignment_matrices = self._from_backend(backend, qubits) - else: - assignment_matrices = [np.asarray(amat, dtype=float) for amat in assignment_matrices] - for amat in assignment_matrices: - if np.any(amat < 0) or not np.allclose(np.sum(amat, axis=0), 1): - raise QiskitError( - "Assignment matrix columns must be valid probability distributions" - ) - if qubits is None: - self._num_qubits = len(assignment_matrices) - self._qubits = range(self._num_qubits) - else: - if len(qubits) != len(assignment_matrices): - raise QiskitError( - f"The number of given qubits ({len(qubits)}) is different than the number of qubits " - f"inferred from the matrices ({len(assignment_matrices)})" - ) - self._qubits = qubits - self._num_qubits = len(self._qubits) - - self._qubit_index = dict(zip(self._qubits, range(self._num_qubits))) - self._assignment_mats = assignment_matrices - self._mitigation_mats = np.zeros([self._num_qubits, 2, 2], dtype=float) - self._gammas = np.zeros(self._num_qubits, dtype=float) - - for i in range(self._num_qubits): - mat = self._assignment_mats[i] - # Compute Gamma values - error0 = mat[1, 0] - error1 = mat[0, 1] - self._gammas[i] = (1 + abs(error0 - error1)) / (1 - error0 - error1) - # Compute inverse mitigation matrix - try: - ainv = np.linalg.inv(mat) - except np.linalg.LinAlgError: - ainv = np.linalg.pinv(mat) - self._mitigation_mats[i] = ainv - - @property - def settings(self) -> Dict: - """Return settings.""" - return {"assignment_matrices": self._assignment_mats, "qubits": self._qubits} - - def expectation_value( - self, - data: Counts, - diagonal: Union[Callable, dict, str, np.ndarray] = None, - qubits: Iterable[int] = None, - clbits: Optional[List[int]] = None, - shots: Optional[int] = None, - ) -> Tuple[float, float]: - r"""Compute the mitigated expectation value of a diagonal observable. - - This computes the mitigated estimator of - :math:`\langle O \rangle = \mbox{Tr}[\rho. O]` of a diagonal observable - :math:`O = \sum_{x\in\{0, 1\}^n} O(x)|x\rangle\!\langle x|`. - - Args: - data: Counts object - diagonal: Optional, the vector of diagonal values for summing the - expectation value. If ``None`` the default value is - :math:`[1, -1]^\otimes n`. - qubits: Optional, the measured physical qubits the count - bitstrings correspond to. If None qubits are assumed to be - :math:`[0, ..., n-1]`. - clbits: Optional, if not None marginalize counts to the specified bits. - shots: the number of shots. - - Returns: - (float, float): the expectation value and an upper bound of the standard deviation. - - Additional Information: - The diagonal observable :math:`O` is input using the ``diagonal`` kwarg as - a list or Numpy array :math:`[O(0), ..., O(2^n -1)]`. If no diagonal is specified - the diagonal of the Pauli operator - :math`O = \mbox{diag}(Z^{\otimes n}) = [1, -1]^{\otimes n}` is used. - The ``clbits`` kwarg is used to marginalize the input counts dictionary - over the specified bit-values, and the ``qubits`` kwarg is used to specify - which physical qubits these bit-values correspond to as - ``circuit.measure(qubits, clbits)``. - """ - if qubits is None: - qubits = self._qubits - num_qubits = len(qubits) - probs_vec, shots = counts_probability_vector( - data, qubit_index=self._qubit_index, clbits=clbits, qubits=qubits - ) - - # Get qubit mitigation matrix and mitigate probs - qubit_indices = [self._qubit_index[qubit] for qubit in qubits] - ainvs = self._mitigation_mats[qubit_indices] - - # Get operator coeffs - if diagonal is None: - diagonal = z_diagonal(2**num_qubits) - elif isinstance(diagonal, str): - diagonal = str2diag(diagonal) - - # Apply transpose of mitigation matrix - coeffs = np.reshape(diagonal, num_qubits * [2]) - einsum_args = [coeffs, list(range(num_qubits))] - for i, ainv in enumerate(reversed(ainvs)): - einsum_args += [ainv.T, [num_qubits + i, i]] - einsum_args += [list(range(num_qubits, 2 * num_qubits))] - coeffs = np.einsum(*einsum_args).ravel() - - expval = coeffs.dot(probs_vec) - stddev_upper_bound = self.stddev_upper_bound(shots, qubits) - - return (expval, stddev_upper_bound) - - def quasi_probabilities( - self, - data: Counts, - qubits: Optional[List[int]] = None, - clbits: Optional[List[int]] = None, - shots: Optional[int] = None, - ) -> QuasiDistribution: - """Compute mitigated quasi probabilities value. - - Args: - data: counts object - qubits: qubits the count bitstrings correspond to. - clbits: Optional, marginalize counts to just these bits. - shots: Optional, the total number of shots, if None shots will - be calculated as the sum of all counts. - - Returns: - QuasiDistribution: A dictionary containing pairs of [output, mean] where "output" - is the key in the dictionaries, - which is the length-N bitstring of a measured standard basis state, - and "mean" is the mean of non-zero quasi-probability estimates. - - Raises: - QiskitError: if qubit and clbit kwargs are not valid. - """ - if qubits is None: - qubits = self._qubits - - num_qubits = len(qubits) - - probs_vec, calculated_shots = counts_probability_vector( - data, qubit_index=self._qubit_index, clbits=clbits, qubits=qubits - ) - if shots is None: - shots = calculated_shots - - # Get qubit mitigation matrix and mitigate probs - qubit_indices = [self._qubit_index[qubit] for qubit in qubits] - ainvs = self._mitigation_mats[qubit_indices] - - # Apply transpose of mitigation matrix - prob_tens = np.reshape(probs_vec, num_qubits * [2]) - einsum_args = [prob_tens, list(range(num_qubits))] - for i, ainv in enumerate(reversed(ainvs)): - einsum_args += [ainv, [num_qubits + i, i]] - einsum_args += [list(range(num_qubits, 2 * num_qubits))] - probs_vec = np.einsum(*einsum_args).ravel() - - probs_dict = {} - for index, _ in enumerate(probs_vec): - probs_dict[index] = probs_vec[index] - - quasi_dist = QuasiDistribution( - probs_dict, shots=shots, stddev_upper_bound=self.stddev_upper_bound(shots, qubits) - ) - return quasi_dist - - def mitigation_matrix(self, qubits: Optional[Union[List[int], int]] = None) -> np.ndarray: - r"""Return the measurement mitigation matrix for the specified qubits. - - The mitigation matrix :math:`A^{-1}` is defined as the inverse of the - :meth:`assignment_matrix` :math:`A`. - - Args: - qubits: Optional, qubits being measured for operator expval. - if a single int is given, it is assumed to be the index - of the qubit in self._qubits - - Returns: - np.ndarray: the measurement error mitigation matrix :math:`A^{-1}`. - """ - if qubits is None: - qubits = self._qubits - if isinstance(qubits, int): - qubits = [self._qubits[qubits]] - qubit_indices = [self._qubit_index[qubit] for qubit in qubits] - mat = self._mitigation_mats[qubit_indices[0]] - for i in qubit_indices[1:]: - mat = np.kron(self._mitigation_mats[i], mat) - return mat - - def assignment_matrix(self, qubits: List[int] = None) -> np.ndarray: - r"""Return the measurement assignment matrix for specified qubits. - - The assignment matrix is the stochastic matrix :math:`A` which assigns - a noisy measurement probability distribution to an ideal input - measurement distribution: :math:`P(i|j) = \langle i | A | j \rangle`. - - Args: - qubits: Optional, qubits being measured for operator expval. - - Returns: - np.ndarray: the assignment matrix A. - """ - if qubits is None: - qubits = self._qubits - if isinstance(qubits, int): - qubits = [qubits] - qubit_indices = [self._qubit_index[qubit] for qubit in qubits] - mat = self._assignment_mats[qubit_indices[0]] - for i in qubit_indices[1:]: - mat = np.kron(self._assignment_mats[i], mat) - return mat - - def _compute_gamma(self, qubits=None): - """Compute gamma for N-qubit mitigation""" - if qubits is None: - gammas = self._gammas - else: - qubit_indices = [self._qubit_index[qubit] for qubit in qubits] - gammas = self._gammas[qubit_indices] - return np.prod(gammas) - - def stddev_upper_bound(self, shots: int, qubits: List[int] = None): - """Return an upper bound on standard deviation of expval estimator. - - Args: - shots: Number of shots used for expectation value measurement. - qubits: qubits being measured for operator expval. - - Returns: - float: the standard deviation upper bound. - """ - gamma = self._compute_gamma(qubits=qubits) - return gamma / math.sqrt(shots) - - def _from_backend(self, backend, qubits): - """Calculates amats from backend properties readout_error""" - backend_qubits = backend.properties().qubits - if qubits is not None: - if any(qubit >= len(backend_qubits) for qubit in qubits): - raise QiskitError("The chosen backend does not contain the specified qubits.") - reduced_backend_qubits = [backend_qubits[i] for i in qubits] - backend_qubits = reduced_backend_qubits - num_qubits = len(backend_qubits) - - amats = np.zeros([num_qubits, 2, 2], dtype=float) - - for qubit_idx, qubit_prop in enumerate(backend_qubits): - for prop in qubit_prop: - if prop.name == "prob_meas0_prep1": - (amats[qubit_idx])[0, 1] = prop.value - (amats[qubit_idx])[1, 1] = 1 - prop.value - if prop.name == "prob_meas1_prep0": - (amats[qubit_idx])[1, 0] = prop.value - (amats[qubit_idx])[0, 0] = 1 - prop.value - - return amats - - @property - def qubits(self) -> Tuple[int]: - """The device qubits for this mitigator""" - return self._qubits diff --git a/qiskit/result/mitigation/utils.py b/qiskit/result/mitigation/utils.py deleted file mode 100644 index 8e7ed9e2a6af..000000000000 --- a/qiskit/result/mitigation/utils.py +++ /dev/null @@ -1,217 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021 -# -# 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. -""" -Readout mitigation data handling utils -""" - -import logging -import math -from typing import Optional, List, Tuple, Dict -import numpy as np - -from qiskit.exceptions import QiskitError -from qiskit.utils.deprecation import deprecate_func -from ..utils import marginal_counts -from ..counts import Counts - -logger = logging.getLogger(__name__) - - -@deprecate_func( - since="1.3", - package_name="Qiskit", - removal_timeline="in Qiskit 2.0", - additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of " - "the https://github.com/Qiskit/qiskit-addon-mthree package.", -) -def z_diagonal(dim, dtype=float): - r"""Return the diagonal for the operator :math:`Z^\otimes n`""" - parity = np.zeros(dim, dtype=dtype) - for i in range(dim): - parity[i] = bin(i)[2:].count("1") - return (-1) ** np.mod(parity, 2) - - -@deprecate_func( - since="1.3", - package_name="Qiskit", - removal_timeline="in Qiskit 2.0", - additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of " - "the https://github.com/Qiskit/qiskit-addon-mthree package.", -) -def expval_with_stddev(coeffs: np.ndarray, probs: np.ndarray, shots: int) -> Tuple[float, float]: - """Compute expectation value and standard deviation. - Args: - coeffs: array of diagonal operator coefficients. - probs: array of measurement probabilities. - shots: total number of shots to obtain probabilities. - Returns: - tuple: (expval, stddev) expectation value and standard deviation. - """ - # Compute expval - expval = coeffs.dot(probs) - - # Compute variance - sq_expval = (coeffs**2).dot(probs) - variance = (sq_expval - expval**2) / shots - - # Compute standard deviation - if variance < 0 and not np.isclose(variance, 0): - logger.warning( - "Encountered a negative variance in expectation value calculation." - "(%f). Setting standard deviation of result to 0.", - variance, - ) - calc_stddev = math.sqrt(variance) if variance > 0 else 0.0 - return [expval, calc_stddev] - - -@deprecate_func( - since="1.3", - package_name="Qiskit", - removal_timeline="in Qiskit 2.0", - additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of " - "the https://github.com/Qiskit/qiskit-addon-mthree package.", -) -def stddev(probs, shots): - """Calculate stddev dict""" - ret = {} - for key, prob in probs.items(): - std_err = math.sqrt(prob * (1 - prob) / shots) - ret[key] = std_err - return ret - - -@deprecate_func( - since="1.3", - package_name="Qiskit", - removal_timeline="in Qiskit 2.0", - additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of " - "the https://github.com/Qiskit/qiskit-addon-mthree package.", -) -def str2diag(string): - """Transform diagonal from a string to a numpy array""" - chars = { - "I": np.array([1, 1], dtype=float), - "Z": np.array([1, -1], dtype=float), - "0": np.array([1, 0], dtype=float), - "1": np.array([0, 1], dtype=float), - } - ret = np.array([1], dtype=float) - for i in reversed(string): - if i not in chars: - raise QiskitError(f"Invalid diagonal string character {i}") - ret = np.kron(chars[i], ret) - return ret - - -@deprecate_func( - since="1.3", - package_name="Qiskit", - removal_timeline="in Qiskit 2.0", - additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of " - "the https://github.com/Qiskit/qiskit-addon-mthree package.", -) -def counts_to_vector(counts: Counts, num_qubits: int) -> Tuple[np.ndarray, int]: - """Transforms Counts to a probability vector""" - vec = np.zeros(2**num_qubits, dtype=float) - shots = 0 - for key, val in counts.items(): - shots += val - vec[int(key, 2)] = val - vec /= shots - return vec, shots - - -@deprecate_func( - since="1.3", - package_name="Qiskit", - removal_timeline="in Qiskit 2.0", - additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of " - "the https://github.com/Qiskit/qiskit-addon-mthree package.", -) -def remap_qubits( - vec: np.ndarray, num_qubits: int, qubits: Optional[List[int]] = None -) -> np.ndarray: - """Remapping the qubits""" - if qubits is not None: - if len(qubits) != num_qubits: - raise QiskitError("Num qubits does not match vector length.") - axes = [num_qubits - 1 - i for i in reversed(np.argsort(qubits))] - vec = np.reshape(vec, num_qubits * [2]).transpose(axes).reshape(vec.shape) - return vec - - -@deprecate_func( - since="1.3", - package_name="Qiskit", - removal_timeline="in Qiskit 2.0", - additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of " - "the https://github.com/Qiskit/qiskit-addon-mthree package.", -) -def marganalize_counts( - counts: Counts, - qubit_index: Dict[int, int], - qubits: Optional[List[int]] = None, - clbits: Optional[List[int]] = None, -) -> np.ndarray: - """Marginalization of the Counts. Verify that number of clbits equals to the number of qubits.""" - if clbits is not None: - qubits_len = len(qubits) if not qubits is None else 0 - clbits_len = len(clbits) if not clbits is None else 0 - if clbits_len not in (0, qubits_len): - raise QiskitError( - f"Num qubits ({qubits_len}) does not match number of clbits ({clbits_len})." - ) - counts = marginal_counts(counts, clbits) - if clbits is None and qubits is not None: - clbits = [qubit_index[qubit] for qubit in qubits] - counts = marginal_counts(counts, clbits) - return counts - - -@deprecate_func( - since="1.3", - package_name="Qiskit", - removal_timeline="in Qiskit 2.0", - additional_msg="The `qiskit.result.mitigation` module is deprecated in favor of " - "the https://github.com/Qiskit/qiskit-addon-mthree package.", -) -def counts_probability_vector( - counts: Counts, - qubit_index: Dict[int, int], - qubits: Optional[List[int]] = None, - clbits: Optional[List[int]] = None, -) -> Tuple[np.ndarray, int]: - """Compute a probability vector for all count outcomes. - - Args: - counts: counts object - qubit_index: For each qubit, its index in the mitigator qubits list - qubits: qubits the count bitstrings correspond to. - clbits: Optional, marginalize counts to just these bits. - - Raises: - QiskitError: if qubits and clbits kwargs are not valid. - - Returns: - np.ndarray: a probability vector for all count outcomes. - int: Number of shots in the counts - """ - counts = marganalize_counts(counts, qubit_index, qubits, clbits) - if qubits is not None: - num_qubits = len(qubits) - else: - num_qubits = len(qubit_index.keys()) - vec, shots = counts_to_vector(counts, num_qubits) - vec = remap_qubits(vec, num_qubits, qubits) - return vec, shots diff --git a/qiskit/transpiler/passes/layout/dense_layout.py b/qiskit/transpiler/passes/layout/dense_layout.py index 71c69739990d..cbd9b548dcc8 100644 --- a/qiskit/transpiler/passes/layout/dense_layout.py +++ b/qiskit/transpiler/passes/layout/dense_layout.py @@ -36,17 +36,15 @@ class DenseLayout(AnalysisPass): by being set in ``property_set``. """ - def __init__(self, coupling_map=None, backend_prop=None, target=None): + def __init__(self, coupling_map=None, target=None): """DenseLayout initializer. Args: coupling_map (Coupling): directed graph representing a coupling map. - backend_prop (BackendProperties): backend properties object target (Target): A target representing the target backend. """ super().__init__() self.coupling_map = coupling_map - self.backend_prop = backend_prop self.target = target self.adjacency_matrix = None if target is not None: @@ -127,8 +125,6 @@ def _best_subset(self, num_qubits, num_meas, num_cx, coupling_map): error_mat, use_error = _build_error_matrix( coupling_map.size(), reverse_index_map, - backend_prop=self.backend_prop, - coupling_map=self.coupling_map, target=self.target, ) @@ -148,7 +144,7 @@ def _best_subset(self, num_qubits, num_meas, num_cx, coupling_map): return best_map -def _build_error_matrix(num_qubits, qubit_map, target=None, coupling_map=None, backend_prop=None): +def _build_error_matrix(num_qubits, qubit_map, target=None): error_mat = np.zeros((num_qubits, num_qubits)) use_error = False if target is not None and target.qargs is not None: @@ -178,25 +174,4 @@ def _build_error_matrix(num_qubits, qubit_map, target=None, coupling_map=None, b elif len(qargs) == 2: error_mat[qubit_map[qargs[0]]][qubit_map[qargs[1]]] = max_error use_error = True - elif backend_prop and coupling_map: - error_dict = { - tuple(gate.qubits): gate.parameters[0].value - for gate in backend_prop.gates - if len(gate.qubits) == 2 - } - for edge in coupling_map.get_edges(): - gate_error = error_dict.get(edge) - if gate_error is not None: - if edge[0] not in qubit_map or edge[1] not in qubit_map: - continue - error_mat[qubit_map[edge[0]]][qubit_map[edge[1]]] = gate_error - use_error = True - for index, qubit_data in enumerate(backend_prop.qubits): - if index not in qubit_map: - continue - for item in qubit_data: - if item.name == "readout_error": - mapped_index = qubit_map[index] - error_mat[mapped_index][mapped_index] = item.value - use_error = True return error_mat, use_error diff --git a/qiskit/transpiler/passes/layout/vf2_layout.py b/qiskit/transpiler/passes/layout/vf2_layout.py index 2e799ffa4d95..fc73cfd8c1ef 100644 --- a/qiskit/transpiler/passes/layout/vf2_layout.py +++ b/qiskit/transpiler/passes/layout/vf2_layout.py @@ -80,7 +80,6 @@ def __init__( seed=None, call_limit=None, time_limit=None, - properties=None, max_trials=None, target=None, ): @@ -94,16 +93,13 @@ def __init__( call_limit (int): The number of state visits to attempt in each execution of VF2. time_limit (float): The total time limit in seconds to run ``VF2Layout`` - properties (BackendProperties): The backend properties for the backend. If - :meth:`~qiskit.providers.models.BackendProperties.readout_error` is available - it is used to score the layout. max_trials (int): The maximum number of trials to run VF2 to find a layout. If this is not specified the number of trials will be limited based on the number of edges in the interaction graph or the coupling graph (whichever is larger) if no other limits are set. If set to a value <= 0 no limit on the number of trials will be set. target (Target): A target representing the backend device to run ``VF2Layout`` on. - If specified it will supersede a set value for ``properties`` and + If specified it will supersede a set value for ``coupling_map`` if the :class:`.Target` contains connectivity constraints. If the value of ``target`` models an ideal backend without any constraints then the value of ``coupling_map`` @@ -121,7 +117,6 @@ def __init__( self.coupling_map = target_coupling_map else: self.coupling_map = coupling_map - self.properties = properties self.strict_direction = strict_direction self.seed = seed self.call_limit = call_limit @@ -135,9 +130,7 @@ def run(self, dag): raise TranspilerError("coupling_map or target must be specified.") self.avg_error_map = self.property_set["vf2_avg_error_map"] if self.avg_error_map is None: - self.avg_error_map = vf2_utils.build_average_error_map( - self.target, self.properties, self.coupling_map - ) + self.avg_error_map = vf2_utils.build_average_error_map(self.target, self.coupling_map) result = vf2_utils.build_interaction_graph(dag, self.strict_direction) if result is None: diff --git a/qiskit/transpiler/passes/layout/vf2_post_layout.py b/qiskit/transpiler/passes/layout/vf2_post_layout.py index 1a29b0cb4506..0f46418e1fa4 100644 --- a/qiskit/transpiler/passes/layout/vf2_post_layout.py +++ b/qiskit/transpiler/passes/layout/vf2_post_layout.py @@ -78,8 +78,7 @@ class VF2PostLayout(AnalysisPass): * ``">2q gates in basis"``: If VF2PostLayout can't work with the basis of the circuit. By default, this pass will construct a heuristic scoring map based on - the error rates in the provided ``target`` (or ``properties`` if ``target`` - is not provided). However, analysis passes can be run prior to this pass + the error rates in the provided ``target``. However, analysis passes can be run prior to this pass and set ``vf2_avg_error_map`` in the property set with a :class:`~.ErrorMap` instance. If a value is ``NaN`` that is treated as an ideal edge For example if an error map is created as:: @@ -103,7 +102,6 @@ def __init__( self, target=None, coupling_map=None, - properties=None, seed=None, call_limit=None, time_limit=None, @@ -114,12 +112,8 @@ def __init__( Args: target (Target): A target representing the backend device to run ``VF2PostLayout`` on. - If specified it will supersede a set value for ``properties`` and - ``coupling_map``. + If specified it will supersede a set value for ``coupling_map``. coupling_map (CouplingMap): Directed graph representing a coupling map. - properties (BackendProperties): The backend properties for the backend. If - :meth:`~qiskit.providers.models.BackendProperties.readout_error` is available - it is used to score the layout. seed (int): Sets the seed of the PRNG. -1 Means no node shuffling. call_limit (int): The number of state visits to attempt in each execution of VF2. @@ -143,7 +137,6 @@ def __init__( super().__init__() self.target = target self.coupling_map = coupling_map - self.properties = properties self.call_limit = call_limit self.time_limit = time_limit self.max_trials = max_trials @@ -153,15 +146,13 @@ def __init__( def run(self, dag): """run the layout method""" - if self.target is None and (self.coupling_map is None or self.properties is None): - raise TranspilerError( - "A target must be specified or a coupling map and properties must be provided" - ) + if self.target is None and self.coupling_map is None: + raise TranspilerError("A target must be specified or a coupling map must be provided") if not self.strict_direction: self.avg_error_map = self.property_set["vf2_avg_error_map"] if self.avg_error_map is None: self.avg_error_map = vf2_utils.build_average_error_map( - self.target, self.properties, self.coupling_map + self.target, self.coupling_map ) result = vf2_utils.build_interaction_graph(dag, self.strict_direction) diff --git a/qiskit/transpiler/passes/layout/vf2_utils.py b/qiskit/transpiler/passes/layout/vf2_utils.py index 037ccc37155d..c2958d12610a 100644 --- a/qiskit/transpiler/passes/layout/vf2_utils.py +++ b/qiskit/transpiler/passes/layout/vf2_utils.py @@ -13,7 +13,6 @@ """This module contains common utils for vf2 layout passes.""" from collections import defaultdict -import statistics import random import numpy as np @@ -142,7 +141,7 @@ def score_layout( ) -def build_average_error_map(target, properties, coupling_map): +def build_average_error_map(target, coupling_map): """Build an average error map used for scoring layouts pre-basis translation.""" num_qubits = 0 if target is not None and target.qargs is not None: @@ -173,29 +172,6 @@ def build_average_error_map(target, properties, coupling_map): qargs = (qargs[0], qargs[0]) avg_map.add_error(qargs, qarg_error / count) built = True - elif properties is not None: - errors = defaultdict(list) - for qubit in range(len(properties.qubits)): - errors[(qubit,)].append(properties.readout_error(qubit)) - for gate in properties.gates: - qubits = tuple(gate.qubits) - for param in gate.parameters: - if param.name == "gate_error": - errors[qubits].append(param.value) - for k, v in errors.items(): - if len(k) == 1: - qargs = (k[0], k[0]) - else: - qargs = k - # If the properties payload contains an index outside the number of qubits - # the properties are invalid for the given input. This normally happens either - # with a malconstructed properties payload or if the faulty qubits feature of - # BackendV1/BackendPropeties is being used. In such cases we map noise characteristics - # so we should just treat the mapping as an ideal case. - if qargs[0] >= num_qubits or qargs[1] >= num_qubits: - continue - avg_map.add_error(qargs, statistics.mean(v)) - built = True # if there are no error rates in the target we should fallback to using the degree heuristic # used for a coupling map. To do this we can build the coupling map from the target before # running the fallback heuristic diff --git a/qiskit/transpiler/passmanager_config.py b/qiskit/transpiler/passmanager_config.py index 52f3d65449e5..1d473014b981 100644 --- a/qiskit/transpiler/passmanager_config.py +++ b/qiskit/transpiler/passmanager_config.py @@ -12,7 +12,6 @@ """Pass Manager Configuration class.""" -import pprint import warnings from qiskit.transpiler.coupling import CouplingMap @@ -35,7 +34,6 @@ def __init__( translation_method=None, scheduling_method=None, instruction_durations=None, - backend_properties=None, approximation_degree=None, seed_transpiler=None, timing_constraints=None, @@ -69,9 +67,6 @@ def __init__( be a plugin name if an external scheduling stage plugin is being used. instruction_durations (InstructionDurations): Dictionary of duration (in dt) for each instruction. - backend_properties (BackendProperties): Properties returned by a - backend, including information on gate errors, readout errors, - qubit coherence times, etc. approximation_degree (float): heuristic dial used for circuit approximation (1.0=no approximation, 0.0=maximal approximation) seed_transpiler (int): Sets random seed for the stochastic parts of @@ -102,7 +97,6 @@ def __init__( self.optimization_method = optimization_method self.scheduling_method = scheduling_method self.instruction_durations = instruction_durations - self.backend_properties = backend_properties self.approximation_degree = approximation_degree self.seed_transpiler = seed_transpiler self.timing_constraints = timing_constraints @@ -175,8 +169,6 @@ def from_backend(cls, backend, _skip_target=False, **pass_manager_options): res.instruction_durations = InstructionDurations.from_backend(backend) else: res.instruction_durations = backend.instruction_durations - if res.backend_properties is None and backend_version < 2: - res.backend_properties = backend.properties() if res.target is None and not _skip_target: if backend_version >= 2: res.target = backend.target @@ -189,11 +181,6 @@ def from_backend(cls, backend, _skip_target=False, **pass_manager_options): def __str__(self): newline = "\n" newline_tab = "\n\t" - if self.backend_properties is not None: - backend_props = pprint.pformat(self.backend_properties.to_dict()) - backend_props = backend_props.replace(newline, newline_tab) - else: - backend_props = str(None) return ( "Pass Manager Config:\n" f"\tinitial_layout: {self.initial_layout}\n" @@ -205,7 +192,6 @@ def __str__(self): f"\ttranslation_method: {self.translation_method}\n" f"\tscheduling_method: {self.scheduling_method}\n" f"\tinstruction_durations: {str(self.instruction_durations).replace(newline, newline_tab)}\n" - f"\tbackend_properties: {backend_props}\n" f"\tapproximation_degree: {self.approximation_degree}\n" f"\tseed_transpiler: {self.seed_transpiler}\n" f"\ttiming_constraints: {self.timing_constraints}\n" diff --git a/qiskit/transpiler/preset_passmanagers/builtin_plugins.py b/qiskit/transpiler/preset_passmanagers/builtin_plugins.py index d1ffa8d3d1b0..f5053892f7e8 100644 --- a/qiskit/transpiler/preset_passmanagers/builtin_plugins.py +++ b/qiskit/transpiler/preset_passmanagers/builtin_plugins.py @@ -249,7 +249,6 @@ def pass_manager(self, pass_manager_config, optimization_level=None) -> PassMana """Build routing stage PassManager.""" target = pass_manager_config.target coupling_map = pass_manager_config.coupling_map - backend_properties = pass_manager_config.backend_properties if target is None: routing_pass = BasicSwap(coupling_map) else: @@ -275,7 +274,6 @@ def pass_manager(self, pass_manager_config, optimization_level=None) -> PassMana coupling_map, vf2_call_limit=vf2_call_limit, vf2_max_trials=vf2_max_trials, - backend_properties=backend_properties, seed_transpiler=-1, check_trivial=True, use_barrier_before_measurement=True, @@ -287,7 +285,6 @@ def pass_manager(self, pass_manager_config, optimization_level=None) -> PassMana coupling_map=coupling_map, vf2_call_limit=vf2_call_limit, vf2_max_trials=vf2_max_trials, - backend_properties=backend_properties, seed_transpiler=-1, use_barrier_before_measurement=True, ) @@ -298,7 +295,6 @@ def pass_manager(self, pass_manager_config, optimization_level=None) -> PassMana coupling_map=coupling_map, vf2_call_limit=vf2_call_limit, vf2_max_trials=vf2_max_trials, - backend_properties=backend_properties, seed_transpiler=-1, use_barrier_before_measurement=True, ) @@ -316,7 +312,6 @@ def pass_manager(self, pass_manager_config, optimization_level=None) -> PassMana coupling_map_routing = target if coupling_map_routing is None: coupling_map_routing = coupling_map - backend_properties = pass_manager_config.backend_properties vf2_call_limit, vf2_max_trials = common.get_vf2_limits( optimization_level, pass_manager_config.layout_method, @@ -342,7 +337,6 @@ def pass_manager(self, pass_manager_config, optimization_level=None) -> PassMana coupling_map, vf2_call_limit=vf2_call_limit, vf2_max_trials=vf2_max_trials, - backend_properties=backend_properties, seed_transpiler=-1, check_trivial=True, use_barrier_before_measurement=True, @@ -354,7 +348,6 @@ def pass_manager(self, pass_manager_config, optimization_level=None) -> PassMana coupling_map=coupling_map, vf2_call_limit=vf2_call_limit, vf2_max_trials=vf2_max_trials, - backend_properties=backend_properties, seed_transpiler=-1, use_barrier_before_measurement=True, ) @@ -371,7 +364,6 @@ def pass_manager(self, pass_manager_config, optimization_level=None) -> PassMana coupling_map_routing = target if coupling_map_routing is None: coupling_map_routing = coupling_map - backend_properties = pass_manager_config.backend_properties vf2_call_limit, vf2_max_trials = common.get_vf2_limits( optimization_level, pass_manager_config.layout_method, @@ -394,7 +386,6 @@ def pass_manager(self, pass_manager_config, optimization_level=None) -> PassMana coupling_map, vf2_call_limit=vf2_call_limit, vf2_max_trials=vf2_max_trials, - backend_properties=backend_properties, seed_transpiler=-1, check_trivial=True, use_barrier_before_measurement=True, @@ -407,7 +398,6 @@ def pass_manager(self, pass_manager_config, optimization_level=None) -> PassMana coupling_map=coupling_map, vf2_call_limit=vf2_call_limit, vf2_max_trials=vf2_max_trials, - backend_properties=backend_properties, seed_transpiler=-1, use_barrier_before_measurement=True, ) @@ -419,7 +409,6 @@ def pass_manager(self, pass_manager_config, optimization_level=None) -> PassMana coupling_map=coupling_map, vf2_call_limit=vf2_call_limit, vf2_max_trials=vf2_max_trials, - backend_properties=backend_properties, seed_transpiler=-1, use_barrier_before_measurement=True, ) @@ -437,7 +426,6 @@ def pass_manager(self, pass_manager_config, optimization_level=None) -> PassMana coupling_map_routing = target if coupling_map_routing is None: coupling_map_routing = coupling_map - backend_properties = pass_manager_config.backend_properties vf2_call_limit, vf2_max_trials = common.get_vf2_limits( optimization_level, pass_manager_config.layout_method, @@ -472,7 +460,6 @@ def pass_manager(self, pass_manager_config, optimization_level=None) -> PassMana coupling_map, vf2_call_limit=vf2_call_limit, vf2_max_trials=vf2_max_trials, - backend_properties=backend_properties, seed_transpiler=-1, check_trivial=True, use_barrier_before_measurement=True, @@ -492,7 +479,6 @@ def pass_manager(self, pass_manager_config, optimization_level=None) -> PassMana coupling_map=coupling_map, vf2_call_limit=vf2_call_limit, vf2_max_trials=vf2_max_trials, - backend_properties=backend_properties, seed_transpiler=-1, use_barrier_before_measurement=True, ) @@ -510,7 +496,6 @@ def pass_manager(self, pass_manager_config, optimization_level=None) -> PassMana coupling_map=coupling_map, vf2_call_limit=vf2_call_limit, vf2_max_trials=vf2_max_trials, - backend_properties=backend_properties, seed_transpiler=-1, use_barrier_before_measurement=True, ) @@ -799,7 +784,6 @@ def _swap_mapped(property_set): coupling_map=pass_manager_config.coupling_map, seed=-1, call_limit=int(5e4), # Set call limit to ~100ms with rustworkx 0.10.2 - properties=pass_manager_config.backend_properties, target=pass_manager_config.target, max_trials=2500, # Limits layout scoring to < 600ms on ~400 qubit devices ) @@ -832,7 +816,6 @@ def _swap_mapped(property_set): coupling_map=pass_manager_config.coupling_map, seed=-1, call_limit=int(5e6), # Set call limit to ~10s with rustworkx 0.10.2 - properties=pass_manager_config.backend_properties, target=pass_manager_config.target, max_trials=2500, # Limits layout scoring to < 600ms on ~400 qubit devices ) @@ -867,7 +850,6 @@ def _swap_mapped(property_set): coupling_map=pass_manager_config.coupling_map, seed=-1, call_limit=int(3e7), # Set call limit to ~60s with rustworkx 0.10.2 - properties=pass_manager_config.backend_properties, target=pass_manager_config.target, max_trials=250000, # Limits layout scoring to < 60s on ~400 qubit devices ) @@ -948,7 +930,6 @@ def _choose_layout_condition(property_set): ConditionalController( DenseLayout( coupling_map=pass_manager_config.coupling_map, - backend_prop=pass_manager_config.backend_properties, target=pass_manager_config.target, ), condition=_choose_layout_condition, diff --git a/qiskit/transpiler/preset_passmanagers/common.py b/qiskit/transpiler/preset_passmanagers/common.py index 0f0a6b7ea0a7..30d7630d9b1e 100644 --- a/qiskit/transpiler/preset_passmanagers/common.py +++ b/qiskit/transpiler/preset_passmanagers/common.py @@ -280,7 +280,6 @@ def generate_routing_passmanager( target, coupling_map=None, vf2_call_limit=None, - backend_properties=None, seed_transpiler=-1, check_trivial=False, use_barrier_before_measurement=True, @@ -297,8 +296,6 @@ def generate_routing_passmanager( vf2_call_limit (int): The internal call limit for the vf2 post layout pass. If this is ``None`` or ``0`` the vf2 post layout will not be run. - backend_properties (BackendProperties): Properties of a backend to - synthesize for (e.g. gate fidelities). seed_transpiler (int): Sets random seed for the stochastic parts of the transpiler. This is currently only used for :class:`.VF2PostLayout` and the default value of ``-1`` is strongly recommended (which is no randomization). @@ -354,13 +351,12 @@ def _swap_condition(property_set): routing.append(ConditionalController(routing_pass, condition=_swap_condition)) is_vf2_fully_bounded = vf2_call_limit and vf2_max_trials - if (target is not None or backend_properties is not None) and is_vf2_fully_bounded: + if target is not None and is_vf2_fully_bounded: routing.append( ConditionalController( VF2PostLayout( target, coupling_map, - backend_properties, seed=seed_transpiler, call_limit=vf2_call_limit, max_trials=vf2_max_trials, diff --git a/qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py b/qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py index 62f991990d4e..0deb1879a07e 100644 --- a/qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +++ b/qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py @@ -27,7 +27,7 @@ from qiskit.transpiler.instruction_durations import InstructionDurations from qiskit.transpiler.layout import Layout from qiskit.transpiler.passmanager_config import PassManagerConfig -from qiskit.transpiler.target import Target, target_to_backend_properties +from qiskit.transpiler.target import Target from qiskit.transpiler.timing_constraints import TimingConstraints from qiskit.utils import deprecate_arg from qiskit.utils.deprecate_pulse import deprecate_pulse_arg @@ -56,14 +56,6 @@ "with defined timing constraints with " "`Target.from_configuration(..., timing_constraints=...)`", ) -@deprecate_arg( - name="backend_properties", - since="1.3", - package_name="Qiskit", - removal_timeline="in Qiskit 2.0", - additional_msg="The `target` parameter should be used instead. You can build a `Target` instance " - "with defined properties with Target.from_configuration(..., backend_properties=...)", -) @deprecate_pulse_arg("inst_map", predicate=lambda inst_map: inst_map is not None) def generate_preset_pass_manager( optimization_level=2, @@ -73,7 +65,6 @@ def generate_preset_pass_manager( inst_map=None, coupling_map=None, instruction_durations=None, - backend_properties=None, timing_constraints=None, initial_layout=None, layout_method=None, @@ -102,7 +93,7 @@ def generate_preset_pass_manager( The target constraints for the pass manager construction can be specified through a :class:`.Target` instance, a :class:`.BackendV1` or :class:`.BackendV2` instance, or via loose constraints - (``basis_gates``, ``inst_map``, ``coupling_map``, ``backend_properties``, ``instruction_durations``, + (``basis_gates``, ``inst_map``, ``coupling_map``, ``instruction_durations``, ``dt`` or ``timing_constraints``). The order of priorities for target constraints works as follows: if a ``target`` input is provided, it will take priority over any ``backend`` input or loose constraints. @@ -123,7 +114,6 @@ def generate_preset_pass_manager( **inst_map** target inst_map inst_map **dt** target dt dt **timing_constraints** target timing_constraints timing_constraints - **backend_properties** target backend_properties backend_properties ============================ ========= ======================== ======================= Args: @@ -140,15 +130,14 @@ def generate_preset_pass_manager( backend (Backend): An optional backend object which can be used as the source of the default values for the ``basis_gates``, ``inst_map``, - ``coupling_map``, ``backend_properties``, ``instruction_durations``, + ``coupling_map``, ``instruction_durations``, ``timing_constraints``, and ``target``. If any of those other arguments are specified in addition to ``backend`` they will take precedence over the value contained in the backend. target (Target): The :class:`~.Target` representing a backend compilation target. The following attributes will be inferred from this argument if they are not set: ``coupling_map``, ``basis_gates``, - ``instruction_durations``, ``inst_map``, ``timing_constraints`` - and ``backend_properties``. + ``instruction_durations``, ``inst_map`` and ``timing_constraints``. basis_gates (list): List of basis gate names to unroll to (e.g: ``['u1', 'u2', 'u3', 'cx']``). inst_map (InstructionScheduleMap): DEPRECATED. Mapping object that maps gates to schedules. @@ -230,9 +219,6 @@ def generate_preset_pass_manager( for the ``scheduling`` stage of the output :class:`~.StagedPassManager`. You can see a list of installed plugins by using :func:`~.list_stage_plugins` with ``"scheduling"`` for the ``stage_name`` argument. - backend_properties (BackendProperties): Properties returned by a - backend, including information on gate errors, readout errors, - qubit coherence times, etc. approximation_degree (float): Heuristic dial used for circuit approximation (1.0=no approximation, 0.0=maximal approximation). seed_transpiler (int): Sets random seed for the stochastic parts of @@ -305,7 +291,6 @@ def generate_preset_pass_manager( and coupling_map is None and dt is None and instruction_durations is None - and backend_properties is None and timing_constraints is None ) # If it's an edge case => do not build target @@ -336,7 +321,6 @@ def generate_preset_pass_manager( elif not _skip_target: # Only parse backend properties when the target isn't skipped to # preserve the former behavior of transpile. - backend_properties = _parse_backend_properties(backend_properties, backend) with warnings.catch_warnings(): # TODO: inst_map will be removed in 2.0 warnings.filterwarnings( @@ -353,7 +337,6 @@ def generate_preset_pass_manager( # If the instruction map has custom gates, do not give as config, the information # will be added to the target with update_from_instruction_schedule_map inst_map=inst_map if inst_map and not inst_map.has_custom_gate() else None, - backend_properties=backend_properties, instruction_durations=instruction_durations, concurrent_measurements=( backend.target.concurrent_measurements if backend is not None else None @@ -380,18 +363,6 @@ def generate_preset_pass_manager( inst_map = target._get_instruction_schedule_map() if timing_constraints is None: timing_constraints = target.timing_constraints() - if backend_properties is None: - with warnings.catch_warnings(): - # TODO this approach (target-to-properties) is going to be removed soon (1.3) in favor - # of backend-to-target approach - # https://github.com/Qiskit/qiskit/pull/12850 - warnings.filterwarnings( - "ignore", - category=DeprecationWarning, - message=r".+qiskit\.transpiler\.target\.target_to_backend_properties.+", - module="qiskit", - ) - backend_properties = target_to_backend_properties(target) # Parse non-target dependent pm options initial_layout = _parse_initial_layout(initial_layout) @@ -404,7 +375,6 @@ def generate_preset_pass_manager( "inst_map": inst_map, "coupling_map": coupling_map, "instruction_durations": instruction_durations, - "backend_properties": backend_properties, "timing_constraints": timing_constraints, "layout_method": layout_method, "routing_method": routing_method, @@ -520,21 +490,6 @@ def _parse_inst_map(inst_map, backend): return inst_map -def _parse_backend_properties(backend_properties, backend): - # try getting backend_props from user, else backend - if backend_properties is None and backend is not None: - with warnings.catch_warnings(): - # filter target_to_backend_properties warning - warnings.filterwarnings( - "ignore", - category=DeprecationWarning, - message=".*``qiskit.transpiler.target.target_to_backend_properties\\(\\)``.*", - module="qiskit", - ) - backend_properties = target_to_backend_properties(backend.target) - return backend_properties - - def _parse_dt(dt, backend): # try getting dt from user, else backend if dt is None and backend is not None: diff --git a/test/benchmarks/mapping_passes.py b/test/benchmarks/mapping_passes.py index 07a6b037db5b..155f7438bf45 100644 --- a/test/benchmarks/mapping_passes.py +++ b/test/benchmarks/mapping_passes.py @@ -17,7 +17,6 @@ from qiskit.transpiler import CouplingMap from qiskit.transpiler.passes import * from qiskit.converters import circuit_to_dag -from qiskit.providers.fake_provider import Fake20QV1 from .utils import random_circuit @@ -98,7 +97,6 @@ def setup(self, n_qubits, depth): apply_pass = ApplyLayout() apply_pass.property_set["layout"] = self.layout self.dag = apply_pass.run(self.enlarge_dag) - self.backend_props = Fake20QV1().properties() def time_stochastic_swap(self, _, __): swap = StochasticSwap(self.coupling_map, seed=42) @@ -229,7 +227,6 @@ def setup(self, n_qubits, depth): apply_pass = ApplyLayout() apply_pass.property_set["layout"] = self.layout self.dag = apply_pass.run(self.enlarge_dag) - self.backend_props = Fake20QV1().properties() self.routed_dag = StochasticSwap(self.coupling_map, seed=42).run(self.dag) def time_gate_direction(self, _, __): diff --git a/test/benchmarks/transpiler_levels.py b/test/benchmarks/transpiler_levels.py index e0853d335f3d..a1e795875ac1 100644 --- a/test/benchmarks/transpiler_levels.py +++ b/test/benchmarks/transpiler_levels.py @@ -18,9 +18,10 @@ from qiskit.compiler import transpile from qiskit import QuantumCircuit from qiskit.transpiler import InstructionDurations -from qiskit.providers.fake_provider import Fake20QV1 +from qiskit.providers.fake_provider import GenericBackendV2 from .utils import build_qv_model_circuit +from ..python.legacy_cmaps import MELBOURNE_CMAP class TranspilerLevelBenchmarks: @@ -153,7 +154,8 @@ def setup(self, _): self.qasm_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "qasm")) large_qasm_path = os.path.join(self.qasm_path, "test_eoh_qasm.qasm") self.large_qasm = QuantumCircuit.from_qasm_file(large_qasm_path) - self.melbourne = Fake20QV1() + self.melbourne = GenericBackendV2(num_qubits=20, coupling_map=MELBOURNE_CMAP, seed=0) + self.durations = InstructionDurations( [ ("u1", None, 0), diff --git a/test/benchmarks/transpiler_qualitative.py b/test/benchmarks/transpiler_qualitative.py index e53c153353ba..4424692bf9d7 100644 --- a/test/benchmarks/transpiler_qualitative.py +++ b/test/benchmarks/transpiler_qualitative.py @@ -17,7 +17,9 @@ from qiskit import QuantumCircuit from qiskit.compiler import transpile -from qiskit.providers.fake_provider import Fake27QPulseV1 +from qiskit.providers.fake_provider import GenericBackendV2 + +from ..python.legacy_cmaps import MUMBAI_CMAP class TranspilerQualitativeBench: @@ -27,7 +29,7 @@ class TranspilerQualitativeBench: # pylint: disable=unused-argument def setup(self, optimization_level, routing_method, layout_method): - self.backend = Fake27QPulseV1() + self.backend = GenericBackendV2(num_qubits=27, coupling_map=MUMBAI_CMAP, seed=0) self.qasm_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "qasm")) self.depth_4gt10_v1_81 = QuantumCircuit.from_qasm_file( diff --git a/test/python/circuit/test_parameters.py b/test/python/circuit/test_parameters.py index bcd0316aee36..7d433be8f114 100644 --- a/test/python/circuit/test_parameters.py +++ b/test/python/circuit/test_parameters.py @@ -31,7 +31,7 @@ from qiskit.compiler import transpile from qiskit import pulse from qiskit.quantum_info import Operator -from qiskit.providers.fake_provider import Fake5QV1, GenericBackendV2 +from qiskit.providers.fake_provider import GenericBackendV2 from qiskit.providers.basic_provider import BasicSimulator from qiskit.utils import parallel_map from test import QiskitTestCase, combine # pylint: disable=wrong-import-order @@ -1139,31 +1139,6 @@ def test_transpiling_multiple_parameterized_circuits(self): self.assertTrue(len(job.result().results), 2) - @data(0, 1, 2, 3) - def test_transpile_across_optimization_levelsV1(self, opt_level): - """Verify parameterized circuits can be transpiled with all default pass managers. - To remove once Fake5QV1 gets removed""" - - qc = QuantumCircuit(5, 5) - - theta = Parameter("theta") - phi = Parameter("phi") - - qc.rx(theta, 0) - qc.x(0) - for i in range(5 - 1): - qc.rxx(phi, i, i + 1) - - qc.measure(range(5 - 1), range(5 - 1)) - with self.assertWarns(DeprecationWarning): - backend = Fake5QV1() - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - transpile(qc, backend, optimization_level=opt_level) - @data(0, 1, 2, 3) def test_transpile_across_optimization_levels(self, opt_level): """Verify parameterized circuits can be transpiled with all default pass managers.""" diff --git a/test/python/circuit/test_scheduled_circuit.py b/test/python/circuit/test_scheduled_circuit.py index 45238dc79e74..2e03a951161d 100644 --- a/test/python/circuit/test_scheduled_circuit.py +++ b/test/python/circuit/test_scheduled_circuit.py @@ -19,7 +19,7 @@ from qiskit import transpile from qiskit.circuit import Parameter from qiskit.circuit.duration import convert_durations_to_dt -from qiskit.providers.fake_provider import Fake27QPulseV1, GenericBackendV2 +from qiskit.providers.fake_provider import GenericBackendV2 from qiskit.providers.basic_provider import BasicSimulator from qiskit.scheduler import ScheduleConfig from qiskit.transpiler import InstructionProperties @@ -34,43 +34,32 @@ class TestScheduledCircuit(QiskitTestCase): def setUp(self): super().setUp() - with self.assertWarns(DeprecationWarning): - self.backend_with_dt = Fake27QPulseV1() - self.backend_without_dt = Fake27QPulseV1() - delattr(self.backend_without_dt.configuration(), "dt") - # Remove timing constraints from the backends (alignment values, - # granularity and min_length), so that these values will default - # to 1. This allows running tests with arbitrary instruction - # durations (not only multiples of 16) as well as parametrized ones. - # Additionally, this avoids triggering scheduling passes, which are - # run when alignment values different to 1 are found. - self.backend_with_dt.configuration().timing_constraints = {} - self.backend_without_dt.configuration().timing_constraints = {} self.dt = 2.2222222222222221e-10 + self.backend_with_dt = GenericBackendV2(2, seed=42, dt=self.dt) + self.backend_without_dt = GenericBackendV2(2, seed=42) + self.backend_without_dt.target.dt = None self.simulator_backend = BasicSimulator() def test_schedule_circuit_when_backend_tells_dt(self): """dt is known to transpiler by backend""" qc = QuantumCircuit(2) - qc.delay(0.1, 0, unit="ms") # 450450[dt] + qc.delay(0.1, 0, unit="ms") # 450000[dt] qc.delay(100, 0, unit="ns") # 450[dt] - qc.h(0) # 195[dt] - qc.h(1) # 210[dt] - - with self.assertWarns(DeprecationWarning): - backend = GenericBackendV2(2, calibrate_instructions=True, seed=42) + qc.h(0) # duration: rz(0) + sx(195) + rz(0) + qc.h(1) # duration: rz(0)+ sx(210) + rz(0) - sc = transpile(qc, backend, scheduling_method="alap", layout_method="trivial") - self.assertEqual(sc.duration, 451095) + sc = transpile(qc, self.backend_with_dt, scheduling_method="alap", layout_method="trivial") + target_durations = self.backend_with_dt.target.durations() + self.assertEqual(sc.duration, 450450 + target_durations.get("sx", 0)) self.assertEqual(sc.unit, "dt") self.assertEqual(sc.data[0].operation.name, "delay") - self.assertEqual(sc.data[0].operation.duration, 450900) + self.assertEqual(sc.data[0].operation.duration, 450450) self.assertEqual(sc.data[0].operation.unit, "dt") self.assertEqual(sc.data[1].operation.name, "rz") self.assertEqual(sc.data[1].operation.duration, 0) self.assertEqual(sc.data[1].operation.unit, "dt") self.assertEqual(sc.data[4].operation.name, "delay") - self.assertEqual(sc.data[4].operation.duration, 450885) + self.assertEqual(sc.data[4].operation.duration, 450435) self.assertEqual(sc.data[4].operation.unit, "dt") def test_schedule_circuit_when_transpile_option_tells_dt(self): @@ -78,21 +67,18 @@ def test_schedule_circuit_when_transpile_option_tells_dt(self): qc = QuantumCircuit(2) qc.delay(0.1, 0, unit="ms") # 450000[dt] qc.delay(100, 0, unit="ns") # 450[dt] - qc.h(0) - qc.h(1) - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - sc = transpile( - qc, - self.backend_without_dt, - scheduling_method="alap", - dt=self.dt, - layout_method="trivial", - ) - self.assertEqual(sc.duration, 450546) + qc.h(0) # duration: rz(0) + sx(195) + rz(0) + qc.h(1) # duration: rz(0)+ sx(210) + rz(0) + + sc = transpile( + qc, + self.backend_without_dt, + scheduling_method="alap", + dt=self.dt, + layout_method="trivial", + ) + target_durations = self.backend_with_dt.target.durations() + self.assertEqual(sc.duration, 450450 + target_durations.get("sx", 0)) self.assertEqual(sc.unit, "dt") self.assertEqual(sc.data[0].operation.name, "delay") self.assertEqual(sc.data[0].operation.duration, 450450) @@ -101,7 +87,7 @@ def test_schedule_circuit_when_transpile_option_tells_dt(self): self.assertEqual(sc.data[1].operation.duration, 0) self.assertEqual(sc.data[1].operation.unit, "dt") self.assertEqual(sc.data[4].operation.name, "delay") - self.assertEqual(sc.data[4].operation.duration, 450450) + self.assertEqual(sc.data[4].operation.duration, 450435) self.assertEqual(sc.data[4].operation.unit, "dt") def test_schedule_circuit_in_sec_when_no_one_tells_dt(self): @@ -109,17 +95,13 @@ def test_schedule_circuit_in_sec_when_no_one_tells_dt(self): qc = QuantumCircuit(2) qc.delay(0.1, 0, unit="ms") qc.delay(100, 0, unit="ns") - qc.h(0) - qc.h(1) - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - sc = transpile( - qc, self.backend_without_dt, scheduling_method="alap", layout_method="trivial" - ) - self.assertAlmostEqual(sc.duration, 450610 * self.dt) + qc.h(0) # duration: rz(0) + sx(195) + rz(0) + qc.h(1) # duration: rz(0)+ sx(210) + rz(0) + sc = transpile( + qc, self.backend_without_dt, scheduling_method="alap", layout_method="trivial" + ) + target_durations = self.backend_with_dt.target.durations() + self.assertAlmostEqual(sc.duration, (450450 + target_durations.get("sx", 0)) * self.dt) self.assertEqual(sc.unit, "s") self.assertEqual(sc.data[0].operation.name, "delay") self.assertAlmostEqual(sc.data[0].operation.duration, 1.0e-4 + 1.0e-7) @@ -138,23 +120,13 @@ def test_cannot_schedule_circuit_with_mixed_SI_and_dt_when_no_one_tells_dt(self) qc.delay(30, 0, unit="dt") qc.h(0) qc.h(1) - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - with self.assertRaises(QiskitError): - transpile(qc, self.backend_without_dt, scheduling_method="alap") + with self.assertRaises(QiskitError): + transpile(qc, self.backend_without_dt, scheduling_method="alap") def test_transpile_single_delay_circuit(self): qc = QuantumCircuit(1) qc.delay(1234, 0) - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - sc = transpile(qc, backend=self.backend_with_dt, scheduling_method="alap") + sc = transpile(qc, backend=self.backend_with_dt, scheduling_method="alap") self.assertEqual(sc.duration, 1234) self.assertEqual(sc.data[0].operation.name, "delay") self.assertEqual(sc.data[0].operation.duration, 1234) @@ -162,31 +134,27 @@ def test_transpile_single_delay_circuit(self): def test_transpile_t1_circuit(self): qc = QuantumCircuit(1) - qc.x(0) # 320 [dt] + qc.x(0) qc.delay(1000, 0, unit="ns") # 4500 [dt] qc.measure_all() - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - scheduled = transpile(qc, backend=self.backend_with_dt, scheduling_method="alap") - self.assertEqual(scheduled.duration, 8004) + scheduled = transpile(qc, backend=self.backend_with_dt, scheduling_method="alap") + # the x and measure gates get routed to qubit 1 + target_durations = self.backend_with_dt.target.durations() + expected_scheduled = ( + target_durations.get("x", 1) + 4500 + target_durations.get("measure", 1) + ) + self.assertEqual(scheduled.duration, expected_scheduled) def test_transpile_delay_circuit_with_backend(self): qc = QuantumCircuit(2) - qc.h(0) + qc.h(0) # 195 [dt] qc.delay(100, 1, unit="ns") # 450 [dt] - qc.cx(0, 1) # 1760 [dt] - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - scheduled = transpile( - qc, backend=self.backend_with_dt, scheduling_method="alap", layout_method="trivial" - ) - self.assertEqual(scheduled.duration, 1826) + qc.cx(0, 1) # 3169 [dt] + scheduled = transpile( + qc, backend=self.backend_with_dt, scheduling_method="alap", layout_method="trivial" + ) + target_durations = self.backend_with_dt.target.durations() + self.assertEqual(scheduled.duration, target_durations.get("cx", (0, 1)) + 450) def test_transpile_delay_circuit_without_backend(self): qc = QuantumCircuit(2) @@ -194,8 +162,7 @@ def test_transpile_delay_circuit_without_backend(self): qc.delay(500, 1) qc.cx(0, 1) with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `target` parameter should be used instead", + DeprecationWarning, "argument ``instruction_durations`` is deprecated" ): scheduled = transpile( qc, @@ -214,8 +181,7 @@ def test_transpile_circuit_with_custom_instruction(self): qc.delay(500, 1) qc.append(bell.to_instruction(), [0, 1]) with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `target` parameter should be used instead", + DeprecationWarning, "argument ``instruction_durations`` is deprecated" ): scheduled = transpile( qc, scheduling_method="alap", instruction_durations=[("bell", [0, 1], 1000)] @@ -225,12 +191,7 @@ def test_transpile_circuit_with_custom_instruction(self): def test_transpile_delay_circuit_with_dt_but_without_scheduling_method(self): qc = QuantumCircuit(1) qc.delay(100, 0, unit="ns") - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - transpiled = transpile(qc, backend=self.backend_with_dt) + transpiled = transpile(qc, backend=self.backend_with_dt) self.assertEqual(transpiled.duration, None) # not scheduled self.assertEqual(transpiled.data[0].operation.duration, 450) # unit is converted ns -> dt @@ -255,12 +216,7 @@ def test_invalidate_schedule_circuit_if_new_instruction_is_appended(self): qc.h(0) qc.delay(500 * self.dt, 1, "s") qc.cx(0, 1) - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - scheduled = transpile(qc, backend=self.backend_with_dt, scheduling_method="alap") + scheduled = transpile(qc, backend=self.backend_with_dt, scheduling_method="alap") # append a gate to a scheduled circuit scheduled.h(0) self.assertEqual(scheduled.duration, None) @@ -301,23 +257,18 @@ def test_unit_seconds_when_using_backend_durations(self): qc.delay(500 * self.dt, 1, "s") qc.cx(0, 1) # usual case - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - scheduled = transpile( - qc, backend=self.backend_with_dt, scheduling_method="alap", layout_method="trivial" - ) - self.assertEqual(scheduled.duration, 1876) + scheduled = transpile( + qc, backend=self.backend_with_dt, scheduling_method="alap", layout_method="trivial" + ) + target_durations = self.backend_with_dt.target.durations() + self.assertEqual(scheduled.duration, target_durations.get("cx", (0, 1)) + 500) # update durations durations = InstructionDurations.from_backend(self.backend_with_dt) durations.update([("cx", [0, 1], 1000 * self.dt, "s")]) with self.assertWarnsRegex( DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", + expected_regex="The `target` parameter should be used instead", ): scheduled = transpile( qc, @@ -328,13 +279,14 @@ def test_unit_seconds_when_using_backend_durations(self): ) self.assertEqual(scheduled.duration, 1500) - def test_per_qubit_durations_loose_constrain(self): + def test_per_qubit_durations_loose_constraint(self): """See Qiskit/5109 and Qiskit/13306""" qc = QuantumCircuit(3) qc.h(0) qc.delay(500, 1) qc.cx(0, 1) qc.h(1) + with self.assertWarnsRegex( DeprecationWarning, expected_regex="The `target` parameter should be used instead", @@ -382,61 +334,69 @@ def test_per_qubit_durations_loose_constrain(self): def test_per_qubit_durations(self): """Test target with custom instruction_durations""" - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="argument ``calibrate_instructions`` is deprecated", - ): - target = GenericBackendV2( + with self.assertRaises(DeprecationWarning): + backend = GenericBackendV2( 3, - calibrate_instructions=True, coupling_map=[[0, 1], [1, 2]], basis_gates=["cx", "h"], seed=42, - ).target - target.update_instruction_properties("cx", (0, 1), InstructionProperties(0.00001)) - target.update_instruction_properties("cx", (1, 2), InstructionProperties(0.00001)) - target.update_instruction_properties("h", (0,), InstructionProperties(0.000002)) - target.update_instruction_properties("h", (1,), InstructionProperties(0.000002)) - target.update_instruction_properties("h", (2,), InstructionProperties(0.000002)) - - qc = QuantumCircuit(3) - qc.h(0) - qc.delay(500, 1) - qc.cx(0, 1) - qc.h(1) - - sc = transpile(qc, scheduling_method="alap", target=target) - self.assertEqual(sc.qubit_start_time(0), 500) - self.assertEqual(sc.qubit_stop_time(0), 54554) - self.assertEqual(sc.qubit_start_time(1), 9509) - self.assertEqual(sc.qubit_stop_time(1), 63563) - self.assertEqual(sc.qubit_start_time(2), 0) - self.assertEqual(sc.qubit_stop_time(2), 0) - self.assertEqual(sc.qubit_start_time(0, 1), 500) - self.assertEqual(sc.qubit_stop_time(0, 1), 63563) - - qc.measure_all() - - target.update_instruction_properties("measure", (0,), InstructionProperties(0.0001)) - target.update_instruction_properties("measure", (1,), InstructionProperties(0.0001)) + calibrate_instructions=True, + ) + target = backend.target + target.update_instruction_properties( + "cx", (0, 1), InstructionProperties(duration=0.00001) + ) + target.update_instruction_properties( + "cx", (1, 2), InstructionProperties(duration=0.00001) + ) + target.update_instruction_properties( + "h", (0,), InstructionProperties(duration=0.000002) + ) + target.update_instruction_properties( + "h", (1,), InstructionProperties(duration=0.000002) + ) + target.update_instruction_properties( + "h", (2,), InstructionProperties(duration=0.000002) + ) - sc = transpile(qc, scheduling_method="alap", target=target) - q = sc.qubits - self.assertEqual(sc.qubit_start_time(q[0]), 500) - self.assertEqual(sc.qubit_stop_time(q[0]), 514013) - self.assertEqual(sc.qubit_start_time(q[1]), 9509) - self.assertEqual(sc.qubit_stop_time(q[1]), 514013) - self.assertEqual(sc.qubit_start_time(q[2]), 63563) - self.assertEqual(sc.qubit_stop_time(q[2]), 514013) - self.assertEqual(sc.qubit_start_time(*q), 500) - self.assertEqual(sc.qubit_stop_time(*q), 514013) + qc = QuantumCircuit(3) + qc.h(0) + qc.delay(500, 1) + qc.cx(0, 1) + qc.h(1) + + sc = transpile(qc, scheduling_method="alap", target=target) + self.assertEqual(sc.qubit_start_time(0), 500) + self.assertEqual(sc.qubit_stop_time(0), 54554) + self.assertEqual(sc.qubit_start_time(1), 9509) + self.assertEqual(sc.qubit_stop_time(1), 63563) + self.assertEqual(sc.qubit_start_time(2), 0) + self.assertEqual(sc.qubit_stop_time(2), 0) + self.assertEqual(sc.qubit_start_time(0, 1), 500) + self.assertEqual(sc.qubit_stop_time(0, 1), 63563) + + qc.measure_all() + + target.update_instruction_properties("measure", (0,), InstructionProperties(0.0001)) + target.update_instruction_properties("measure", (1,), InstructionProperties(0.0001)) + + sc = transpile(qc, scheduling_method="alap", target=target) + q = sc.qubits + self.assertEqual(sc.qubit_start_time(q[0]), 500) + self.assertEqual(sc.qubit_stop_time(q[0]), 514013) + self.assertEqual(sc.qubit_start_time(q[1]), 9509) + self.assertEqual(sc.qubit_stop_time(q[1]), 514013) + self.assertEqual(sc.qubit_start_time(q[2]), 63563) + self.assertEqual(sc.qubit_stop_time(q[2]), 514013) + self.assertEqual(sc.qubit_start_time(*q), 500) + self.assertEqual(sc.qubit_stop_time(*q), 514013) def test_convert_duration_to_dt(self): """Test that circuit duration unit conversion is applied only when necessary. Tests fix for bug reported in PR #11782.""" with self.assertWarns(DeprecationWarning): - backend = GenericBackendV2(num_qubits=3, calibrate_instructions=True, seed=42) + backend = GenericBackendV2(num_qubits=3, seed=42) schedule_config = ScheduleConfig( inst_map=backend.target.instruction_schedule_map(), meas_map=backend.meas_map, @@ -479,40 +439,32 @@ def test_change_dt_in_transpile(self): qc.x(0) qc.measure(0, 0) # default case - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - scheduled = transpile(qc, backend=self.backend_with_dt, scheduling_method="asap") + scheduled = transpile( + qc, + backend=GenericBackendV2(1, basis_gates=["x"], seed=2, dt=self.dt), + scheduling_method="asap", + ) org_duration = scheduled.duration - # halve dt in sec = double duration in dt - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - scheduled = transpile( - qc, backend=self.backend_with_dt, scheduling_method="asap", dt=self.dt / 2 - ) + scheduled = transpile( + qc, + backend=GenericBackendV2(1, basis_gates=["x"], seed=2, dt=self.dt), + scheduling_method="asap", + dt=self.dt / 2, + ) self.assertEqual(scheduled.duration, org_duration * 2) @data("asap", "alap") def test_duration_on_same_instruction_instance(self, scheduling_method): """See: https://github.com/Qiskit/qiskit-terra/issues/5771""" - assert self.backend_with_dt.properties().gate_length( - "cx", (0, 1) - ) != self.backend_with_dt.properties().gate_length("cx", (1, 2)) + backend = GenericBackendV2(3, seed=42, dt=self.dt) + assert backend.target.durations().get( + "cx", qubits=(0, 1), unit="dt" + ) != backend.target.durations().get("cx", qubits=(1, 2), unit="dt") qc = QuantumCircuit(3) qc.cz(0, 1) qc.cz(1, 2) - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - sc = transpile(qc, backend=self.backend_with_dt, scheduling_method=scheduling_method) + sc = transpile(qc, backend=backend, scheduling_method=scheduling_method) cxs = [inst.operation for inst in sc.data if inst.operation.name == "cx"] self.assertNotEqual(cxs[0].duration, cxs[1].duration) @@ -525,12 +477,7 @@ def test_can_transpile_circuits_after_assigning_parameters(self): qc.delay(idle_dur, 0, "us") qc.measure(0, 0) qc = qc.assign_parameters({idle_dur: 0.1}) - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - circ = transpile(qc, self.backend_with_dt) + circ = transpile(qc, self.backend_with_dt) self.assertEqual(circ.duration, None) # not scheduled self.assertEqual(circ.data[1].operation.duration, 450) # converted in dt @@ -540,12 +487,7 @@ def test_can_transpile_circuits_with_assigning_parameters_inbetween(self): qc.x(0) qc.delay(idle_dur, 0, "us") qc.measure(0, 0) - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - circ = transpile(qc, self.backend_with_dt) + circ = transpile(qc, self.backend_with_dt) circ = circ.assign_parameters({idle_dur: 0.1}) self.assertEqual(circ.data[1].name, "delay") self.assertEqual(circ.data[1].params[0], 450) @@ -557,12 +499,7 @@ def test_can_transpile_circuits_with_unbounded_parameters(self): qc.delay(idle_dur, 0, "us") qc.measure(0, 0) # not assign parameter - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - circ = transpile(qc, self.backend_with_dt) + circ = transpile(qc, self.backend_with_dt) self.assertEqual(circ.duration, None) # not scheduled self.assertEqual(circ.data[1].operation.unit, "dt") # converted in dt self.assertEqual( @@ -577,12 +514,7 @@ def test_can_schedule_circuits_with_bounded_parameters(self, scheduling_method): qc.delay(idle_dur, 0, "us") qc.measure(0, 0) qc = qc.assign_parameters({idle_dur: 0.1}) - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - circ = transpile(qc, self.backend_with_dt, scheduling_method=scheduling_method) + circ = transpile(qc, self.backend_with_dt, scheduling_method=scheduling_method) self.assertIsNotNone(circ.duration) # scheduled @data("asap", "alap") @@ -593,11 +525,6 @@ def test_fail_to_schedule_circuits_with_unbounded_parameters(self, scheduling_me qc.delay(idle_dur, 0, "us") qc.measure(0, 0) - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - # unassigned parameter - with self.assertRaises(TranspilerError): - transpile(qc, self.backend_with_dt, scheduling_method=scheduling_method) + # unassigned parameter + with self.assertRaises(TranspilerError): + transpile(qc, self.backend_with_dt, scheduling_method=scheduling_method) diff --git a/test/python/compiler/test_compiler.py b/test/python/compiler/test_compiler.py index 4b16e2ee45ab..73bb1f595dac 100644 --- a/test/python/compiler/test_compiler.py +++ b/test/python/compiler/test_compiler.py @@ -19,10 +19,13 @@ from qiskit.transpiler import PassManager from qiskit.circuit.library import U1Gate, U2Gate from qiskit.compiler import transpile +from qiskit.providers.fake_provider import GenericBackendV2 from qiskit.providers.basic_provider import BasicSimulator from qiskit.qasm2 import dumps from test import QiskitTestCase # pylint: disable=wrong-import-order +from ..legacy_cmaps import TOKYO_CMAP + class TestCompiler(QiskitTestCase): """Qiskit Compiler Tests.""" @@ -184,6 +187,20 @@ def test_example_swap_bits(self): ).result() self.assertEqual(result.get_counts(qc), {"010000": 1024}) + def test_parallel_compile(self): + """Trigger parallel routines in compile.""" + qr = QuantumRegister(16) + cr = ClassicalRegister(2) + qc = QuantumCircuit(qr, cr) + qc.h(qr[0]) + for k in range(1, 15): + qc.cx(qr[0], qr[k]) + qc.measure(qr[5], cr[0]) + qlist = [qc for k in range(10)] + backend = GenericBackendV2(num_qubits=20, coupling_map=TOKYO_CMAP, seed=0) + out = transpile(qlist, backend=backend) + self.assertEqual(len(out), 10) + def test_no_conflict_backend_passmanager(self): """See: https://github.com/Qiskit/qiskit-terra/issues/5037""" backend = BasicSimulator() diff --git a/test/python/compiler/test_transpiler.py b/test/python/compiler/test_transpiler.py index 5c707c00d884..969461755fe8 100644 --- a/test/python/compiler/test_transpiler.py +++ b/test/python/compiler/test_transpiler.py @@ -75,8 +75,7 @@ from qiskit.dagcircuit import DAGOpNode, DAGOutNode from qiskit.exceptions import QiskitError from qiskit.providers.backend import BackendV2 -from qiskit.providers.backend_compat import BackendV2Converter -from qiskit.providers.fake_provider import Fake20QV1, Fake27QPulseV1, GenericBackendV2 +from qiskit.providers.fake_provider import GenericBackendV2 from qiskit.providers.basic_provider import BasicSimulator from qiskit.providers.options import Options from qiskit.pulse import InstructionScheduleMap @@ -92,7 +91,6 @@ InstructionProperties, Target, InstructionDurations, - target_to_backend_properties, ) from test import QiskitTestCase, combine, slow_test # pylint: disable=wrong-import-order @@ -1568,32 +1566,27 @@ def test_scheduling_backend_v2(self): def test_scheduling_instruction_constraints_backend(self): """Test that scheduling-related loose transpile constraints - work with both BackendV1 and BackendV2.""" + work with BackendV2.""" - with self.assertWarns(DeprecationWarning): - backend_v1 = Fake27QPulseV1() - backend_v2 = BackendV2Converter(backend_v1) + with self.assertWarnsRegex( + DeprecationWarning, + expected_regex="argument ``calibrate_instructions`` is deprecated", + ): + backend_v2 = GenericBackendV2( + 2, + calibrate_instructions=True, + coupling_map=[[0, 1]], + basis_gates=["cx", "h"], + seed=0, + ) qc = QuantumCircuit(2) qc.h(0) qc.delay(500, 1, "dt") qc.cx(0, 1) # update durations - durations = InstructionDurations.from_backend(backend_v1) + durations = InstructionDurations.from_backend(backend_v2) durations.update([("cx", [0, 1], 1000, "dt")]) - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will stop supporting inputs of type `BackendV1` ", - ): - scheduled = transpile( - qc, - backend=backend_v1, - scheduling_method="alap", - instruction_durations=durations, - layout_method="trivial", - ) - self.assertEqual(scheduled.duration, 1500) - with self.assertWarnsRegex( DeprecationWarning, expected_regex="The `target` parameter should be used instead", @@ -1640,101 +1633,17 @@ def test_scheduling_dt_constraints(self): """Test that scheduling-related loose transpile constraints work with both BackendV1 and BackendV2.""" - with self.assertWarns(DeprecationWarning): - backend_v1 = Fake27QPulseV1() - backend_v2 = BackendV2Converter(backend_v1) + backend_v2 = GenericBackendV2(num_qubits=2, seed=1) qc = QuantumCircuit(1, 1) qc.x(0) qc.measure(0, 0) original_dt = 2.2222222222222221e-10 - original_duration = 3504 - - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will stop supporting inputs of type `BackendV1` ", - ): - # halve dt in sec = double duration in dt - scheduled = transpile( - qc, backend=backend_v1, scheduling_method="asap", dt=original_dt / 2 - ) - self.assertEqual(scheduled.duration, original_duration * 2) + original_duration = 5059 # halve dt in sec = double duration in dt scheduled = transpile(qc, backend=backend_v2, scheduling_method="asap", dt=original_dt / 2) self.assertEqual(scheduled.duration, original_duration * 2) - def test_backend_props_constraints(self): - """Test that loose transpile constraints work with both BackendV1 and BackendV2.""" - - with self.assertWarns(DeprecationWarning): - backend_v1 = Fake20QV1() - backend_v2 = BackendV2Converter(backend_v1) - qr1 = QuantumRegister(3, "qr1") - qr2 = QuantumRegister(2, "qr2") - qc = QuantumCircuit(qr1, qr2) - qc.cx(qr1[0], qr1[1]) - qc.cx(qr1[1], qr1[2]) - qc.cx(qr1[2], qr2[0]) - qc.cx(qr2[0], qr2[1]) - - # generate a fake backend with same number of qubits - # but different backend properties - fake_backend = GenericBackendV2(num_qubits=20, seed=42) - with self.assertWarns(DeprecationWarning): - custom_backend_properties = target_to_backend_properties(fake_backend.target) - - # expected layout for custom_backend_properties - # (different from expected layout for Fake20QV1) - vf2_layout = { - 18: Qubit(QuantumRegister(3, "qr1"), 1), - 13: Qubit(QuantumRegister(3, "qr1"), 2), - 19: Qubit(QuantumRegister(3, "qr1"), 0), - 14: Qubit(QuantumRegister(2, "qr2"), 0), - 9: Qubit(QuantumRegister(2, "qr2"), 1), - 0: Qubit(QuantumRegister(15, "ancilla"), 0), - 1: Qubit(QuantumRegister(15, "ancilla"), 1), - 2: Qubit(QuantumRegister(15, "ancilla"), 2), - 3: Qubit(QuantumRegister(15, "ancilla"), 3), - 4: Qubit(QuantumRegister(15, "ancilla"), 4), - 5: Qubit(QuantumRegister(15, "ancilla"), 5), - 6: Qubit(QuantumRegister(15, "ancilla"), 6), - 7: Qubit(QuantumRegister(15, "ancilla"), 7), - 8: Qubit(QuantumRegister(15, "ancilla"), 8), - 10: Qubit(QuantumRegister(15, "ancilla"), 9), - 11: Qubit(QuantumRegister(15, "ancilla"), 10), - 12: Qubit(QuantumRegister(15, "ancilla"), 11), - 15: Qubit(QuantumRegister(15, "ancilla"), 12), - 16: Qubit(QuantumRegister(15, "ancilla"), 13), - 17: Qubit(QuantumRegister(15, "ancilla"), 14), - } - - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will stop supporting inputs of type `BackendV1` ", - ): - result = transpile( - qc, - backend=backend_v1, - backend_properties=custom_backend_properties, - optimization_level=2, - seed_transpiler=42, - ) - - self.assertEqual(result._layout.initial_layout._p2v, vf2_layout) - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `target` parameter should be used instead", - ): - result = transpile( - qc, - backend=backend_v2, - backend_properties=custom_backend_properties, - optimization_level=2, - seed_transpiler=42, - ) - - self.assertEqual(result._layout.initial_layout._p2v, vf2_layout) - @data(1, 2, 3) def test_no_infinite_loop(self, optimization_level): """Verify circuit cost always descends and optimization does not flip flop indefinitely.""" @@ -2170,21 +2079,6 @@ def test_transpile_annotated_ops(self, opt_level): self.assertEqual(Operator(qc), Operator(transpiled)) self.assertEqual(Operator(qc), Operator(expected)) - @combine(opt_level=[0, 1, 2, 3]) - def test_transpile_annotated_ops_with_backend_v1(self, opt_level): - """Test transpilation of circuits with annotated operations given a backend. - Remove once Fake20QV1 is removed.""" - qc = QuantumCircuit(3) - qc.append(AnnotatedOperation(SGate(), InverseModifier()), [0]) - qc.append(AnnotatedOperation(XGate(), ControlModifier(1)), [1, 2]) - qc.append(AnnotatedOperation(HGate(), PowerModifier(3)), [2]) - with self.assertWarns(DeprecationWarning): - backend = Fake20QV1() - transpiled = transpile( - qc, optimization_level=opt_level, backend=backend, seed_transpiler=42 - ) - self.assertLessEqual(set(transpiled.count_ops().keys()), {"u1", "u2", "u3", "cx"}) - @combine(opt_level=[0, 1, 2, 3]) def test_transpile_annotated_ops_with_backend(self, opt_level): """Test transpilation of circuits with annotated operations given a backend.""" @@ -2523,23 +2417,6 @@ def test_qasm3_output(self, optimization_level): # itself doesn't throw an error, though. self.assertIsInstance(qasm3.dumps(transpiled).strip(), str) - @data(0, 1, 2, 3) - def test_qasm3_output_v1(self, optimization_level): - """Test that the output of a transpiled circuit can be dumped into OpenQASM 3 (backend V1).""" - with self.assertWarns(DeprecationWarning): - backend = Fake20QV1() - - transpiled = transpile( - self._regular_circuit(), - backend=backend, - optimization_level=optimization_level, - seed_transpiler=2022_10_17, - ) - # TODO: There's not a huge amount we can sensibly test for the output here until we can - # round-trip the OpenQASM 3 back into a Terra circuit. Mostly we're concerned that the dump - # itself doesn't throw an error, though. - self.assertIsInstance(qasm3.dumps(transpiled).strip(), str) - @data(0, 1, 2, 3) def test_qasm3_output_control_flow(self, optimization_level): """Test that the output of a transpiled circuit with control flow can be dumped into @@ -2699,7 +2576,6 @@ def test_custom_multiple_circuits(self): initial_layout=None, basis_gates=["u1", "u2", "u3", "cx"], coupling_map=CouplingMap([[0, 1]]), - backend_properties=None, seed_transpiler=1, ) passmanager = level_0_pass_manager(pm_conf) diff --git a/test/python/primitives/test_backend_estimator.py b/test/python/primitives/test_backend_estimator.py index 49d5efa2d782..2cefb4f86f10 100644 --- a/test/python/primitives/test_backend_estimator.py +++ b/test/python/primitives/test_backend_estimator.py @@ -21,8 +21,7 @@ from qiskit.circuit import QuantumCircuit from qiskit.circuit.library import RealAmplitudes from qiskit.primitives import BackendEstimator, EstimatorResult -from qiskit.providers.fake_provider import Fake7QPulseV1, GenericBackendV2 -from qiskit.providers.backend_compat import BackendV2Converter +from qiskit.providers.fake_provider import GenericBackendV2 from qiskit.quantum_info import SparsePauliOp from qiskit.transpiler import PassManager from qiskit.utils import optionals @@ -32,8 +31,6 @@ BACKENDS = [ - Fake7QPulseV1(), - BackendV2Converter(Fake7QPulseV1()), GenericBackendV2(num_qubits=5, seed=42), ] @@ -325,57 +322,6 @@ def max_circuits(self): estimator.run([qc] * k, [op] * k, params_list).result() self.assertEqual(run_mock.call_count, 10) - def test_job_size_limit_v1(self): - """Test BackendEstimator respects job size limit - REMOVE ONCE Fake7QPulseV1 GETS REMOVED""" - with self.assertWarns(DeprecationWarning): - backend = Fake7QPulseV1() - config = backend.configuration() - config.max_experiments = 1 - backend._configuration = config - qc = RealAmplitudes(num_qubits=2, reps=2) - op = SparsePauliOp.from_list([("IZ", 1), ("XI", 2), ("ZY", -1)]) - k = 5 - params_array = self._rng.random((k, qc.num_parameters)) - params_list = params_array.tolist() - with self.assertWarns(DeprecationWarning): - estimator = BackendEstimator(backend=backend) - estimator.set_options(seed_simulator=123) - with patch.object(backend, "run") as run_mock: - with self.assertWarns(DeprecationWarning): - estimator.run([qc] * k, [op] * k, params_list).result() - self.assertEqual(run_mock.call_count, 10) - - def test_no_max_circuits(self): - """Test BackendEstimator works with BackendV1 and no max_experiments set. - REMOVE ONCE Fake7QPulseV1 GETS REMOVED""" - with self.assertWarns(DeprecationWarning): - backend = Fake7QPulseV1() - config = backend.configuration() - del config.max_experiments - backend._configuration = config - qc = RealAmplitudes(num_qubits=2, reps=2) - op = SparsePauliOp.from_list([("IZ", 1), ("XI", 2), ("ZY", -1)]) - k = 5 - params_array = self._rng.random((k, qc.num_parameters)) - params_list = params_array.tolist() - params_list_array = list(params_array) - with self.assertWarns(DeprecationWarning): - estimator = BackendEstimator(backend=backend) - estimator.set_options(seed_simulator=123) - target = estimator.run([qc] * k, [op] * k, params_list).result() - with self.subTest("ndarrary"): - with self.assertWarns(DeprecationWarning): - result = estimator.run([qc] * k, [op] * k, params_array).result() - self.assertEqual(len(result.metadata), k) - np.testing.assert_allclose(result.values, target.values, rtol=0.2, atol=0.2) - - with self.subTest("list of ndarray"): - with self.assertWarns(DeprecationWarning): - result = estimator.run([qc] * k, [op] * k, params_list_array).result() - self.assertEqual(len(result.metadata), k) - np.testing.assert_allclose(result.values, target.values, rtol=0.2, atol=0.2) - def test_bound_pass_manager(self): """Test bound pass manager.""" diff --git a/test/python/primitives/test_backend_estimator_v2.py b/test/python/primitives/test_backend_estimator_v2.py index dd55750c55a0..d37537ad8e6f 100644 --- a/test/python/primitives/test_backend_estimator_v2.py +++ b/test/python/primitives/test_backend_estimator_v2.py @@ -27,18 +27,15 @@ from qiskit.primitives.containers.bindings_array import BindingsArray from qiskit.primitives.containers.estimator_pub import EstimatorPub from qiskit.primitives.containers.observables_array import ObservablesArray -from qiskit.providers.backend_compat import BackendV2Converter from qiskit.providers.basic_provider import BasicSimulator -from qiskit.providers.fake_provider import Fake7QPulseV1, GenericBackendV2 +from qiskit.providers.fake_provider import GenericBackendV2 from qiskit.quantum_info import SparsePauliOp from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager from qiskit.utils import optionals from ..legacy_cmaps import LAGOS_CMAP -BACKENDS_V1 = [Fake7QPulseV1()] -BACKENDS_V2 = [ +BACKENDS = [ BasicSimulator(), - BackendV2Converter(Fake7QPulseV1()), GenericBackendV2( num_qubits=7, basis_gates=["id", "rz", "sx", "x", "cx", "reset"], @@ -46,7 +43,6 @@ seed=42, ), ] -BACKENDS = BACKENDS_V1 + BACKENDS_V2 @ddt @@ -85,7 +81,7 @@ def setUp(self): [1, 2, 3, 4, 5, 6], ) - @combine(backend=BACKENDS_V2, abelian_grouping=[True, False]) + @combine(backend=BACKENDS, abelian_grouping=[True, False]) def test_estimator_run(self, backend, abelian_grouping): """Test Estimator.run()""" psi1, psi2 = self.psi @@ -132,62 +128,7 @@ def test_estimator_run(self, backend, abelian_grouping): np.testing.assert_allclose(result4[0].data.evs, [1.55555728, -1.08766318], rtol=self._rtol) np.testing.assert_allclose(result4[1].data.evs, [0.17849238], rtol=self._rtol) - @combine(backend=BACKENDS_V1, abelian_grouping=[True, False]) - def test_estimator_run_v1(self, backend, abelian_grouping): - """Test Estimator.run()""" - psi1, psi2 = self.psi - hamiltonian1, hamiltonian2, hamiltonian3 = self.hamiltonian - theta1, theta2, theta3 = self.theta - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will stop supporting " - "inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - psi1, psi2 = pm.run([psi1, psi2]) - with self.assertWarns(DeprecationWarning): - # When BackendEstimatorV2 is called with a backend V1, it raises a - # DeprecationWarning from PassManagerConfig.from_backend - estimator = BackendEstimatorV2(backend=backend, options=self._options) - estimator.options.abelian_grouping = abelian_grouping - # Specify the circuit and observable by indices. - # calculate [ ] - ham1 = hamiltonian1.apply_layout(psi1.layout) - job = estimator.run([(psi1, ham1, [theta1])]) - result = job.result() - np.testing.assert_allclose(result[0].data.evs, [1.5555572817900956], rtol=self._rtol) - - # Objects can be passed instead of indices. - # Note that passing objects has an overhead - # since the corresponding indices need to be searched. - # User can append a circuit and observable. - # calculate [ ] - ham1 = hamiltonian1.apply_layout(psi2.layout) - result2 = estimator.run([(psi2, ham1, theta2)]).result() - np.testing.assert_allclose(result2[0].data.evs, [2.97797666], rtol=self._rtol) - - # calculate [ , ] - ham2 = hamiltonian2.apply_layout(psi1.layout) - ham3 = hamiltonian3.apply_layout(psi1.layout) - result3 = estimator.run([(psi1, [ham2, ham3], theta1)]).result() - np.testing.assert_allclose(result3[0].data.evs, [-0.551653, 0.07535239], rtol=self._rtol) - - # calculate [ [, - # ], - # [] ] - ham1 = hamiltonian1.apply_layout(psi1.layout) - ham3 = hamiltonian3.apply_layout(psi1.layout) - ham2 = hamiltonian2.apply_layout(psi2.layout) - result4 = estimator.run( - [ - (psi1, [ham1, ham3], [theta1, theta3]), - (psi2, ham2, theta2), - ] - ).result() - np.testing.assert_allclose(result4[0].data.evs, [1.55555728, -1.08766318], rtol=self._rtol) - np.testing.assert_allclose(result4[1].data.evs, [0.17849238], rtol=self._rtol) - - @combine(backend=BACKENDS_V2, abelian_grouping=[True, False]) + @combine(backend=BACKENDS, abelian_grouping=[True, False]) def test_estimator_with_pub(self, backend, abelian_grouping): """Test estimator with explicit EstimatorPubs.""" psi1, psi2 = self.psi @@ -213,41 +154,7 @@ def test_estimator_with_pub(self, backend, abelian_grouping): np.testing.assert_allclose(result4[0].data.evs, [1.55555728, -1.08766318], rtol=self._rtol) np.testing.assert_allclose(result4[1].data.evs, [0.17849238], rtol=self._rtol) - @combine(backend=BACKENDS_V1, abelian_grouping=[True, False]) - def test_estimator_with_pub_v1(self, backend, abelian_grouping): - """Test estimator with explicit EstimatorPubs.""" - psi1, psi2 = self.psi - hamiltonian1, hamiltonian2, hamiltonian3 = self.hamiltonian - theta1, theta2, theta3 = self.theta - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will stop supporting " - "inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - psi1, psi2 = pm.run([psi1, psi2]) - - ham1 = hamiltonian1.apply_layout(psi1.layout) - ham3 = hamiltonian3.apply_layout(psi1.layout) - obs1 = ObservablesArray.coerce([ham1, ham3]) - bind1 = BindingsArray.coerce({tuple(psi1.parameters): [theta1, theta3]}) - pub1 = EstimatorPub(psi1, obs1, bind1) - - ham2 = hamiltonian2.apply_layout(psi2.layout) - obs2 = ObservablesArray.coerce(ham2) - bind2 = BindingsArray.coerce({tuple(psi2.parameters): theta2}) - pub2 = EstimatorPub(psi2, obs2, bind2) - - with self.assertWarns(DeprecationWarning): - # When BackendEstimatorV2 is called with a backend V1, it raises a - # DeprecationWarning from PassManagerConfig.from_backend - estimator = BackendEstimatorV2(backend=backend, options=self._options) - estimator.options.abelian_grouping = abelian_grouping - result4 = estimator.run([pub1, pub2]).result() - np.testing.assert_allclose(result4[0].data.evs, [1.55555728, -1.08766318], rtol=self._rtol) - np.testing.assert_allclose(result4[1].data.evs, [0.17849238], rtol=self._rtol) - - @combine(backend=BACKENDS_V2, abelian_grouping=[True, False]) + @combine(backend=BACKENDS, abelian_grouping=[True, False]) def test_estimator_run_no_params(self, backend, abelian_grouping): """test for estimator without parameters""" circuit = self.ansatz.assign_parameters([0, 1, 1, 2, 3, 5]) @@ -259,27 +166,7 @@ def test_estimator_run_no_params(self, backend, abelian_grouping): result = est.run([(circuit, observable)]).result() np.testing.assert_allclose(result[0].data.evs, [-1.284366511861733], rtol=self._rtol) - @combine(backend=BACKENDS_V1, abelian_grouping=[True, False]) - def test_estimator_run_no_params_v1(self, backend, abelian_grouping): - """test for estimator without parameters""" - circuit = self.ansatz.assign_parameters([0, 1, 1, 2, 3, 5]) - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will " - "stop supporting inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - circuit = pm.run(circuit) - with self.assertWarns(DeprecationWarning): - # When BackendEstimatorV2 is called with a backend V1, it raises a - # DeprecationWarning from PassManagerConfig.from_backend - est = BackendEstimatorV2(backend=backend, options=self._options) - est.options.abelian_grouping = abelian_grouping - observable = self.observable.apply_layout(circuit.layout) - result = est.run([(circuit, observable)]).result() - np.testing.assert_allclose(result[0].data.evs, [-1.284366511861733], rtol=self._rtol) - - @combine(backend=BACKENDS_V2, abelian_grouping=[True, False]) + @combine(backend=BACKENDS, abelian_grouping=[True, False]) def test_run_single_circuit_observable(self, backend, abelian_grouping): """Test for single circuit and single observable case.""" est = BackendEstimatorV2(backend=backend, options=self._options) @@ -337,76 +224,7 @@ def test_run_single_circuit_observable(self, backend, abelian_grouping): np.testing.assert_allclose(result[0].data.evs, target, rtol=self._rtol) self.assertEqual(result[0].metadata["target_precision"], self._precision) - @combine(backend=BACKENDS_V1, abelian_grouping=[True, False]) - def test_run_single_circuit_observable_v1(self, backend, abelian_grouping): - """Test for single circuit and single observable case.""" - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex=r"The method PassManagerConfig\.from_backend will stop supporting inputs of " - "type `BackendV1`", - ): - # BackendEstimatorV2 wont allow BackendV1 - est = BackendEstimatorV2(backend=backend, options=self._options) - est.options.abelian_grouping = abelian_grouping - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will stop supporting " - "inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - - with self.subTest("No parameter"): - qc = QuantumCircuit(1) - qc.x(0) - qc = pm.run(qc) - op = SparsePauliOp("Z") - op = op.apply_layout(qc.layout) - param_vals = [None, [], [[]], np.array([]), np.array([[]]), [np.array([])]] - target = [-1] - for val in param_vals: - self.subTest(f"{val}") - result = est.run([(qc, op, val)]).result() - np.testing.assert_allclose(result[0].data.evs, target, rtol=self._rtol) - self.assertEqual(result[0].metadata["target_precision"], self._precision) - - with self.subTest("One parameter"): - param = Parameter("x") - qc = QuantumCircuit(1) - qc.ry(param, 0) - qc = pm.run(qc) - op = SparsePauliOp("Z") - op = op.apply_layout(qc.layout) - param_vals = [ - [np.pi], - np.array([np.pi]), - ] - target = [-1] - for val in param_vals: - self.subTest(f"{val}") - result = est.run([(qc, op, val)]).result() - np.testing.assert_allclose(result[0].data.evs, target, rtol=self._rtol) - self.assertEqual(result[0].metadata["target_precision"], self._precision) - - with self.subTest("More than one parameter"): - qc = self.psi[0] - qc = pm.run(qc) - op = self.hamiltonian[0] - op = op.apply_layout(qc.layout) - param_vals = [ - self.theta[0], - [self.theta[0]], - np.array(self.theta[0]), - np.array([self.theta[0]]), - [np.array(self.theta[0])], - ] - target = [1.5555572817900956] - for val in param_vals: - self.subTest(f"{val}") - result = est.run([(qc, op, val)]).result() - np.testing.assert_allclose(result[0].data.evs, target, rtol=self._rtol) - self.assertEqual(result[0].metadata["target_precision"], self._precision) - - @combine(backend=BACKENDS_V2, abelian_grouping=[True, False]) + @combine(backend=BACKENDS, abelian_grouping=[True, False]) def test_run_1qubit(self, backend, abelian_grouping): """Test for 1-qubit cases""" qc = QuantumCircuit(1) @@ -436,46 +254,7 @@ def test_run_1qubit(self, backend, abelian_grouping): result = est.run([(qc2, op_4)]).result() np.testing.assert_allclose(result[0].data.evs, [-1], rtol=self._rtol) - @combine(backend=BACKENDS_V1, abelian_grouping=[True, False]) - def test_run_1qubit_v1(self, backend, abelian_grouping): - """Test for 1-qubit cases""" - qc = QuantumCircuit(1) - qc2 = QuantumCircuit(1) - qc2.x(0) - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will stop supporting " - "inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - qc, qc2 = pm.run([qc, qc2]) - - op = SparsePauliOp.from_list([("I", 1)]) - op2 = SparsePauliOp.from_list([("Z", 1)]) - - with self.assertWarns(DeprecationWarning): - # When BackendEstimatorV2 is called with a backend V1, it raises a - # DeprecationWarning from PassManagerConfig.from_backend - est = BackendEstimatorV2(backend=backend, options=self._options) - - est.options.abelian_grouping = abelian_grouping - op_1 = op.apply_layout(qc.layout) - result = est.run([(qc, op_1)]).result() - np.testing.assert_allclose(result[0].data.evs, [1], rtol=self._rtol) - - op_2 = op2.apply_layout(qc.layout) - result = est.run([(qc, op_2)]).result() - np.testing.assert_allclose(result[0].data.evs, [1], rtol=self._rtol) - - op_3 = op.apply_layout(qc2.layout) - result = est.run([(qc2, op_3)]).result() - np.testing.assert_allclose(result[0].data.evs, [1], rtol=self._rtol) - - op_4 = op2.apply_layout(qc2.layout) - result = est.run([(qc2, op_4)]).result() - np.testing.assert_allclose(result[0].data.evs, [-1], rtol=self._rtol) - - @combine(backend=BACKENDS_V2, abelian_grouping=[True, False]) + @combine(backend=BACKENDS, abelian_grouping=[True, False]) def test_run_2qubits(self, backend, abelian_grouping): """Test for 2-qubit cases (to check endian)""" qc = QuantumCircuit(2) @@ -514,94 +293,7 @@ def test_run_2qubits(self, backend, abelian_grouping): result = est.run([(qc2, op_6)]).result() np.testing.assert_allclose(result[0].data.evs, [-1], rtol=self._rtol) - @combine(backend=BACKENDS_V1, abelian_grouping=[True, False]) - def test_run_2qubits_v1(self, backend, abelian_grouping): - """Test for 2-qubit cases (to check endian)""" - qc = QuantumCircuit(2) - qc2 = QuantumCircuit(2) - qc2.x(0) - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will stop supporting " - "inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - qc, qc2 = pm.run([qc, qc2]) - - op = SparsePauliOp.from_list([("II", 1)]) - op2 = SparsePauliOp.from_list([("ZI", 1)]) - op3 = SparsePauliOp.from_list([("IZ", 1)]) - - with self.assertWarns(DeprecationWarning): - # When BackendEstimatorV2 is called with a backend V1, it raises a - # DeprecationWarning from PassManagerConfig.from_backend - est = BackendEstimatorV2(backend=backend, options=self._options) - est.options.abelian_grouping = abelian_grouping - op_1 = op.apply_layout(qc.layout) - result = est.run([(qc, op_1)]).result() - np.testing.assert_allclose(result[0].data.evs, [1], rtol=self._rtol) - - op_2 = op.apply_layout(qc2.layout) - result = est.run([(qc2, op_2)]).result() - np.testing.assert_allclose(result[0].data.evs, [1], rtol=self._rtol) - - op_3 = op2.apply_layout(qc.layout) - result = est.run([(qc, op_3)]).result() - np.testing.assert_allclose(result[0].data.evs, [1], rtol=self._rtol) - - op_4 = op2.apply_layout(qc2.layout) - result = est.run([(qc2, op_4)]).result() - np.testing.assert_allclose(result[0].data.evs, [1], rtol=self._rtol) - - op_5 = op3.apply_layout(qc.layout) - result = est.run([(qc, op_5)]).result() - np.testing.assert_allclose(result[0].data.evs, [1], rtol=self._rtol) - - op_6 = op3.apply_layout(qc2.layout) - result = est.run([(qc2, op_6)]).result() - np.testing.assert_allclose(result[0].data.evs, [-1], rtol=self._rtol) - - @combine(backend=BACKENDS_V1, abelian_grouping=[True, False]) - def test_run_errors_v1(self, backend, abelian_grouping): - """Test for errors. - To be removed once BackendV1 is removed.""" - qc = QuantumCircuit(1) - qc2 = QuantumCircuit(2) - - op = SparsePauliOp.from_list([("I", 1)]) - op2 = SparsePauliOp.from_list([("II", 1)]) - with self.assertWarns(DeprecationWarning): - # When BackendEstimatorV2 is called with a backend V1, it raises a - # DeprecationWarning from PassManagerConfig.from_backend - est = BackendEstimatorV2(backend=backend, options=self._options) - est.options.abelian_grouping = abelian_grouping - with self.assertRaises(ValueError): - est.run([(qc, op2)]).result() - with self.assertRaises(ValueError): - est.run([(qc, op, [[1e4]])]).result() - with self.assertRaises(ValueError): - est.run([(qc2, op2, [[1, 2]])]).result() - with self.assertRaises(ValueError): - est.run([(qc, [op, op2], [[1]])]).result() - with self.assertRaises(ValueError): - est.run([(qc, op)], precision=-1).result() - with self.assertRaises(ValueError): - est.run([(qc, 1j * op)], precision=0.1).result() - # precision == 0 - with self.assertRaises(ValueError): - est.run([(qc, op, None, 0)]).result() - with self.assertRaises(ValueError): - est.run([(qc, op)], precision=0).result() - # precision < 0 - with self.assertRaises(ValueError): - est.run([(qc, op, None, -1)]).result() - with self.assertRaises(ValueError): - est.run([(qc, op)], precision=-1).result() - with self.subTest("missing []"): - with self.assertRaisesRegex(ValueError, "An invalid Estimator pub-like was given"): - _ = est.run((qc, op)).result() - - @combine(backend=BACKENDS_V2, abelian_grouping=[True, False]) + @combine(backend=BACKENDS, abelian_grouping=[True, False]) def test_run_errors(self, backend, abelian_grouping): """Test for errors""" qc = QuantumCircuit(1) @@ -638,7 +330,7 @@ def test_run_errors(self, backend, abelian_grouping): with self.assertRaisesRegex(ValueError, "An invalid Estimator pub-like was given"): _ = est.run((qc, op)).result() - @combine(backend=BACKENDS_V2, abelian_grouping=[True, False]) + @combine(backend=BACKENDS, abelian_grouping=[True, False]) def test_run_numpy_params(self, backend, abelian_grouping): """Test for numpy array as parameter values""" qc = RealAmplitudes(num_qubits=2, reps=2) @@ -666,46 +358,7 @@ def test_run_numpy_params(self, backend, abelian_grouping): self.assertEqual(result[0].data.evs.shape, (k,)) np.testing.assert_allclose(result[0].data.evs, target[0].data.evs, rtol=self._rtol) - @combine(backend=BACKENDS_V1, abelian_grouping=[True, False]) - def test_run_numpy_params_v1(self, backend, abelian_grouping): - """Test for numpy array as parameter values""" - qc = RealAmplitudes(num_qubits=2, reps=2) - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will stop supporting " - "inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - qc = pm.run(qc) - op = SparsePauliOp.from_list([("IZ", 1), ("XI", 2), ("ZY", -1)]) - op = op.apply_layout(qc.layout) - k = 5 - params_array = self._rng.random((k, qc.num_parameters)) - params_list = params_array.tolist() - params_list_array = list(params_array) - statevector_estimator = StatevectorEstimator(seed=123) - target = statevector_estimator.run([(qc, op, params_list)]).result() - - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex=r"The method PassManagerConfig\.from_backend will stop supporting inputs of " - "type `BackendV1`", - ): - # BackendEstimatorV2 wont allow BackendV1 - backend_estimator = BackendEstimatorV2(backend=backend, options=self._options) - backend_estimator.options.abelian_grouping = abelian_grouping - - with self.subTest("ndarrary"): - result = backend_estimator.run([(qc, op, params_array)]).result() - self.assertEqual(result[0].data.evs.shape, (k,)) - np.testing.assert_allclose(result[0].data.evs, target[0].data.evs, rtol=self._rtol) - - with self.subTest("list of ndarray"): - result = backend_estimator.run([(qc, op, params_list_array)]).result() - self.assertEqual(result[0].data.evs.shape, (k,)) - np.testing.assert_allclose(result[0].data.evs, target[0].data.evs, rtol=self._rtol) - - @combine(backend=BACKENDS_V2, abelian_grouping=[True, False]) + @combine(backend=BACKENDS, abelian_grouping=[True, False]) def test_precision(self, backend, abelian_grouping): """Test for precision""" estimator = BackendEstimatorV2(backend=backend, options=self._options) @@ -727,37 +380,7 @@ def test_precision(self, backend, abelian_grouping): result = job.result() np.testing.assert_allclose(result[0].data.evs, [1.5555572817900956], rtol=self._rtol) - @combine(backend=BACKENDS_V1, abelian_grouping=[True, False]) - def test_precision_v1(self, backend, abelian_grouping): - """Test for precision""" - with self.assertWarns(DeprecationWarning): - # When BackendEstimatorV2 is called with a backend V1, it raises a - # DeprecationWarning from PassManagerConfig.from_backend - estimator = BackendEstimatorV2(backend=backend, options=self._options) - estimator.options.abelian_grouping = abelian_grouping - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will stop supporting " - "inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - psi1 = pm.run(self.psi[0]) - hamiltonian1 = self.hamiltonian[0].apply_layout(psi1.layout) - theta1 = self.theta[0] - job = estimator.run([(psi1, hamiltonian1, [theta1])]) - result = job.result() - np.testing.assert_allclose(result[0].data.evs, [1.901141473854881], rtol=self._rtol) - # The result of the second run is the same - job = estimator.run([(psi1, hamiltonian1, [theta1]), (psi1, hamiltonian1, [theta1])]) - result = job.result() - np.testing.assert_allclose(result[0].data.evs, [1.901141473854881], rtol=self._rtol) - np.testing.assert_allclose(result[1].data.evs, [1.901141473854881], rtol=self._rtol) - # apply smaller precision value - job = estimator.run([(psi1, hamiltonian1, [theta1])], precision=self._precision * 0.5) - result = job.result() - np.testing.assert_allclose(result[0].data.evs, [1.5555572817900956], rtol=self._rtol) - - @combine(backend=BACKENDS_V2, abelian_grouping=[True, False]) + @combine(backend=BACKENDS, abelian_grouping=[True, False]) def test_diff_precision(self, backend, abelian_grouping): """Test for running different precisions at once""" estimator = BackendEstimatorV2(backend=backend, options=self._options) @@ -773,30 +396,6 @@ def test_diff_precision(self, backend, abelian_grouping): np.testing.assert_allclose(result[0].data.evs, [1.901141473854881], rtol=self._rtol) np.testing.assert_allclose(result[1].data.evs, [1.901141473854881], rtol=self._rtol) - @combine(backend=BACKENDS_V1, abelian_grouping=[True, False]) - def test_diff_precision_v1(self, backend, abelian_grouping): - """Test for running different precisions at once""" - with self.assertWarns(DeprecationWarning): - # When BackendEstimatorV2 is called with a backend V1, it raises a - # DeprecationWarning from PassManagerConfig.from_backend - estimator = BackendEstimatorV2(backend=backend, options=self._options) - estimator.options.abelian_grouping = abelian_grouping - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will stop supporting " - "inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - psi1 = pm.run(self.psi[0]) - hamiltonian1 = self.hamiltonian[0].apply_layout(psi1.layout) - theta1 = self.theta[0] - job = estimator.run( - [(psi1, hamiltonian1, [theta1]), (psi1, hamiltonian1, [theta1], self._precision * 0.8)] - ) - result = job.result() - np.testing.assert_allclose(result[0].data.evs, [1.901141473854881], rtol=self._rtol) - np.testing.assert_allclose(result[1].data.evs, [1.901141473854881], rtol=self._rtol) - @unittest.skipUnless(optionals.HAS_AER, "qiskit-aer is required to run this test") @combine(abelian_grouping=[True, False]) def test_aer(self, abelian_grouping): @@ -854,26 +453,6 @@ def max_circuits(self): estimator.run([(qc, op, param_list)] * k).result() self.assertEqual(run_mock.call_count, 10) - def test_job_size_limit_backend_v1(self): - """Test BackendEstimatorV2 respects job size limit from BackendV1""" - with self.assertWarns(DeprecationWarning): - backend = Fake7QPulseV1() - config = backend.configuration() - config.max_experiments = 1 - backend._configuration = config - qc = RealAmplitudes(num_qubits=2, reps=2) - # Note: two qubit-wise commuting groups - op = SparsePauliOp.from_list([("IZ", 1), ("XI", 2), ("ZY", -1)]) - k = 5 - param_list = self._rng.random(qc.num_parameters).tolist() - with self.assertWarns(DeprecationWarning): - # When BackendEstimatorV2 is called with a backend V1, it raises a - # DeprecationWarning from PassManagerConfig.from_backend - estimator = BackendEstimatorV2(backend=backend) - with patch.object(backend, "run") as run_mock: - estimator.run([(qc, op, param_list)] * k).result() - self.assertEqual(run_mock.call_count, 10) - def test_iter_pub(self): """test for an iterable of pubs""" backend = BasicSimulator() diff --git a/test/python/primitives/test_backend_sampler.py b/test/python/primitives/test_backend_sampler.py index dc77a3c47ce6..7d05819af8a9 100644 --- a/test/python/primitives/test_backend_sampler.py +++ b/test/python/primitives/test_backend_sampler.py @@ -22,23 +22,24 @@ from qiskit.circuit.library import RealAmplitudes from qiskit.primitives import BackendSampler, SamplerResult from qiskit.providers import JobStatus -from qiskit.providers.backend_compat import BackendV2Converter from qiskit.providers.basic_provider import BasicSimulator -from qiskit.providers.fake_provider import Fake7QPulseV1, GenericBackendV2 +from qiskit.providers.fake_provider import GenericBackendV2 from qiskit.transpiler import PassManager from qiskit.utils import optionals from test import QiskitTestCase # pylint: disable=wrong-import-order from test import combine # pylint: disable=wrong-import-order from test.python.transpiler._dummy_passes import DummyAP # pylint: disable=wrong-import-order +from ..legacy_cmaps import LAGOS_CMAP -BACKENDS = [Fake7QPulseV1(), BackendV2Converter(Fake7QPulseV1())] - -BACKENDS_V1 = [Fake7QPulseV1()] -BACKENDS_V2 = [ - BackendV2Converter(Fake7QPulseV1()), +BACKENDS = [ + GenericBackendV2( + num_qubits=7, + basis_gates=["id", "rz", "sx", "x", "cx", "reset"], + coupling_map=LAGOS_CMAP, + seed=42, + ) ] -BACKENDS = BACKENDS_V1 + BACKENDS_V2 class CallbackPass(DummyAP): @@ -242,36 +243,7 @@ def test_run_errors(self, backend): with self.assertRaises(ValueError): sampler.run([qc2], [[1e2]]).result() - @combine(backend=BACKENDS_V1) - def test_run_empty_parameter_v1(self, backend): - """Test for empty parameter""" - n = 5 - qc = QuantumCircuit(n, n - 1) - qc.measure(range(n - 1), range(n - 1)) - with self.assertWarns(DeprecationWarning): - sampler = BackendSampler(backend=backend) - with self.subTest("one circuit"): - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - result = sampler.run([qc], shots=1000).result() - self.assertEqual(len(result.quasi_dists), 1) - for q_d in result.quasi_dists: - quasi_dist = {k: v for k, v in q_d.items() if v != 0.0} - self.assertDictAlmostEqual(quasi_dist, {0: 1.0}, delta=0.1) - self.assertEqual(len(result.metadata), 1) - - with self.subTest("two circuits"): - result = sampler.run([qc, qc], shots=1000).result() - self.assertEqual(len(result.quasi_dists), 2) - for q_d in result.quasi_dists: - quasi_dist = {k: v for k, v in q_d.items() if v != 0.0} - self.assertDictAlmostEqual(quasi_dist, {0: 1.0}, delta=0.1) - self.assertEqual(len(result.metadata), 2) - - @combine(backend=BACKENDS_V2) + @combine(backend=BACKENDS) def test_run_empty_parameter_v2(self, backend): """Test for empty parameter""" n = 5 diff --git a/test/python/primitives/test_backend_sampler_v2.py b/test/python/primitives/test_backend_sampler_v2.py index 77830d5c9224..738117f5efc9 100644 --- a/test/python/primitives/test_backend_sampler_v2.py +++ b/test/python/primitives/test_backend_sampler_v2.py @@ -30,18 +30,15 @@ from qiskit.primitives.containers.data_bin import DataBin from qiskit.primitives.containers.sampler_pub import SamplerPub from qiskit.providers import JobStatus -from qiskit.providers.backend_compat import BackendV2Converter from qiskit.providers.basic_provider import BasicProviderJob, BasicSimulator -from qiskit.providers.fake_provider import Fake7QPulseV1, GenericBackendV2 +from qiskit.providers.fake_provider import GenericBackendV2 from qiskit.result import Result from qiskit.qobj.utils import MeasReturnType, MeasLevel from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager from ..legacy_cmaps import LAGOS_CMAP -BACKENDS_V1 = [Fake7QPulseV1()] -BACKENDS_V2 = [ +BACKENDS = [ BasicSimulator(), - BackendV2Converter(Fake7QPulseV1()), GenericBackendV2( num_qubits=7, basis_gates=["id", "rz", "sx", "x", "cx", "reset"], @@ -49,7 +46,6 @@ seed=42, ), ] -BACKENDS = BACKENDS_V1 + BACKENDS_V2 class Level1BackendV2(GenericBackendV2): @@ -157,63 +153,7 @@ def _assert_allclose(self, bitarray: BitArray, target: NDArray | BitArray, rtol= tgt = np.array([target_counts.get(i, 0) for i in range(max_key + 1)]) np.testing.assert_allclose(ary, tgt, rtol=rtol, atol=atol, err_msg=f"index: {idx}") - @combine(backend=BACKENDS_V1) - def test_sampler_run_v1(self, backend): - """Test run().""" - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will " - "stop supporting inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - - with self.subTest("single"): - bell, _, target = self._cases[1] - bell = pm.run(bell) - sampler = BackendSamplerV2(backend=backend, options=self._options) - job = sampler.run([bell], shots=self._shots) - result = job.result() - self.assertIsInstance(result, PrimitiveResult) - self.assertIsInstance(result.metadata, dict) - self.assertEqual(len(result), 1) - self.assertIsInstance(result[0], PubResult) - self.assertIsInstance(result[0].data, DataBin) - self.assertIsInstance(result[0].data.meas, BitArray) - self._assert_allclose(result[0].data.meas, np.array(target)) - - with self.subTest("single with param"): - pqc, param_vals, target = self._cases[2] - sampler = BackendSamplerV2(backend=backend, options=self._options) - pqc = pm.run(pqc) - params = (param.name for param in pqc.parameters) - job = sampler.run([(pqc, {params: param_vals})], shots=self._shots) - result = job.result() - self.assertIsInstance(result, PrimitiveResult) - self.assertIsInstance(result.metadata, dict) - self.assertEqual(len(result), 1) - self.assertIsInstance(result[0], PubResult) - self.assertIsInstance(result[0].data, DataBin) - self.assertIsInstance(result[0].data.meas, BitArray) - self._assert_allclose(result[0].data.meas, np.array(target)) - - with self.subTest("multiple"): - pqc, param_vals, target = self._cases[2] - sampler = BackendSamplerV2(backend=backend, options=self._options) - pqc = pm.run(pqc) - params = (param.name for param in pqc.parameters) - job = sampler.run( - [(pqc, {params: [param_vals, param_vals, param_vals]})], shots=self._shots - ) - result = job.result() - self.assertIsInstance(result, PrimitiveResult) - self.assertIsInstance(result.metadata, dict) - self.assertEqual(len(result), 1) - self.assertIsInstance(result[0], PubResult) - self.assertIsInstance(result[0].data, DataBin) - self.assertIsInstance(result[0].data.meas, BitArray) - self._assert_allclose(result[0].data.meas, np.array([target, target, target])) - - @combine(backend=BACKENDS_V2) + @combine(backend=BACKENDS) def test_sampler_run(self, backend): """Test run().""" pm = generate_preset_pass_manager(optimization_level=0, backend=backend) @@ -264,25 +204,7 @@ def test_sampler_run(self, backend): self.assertIsInstance(result[0].data.meas, BitArray) self._assert_allclose(result[0].data.meas, np.array([target, target, target])) - @combine(backend=BACKENDS_V1) - def test_sampler_run_multiple_times_v1(self, backend): - """Test run() returns the same results if the same input is given.""" - bell, _, _ = self._cases[1] - sampler = BackendSamplerV2(backend=backend, options=self._options) - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will " - "stop supporting inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - bell = pm.run(bell) - result1 = sampler.run([bell], shots=self._shots).result() - meas1 = result1[0].data.meas - result2 = sampler.run([bell], shots=self._shots).result() - meas2 = result2[0].data.meas - self._assert_allclose(meas1, meas2, rtol=0) - - @combine(backend=BACKENDS_V2) + @combine(backend=BACKENDS) def test_sampler_run_multiple_times(self, backend): """Test run() returns the same results if the same input is given.""" bell, _, _ = self._cases[1] @@ -295,25 +217,7 @@ def test_sampler_run_multiple_times(self, backend): meas2 = result2[0].data.meas self._assert_allclose(meas1, meas2, rtol=0) - @combine(backend=BACKENDS_V1) - def test_sample_run_multiple_circuits_v1(self, backend): - """Test run() with multiple circuits.""" - bell, _, target = self._cases[1] - sampler = BackendSamplerV2(backend=backend, options=self._options) - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will " - "stop supporting inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - bell = pm.run(bell) - result = sampler.run([bell, bell, bell], shots=self._shots).result() - self.assertEqual(len(result), 3) - self._assert_allclose(result[0].data.meas, np.array(target)) - self._assert_allclose(result[1].data.meas, np.array(target)) - self._assert_allclose(result[2].data.meas, np.array(target)) - - @combine(backend=BACKENDS_V2) + @combine(backend=BACKENDS) def test_sample_run_multiple_circuits(self, backend): """Test run() with multiple circuits.""" bell, _, target = self._cases[1] @@ -326,26 +230,7 @@ def test_sample_run_multiple_circuits(self, backend): self._assert_allclose(result[1].data.meas, np.array(target)) self._assert_allclose(result[2].data.meas, np.array(target)) - @combine(backend=BACKENDS_V1) - def test_sampler_run_with_parameterized_circuits_v1(self, backend): - """Test run() with parameterized circuits.""" - pqc1, param1, target1 = self._cases[4] - pqc2, param2, target2 = self._cases[5] - pqc3, param3, target3 = self._cases[6] - with self.assertWarns(DeprecationWarning): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - pqc1, pqc2, pqc3 = pm.run([pqc1, pqc2, pqc3]) - - sampler = BackendSamplerV2(backend=backend, options=self._options) - result = sampler.run( - [(pqc1, param1), (pqc2, param2), (pqc3, param3)], shots=self._shots - ).result() - self.assertEqual(len(result), 3) - self._assert_allclose(result[0].data.meas, np.array(target1)) - self._assert_allclose(result[1].data.meas, np.array(target2)) - self._assert_allclose(result[2].data.meas, np.array(target3)) - - @combine(backend=BACKENDS_V2) + @combine(backend=BACKENDS) def test_run_1qubit(self, backend): """test for 1-qubit cases""" qc = QuantumCircuit(1) @@ -362,29 +247,7 @@ def test_run_1qubit(self, backend): for i in range(2): self._assert_allclose(result[i].data.meas, np.array({i: self._shots})) - @combine(backend=BACKENDS_V1) - def test_run_1qubit_v1(self, backend): - """test for 1-qubit cases""" - qc = QuantumCircuit(1) - qc.measure_all() - qc2 = QuantumCircuit(1) - qc2.x(0) - qc2.measure_all() - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will " - "stop supporting inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - qc, qc2 = pm.run([qc, qc2]) - - sampler = BackendSamplerV2(backend=backend, options=self._options) - result = sampler.run([qc, qc2], shots=self._shots).result() - self.assertEqual(len(result), 2) - for i in range(2): - self._assert_allclose(result[i].data.meas, np.array({i: self._shots})) - - @combine(backend=BACKENDS_V2) + @combine(backend=BACKENDS) def test_run_2qubit(self, backend): """test for 2-qubit cases""" qc0 = QuantumCircuit(2) @@ -407,35 +270,7 @@ def test_run_2qubit(self, backend): for i in range(4): self._assert_allclose(result[i].data.meas, np.array({i: self._shots})) - @combine(backend=BACKENDS_V1) - def test_run_2qubit_v1(self, backend): - """test for 2-qubit cases""" - qc0 = QuantumCircuit(2) - qc0.measure_all() - qc1 = QuantumCircuit(2) - qc1.x(0) - qc1.measure_all() - qc2 = QuantumCircuit(2) - qc2.x(1) - qc2.measure_all() - qc3 = QuantumCircuit(2) - qc3.x([0, 1]) - qc3.measure_all() - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will " - "stop supporting inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - qc0, qc1, qc2, qc3 = pm.run([qc0, qc1, qc2, qc3]) - - sampler = BackendSamplerV2(backend=backend, options=self._options) - result = sampler.run([qc0, qc1, qc2, qc3], shots=self._shots).result() - self.assertEqual(len(result), 4) - for i in range(4): - self._assert_allclose(result[i].data.meas, np.array({i: self._shots})) - - @combine(backend=BACKENDS_V2) + @combine(backend=BACKENDS) def test_run_single_circuit(self, backend): """Test for single circuit case.""" sampler = BackendSamplerV2(backend=backend, options=self._options) @@ -493,70 +328,7 @@ def test_run_single_circuit(self, backend): self.assertEqual(len(result), 1) self._assert_allclose(result[0].data.meas, target) - @combine(backend=BACKENDS_V1) - def test_run_single_circuit_v1(self, backend): - """Test for single circuit case.""" - sampler = BackendSamplerV2(backend=backend, options=self._options) - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will " - "stop supporting inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - - with self.subTest("No parameter"): - circuit, _, target = self._cases[1] - circuit = pm.run(circuit) - param_target = [ - (None, np.array(target)), - ({}, np.array(target)), - ] - for param, target in param_target: - with self.subTest(f"{circuit.name} w/ {param}"): - result = sampler.run([(circuit, param)], shots=self._shots).result() - self.assertEqual(len(result), 1) - self._assert_allclose(result[0].data.meas, target) - - with self.subTest("One parameter"): - circuit = QuantumCircuit(1, 1, name="X gate") - param = Parameter("x") - circuit.ry(param, 0) - circuit.measure(0, 0) - circuit = pm.run(circuit) - param_target = [ - ({"x": np.pi}, np.array({1: self._shots})), - ({param: np.pi}, np.array({1: self._shots})), - ({"x": np.array(np.pi)}, np.array({1: self._shots})), - ({param: np.array(np.pi)}, np.array({1: self._shots})), - ({"x": [np.pi]}, np.array({1: self._shots})), - ({param: [np.pi]}, np.array({1: self._shots})), - ({"x": np.array([np.pi])}, np.array({1: self._shots})), - ({param: np.array([np.pi])}, np.array({1: self._shots})), - ] - for param, target in param_target: - with self.subTest(f"{circuit.name} w/ {param}"): - result = sampler.run([(circuit, param)], shots=self._shots).result() - self.assertEqual(len(result), 1) - self._assert_allclose(result[0].data.c, target) - - with self.subTest("More than one parameter"): - circuit, param, target = self._cases[3] - circuit = pm.run(circuit) - param_target = [ - (param, np.array(target)), - (tuple(param), np.array(target)), - (np.array(param), np.array(target)), - ((param,), np.array([target])), - ([param], np.array([target])), - (np.array([param]), np.array([target])), - ] - for param, target in param_target: - with self.subTest(f"{circuit.name} w/ {param}"): - result = sampler.run([(circuit, param)], shots=self._shots).result() - self.assertEqual(len(result), 1) - self._assert_allclose(result[0].data.meas, target) - - @combine(backend=BACKENDS_V2) + @combine(backend=BACKENDS) def test_run_reverse_meas_order(self, backend): """test for sampler with reverse measurement order""" x = Parameter("x") @@ -583,39 +355,7 @@ def test_run_reverse_meas_order(self, backend): # qc({x: pi/2, y: 0}) self._assert_allclose(result[1].data.c, np.array({1: self._shots / 2, 5: self._shots / 2})) - @combine(backend=BACKENDS_V1) - def test_run_reverse_meas_order_v1(self, backend): - """test for sampler with reverse measurement order""" - x = Parameter("x") - y = Parameter("y") - - qc = QuantumCircuit(3, 3) - qc.rx(x, 0) - qc.rx(y, 1) - qc.x(2) - qc.measure(0, 2) - qc.measure(1, 1) - qc.measure(2, 0) - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will " - "stop supporting inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - qc = pm.run(qc) - - sampler = BackendSamplerV2(backend=backend) - sampler.options.seed_simulator = self._seed - result = sampler.run([(qc, [0, 0]), (qc, [np.pi / 2, 0])], shots=self._shots).result() - self.assertEqual(len(result), 2) - - # qc({x: 0, y: 0}) - self._assert_allclose(result[0].data.c, np.array({1: self._shots})) - - # qc({x: pi/2, y: 0}) - self._assert_allclose(result[1].data.c, np.array({1: self._shots / 2, 5: self._shots / 2})) - - @combine(backend=BACKENDS_V2) + @combine(backend=BACKENDS) def test_run_errors(self, backend): """Test for errors with run method""" qc1 = QuantumCircuit(1) @@ -667,64 +407,7 @@ def test_run_errors(self, backend): with self.assertRaisesRegex(ValueError, "Note that if you want to run a single pub,"): _ = sampler.run((qc2, [0, 1])).result() - @combine(backend=BACKENDS_V1) - def test_run_errors_v1(self, backend): - """Test for errors with run method""" - qc1 = QuantumCircuit(1) - qc1.measure_all() - qc2 = RealAmplitudes(num_qubits=1, reps=1) - qc2.measure_all() - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will " - "stop supporting inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - qc1, qc2 = pm.run([qc1, qc2]) - - sampler = BackendSamplerV2(backend=backend) - with self.subTest("set parameter values to a non-parameterized circuit"): - with self.assertRaises(ValueError): - _ = sampler.run([(qc1, [1e2])]).result() - with self.subTest("missing all parameter values for a parameterized circuit"): - with self.assertRaises(ValueError): - _ = sampler.run([qc2]).result() - with self.assertRaises(ValueError): - _ = sampler.run([(qc2, [])]).result() - with self.assertRaises(ValueError): - _ = sampler.run([(qc2, None)]).result() - with self.subTest("missing some parameter values for a parameterized circuit"): - with self.assertRaises(ValueError): - _ = sampler.run([(qc2, [1e2])]).result() - with self.subTest("too many parameter values for a parameterized circuit"): - with self.assertRaises(ValueError): - _ = sampler.run([(qc2, [1e2] * 100)]).result() - with self.subTest("negative shots, run arg"): - with self.assertRaises(ValueError): - _ = sampler.run([qc1], shots=-1).result() - with self.subTest("negative shots, pub-like"): - with self.assertRaises(ValueError): - _ = sampler.run([(qc1, None, -1)]).result() - with self.subTest("negative shots, pub"): - with self.assertRaises(ValueError): - _ = sampler.run([SamplerPub(qc1, shots=-1)]).result() - with self.subTest("zero shots, run arg"): - with self.assertRaises(ValueError): - _ = sampler.run([qc1], shots=0).result() - with self.subTest("zero shots, pub-like"): - with self.assertRaises(ValueError): - _ = sampler.run([(qc1, None, 0)]).result() - with self.subTest("zero shots, pub"): - with self.assertRaises(ValueError): - _ = sampler.run([SamplerPub(qc1, shots=0)]).result() - with self.subTest("missing []"): - with self.assertRaisesRegex(ValueError, "An invalid Sampler pub-like was given"): - _ = sampler.run(qc1).result() - with self.subTest("missing [] for pqc"): - with self.assertRaisesRegex(ValueError, "Note that if you want to run a single pub,"): - _ = sampler.run((qc2, [0, 1])).result() - - @combine(backend=BACKENDS_V2) + @combine(backend=BACKENDS) def test_run_empty_parameter(self, backend): """Test for empty parameter""" n = 5 @@ -733,83 +416,23 @@ def test_run_empty_parameter(self, backend): pm = generate_preset_pass_manager(optimization_level=0, backend=backend) qc = pm.run(qc) sampler = BackendSamplerV2(backend=backend, options=self._options) - with self.subTest("one circuit"): - result = sampler.run([qc], shots=self._shots).result() - self.assertEqual(len(result), 1) - self._assert_allclose(result[0].data.c, np.array({0: self._shots})) - - with self.subTest("two circuits"): - result = sampler.run([qc, qc], shots=self._shots).result() - self.assertEqual(len(result), 2) - for i in range(2): - self._assert_allclose(result[i].data.c, np.array({0: self._shots})) - - @combine(backend=BACKENDS_V1) - def test_run_empty_parameter_v1(self, backend): - """Test for empty parameter""" - n = 5 - qc = QuantumCircuit(n, n - 1) - qc.measure(range(n - 1), range(n - 1)) - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will " - "stop supporting inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - qc = pm.run(qc) - sampler = BackendSamplerV2(backend=backend, options=self._options) - with self.subTest("one circuit"): - result = sampler.run([qc], shots=self._shots).result() - self.assertEqual(len(result), 1) - self._assert_allclose(result[0].data.c, np.array({0: self._shots})) - - with self.subTest("two circuits"): - result = sampler.run([qc, qc], shots=self._shots).result() - self.assertEqual(len(result), 2) - for i in range(2): - self._assert_allclose(result[i].data.c, np.array({0: self._shots})) - - @combine(backend=BACKENDS_V2) - def test_run_numpy_params(self, backend): - """Test for numpy array as parameter values""" - qc = RealAmplitudes(num_qubits=2, reps=2) - qc.measure_all() - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - qc = pm.run(qc) - k = 5 - params_array = np.linspace(0, 1, k * qc.num_parameters).reshape((k, qc.num_parameters)) - params_list = params_array.tolist() - sampler = StatevectorSampler(seed=self._seed) - target = sampler.run([(qc, params_list)], shots=self._shots).result() - - with self.subTest("ndarray"): - sampler = BackendSamplerV2(backend=backend, options=self._options) - result = sampler.run([(qc, params_array)], shots=self._shots).result() - self.assertEqual(len(result), 1) - self._assert_allclose(result[0].data.meas, target[0].data.meas) - - with self.subTest("split a list"): - sampler = BackendSamplerV2(backend=backend, options=self._options) - result = sampler.run( - [(qc, params) for params in params_list], shots=self._shots - ).result() - self.assertEqual(len(result), k) - for i in range(k): - self._assert_allclose( - result[i].data.meas, np.array(target[0].data.meas.get_int_counts(i)) - ) + with self.subTest("one circuit"): + result = sampler.run([qc], shots=self._shots).result() + self.assertEqual(len(result), 1) + self._assert_allclose(result[0].data.c, np.array({0: self._shots})) + + with self.subTest("two circuits"): + result = sampler.run([qc, qc], shots=self._shots).result() + self.assertEqual(len(result), 2) + for i in range(2): + self._assert_allclose(result[i].data.c, np.array({0: self._shots})) - @combine(backend=BACKENDS_V1) - def test_run_numpy_params_v1(self, backend): + @combine(backend=BACKENDS) + def test_run_numpy_params(self, backend): """Test for numpy array as parameter values""" qc = RealAmplitudes(num_qubits=2, reps=2) qc.measure_all() - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will " - "stop supporting inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) + pm = generate_preset_pass_manager(optimization_level=0, backend=backend) qc = pm.run(qc) k = 5 params_array = np.linspace(0, 1, k * qc.num_parameters).reshape((k, qc.num_parameters)) @@ -834,7 +457,7 @@ def test_run_numpy_params_v1(self, backend): result[i].data.meas, np.array(target[0].data.meas.get_int_counts(i)) ) - @combine(backend=BACKENDS_V2) + @combine(backend=BACKENDS) def test_run_with_shots_option(self, backend): """test with shots option.""" bell, _, _ = self._cases[1] @@ -898,76 +521,7 @@ def test_run_with_shots_option(self, backend): self.assertEqual(result[1].data.meas.num_shots, shots2) self.assertEqual(sum(result[1].data.meas.get_counts().values()), shots2) - @combine(backend=BACKENDS_V1) - def test_run_with_shots_option_v1(self, backend): - """test with shots option.""" - bell, _, _ = self._cases[1] - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will " - "stop supporting inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - bell = pm.run(bell) - shots = 100 - - with self.subTest("run arg"): - sampler = BackendSamplerV2(backend=backend, options=self._options) - result = sampler.run([bell], shots=shots).result() - self.assertEqual(len(result), 1) - self.assertEqual(result[0].data.meas.num_shots, shots) - self.assertEqual(sum(result[0].data.meas.get_counts().values()), shots) - - with self.subTest("default shots"): - sampler = BackendSamplerV2(backend=backend, options=self._options) - default_shots = sampler.options.default_shots - result = sampler.run([bell]).result() - self.assertEqual(len(result), 1) - self.assertEqual(result[0].data.meas.num_shots, default_shots) - self.assertEqual(sum(result[0].data.meas.get_counts().values()), default_shots) - - with self.subTest("setting default shots"): - default_shots = 100 - sampler = BackendSamplerV2(backend=backend, options=self._options) - sampler.options.default_shots = default_shots - self.assertEqual(sampler.options.default_shots, default_shots) - result = sampler.run([bell]).result() - self.assertEqual(len(result), 1) - self.assertEqual(result[0].data.meas.num_shots, default_shots) - self.assertEqual(sum(result[0].data.meas.get_counts().values()), default_shots) - - with self.subTest("pub-like"): - sampler = BackendSamplerV2(backend=backend, options=self._options) - result = sampler.run([(bell, None, shots)]).result() - self.assertEqual(len(result), 1) - self.assertEqual(result[0].data.meas.num_shots, shots) - self.assertEqual(sum(result[0].data.meas.get_counts().values()), shots) - - with self.subTest("pub"): - sampler = BackendSamplerV2(backend=backend, options=self._options) - result = sampler.run([SamplerPub(bell, shots=shots)]).result() - self.assertEqual(len(result), 1) - self.assertEqual(result[0].data.meas.num_shots, shots) - self.assertEqual(sum(result[0].data.meas.get_counts().values()), shots) - - with self.subTest("multiple pubs"): - sampler = BackendSamplerV2(backend=backend, options=self._options) - shots1 = 100 - shots2 = 200 - result = sampler.run( - [ - SamplerPub(bell, shots=shots1), - SamplerPub(bell, shots=shots2), - ], - shots=self._shots, - ).result() - self.assertEqual(len(result), 2) - self.assertEqual(result[0].data.meas.num_shots, shots1) - self.assertEqual(sum(result[0].data.meas.get_counts().values()), shots1) - self.assertEqual(result[1].data.meas.num_shots, shots2) - self.assertEqual(sum(result[1].data.meas.get_counts().values()), shots2) - - @combine(backend=BACKENDS_V2) + @combine(backend=BACKENDS) def test_run_shots_result_size(self, backend): """test with shots option to validate the result size""" n = 7 # should be less than or equal to the number of qubits of backend @@ -982,26 +536,6 @@ def test_run_shots_result_size(self, backend): self.assertLessEqual(result[0].data.meas.num_shots, self._shots) self.assertEqual(sum(result[0].data.meas.get_counts().values()), self._shots) - @combine(backend=BACKENDS_V1) - def test_run_shots_result_size_v1(self, backend): - """test with shots option to validate the result size""" - n = 7 # should be less than or equal to the number of qubits of backend - qc = QuantumCircuit(n) - qc.h(range(n)) - qc.measure_all() - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will " - "stop supporting inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - qc = pm.run(qc) - sampler = BackendSamplerV2(backend=backend, options=self._options) - result = sampler.run([qc], shots=self._shots).result() - self.assertEqual(len(result), 1) - self.assertLessEqual(result[0].data.meas.num_shots, self._shots) - self.assertEqual(sum(result[0].data.meas.get_counts().values()), self._shots) - def test_run_level1(self): """Test running with meas_level=1""" nq = 2 @@ -1051,7 +585,7 @@ def test_run_level1(self): backend.level1_sigma / np.sqrt(shots) * 6, ) - @combine(backend=BACKENDS_V2) + @combine(backend=BACKENDS) def test_primitive_job_status_done(self, backend): """test primitive job's status""" bell, _, _ = self._cases[1] @@ -1062,23 +596,7 @@ def test_primitive_job_status_done(self, backend): _ = job.result() self.assertEqual(job.status(), JobStatus.DONE) - @combine(backend=BACKENDS_V1) - def test_primitive_job_status_done_v1(self, backend): - """test primitive job's status""" - bell, _, _ = self._cases[1] - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will " - "stop supporting inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - bell = pm.run(bell) - sampler = BackendSamplerV2(backend=backend, options=self._options) - job = sampler.run([bell], shots=self._shots) - _ = job.result() - self.assertEqual(job.status(), JobStatus.DONE) - - @combine(backend=BACKENDS_V2) + @combine(backend=BACKENDS) def test_circuit_with_unitary(self, backend): """Test for circuit with unitary gate.""" pm = generate_preset_pass_manager(optimization_level=0, backend=backend) @@ -1109,43 +627,7 @@ def test_circuit_with_unitary(self, backend): self.assertEqual(len(result), 1) self._assert_allclose(result[0].data.meas, np.array({1: self._shots})) - @combine(backend=BACKENDS_V1) - def test_circuit_with_unitary_v1(self, backend): - """Test for circuit with unitary gate.""" - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will " - "stop supporting inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - - with self.subTest("identity"): - gate = UnitaryGate(np.eye(2)) - - circuit = QuantumCircuit(1) - circuit.append(gate, [0]) - circuit.measure_all() - circuit = pm.run(circuit) - - sampler = BackendSamplerV2(backend=backend, options=self._options) - result = sampler.run([circuit], shots=self._shots).result() - self.assertEqual(len(result), 1) - self._assert_allclose(result[0].data.meas, np.array({0: self._shots})) - - with self.subTest("X"): - gate = UnitaryGate([[0, 1], [1, 0]]) - - circuit = QuantumCircuit(1) - circuit.append(gate, [0]) - circuit.measure_all() - circuit = pm.run(circuit) - - sampler = BackendSamplerV2(backend=backend, options=self._options) - result = sampler.run([circuit], shots=self._shots).result() - self.assertEqual(len(result), 1) - self._assert_allclose(result[0].data.meas, np.array({1: self._shots})) - - @combine(backend=BACKENDS_V2) + @combine(backend=BACKENDS) def test_circuit_with_multiple_cregs(self, backend): """Test for circuit with multiple classical registers.""" pm = generate_preset_pass_manager(optimization_level=0, backend=backend) @@ -1225,92 +707,7 @@ def test_circuit_with_multiple_cregs(self, backend): self.assertTrue(hasattr(data, creg.name)) self._assert_allclose(getattr(data, creg.name), np.array(target[creg.name])) - @combine(backend=BACKENDS_V1) - def test_circuit_with_multiple_cregs_v1(self, backend): - """Test for circuit with multiple classical registers.""" - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will " - "stop supporting inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - cases = [] - - # case 1 - a = ClassicalRegister(1, "a") - b = ClassicalRegister(2, "b") - c = ClassicalRegister(3, "c") - - qc = QuantumCircuit(QuantumRegister(3), a, b, c) - qc.h(range(3)) - qc.measure([0, 1, 2, 2], [0, 2, 4, 5]) - qc = pm.run(qc) - target = {"a": {0: 5000, 1: 5000}, "b": {0: 5000, 2: 5000}, "c": {0: 5000, 6: 5000}} - cases.append(("use all cregs", qc, target)) - - # case 2 - a = ClassicalRegister(1, "a") - b = ClassicalRegister(5, "b") - c = ClassicalRegister(3, "c") - - qc = QuantumCircuit(QuantumRegister(3), a, b, c) - qc.h(range(3)) - qc.measure([0, 1, 2, 2], [0, 2, 4, 5]) - qc = pm.run(qc) - target = { - "a": {0: 5000, 1: 5000}, - "b": {0: 2500, 2: 2500, 24: 2500, 26: 2500}, - "c": {0: 10000}, - } - cases.append(("use only a and b", qc, target)) - - # case 3 - a = ClassicalRegister(1, "a") - b = ClassicalRegister(2, "b") - c = ClassicalRegister(3, "c") - - qc = QuantumCircuit(QuantumRegister(3), a, b, c) - qc.h(range(3)) - qc.measure(1, 5) - qc = pm.run(qc) - target = {"a": {0: 10000}, "b": {0: 10000}, "c": {0: 5000, 4: 5000}} - cases.append(("use only c", qc, target)) - - # case 4 - a = ClassicalRegister(1, "a") - b = ClassicalRegister(2, "b") - c = ClassicalRegister(3, "c") - - qc = QuantumCircuit(QuantumRegister(3), a, b, c) - qc.h(range(3)) - qc.measure([0, 1, 2], [5, 5, 5]) - qc = pm.run(qc) - target = {"a": {0: 10000}, "b": {0: 10000}, "c": {0: 5000, 4: 5000}} - cases.append(("use only c multiple qubits", qc, target)) - - # case 5 - a = ClassicalRegister(1, "a") - b = ClassicalRegister(2, "b") - c = ClassicalRegister(3, "c") - - qc = QuantumCircuit(QuantumRegister(3), a, b, c) - qc.h(range(3)) - qc = pm.run(qc) - target = {"a": {0: 10000}, "b": {0: 10000}, "c": {0: 10000}} - cases.append(("no measure", qc, target)) - - for title, qc, target in cases: - with self.subTest(title): - sampler = BackendSamplerV2(backend=backend, options=self._options) - result = sampler.run([qc], shots=self._shots).result() - self.assertEqual(len(result), 1) - data = result[0].data - self.assertEqual(len(data), 3) - for creg in qc.cregs: - self.assertTrue(hasattr(data, creg.name)) - self._assert_allclose(getattr(data, creg.name), np.array(target[creg.name])) - - @combine(backend=BACKENDS_V2) + @combine(backend=BACKENDS) def test_circuit_with_aliased_cregs(self, backend): """Test for circuit with aliased classical registers.""" q = QuantumRegister(3, "q") @@ -1348,49 +745,6 @@ def test_circuit_with_aliased_cregs(self, backend): self.assertTrue(hasattr(data, creg_name)) self._assert_allclose(getattr(data, creg_name), np.array(creg)) - @combine(backend=BACKENDS_V1) - def test_circuit_with_aliased_cregs_v1(self, backend): - """Test for circuit with aliased classical registers.""" - q = QuantumRegister(3, "q") - c1 = ClassicalRegister(1, "c1") - c2 = ClassicalRegister(1, "c2") - - qc = QuantumCircuit(q, c1, c2) - qc.ry(np.pi / 4, 2) - qc.cx(2, 1) - qc.cx(0, 1) - qc.h(0) - qc.measure(0, c1) - qc.measure(1, c2) - with self.assertWarns(DeprecationWarning): - qc.z(2).c_if(c1, 1) - with self.assertWarns(DeprecationWarning): - qc.x(2).c_if(c2, 1) - qc2 = QuantumCircuit(5, 5) - qc2.compose(qc, [0, 2, 3], [2, 4], inplace=True) - cregs = [creg.name for creg in qc2.cregs] - target = { - cregs[0]: {0: 4255, 4: 4297, 16: 720, 20: 726}, - cregs[1]: {0: 5000, 1: 5000}, - cregs[2]: {0: 8500, 1: 1500}, - } - - sampler = BackendSamplerV2(backend=backend, options=self._options) - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will " - "stop supporting inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - qc2 = pm.run(qc2) - result = sampler.run([qc2], shots=self._shots).result() - self.assertEqual(len(result), 1) - data = result[0].data - self.assertEqual(len(data), 3) - for creg_name, creg in target.items(): - self.assertTrue(hasattr(data, creg_name)) - self._assert_allclose(getattr(data, creg_name), np.array(creg)) - @combine(backend=BACKENDS) def test_no_cregs(self, backend): """Test that the sampler works when there are no classical register in the circuit.""" @@ -1417,7 +771,7 @@ def test_empty_creg(self, backend): result = sampler.run([qc], shots=self._shots).result() self.assertEqual(result[0].data.c1.array.shape, (self._shots, 0)) - @combine(backend=BACKENDS_V2) + @combine(backend=BACKENDS) def test_diff_shots(self, backend): """Test of pubs with different shots""" pm = generate_preset_pass_manager(optimization_level=0, backend=backend) @@ -1435,29 +789,6 @@ def test_diff_shots(self, backend): self.assertEqual(result[1].data.meas.num_shots, shots2) self._assert_allclose(result[1].data.meas, np.array(target2)) - @combine(backend=BACKENDS_V1) - def test_diff_shots_v1(self, backend): - """Test of pubs with different shots""" - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will " - "stop supporting inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level=0, backend=backend) - - bell, _, target = self._cases[1] - bell = pm.run(bell) - sampler = BackendSamplerV2(backend=backend, options=self._options) - shots2 = self._shots + 2 - target2 = {k: v + 1 for k, v in target.items()} - job = sampler.run([(bell, None, self._shots), (bell, None, shots2)]) - result = job.result() - self.assertEqual(len(result), 2) - self.assertEqual(result[0].data.meas.num_shots, self._shots) - self._assert_allclose(result[0].data.meas, np.array(target)) - self.assertEqual(result[1].data.meas.num_shots, shots2) - self._assert_allclose(result[1].data.meas, np.array(target2)) - def test_job_size_limit_backend_v2(self): """Test BackendSamplerV2 respects backend's job size limit.""" diff --git a/test/python/providers/faulty_backends.py b/test/python/providers/faulty_backends.py deleted file mode 100644 index ec8ba8fed594..000000000000 --- a/test/python/providers/faulty_backends.py +++ /dev/null @@ -1,106 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2024. -# -# 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. - -"""Faulty fake backends for testing""" - -from qiskit.providers.models.backendproperties import BackendProperties -from qiskit.providers.fake_provider import Fake7QPulseV1 - - -class Fake7QV1FaultyQ1(Fake7QPulseV1): - """A fake 5 qubit backend, with a faulty q1 - 0 ↔ (1) ↔ 3 ↔ 4 - ↕ - 2 - """ - - def properties(self): - """Returns a snapshot of device properties as recorded on 8/30/19. - Sets the qubit 1 as non-operational. - """ - props = super().properties().to_dict() - props["qubits"][1].append( - {"date": "2000-01-01 00:00:00Z", "name": "operational", "unit": "", "value": 0} - ) - return BackendProperties.from_dict(props) - - -class Fake7QV1MissingQ1Property(Fake7QPulseV1): - """A fake 7 qubit backend, with a missing T1 property in q1.""" - - def properties(self): - """Returns a snapshot of device properties as recorded on 8/30/19. - Remove property from qubit 1. - """ - props = super().properties().to_dict() - props["qubits"][1] = filter(lambda q: q["name"] != "T1", props["qubits"][1]) - return BackendProperties.from_dict(props) - - -class Fake7QV1FaultyCX01CX10(Fake7QPulseV1): - """A fake 5 qubit backend, with faulty CX(Q1, Q0) and CX(Q0, Q1) - 0 (↔) 1 ↔ 3 ↔ 4 - ↕ - 2 - """ - - def properties(self): - """Returns a snapshot of device properties as recorded on 8/30/19. - Sets the gate CX(Q0, Q1) (and symmetric) as non-operational. - """ - props = super().properties().to_dict() - for gate in props["gates"]: - if gate["gate"] == "cx" and set(gate["qubits"]) == {0, 1}: - gate["parameters"].append( - {"date": "2000-01-01 00:00:00Z", "name": "operational", "unit": "", "value": 0} - ) - return BackendProperties.from_dict(props) - - -class Fake7QV1FaultyCX13CX31(Fake7QPulseV1): - """A fake 5 qubit backend, with faulty CX(Q1, Q3) and CX(Q3, Q1) - 0 ↔ 1 (↔) 3 ↔ 4 - ↕ - 2 - """ - - def properties(self): - """Returns a snapshot of device properties as recorded on 8/30/19. - Sets the gate CX(Q1, Q3) (and symmetric) as non-operational. - """ - props = super().properties().to_dict() - for gate in props["gates"]: - if gate["gate"] == "cx" and set(gate["qubits"]) == {3, 1}: - gate["parameters"].append( - {"date": "2000-01-01 00:00:00Z", "name": "operational", "unit": "", "value": 0} - ) - return BackendProperties.from_dict(props) - - -class Fake7QV1FaultyCX13(Fake7QPulseV1): - """A fake 5 qubit backend, with faulty CX(Q1, Q3), but valid CX(Q3, Q1) - 0 ↔ 1 <- 3 ↔ 4 - ↕ - 2 - """ - - def properties(self): - """Returns a snapshot of device properties as recorded on 8/30/19. - Sets the gate CX(Q1, Q3) as non-operational. - """ - props = super().properties().to_dict() - for gate in props["gates"]: - if gate["gate"] == "cx" and gate["qubits"] == [1, 3]: - gate["parameters"].append( - {"date": "2000-01-01 00:00:00Z", "name": "operational", "unit": "", "value": 0} - ) - return BackendProperties.from_dict(props) diff --git a/test/python/providers/test_backendconfiguration.py b/test/python/providers/test_backendconfiguration.py deleted file mode 100644 index f3309fda4b40..000000000000 --- a/test/python/providers/test_backendconfiguration.py +++ /dev/null @@ -1,212 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2019, 2024. -# -# 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 that the PulseBackendConfiguration methods work as expected with a mocked Pulse backend. -""" -# TODO the full file can be removed once BackendV1 is removed, since it is the -# only one with backend.configuration() - -import collections -import copy - -from qiskit.providers.fake_provider import FakeOpenPulse2Q, FakeOpenPulse3Q, Fake27QPulseV1 -from qiskit.pulse.channels import DriveChannel, MeasureChannel, ControlChannel, AcquireChannel -from qiskit.providers import BackendConfigurationError -from test import QiskitTestCase # pylint: disable=wrong-import-order - - -class TestBackendConfiguration(QiskitTestCase): - """Test the methods on the BackendConfiguration class.""" - - def setUp(self): - super().setUp() - with self.assertWarns(DeprecationWarning): - backend = FakeOpenPulse2Q() - self.config = backend.configuration() - - def test_simple_config(self): - """Test the most basic getters.""" - self.assertEqual(self.config.dt, 1.3333 * 1.0e-9) - self.assertEqual(self.config.dtm, 10.5 * 1.0e-9) - self.assertEqual(self.config.basis_gates, ["u1", "u2", "u3", "cx", "id"]) - - def test_sample_rate(self): - """Test that sample rate is 1/dt.""" - self.assertEqual(self.config.sample_rate, 1.0 / self.config.dt) - - def test_hamiltonian(self): - """Test the hamiltonian method.""" - self.assertEqual( - self.config.hamiltonian["description"], - "A hamiltonian for a mocked 2Q device, with 1Q and 2Q terms.", - ) - ref_vars = { - "v0": 5.0 * 1e9, - "v1": 5.1 * 1e9, - "j": 0.01 * 1e9, - "r": 0.02 * 1e9, - "alpha0": -0.33 * 1e9, - "alpha1": -0.33 * 1e9, - } - self.assertEqual(self.config.hamiltonian["vars"], ref_vars) - # Test that on serialization inverse conversion is done. - self.assertEqual( - self.config.to_dict()["hamiltonian"]["vars"], - {k: var * 1e-9 for k, var in ref_vars.items()}, - ) - # 3Q doesn't offer a hamiltonian -- test that we get a reasonable response - with self.assertWarns(DeprecationWarning): - backend_3q = FakeOpenPulse3Q() - self.assertEqual(backend_3q.configuration().hamiltonian, None) - - def test_get_channels(self): - """Test requesting channels from the system.""" - - with self.assertWarns(DeprecationWarning): - self.assertEqual(self.config.drive(0), DriveChannel(0)) - self.assertEqual(self.config.measure(1), MeasureChannel(1)) - self.assertEqual(self.config.acquire(0), AcquireChannel(0)) - with self.assertRaises(BackendConfigurationError): - # Check that an error is raised if the system doesn't have that many qubits - self.assertEqual(self.config.acquire(10), AcquireChannel(10)) - with self.assertWarns(DeprecationWarning): - self.assertEqual(self.config.control(qubits=[0, 1]), [ControlChannel(0)]) - with self.assertRaises(BackendConfigurationError): - # Check that an error is raised if key not found in self._qubit_channel_map - self.config.control(qubits=(10, 1)) - - def test_get_channel_qubits(self): - """Test to get all qubits operated on a given channel.""" - with self.assertWarns(DeprecationWarning): - self.assertEqual(self.config.get_channel_qubits(channel=DriveChannel(0)), [0]) - self.assertEqual(self.config.get_channel_qubits(channel=ControlChannel(0)), [0, 1]) - with self.assertWarns(DeprecationWarning): - backend_3q = FakeOpenPulse3Q() - with self.assertWarns(DeprecationWarning): - self.assertEqual( - backend_3q.configuration().get_channel_qubits(ControlChannel(2)), [2, 1] - ) - self.assertEqual( - backend_3q.configuration().get_channel_qubits(ControlChannel(1)), [1, 0] - ) - with self.assertRaises(BackendConfigurationError): - with self.assertWarns(DeprecationWarning): - # Check that an error is raised if key not found in self._channel_qubit_map - self.config.get_channel_qubits(MeasureChannel(10)) - - def test_get_qubit_channels(self): - """Test to get all channels operated on a given qubit.""" - with self.assertWarns(DeprecationWarning): - self.assertTrue( - self._test_lists_equal( - actual=self.config.get_qubit_channels(qubit=(1,)), - expected=[DriveChannel(1), MeasureChannel(1), AcquireChannel(1)], - ) - ) - with self.assertWarns(DeprecationWarning): - self.assertTrue( - self._test_lists_equal( - actual=self.config.get_qubit_channels(qubit=1), - expected=[ - ControlChannel(0), - ControlChannel(1), - AcquireChannel(1), - DriveChannel(1), - MeasureChannel(1), - ], - ) - ) - with self.assertWarns(DeprecationWarning): - backend_3q = FakeOpenPulse3Q() - self.assertTrue( - self._test_lists_equal( - actual=backend_3q.configuration().get_qubit_channels(1), - expected=[ - MeasureChannel(1), - ControlChannel(0), - ControlChannel(2), - AcquireChannel(1), - DriveChannel(1), - ControlChannel(1), - ], - ) - ) - with self.assertRaises(BackendConfigurationError): - # Check that an error is raised if key not found in self._channel_qubit_map - self.config.get_qubit_channels(10) - - def test_supported_instructions(self): - """Test that supported instructions get entered into config dict properly.""" - # verify the supported instructions is not in the config dict when the flag is not set - self.assertNotIn("supported_instructions", self.config.to_dict()) - # verify that supported instructions get added to config dict when set - supp_instrs = ["u1", "u2", "play", "acquire"] - setattr(self.config, "supported_instructions", supp_instrs) - self.assertEqual(supp_instrs, self.config.to_dict()["supported_instructions"]) - - def test_get_rep_times(self): - """Test whether rep time property is the right size""" - _rep_times_us = [100, 250, 500, 1000] - _rep_times_s = [_rt * 1.0e-6 for _rt in _rep_times_us] - - for i, time in enumerate(_rep_times_s): - self.assertAlmostEqual(self.config.rep_times[i], time) - for i, time in enumerate(_rep_times_us): - self.assertEqual(round(self.config.rep_times[i] * 1e6), time) - for rep_time in self.config.to_dict()["rep_times"]: - self.assertGreater(rep_time, 0) - - def test_get_default_rep_delay_and_range(self): - """Test whether rep delay property is the right size.""" - _rep_delay_range_us = [100, 1000] - _rep_delay_range_s = [_rd * 1.0e-6 for _rd in _rep_delay_range_us] - _default_rep_delay_us = 500 - _default_rep_delay_s = 500 * 1.0e-6 - - setattr(self.config, "rep_delay_range", _rep_delay_range_s) - setattr(self.config, "default_rep_delay", _default_rep_delay_s) - - config_dict = self.config.to_dict() - for i, rd in enumerate(config_dict["rep_delay_range"]): - self.assertAlmostEqual(rd, _rep_delay_range_us[i], delta=1e-8) - self.assertEqual(config_dict["default_rep_delay"], _default_rep_delay_us) - - def test_get_channel_prefix_index(self): - """Test private method to get channel and index.""" - self.assertEqual(self.config._get_channel_prefix_index("acquire0"), ("acquire", 0)) - with self.assertRaises(BackendConfigurationError): - self.config._get_channel_prefix_index("acquire") - - def _test_lists_equal(self, actual, expected): - """Test if 2 lists are equal. It returns ``True`` is lists are equal.""" - return collections.Counter(actual) == collections.Counter(expected) - - def test_deepcopy(self): - """Ensure that a deepcopy succeeds and results in an identical object.""" - copy_config = copy.deepcopy(self.config) - self.assertEqual(copy_config, self.config) - - def test_u_channel_lo_scale(self): - """Ensure that u_channel_lo scale is a complex number""" - with self.assertWarns(DeprecationWarning): - valencia_conf = Fake27QPulseV1().configuration() - self.assertTrue(isinstance(valencia_conf.u_channel_lo[0][0].scale, complex)) - - def test_processor_type(self): - """Test the "processor_type" field in the backend configuration.""" - reference_processor_type = { - "family": "Canary", - "revision": "1.0", - "segment": "A", - } - self.assertEqual(self.config.processor_type, reference_processor_type) - self.assertEqual(self.config.to_dict()["processor_type"], reference_processor_type) diff --git a/test/python/providers/test_backendproperties.py b/test/python/providers/test_backendproperties.py deleted file mode 100644 index ac024973133e..000000000000 --- a/test/python/providers/test_backendproperties.py +++ /dev/null @@ -1,134 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2024. -# -# 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. - -"""TestCase for testing backend properties.""" - -import copy - -from qiskit.providers.fake_provider import Fake5QV1 -from qiskit.providers.exceptions import BackendPropertyError -from test import QiskitTestCase # pylint: disable=wrong-import-order - - -class BackendpropertiesTestCase(QiskitTestCase): - """Test usability methods of backend.properties().""" - - # TODO the full file can be removed once BackendV1 is removed, since it is the - # only one with backend.properties() - - def setUp(self): - super().setUp() - with self.assertWarns(DeprecationWarning): - self.backend = Fake5QV1() - self.properties = self.backend.properties() - self.ref_gate = next( - g for g in self.backend.configuration().basis_gates if g not in ["id", "rz"] - ) - - def test_gate_property(self): - """Test for getting the gate properties.""" - self.assertEqual( - self.properties.gate_property("cx", (0, 1), "gate_error"), - self.properties._gates["cx"][(0, 1)]["gate_error"], - ) - self.assertEqual(self.properties.gate_property("cx"), self.properties._gates["cx"]) - - with self.assertRaises(BackendPropertyError): - self.properties.gate_property(self.ref_gate, None, "gate_error") - - def test_gate_error(self): - """Test for getting the gate errors.""" - self.assertEqual( - self.properties.gate_error(self.ref_gate, 1), - self.properties._gates[self.ref_gate][(1,)]["gate_error"][0], - ) - self.assertEqual( - self.properties.gate_error( - self.ref_gate, - [ - 2, - ], - ), - self.properties._gates[self.ref_gate][(2,)]["gate_error"][0], - ) - self.assertEqual( - self.properties.gate_error("cx", [0, 1]), - self.properties._gates["cx"][(0, 1)]["gate_error"][0], - ) - - with self.assertRaises(BackendPropertyError): - self.properties.gate_error("cx", 0) - - def test_gate_length(self): - """Test for getting the gate duration.""" - self.assertEqual( - self.properties.gate_length(self.ref_gate, 1), - self.properties._gates[self.ref_gate][(1,)]["gate_length"][0], - ) - self.assertEqual( - self.properties.gate_length("cx", [4, 3]), - self.properties._gates["cx"][(4, 3)]["gate_length"][0], - ) - - def test_qubit_property(self): - """Test for getting the qubit properties.""" - self.assertEqual(self.properties.qubit_property(0, "T1"), self.properties._qubits[0]["T1"]) - self.assertEqual( - self.properties.qubit_property(0, "frequency"), self.properties._qubits[0]["frequency"] - ) - self.assertEqual(self.properties.qubit_property(0), self.properties._qubits[0]) - - with self.assertRaises(BackendPropertyError): - self.properties.qubit_property("T1") - - def test_t1(self): - """Test for getting the t1 of given qubit.""" - self.assertEqual(self.properties.t1(0), self.properties._qubits[0]["T1"][0]) - - def test_t2(self): - """Test for getting the t2 of a given qubit""" - self.assertEqual(self.properties.t2(0), self.properties._qubits[0]["T2"][0]) - - def test_frequency(self): - """Test for getting the frequency of given qubit.""" - self.assertEqual(self.properties.frequency(0), self.properties._qubits[0]["frequency"][0]) - - def test_readout_error(self): - """Test for getting the readout error of given qubit.""" - self.assertEqual( - self.properties.readout_error(0), self.properties._qubits[0]["readout_error"][0] - ) - - def test_readout_length(self): - """Test for getting the readout length of given qubit.""" - self.assertEqual( - self.properties.readout_length(0), self.properties._qubits[0]["readout_length"][0] - ) - - def test_apply_prefix(self): - """Testing unit conversions.""" - self.assertEqual( - self.properties._apply_prefix(71.9500421005539, "µs"), 7.19500421005539e-05 - ) - self.assertEqual(self.properties._apply_prefix(71.9500421005539, "ms"), 0.0719500421005539) - - with self.assertRaises(BackendPropertyError): - self.properties._apply_prefix(71.9500421005539, "ws") - - def test_operational(self): - """Test operation status of a given qubit.""" - self.assertTrue(self.properties.is_qubit_operational(0)) - - def test_deepcopy(self): - """Test that deepcopy creates an identical object.""" - copy_prop = copy.deepcopy(self.properties) - self.assertEqual(copy_prop, self.properties) diff --git a/test/python/providers/test_backendstatus.py b/test/python/providers/test_backendstatus.py deleted file mode 100644 index c0cfb7f792a3..000000000000 --- a/test/python/providers/test_backendstatus.py +++ /dev/null @@ -1,47 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2019, 2024. -# -# 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 BackendStatus. -""" - -from qiskit.providers.fake_provider import Fake5QV1 -from qiskit.providers.models.backendstatus import BackendStatus -from test import QiskitTestCase # pylint: disable=wrong-import-order - - -class TestBackendConfiguration(QiskitTestCase): - """Test the BackendStatus class.""" - - def setUp(self): - """Test backend status for one of the fake backends""" - super().setUp() - self.backend_status = BackendStatus("my_backend", "1.0", True, 2, "online") - - def test_repr(self): - """Test representation methods of BackendStatus""" - self.assertIsInstance(self.backend_status.__repr__(), str) - repr_html = self.backend_status._repr_html_() - self.assertIsInstance(repr_html, str) - self.assertIn(self.backend_status.backend_name, repr_html) - - def test_fake_backend_status(self): - """Test backend status for one of the fake backends""" - with self.assertWarns(DeprecationWarning): - fake_backend = Fake5QV1() - backend_status = fake_backend.status() - self.assertIsInstance(backend_status, BackendStatus) - - -if __name__ == "__main__": - import unittest - - unittest.main() diff --git a/test/python/providers/test_fake_backends.py b/test/python/providers/test_fake_backends.py index 2a272b91daef..35350c42fe75 100644 --- a/test/python/providers/test_fake_backends.py +++ b/test/python/providers/test_fake_backends.py @@ -13,72 +13,18 @@ # pylint: disable=missing-class-docstring,missing-function-docstring # pylint: disable=missing-module-docstring -import datetime -import itertools import operator -import unittest -import warnings - from test import combine from ddt import ddt, data from qiskit.circuit import QuantumCircuit from qiskit.compiler import transpile -from qiskit.providers.fake_provider import ( - Fake5QV1, - Fake20QV1, - Fake7QPulseV1, - Fake27QPulseV1, - Fake127QPulseV1, - FakeOpenPulse2Q, - GenericBackendV2, -) -from qiskit.providers.backend_compat import BackendV2Converter, convert_to_target -from qiskit.providers.models.backendproperties import BackendProperties -from qiskit.providers.models.backendconfiguration import GateConfig -from qiskit.providers.backend import BackendV2 +from qiskit.providers.fake_provider import GenericBackendV2 from qiskit.utils import optionals -from qiskit.circuit.library import ( - SXGate, - MCPhaseGate, - MCXGate, - RZGate, - RXGate, - U2Gate, - U1Gate, - U3Gate, - YGate, - ZGate, - PauliGate, - SwapGate, - RGate, - MCXGrayCode, - RYGate, - CZGate, - ECRGate, - UnitaryGate, - UCGate, - Initialize, - DiagonalGate, -) -from qiskit.circuit import ControlledGate, Parameter -from qiskit.quantum_info.operators.channel.quantum_channel import QuantumChannel -from qiskit.quantum_info.operators.channel.kraus import Kraus -from qiskit.quantum_info.operators.channel import SuperOp -from qiskit.circuit.controlflow import ( - IfElseOp, - WhileLoopOp, - ForLoopOp, - ContinueLoopOp, - BreakLoopOp, - SwitchCaseOp, -) + from qiskit.transpiler.coupling import CouplingMap from test.utils.base import QiskitTestCase # pylint: disable=wrong-import-order -with warnings.catch_warnings(): - BACKENDS = [Fake5QV1(), Fake20QV1(), Fake7QPulseV1(), Fake27QPulseV1(), Fake127QPulseV1()] - BACKENDS_V2 = [] for n in [5, 7, 16, 20, 27, 65, 127]: cmap = CouplingMap.from_ring(n) @@ -118,20 +64,18 @@ def test_circuit_on_fake_backend_v2(self, backend, optimization_level): self.assertEqual(max_count, "11") @combine( - backend=BACKENDS, + backend=BACKENDS_V2, optimization_level=[0, 1, 2, 3], dsc="Test execution path on {backend} with optimization level {optimization_level}", name="{backend}_opt_level_{optimization_level}", ) def test_circuit_on_fake_backend(self, backend, optimization_level): - if not optionals.HAS_AER and backend.configuration().num_qubits > 20: - self.skipTest( - f"Unable to run fake_backend {backend.configuration().backend_name} without qiskit-aer" - ) + if not optionals.HAS_AER and backend.num_qubits > 20: + self.skipTest(f"Unable to run fake_backend {backend.name} without qiskit-aer") with self.assertWarnsRegex( DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", + expected_regex="The property ``qiskit.dagcircuit.dagcircuit.DAGCircuit.duration`` " + "is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 2.0.0.", ): transpiled = transpile( self.circuit, backend, seed_transpiler=42, optimization_level=optimization_level @@ -142,17 +86,6 @@ def test_circuit_on_fake_backend(self, backend, optimization_level): max_count = max(counts.items(), key=operator.itemgetter(1))[0] self.assertEqual(max_count, "11") - @data(*BACKENDS) - def test_to_dict_properties(self, backend): - with warnings.catch_warnings(): - # The class QobjExperimentHeader is deprecated - warnings.filterwarnings("ignore", category=DeprecationWarning, module="qiskit") - properties = backend.properties() - if properties: - self.assertIsInstance(backend.properties().to_dict(), dict) - else: - self.assertTrue(backend.configuration().simulator) - @data(*BACKENDS_V2) def test_convert_to_target(self, backend): target = backend.target @@ -163,634 +96,3 @@ def test_convert_to_target(self, backend): def test_backend_v2_dtm(self, backend): if backend.dtm: self.assertLess(backend.dtm, 1e-6) - - @data(*BACKENDS) - def test_to_dict_configuration(self, backend): - configuration = backend.configuration() - if configuration.open_pulse: - self.assertLess(configuration.dt, 1e-6) - self.assertLess(configuration.dtm, 1e-6) - for i in configuration.qubit_lo_range: - self.assertGreater(i[0], 1e6) - self.assertGreater(i[1], 1e6) - self.assertLess(i[0], i[1]) - - for i in configuration.meas_lo_range: - self.assertGreater(i[0], 1e6) - self.assertGreater(i[0], 1e6) - self.assertLess(i[0], i[1]) - - for i in configuration.rep_times: - self.assertGreater(i, 0) - self.assertLess(i, 1) - - self.assertIsInstance(configuration.to_dict(), dict) - - @data(*BACKENDS) - def test_defaults_to_dict(self, backend): - if hasattr(backend, "defaults"): - defaults = backend.defaults() - self.assertIsInstance(defaults.to_dict(), dict) - - for i in defaults.qubit_freq_est: - self.assertGreater(i, 1e6) - self.assertGreater(i, 1e6) - - for i in defaults.meas_freq_est: - self.assertGreater(i, 1e6) - self.assertGreater(i, 1e6) - else: - self.skipTest(f"Backend {backend} does not have defaults") - - def test_delay_circuit(self): - with self.assertWarns(DeprecationWarning): - backend = Fake27QPulseV1() - backend.configuration().timing_constraints = { - "acquire_alignment": 1, - "granularity": 1, - "min_length": 1, - "pulse_alignment": 1, - } - qc = QuantumCircuit(2) - qc.delay(502, 0, unit="ns") - qc.x(1) - qc.delay(250, 1, unit="ns") - qc.measure_all() - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - res = transpile(qc, backend) - self.assertIn("delay", res.count_ops()) - - @data(0, 1, 2, 3) - def test_converter(self, opt_level): - with self.assertWarns(DeprecationWarning): - backend = Fake5QV1() - backend_v2 = BackendV2Converter(backend) - self.assertIsInstance(backend_v2, BackendV2) - res = transpile(self.circuit, backend_v2, optimization_level=opt_level) - job = backend_v2.run(res) - with warnings.catch_warnings(): - # TODO remove this catch once Aer stops using QobjDictField - warnings.filterwarnings("ignore", category=DeprecationWarning, module="qiskit") - 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): - with self.assertWarns(DeprecationWarning): - backend = Fake27QPulseV1() - backend.configuration().timing_constraints = { - "acquire_alignment": 1, - "granularity": 1, - "min_length": 1, - "pulse_alignment": 1, - } - 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()) - - def test_converter_with_missing_gate_property(self): - """Test converting to V2 model with irregular backend data.""" - with self.assertWarns(DeprecationWarning): - backend = FakeOpenPulse2Q() - # The backend includes pulse calibration definition for U2, but its property is gone. - # Note that u2 is a basis gate of this device. - # Since gate property is not provided, the gate broadcasts to all qubits as ideal instruction. - del backend._properties._gates["u2"] - - # This should not raise error - backend_v2 = BackendV2Converter(backend, add_delay=True) - self.assertDictEqual(backend_v2.target["u2"], {None: None}) - - def test_non_cx_tests(self): - backend = GenericBackendV2(num_qubits=5, basis_gates=["cz", "x", "sx", "id", "rz"], seed=42) - self.assertIsInstance(backend.target.operation_from_name("cz"), CZGate) - backend = GenericBackendV2( - num_qubits=5, basis_gates=["ecr", "x", "sx", "id", "rz"], seed=42 - ) - self.assertIsInstance(backend.target.operation_from_name("ecr"), ECRGate) - - @unittest.skipUnless(optionals.HAS_AER, "Aer required for this test") - def test_converter_simulator(self): - class MCSXGate(ControlledGate): - def __init__(self, num_ctrl_qubits, ctrl_state=None): - super().__init__( - "mcsx", - 1 + num_ctrl_qubits, - [], - None, - num_ctrl_qubits, - ctrl_state=ctrl_state, - base_gate=SXGate(), - ) - - class MCYGate(ControlledGate): - def __init__(self, num_ctrl_qubits, ctrl_state=None): - super().__init__( - "mcy", - 1 + num_ctrl_qubits, - [], - None, - num_ctrl_qubits, - ctrl_state=ctrl_state, - base_gate=YGate(), - ) - - class MCZGate(ControlledGate): - def __init__(self, num_ctrl_qubits, ctrl_state=None): - super().__init__( - "mcz", - 1 + num_ctrl_qubits, - [], - None, - num_ctrl_qubits, - ctrl_state=ctrl_state, - base_gate=ZGate(), - ) - - class MCRXGate(ControlledGate): - def __init__(self, theta, num_ctrl_qubits, ctrl_state=None): - super().__init__( - "mcrx", - 1 + num_ctrl_qubits, - [theta], - None, - num_ctrl_qubits, - ctrl_state=ctrl_state, - base_gate=RXGate(theta), - ) - - class MCRYGate(ControlledGate): - def __init__(self, theta, num_ctrl_qubits, ctrl_state=None): - super().__init__( - "mcry", - 1 + num_ctrl_qubits, - [theta], - None, - num_ctrl_qubits, - ctrl_state=ctrl_state, - base_gate=RYGate(theta), - ) - - class MCRZGate(ControlledGate): - def __init__(self, theta, num_ctrl_qubits, ctrl_state=None): - super().__init__( - "mcrz", - 1 + num_ctrl_qubits, - [theta], - None, - num_ctrl_qubits, - ctrl_state=ctrl_state, - base_gate=RZGate(theta), - ) - - class MCRGate(ControlledGate): - def __init__(self, theta, phi, num_ctrl_qubits, ctrl_state=None): - super().__init__( - "mcr", - 1 + num_ctrl_qubits, - [theta, phi], - None, - num_ctrl_qubits, - ctrl_state=ctrl_state, - base_gate=RGate(theta, phi), - ) - - class MCU1Gate(ControlledGate): - def __init__(self, theta, num_ctrl_qubits, ctrl_state=None): - super().__init__( - "mcu1", - 1 + num_ctrl_qubits, - [theta], - None, - num_ctrl_qubits, - ctrl_state=ctrl_state, - base_gate=U1Gate(theta), - ) - - class MCU2Gate(ControlledGate): - def __init__(self, theta, lam, num_ctrl_qubits, ctrl_state=None): - super().__init__( - "mcu2", - 1 + num_ctrl_qubits, - [theta, lam], - None, - num_ctrl_qubits, - ctrl_state=ctrl_state, - base_gate=U2Gate(theta, lam), - ) - - class MCU3Gate(ControlledGate): - def __init__(self, theta, lam, phi, num_ctrl_qubits, ctrl_state=None): - super().__init__( - "mcu3", - 1 + num_ctrl_qubits, - [theta, phi, lam], - None, - num_ctrl_qubits, - ctrl_state=ctrl_state, - base_gate=U3Gate(theta, phi, lam), - ) - - class MCUGate(ControlledGate): - def __init__(self, theta, lam, phi, num_ctrl_qubits, ctrl_state=None): - super().__init__( - "mcu", - 1 + num_ctrl_qubits, - [theta, phi, lam], - None, - num_ctrl_qubits, - ctrl_state=ctrl_state, - base_gate=U3Gate(theta, phi, lam), - ) - - class MCSwapGate(ControlledGate): - def __init__(self, num_ctrl_qubits, ctrl_state=None): - super().__init__( - "mcswap", - 2 + num_ctrl_qubits, - [], - None, - num_ctrl_qubits, - ctrl_state=ctrl_state, - base_gate=SwapGate(), - ) - - from qiskit_aer import AerSimulator - from qiskit_aer.library import ( - SaveExpectationValue, - SaveAmplitudes, - SaveStatevectorDict, - SaveSuperOp, - SaveClifford, - SaveMatrixProductState, - SaveDensityMatrix, - SaveProbabilities, - SaveStatevector, - SetDensityMatrix, - SetUnitary, - SaveState, - SetMatrixProductState, - SaveUnitary, - SetSuperOp, - SaveExpectationValueVariance, - SaveStabilizer, - SetStatevector, - SetStabilizer, - SaveAmplitudesSquared, - SaveProbabilitiesDict, - ) - from qiskit_aer.noise.errors import ReadoutError - from qiskit_aer.noise.noise_model import QuantumErrorLocation - - sim = AerSimulator() - # test only if simulator's backend is V1 - if sim.version > 1: - return - phi = Parameter("phi") - lam = Parameter("lam") - backend = BackendV2Converter( - sim, - name_mapping={ - "mcsx": MCSXGate, - "mcp": MCPhaseGate, - "mcphase": MCPhaseGate, - "quantum_channel": QuantumChannel, - "initialize": Initialize, - "save_expval": SaveExpectationValue, - "diagonal": DiagonalGate, - "save_amplitudes": SaveAmplitudes, - "roerror": ReadoutError, - "mcrx": MCRXGate, - "kraus": Kraus, - "save_statevector_dict": SaveStatevectorDict, - "mcx": MCXGate, - "mcu1": MCU1Gate, - "mcu2": MCU2Gate, - "mcu3": MCU3Gate, - "save_superop": SaveSuperOp, - "multiplexer": UCGate, - "mcy": MCYGate, - "superop": SuperOp, - "save_clifford": SaveClifford, - "save_matrix_product_state": SaveMatrixProductState, - "save_density_matrix": SaveDensityMatrix, - "save_probabilities": SaveProbabilities, - "if_else": IfElseOp, - "while_loop": WhileLoopOp, - "for_loop": ForLoopOp, - "switch_case": SwitchCaseOp, - "break_loop": BreakLoopOp, - "continue_loop": ContinueLoopOp, - "save_statevector": SaveStatevector, - "mcu": MCUGate, - "set_density_matrix": SetDensityMatrix, - "qerror_loc": QuantumErrorLocation, - "unitary": UnitaryGate, - "mcz": MCZGate, - "pauli": PauliGate, - "set_unitary": SetUnitary, - "save_state": SaveState, - "mcswap": MCSwapGate, - "set_matrix_product_state": SetMatrixProductState, - "save_unitary": SaveUnitary, - "mcr": MCRGate, - "mcx_gray": MCXGrayCode, - "mcrz": MCRZGate, - "set_superop": SetSuperOp, - "save_expval_var": SaveExpectationValueVariance, - "save_stabilizer": SaveStabilizer, - "set_statevector": SetStatevector, - "mcry": MCRYGate, - "set_stabilizer": SetStabilizer, - "save_amplitudes_sq": SaveAmplitudesSquared, - "save_probabilities_dict": SaveProbabilitiesDict, - "cu2": U2Gate(phi, lam).control(), - }, - ) - self.assertIsInstance(backend, BackendV2) - res = transpile(self.circuit, backend) - job = backend.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_filter_faulty_qubits_backend_v2_converter(self): - """Test faulty qubits in v2 conversion.""" - with self.assertWarns(DeprecationWarning): - backend = Fake127QPulseV1() - # Get properties dict to make it easier to work with the properties API - # is difficult to edit because of the multiple layers of nesting and - # different object types - props_dict = backend.properties().to_dict() - for i in range(62, 67): - non_operational = { - "date": datetime.datetime.now(datetime.timezone.utc), - "name": "operational", - "unit": "", - "value": 0, - } - props_dict["qubits"][i].append(non_operational) - with self.assertWarns(DeprecationWarning): - backend._properties = BackendProperties.from_dict(props_dict) - v2_backend = BackendV2Converter(backend, filter_faulty=True) - for i in range(62, 67): - for qarg in v2_backend.target.qargs: - self.assertNotIn(i, qarg) - - def test_filter_faulty_qubits_backend_v2_converter_with_delay(self): - """Test faulty qubits in v2 conversion.""" - with self.assertWarns(DeprecationWarning): - backend = Fake127QPulseV1() - # Get properties dict to make it easier to work with the properties API - # is difficult to edit because of the multiple layers of nesting and - # different object types - props_dict = backend.properties().to_dict() - for i in range(62, 67): - non_operational = { - "date": datetime.datetime.now(datetime.timezone.utc), - "name": "operational", - "unit": "", - "value": 0, - } - props_dict["qubits"][i].append(non_operational) - with self.assertWarns(DeprecationWarning): - backend._properties = BackendProperties.from_dict(props_dict) - v2_backend = BackendV2Converter(backend, filter_faulty=True, add_delay=True) - for i in range(62, 67): - for qarg in v2_backend.target.qargs: - self.assertNotIn(i, qarg) - - def test_backend_v2_converter_without_delay(self): - """Test setting :code:`add_delay`argument of :func:`.BackendV2Converter` - to :code:`False`.""" - - expected = { - (0,), - (0, 1), - (0, 2), - (1,), - (1, 0), - (1, 2), - (2,), - (2, 0), - (2, 1), - (2, 3), - (2, 4), - (3,), - (3, 2), - (3, 4), - (4,), - (4, 2), - (4, 3), - } - with self.assertWarns(DeprecationWarning): - backend = Fake5QV1() - backend = BackendV2Converter(backend=backend, filter_faulty=True, add_delay=False) - - self.assertEqual(backend.target.qargs, expected) - - def test_backend_v2_converter_with_meaningless_gate_config(self): - """Test backend with broken gate config can be converted only with properties data.""" - with self.assertWarns(DeprecationWarning): - backend_v1 = Fake5QV1() - backend_v1.configuration().gates = [ - GateConfig(name="NotValidGate", parameters=[], qasm_def="not_valid_gate") - ] - backend_v2 = BackendV2Converter( - backend=backend_v1, - filter_faulty=True, - add_delay=False, - ) - ops_with_measure = backend_v2.target.operation_names - self.assertCountEqual( - ops_with_measure, - backend_v1.configuration().basis_gates + ["measure"], - ) - - def test_filter_faulty_qubits_and_gates_backend_v2_converter(self): - """Test faulty gates and qubits.""" - with self.assertWarns(DeprecationWarning): - backend = Fake127QPulseV1() - # Get properties dict to make it easier to work with the properties API - # is difficult to edit because of the multiple layers of nesting and - # different object types - props_dict = backend.properties().to_dict() - for i in range(62, 67): - non_operational = { - "date": datetime.datetime.now(datetime.timezone.utc), - "name": "operational", - "unit": "", - "value": 0, - } - props_dict["qubits"][i].append(non_operational) - invalid_cx_edges = { - (113, 114), - (114, 113), - (96, 100), - (100, 96), - (114, 109), - (109, 114), - (24, 34), - (34, 24), - } - non_operational_gate = { - "date": datetime.datetime.now(datetime.timezone.utc), - "name": "operational", - "unit": "", - "value": 0, - } - for gate in props_dict["gates"]: - if tuple(gate["qubits"]) in invalid_cx_edges: - gate["parameters"].append(non_operational_gate) - - with self.assertWarns(DeprecationWarning): - backend._properties = BackendProperties.from_dict(props_dict) - v2_backend = BackendV2Converter(backend, filter_faulty=True) - for i in range(62, 67): - for qarg in v2_backend.target.qargs: - self.assertNotIn(i, qarg) - for edge in invalid_cx_edges: - self.assertNotIn(edge, v2_backend.target["cx"]) - - def test_filter_faulty_gates_v2_converter(self): - """Test just faulty gates in conversion.""" - with self.assertWarns(DeprecationWarning): - backend = Fake127QPulseV1() - # Get properties dict to make it easier to work with the properties API - # is difficult to edit because of the multiple layers of nesting and - # different object types - props_dict = backend.properties().to_dict() - invalid_cx_edges = { - (113, 114), - (114, 113), - (96, 100), - (100, 96), - (114, 109), - (109, 114), - (24, 34), - (34, 24), - } - non_operational_gate = { - "date": datetime.datetime.now(datetime.timezone.utc), - "name": "operational", - "unit": "", - "value": 0, - } - for gate in props_dict["gates"]: - if tuple(gate["qubits"]) in invalid_cx_edges: - gate["parameters"].append(non_operational_gate) - - with self.assertWarns(DeprecationWarning): - backend._properties = BackendProperties.from_dict(props_dict) - v2_backend = BackendV2Converter(backend, filter_faulty=True) - for i in range(62, 67): - self.assertIn((i,), v2_backend.target.qargs) - for edge in invalid_cx_edges: - self.assertNotIn(edge, v2_backend.target["cx"]) - - def test_filter_faulty_no_faults_v2_converter(self): - """Test that faulty qubit filtering does nothing with all operational qubits and gates.""" - with self.assertWarns(DeprecationWarning): - backend = Fake127QPulseV1() - v2_backend = BackendV2Converter(backend, filter_faulty=True) - for i in range(v2_backend.num_qubits): - self.assertIn((i,), v2_backend.target.qargs) - - @data(0, 1, 2, 3) - def test_faulty_full_path_transpile_connected_cmap(self, opt_level): - with self.assertWarns(DeprecationWarning): - backend = Fake5QV1() - props = backend.properties().to_dict() - - non_operational_gate = { - "date": datetime.datetime.now(datetime.timezone.utc), - "name": "operational", - "unit": "", - "value": 0, - } - for gate in props["gates"]: - if tuple(sorted(gate["qubits"])) == (0, 1): - gate["parameters"].append(non_operational_gate) - with self.assertWarns(DeprecationWarning): - backend._properties = BackendProperties.from_dict(props) - v2_backend = BackendV2Converter(backend, filter_faulty=True) - qc = QuantumCircuit(5) - for x, y in itertools.product(range(5), range(5)): - if x == y: - continue - qc.cx(x, y) - tqc = transpile(qc, v2_backend, seed_transpiler=433, optimization_level=opt_level) - connections = [tuple(sorted(tqc.find_bit(q).index for q in x.qubits)) for x in tqc.data] - self.assertNotIn((0, 1), connections) - - def test_convert_to_target_control_flow(self): - with self.assertWarns(DeprecationWarning): - backend = Fake27QPulseV1() - properties = backend.properties() - configuration = backend.configuration() - configuration.supported_instructions = [ - "cx", - "id", - "delay", - "measure", - "reset", - "rz", - "sx", - "x", - "if_else", - "for_loop", - "switch_case", - ] - defaults = backend.defaults() - with self.assertWarns(DeprecationWarning): - target = convert_to_target(configuration, properties, defaults) - self.assertTrue(target.instruction_supported("if_else", ())) - self.assertFalse(target.instruction_supported("while_loop", ())) - self.assertTrue(target.instruction_supported("for_loop", ())) - self.assertTrue(target.instruction_supported("switch_case", ())) - - def test_convert_unrelated_supported_instructions(self): - with self.assertWarns(DeprecationWarning): - backend = Fake27QPulseV1() - properties = backend.properties() - configuration = backend.configuration() - configuration.supported_instructions = [ - "cx", - "id", - "delay", - "measure", - "reset", - "rz", - "sx", - "x", - "play", - "u2", - "u3", - "u1", - "shiftf", - "acquire", - "setf", - "if_else", - "for_loop", - "switch_case", - ] - defaults = backend.defaults() - with self.assertWarns(DeprecationWarning): - target = convert_to_target(configuration, properties, defaults) - self.assertTrue(target.instruction_supported("if_else", ())) - self.assertFalse(target.instruction_supported("while_loop", ())) - self.assertTrue(target.instruction_supported("for_loop", ())) - self.assertTrue(target.instruction_supported("switch_case", ())) - self.assertFalse(target.instruction_supported("u3", (0,))) diff --git a/test/python/providers/test_faulty_backend.py b/test/python/providers/test_faulty_backend.py deleted file mode 100644 index bd8db856ec0b..000000000000 --- a/test/python/providers/test_faulty_backend.py +++ /dev/null @@ -1,172 +0,0 @@ -# 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. - -"""Testing a Faulty 7QV1Pulse Backend.""" - -from qiskit.providers.backend_compat import convert_to_target -from test import QiskitTestCase # pylint: disable=wrong-import-order -from .faulty_backends import ( - Fake7QV1FaultyCX01CX10, - Fake7QV1FaultyQ1, - Fake7QV1MissingQ1Property, - Fake7QV1FaultyCX13CX31, -) - - -class FaultyQubitBackendTestCase(QiskitTestCase): - """Test operational-related methods of backend.properties() with Fake7QV1FaultyQ1, - which is like Fake7QV1 but with a faulty 1Q""" - - # These test can be removed with Fake7QV1FaultyQ1 - - backend = Fake7QV1FaultyQ1() - - def test_operational_false(self): - """Test operation status of the qubit. Q1 is non-operational""" - with self.assertWarns(DeprecationWarning): - properties = self.backend.properties() - self.assertFalse(properties.is_qubit_operational(1)) - - def test_faulty_qubits(self): - """Test faulty_qubits method.""" - with self.assertWarns(DeprecationWarning): - properties = self.backend.properties() - self.assertEqual(properties.faulty_qubits(), [1]) - - def test_convert_to_target_with_filter(self): - """Test converting legacy data structure to V2 target model with faulty qubits. - - Measure and Delay are automatically added to the output Target - even though instruction is not provided by the backend, - since these are the necessary instructions that the transpiler may assume. - """ - with self.assertWarns(DeprecationWarning): - properties = self.backend.properties() - - # Filter out faulty Q1 - target = convert_to_target( - configuration=self.backend.configuration(), - properties=properties, - add_delay=True, - filter_faulty=True, - ) - self.assertFalse(target.instruction_supported(operation_name="measure", qargs=(1,))) - self.assertFalse(target.instruction_supported(operation_name="delay", qargs=(1,))) - - def test_convert_to_target_without_filter(self): - """Test converting legacy data structure to V2 target model with faulty qubits.""" - - with self.assertWarns(DeprecationWarning): - properties = self.backend.properties() - - # Include faulty Q1 even though data could be incomplete - target = convert_to_target( - configuration=self.backend.configuration(), - properties=properties, - add_delay=True, - filter_faulty=False, - ) - self.assertTrue(target.instruction_supported(operation_name="measure", qargs=(1,))) - self.assertTrue(target.instruction_supported(operation_name="delay", qargs=(1,))) - - # Properties are preserved - with self.assertWarns(DeprecationWarning): - properties = self.backend.properties() - - self.assertEqual( - target.qubit_properties[1].t1, - properties.t1(1), - ) - self.assertEqual( - target.qubit_properties[1].t2, - properties.t2(1), - ) - self.assertEqual( - target.qubit_properties[1].frequency, - properties.frequency(1), - ) - - -class FaultyGate13BackendTestCase(QiskitTestCase): - """Test operational-related methods of backend.properties() with Fake7QV1FaultyCX13CX31, - which is like Fake7QV1 but with a faulty CX(Q1, Q3) and symmetric.""" - - backend = Fake7QV1FaultyCX13CX31() - - def test_operational_gate(self): - """Test is_gate_operational method.""" - with self.assertWarns(DeprecationWarning): - properties = self.backend.properties() - self.assertFalse(properties.is_gate_operational("cx", [1, 3])) - self.assertFalse(properties.is_gate_operational("cx", [3, 1])) - - def test_faulty_gates(self): - """Test faulty_gates method.""" - with self.assertWarns(DeprecationWarning): - properties = self.backend.properties() - gates = properties.faulty_gates() - self.assertEqual(len(gates), 2) - self.assertEqual([gate.gate for gate in gates], ["cx", "cx"]) - self.assertEqual(sorted(gate.qubits for gate in gates), [[1, 3], [3, 1]]) - - -class FaultyGate01BackendTestCase(QiskitTestCase): - """Test operational-related methods of backend.properties() with Fake7QV1FaultyCX13CX31, - which is like Fake7QV1 but with a faulty CX(Q1, Q3) and symmetric.""" - - backend = Fake7QV1FaultyCX01CX10() - - def test_operational_gate(self): - """Test is_gate_operational method.""" - with self.assertWarns(DeprecationWarning): - properties = self.backend.properties() - self.assertFalse(properties.is_gate_operational("cx", [0, 1])) - self.assertFalse(properties.is_gate_operational("cx", [1, 0])) - - def test_faulty_gates(self): - """Test faulty_gates method.""" - with self.assertWarns(DeprecationWarning): - properties = self.backend.properties() - gates = properties.faulty_gates() - self.assertEqual(len(gates), 2) - self.assertEqual([gate.gate for gate in gates], ["cx", "cx"]) - self.assertEqual(sorted(gate.qubits for gate in gates), [[0, 1], [1, 0]]) - - -class MissingPropertyQubitBackendTestCase(QiskitTestCase): - """Test operational-related methods of backend.properties() with Fake7QV1MissingQ1Property, - which is like Fake7QV1 but with Q1 with missing T1 property.""" - - backend = Fake7QV1MissingQ1Property() - - def test_convert_to_target(self): - """Test converting legacy data structure to V2 target model with missing qubit property.""" - - with self.assertWarns(DeprecationWarning): - properties = self.backend.properties() - - target = convert_to_target( - configuration=self.backend.configuration(), - properties=properties, - add_delay=True, - filter_faulty=True, - ) - - self.assertIsNone(target.qubit_properties[1].t1) - self.assertEqual( - target.qubit_properties[1].t2, - properties.t2(1), - ) - self.assertEqual( - target.qubit_properties[1].frequency, - properties.frequency(1), - ) diff --git a/test/python/providers/test_pulse_defaults.py b/test/python/providers/test_pulse_defaults.py deleted file mode 100644 index 2d8fe5b7bf11..000000000000 --- a/test/python/providers/test_pulse_defaults.py +++ /dev/null @@ -1,73 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2019. -# -# 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 PulseDefaults part of the backend.""" -import copy -import warnings - -import numpy as np - -from qiskit.providers.fake_provider import FakeOpenPulse2Q, GenericBackendV2 -from test import QiskitTestCase # pylint: disable=wrong-import-order - - -class TestPulseDefaults(QiskitTestCase): - """Test the PulseDefaults creation and method usage.""" - - def setUp(self): - super().setUp() - with self.assertWarns(DeprecationWarning): - # BackendV2 does not have defaults - self.defs = FakeOpenPulse2Q().defaults() - backend = GenericBackendV2( - 2, calibrate_instructions=True, basis_gates=["cx", "u1", "u2", "u3"], seed=42 - ) - self.inst_map = backend.instruction_schedule_map - - def test_buffer(self): - """Test getting the buffer value.""" - self.assertEqual(self.defs.buffer, 10) - - def test_freq_est(self): - """Test extracting qubit frequencies.""" - warnings.simplefilter("ignore") - self.assertEqual(self.defs.qubit_freq_est[1], 5.0 * 1e9) - self.assertEqual(self.defs.meas_freq_est[0], 6.5 * 1e9) - warnings.simplefilter("default") - - def test_default_building(self): - """Test building of ops definition is properly built from backend.""" - self.assertTrue(self.inst_map.has("u1", (0,))) - self.assertTrue(self.inst_map.has("u3", (0,))) - self.assertTrue(self.inst_map.has("u3", 1)) - self.assertTrue(self.inst_map.has("cx", (0, 1))) - self.assertEqual(self.inst_map.get_parameters("u1", 0), ("P0",)) - u1_minus_pi = self.inst_map.get("u1", 0, P0=np.pi) - fc_cmd = u1_minus_pi.instructions[0][-1] - self.assertAlmostEqual(fc_cmd.phase, -np.pi) - - def test_str(self): - """Test that __str__ method works.""" - self.assertEqual( - "" in str(self.defs)[100:] - ) - - def test_deepcopy(self): - """Test that deepcopy creates an identical object.""" - copy_defs = copy.deepcopy(self.defs) - self.assertEqual(list(copy_defs.to_dict().keys()), list(self.defs.to_dict().keys())) diff --git a/test/python/pulse/test_block.py b/test/python/pulse/test_block.py index 652eba3ccf18..4a6a879e00cc 100644 --- a/test/python/pulse/test_block.py +++ b/test/python/pulse/test_block.py @@ -18,7 +18,6 @@ from qiskit import pulse, circuit from qiskit.pulse import transforms from qiskit.pulse.exceptions import PulseError -from qiskit.providers.fake_provider import FakeOpenPulse2Q from test import QiskitTestCase # pylint: disable=wrong-import-order from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings @@ -31,9 +30,6 @@ class BaseTestBlock(QiskitTestCase): def setUp(self): super().setUp() - with self.assertWarns(DeprecationWarning): - self.backend = FakeOpenPulse2Q() - self.test_waveform0 = pulse.Constant(100, 0.1) self.test_waveform1 = pulse.Constant(200, 0.1) @@ -760,23 +756,6 @@ def test_filter_channels(self): self.assertTrue(ch in filtered_blk.channels) self.assertEqual(filtered_blk, blk) - def test_filter_channels_nested_block(self): - """Test filtering over channels in a nested block.""" - with pulse.build() as blk: - with pulse.align_sequential(): - pulse.play(self.test_waveform0, self.d0) - pulse.delay(5, self.d0) - pulse.call( - self.backend.defaults() - .instruction_schedule_map._get_calibration_entry("cx", (0, 1)) - .get_schedule() - ) - - for ch in [self.d0, self.d1, pulse.ControlChannel(0)]: - filtered_blk = self._filter_and_test_consistency(blk, channels=[ch]) - self.assertEqual(len(filtered_blk.channels), 1) - self.assertTrue(ch in filtered_blk.channels) - def test_filter_inst_types(self): """Test filtering on instruction types.""" with pulse.build() as blk: diff --git a/test/python/pulse/test_builder.py b/test/python/pulse/test_builder.py deleted file mode 100644 index dcc113f5742a..000000000000 --- a/test/python/pulse/test_builder.py +++ /dev/null @@ -1,942 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2020, 2024. -# -# 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 pulse builder context utilities.""" - -import numpy as np - -from qiskit import circuit, pulse -from qiskit.pulse import builder, exceptions, macros -from qiskit.pulse.instructions import directives -from qiskit.pulse.transforms import target_qobj_transform -from qiskit.providers.fake_provider import FakeOpenPulse2Q, Fake127QPulseV1 -from qiskit.pulse import library, instructions -from qiskit.pulse.exceptions import PulseError -from test import QiskitTestCase # pylint: disable=wrong-import-order -from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestBuilder(QiskitTestCase): - """Test the pulse builder context.""" - - @ignore_pulse_deprecation_warnings - def setUp(self): - super().setUp() - with self.assertWarns(DeprecationWarning): - self.backend = FakeOpenPulse2Q() - self.configuration = self.backend.configuration() - self.defaults = self.backend.defaults() - self.inst_map = self.defaults.instruction_schedule_map - - def assertScheduleEqual(self, program, target): - """Assert an error when two pulse programs are not equal. - - .. note:: Two programs are converted into standard execution format then compared. - """ - self.assertEqual(target_qobj_transform(program), target_qobj_transform(target)) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestBuilderBase(TestBuilder): - """Test builder base.""" - - def test_schedule_supplied(self): - """Test that schedule is used if it is supplied to the builder.""" - d0 = pulse.DriveChannel(0) - with pulse.build(name="reference") as reference: - with pulse.align_sequential(): - pulse.delay(10, d0) - - with pulse.build(schedule=reference) as schedule: - pass - - self.assertScheduleEqual(schedule, reference) - self.assertEqual(schedule.name, "reference") - - def test_default_alignment_left(self): - """Test default left alignment setting.""" - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(0) - - with pulse.build(default_alignment="left") as schedule: - pulse.delay(10, d0) - pulse.delay(20, d1) - - with pulse.build(self.backend) as reference: - with pulse.align_left(): - pulse.delay(10, d0) - pulse.delay(20, d1) - - self.assertScheduleEqual(schedule, reference) - - def test_default_alignment_right(self): - """Test default right alignment setting.""" - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(0) - - with pulse.build(default_alignment="right") as schedule: - pulse.delay(10, d0) - pulse.delay(20, d1) - - with pulse.build() as reference: - with pulse.align_right(): - pulse.delay(10, d0) - pulse.delay(20, d1) - - self.assertScheduleEqual(schedule, reference) - - def test_default_alignment_sequential(self): - """Test default sequential alignment setting.""" - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(0) - - with pulse.build(default_alignment="sequential") as schedule: - pulse.delay(10, d0) - pulse.delay(20, d1) - - with pulse.build() as reference: - with pulse.align_sequential(): - pulse.delay(10, d0) - pulse.delay(20, d1) - - self.assertScheduleEqual(schedule, reference) - - def test_default_alignment_alignmentkind_instance(self): - """Test default AlignmentKind instance""" - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(0) - - with pulse.build(default_alignment=pulse.transforms.AlignEquispaced(100)) as schedule: - pulse.delay(10, d0) - pulse.delay(20, d1) - - with pulse.build() as reference: - with pulse.align_equispaced(100): - pulse.delay(10, d0) - pulse.delay(20, d1) - - self.assertScheduleEqual(schedule, reference) - - def test_unknown_string_identifier(self): - """Test that unknown string identifier raises an error""" - - with self.assertRaises(PulseError): - with pulse.build(default_alignment="unknown") as _: - pass - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestContexts(TestBuilder): - """Test builder contexts.""" - - def test_align_sequential(self): - """Test the sequential alignment context.""" - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - - with pulse.build() as schedule: - with pulse.align_sequential(): - pulse.delay(3, d0) - pulse.delay(5, d1) - pulse.delay(7, d0) - - reference = pulse.Schedule() - # d0 - reference.insert(0, instructions.Delay(3, d0), inplace=True) - reference.insert(8, instructions.Delay(7, d0), inplace=True) - # d1 - reference.insert(3, instructions.Delay(5, d1), inplace=True) - - self.assertScheduleEqual(schedule, reference) - - def test_align_left(self): - """Test the left alignment context.""" - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - d2 = pulse.DriveChannel(2) - - with pulse.build() as schedule: - with pulse.align_left(): - pulse.delay(11, d2) - pulse.delay(3, d0) - with pulse.align_left(): - pulse.delay(5, d1) - pulse.delay(7, d0) - - reference = pulse.Schedule() - # d0 - reference.insert(0, instructions.Delay(3, d0), inplace=True) - reference.insert(3, instructions.Delay(7, d0), inplace=True) - # d1 - reference.insert(3, instructions.Delay(5, d1), inplace=True) - # d2 - reference.insert(0, instructions.Delay(11, d2), inplace=True) - - self.assertScheduleEqual(schedule, reference) - - def test_align_right(self): - """Test the right alignment context.""" - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - d2 = pulse.DriveChannel(2) - - with pulse.build() as schedule: - with pulse.align_right(): - with pulse.align_right(): - pulse.delay(11, d2) - pulse.delay(3, d0) - pulse.delay(13, d0) - pulse.delay(5, d1) - - reference = pulse.Schedule() - # d0 - reference.insert(8, instructions.Delay(3, d0), inplace=True) - reference.insert(11, instructions.Delay(13, d0), inplace=True) - # d1 - reference.insert(19, instructions.Delay(5, d1), inplace=True) - # d2 - reference.insert(0, instructions.Delay(11, d2), inplace=True) - - self.assertScheduleEqual(schedule, reference) - - def test_phase_offset(self): - """Test the phase offset context.""" - d0 = pulse.DriveChannel(0) - - with pulse.build() as schedule: - with pulse.phase_offset(3.14, d0): - pulse.delay(10, d0) - - reference = pulse.Schedule() - reference += instructions.ShiftPhase(3.14, d0) - reference += instructions.Delay(10, d0) - reference += instructions.ShiftPhase(-3.14, d0) - - self.assertScheduleEqual(schedule, reference) - - def test_frequency_offset(self): - """Test the frequency offset context.""" - d0 = pulse.DriveChannel(0) - - with pulse.build() as schedule: - with pulse.frequency_offset(1e9, d0): - pulse.delay(10, d0) - - reference = pulse.Schedule() - reference += instructions.ShiftFrequency(1e9, d0) - reference += instructions.Delay(10, d0) - reference += instructions.ShiftFrequency(-1e9, d0) - - self.assertScheduleEqual(schedule, reference) - - def test_phase_compensated_frequency_offset(self): - """Test that the phase offset context properly compensates for phase - accumulation.""" - d0 = pulse.DriveChannel(0) - - with pulse.build(self.backend) as schedule: - with pulse.frequency_offset(1e9, d0, compensate_phase=True): - pulse.delay(10, d0) - - reference = pulse.Schedule() - reference += instructions.ShiftFrequency(1e9, d0) - reference += instructions.Delay(10, d0) - reference += instructions.ShiftPhase( - -2 * np.pi * ((1e9 * 10 * self.configuration.dt) % 1), d0 - ) - reference += instructions.ShiftFrequency(-1e9, d0) - - self.assertScheduleEqual(schedule, reference) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestChannels(TestBuilder): - """Test builder channels.""" - - def test_drive_channel(self): - """Text context builder drive channel.""" - with pulse.build(self.backend): - self.assertEqual(pulse.drive_channel(0), pulse.DriveChannel(0)) - - def test_measure_channel(self): - """Text context builder measure channel.""" - with pulse.build(self.backend): - self.assertEqual(pulse.measure_channel(0), pulse.MeasureChannel(0)) - - def test_acquire_channel(self): - """Text context builder acquire channel.""" - with pulse.build(self.backend): - self.assertEqual(pulse.acquire_channel(0), pulse.AcquireChannel(0)) - - def test_control_channel(self): - """Text context builder control channel.""" - with pulse.build(self.backend): - self.assertEqual(pulse.control_channels(0, 1)[0], pulse.ControlChannel(0)) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestInstructions(TestBuilder): - """Test builder instructions.""" - - def test_delay(self): - """Test delay instruction.""" - d0 = pulse.DriveChannel(0) - - with pulse.build() as schedule: - pulse.delay(10, d0) - - reference = pulse.Schedule() - reference += instructions.Delay(10, d0) - - self.assertScheduleEqual(schedule, reference) - - def test_play_parametric_pulse(self): - """Test play instruction with parametric pulse.""" - d0 = pulse.DriveChannel(0) - test_pulse = library.Constant(10, 1.0) - - with pulse.build() as schedule: - pulse.play(test_pulse, d0) - - reference = pulse.Schedule() - reference += instructions.Play(test_pulse, d0) - - self.assertScheduleEqual(schedule, reference) - - def test_play_sample_pulse(self): - """Test play instruction with sample pulse.""" - d0 = pulse.DriveChannel(0) - test_pulse = library.Waveform([0.0, 0.0]) - - with pulse.build() as schedule: - pulse.play(test_pulse, d0) - - reference = pulse.Schedule() - reference += instructions.Play(test_pulse, d0) - - self.assertScheduleEqual(schedule, reference) - - def test_play_array_pulse(self): - """Test play instruction on an array directly.""" - d0 = pulse.DriveChannel(0) - test_array = np.array([0.0, 0.0], dtype=np.complex128) - - with pulse.build() as schedule: - pulse.play(test_array, d0) - - reference = pulse.Schedule() - test_pulse = pulse.Waveform(test_array) - reference += instructions.Play(test_pulse, d0) - - self.assertScheduleEqual(schedule, reference) - - def test_play_name_argument(self): - """Test name argument for play instruction.""" - d0 = pulse.DriveChannel(0) - test_pulse = library.Constant(10, 1.0) - - with pulse.build() as schedule: - pulse.play(test_pulse, channel=d0, name="new_name") - - self.assertEqual(schedule.instructions[0][1].name, "new_name") - - def test_acquire_memory_slot(self): - """Test acquire instruction into memory slot.""" - acquire0 = pulse.AcquireChannel(0) - mem0 = pulse.MemorySlot(0) - - with pulse.build() as schedule: - pulse.acquire(10, acquire0, mem0) - - reference = pulse.Schedule() - reference += pulse.Acquire(10, acquire0, mem_slot=mem0) - - self.assertScheduleEqual(schedule, reference) - - def test_acquire_register_slot(self): - """Test acquire instruction into register slot.""" - acquire0 = pulse.AcquireChannel(0) - reg0 = pulse.RegisterSlot(0) - - with pulse.build() as schedule: - pulse.acquire(10, acquire0, reg0) - - reference = pulse.Schedule() - reference += pulse.Acquire(10, acquire0, reg_slot=reg0) - - self.assertScheduleEqual(schedule, reference) - - def test_acquire_qubit(self): - """Test acquire instruction on qubit.""" - acquire0 = pulse.AcquireChannel(0) - mem0 = pulse.MemorySlot(0) - - with pulse.build() as schedule: - pulse.acquire(10, 0, mem0) - - reference = pulse.Schedule() - reference += pulse.Acquire(10, acquire0, mem_slot=mem0) - - self.assertScheduleEqual(schedule, reference) - - def test_instruction_name_argument(self): - """Test setting the name of an instruction.""" - d0 = pulse.DriveChannel(0) - - for instruction_method in [ - pulse.delay, - pulse.set_frequency, - pulse.set_phase, - pulse.shift_frequency, - pulse.shift_phase, - ]: - with pulse.build() as schedule: - instruction_method(0, d0, name="instruction_name") - self.assertEqual(schedule.instructions[0][1].name, "instruction_name") - - def test_set_frequency(self): - """Test set frequency instruction.""" - d0 = pulse.DriveChannel(0) - - with pulse.build() as schedule: - pulse.set_frequency(1e9, d0) - - reference = pulse.Schedule() - reference += instructions.SetFrequency(1e9, d0) - - self.assertScheduleEqual(schedule, reference) - - def test_shift_frequency(self): - """Test shift frequency instruction.""" - d0 = pulse.DriveChannel(0) - - with pulse.build() as schedule: - pulse.shift_frequency(0.1e9, d0) - - reference = pulse.Schedule() - reference += instructions.ShiftFrequency(0.1e9, d0) - - self.assertScheduleEqual(schedule, reference) - - def test_set_phase(self): - """Test set phase instruction.""" - d0 = pulse.DriveChannel(0) - - with pulse.build() as schedule: - pulse.set_phase(3.14, d0) - - reference = pulse.Schedule() - reference += instructions.SetPhase(3.14, d0) - - self.assertScheduleEqual(schedule, reference) - - def test_shift_phase(self): - """Test shift phase instruction.""" - d0 = pulse.DriveChannel(0) - - with pulse.build() as schedule: - pulse.shift_phase(3.14, d0) - - reference = pulse.Schedule() - reference += instructions.ShiftPhase(3.14, d0) - - self.assertScheduleEqual(schedule, reference) - - def test_snapshot(self): - """Test snapshot instruction.""" - with pulse.build() as schedule: - pulse.snapshot("test", "state") - - reference = pulse.Schedule() - reference += instructions.Snapshot("test", "state") - - self.assertScheduleEqual(schedule, reference) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestDirectives(TestBuilder): - """Test builder directives.""" - - def test_barrier_with_align_right(self): - """Test barrier directive with right alignment context.""" - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - d2 = pulse.DriveChannel(2) - - with pulse.build() as schedule: - with pulse.align_right(): - pulse.delay(3, d0) - pulse.barrier(d0, d1, d2) - pulse.delay(11, d2) - with pulse.align_right(): - pulse.delay(5, d1) - pulse.delay(7, d0) - - reference = pulse.Schedule() - # d0 - reference.insert(0, instructions.Delay(3, d0), inplace=True) - reference.insert(7, instructions.Delay(7, d0), inplace=True) - # d1 - reference.insert(9, instructions.Delay(5, d1), inplace=True) - # d2 - reference.insert(3, instructions.Delay(11, d2), inplace=True) - - self.assertScheduleEqual(schedule, reference) - - def test_barrier_with_align_left(self): - """Test barrier directive with left alignment context.""" - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - d2 = pulse.DriveChannel(2) - - with pulse.build() as schedule: - with pulse.align_left(): - pulse.delay(3, d0) - pulse.barrier(d0, d1, d2) - pulse.delay(11, d2) - with pulse.align_left(): - pulse.delay(5, d1) - pulse.delay(7, d0) - - reference = pulse.Schedule() - # d0 - reference.insert(0, instructions.Delay(3, d0), inplace=True) - reference.insert(3, instructions.Delay(7, d0), inplace=True) - # d1 - reference.insert(3, instructions.Delay(5, d1), inplace=True) - # d2 - reference.insert(3, instructions.Delay(11, d2), inplace=True) - - self.assertScheduleEqual(schedule, reference) - - def test_barrier_on_qubits(self): - """Test barrier directive on qubits.""" - with pulse.build(self.backend) as schedule: - pulse.barrier(0, 1) - - reference = pulse.ScheduleBlock() - reference += directives.RelativeBarrier( - pulse.DriveChannel(0), - pulse.DriveChannel(1), - pulse.MeasureChannel(0), - pulse.MeasureChannel(1), - pulse.ControlChannel(0), - pulse.ControlChannel(1), - pulse.AcquireChannel(0), - pulse.AcquireChannel(1), - ) - self.assertEqual(schedule, reference) - - def test_trivial_barrier(self): - """Test that trivial barrier is not added.""" - with pulse.build() as schedule: - pulse.barrier(pulse.DriveChannel(0)) - - self.assertEqual(schedule, pulse.ScheduleBlock()) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestUtilities(TestBuilder): - """Test builder utilities.""" - - def test_active_backend(self): - """Test getting active builder backend.""" - with pulse.build(self.backend): - self.assertEqual(pulse.active_backend(), self.backend) - - def test_append_schedule(self): - """Test appending a schedule to the active builder.""" - d0 = pulse.DriveChannel(0) - reference = pulse.Schedule() - reference += instructions.Delay(10, d0) - - with pulse.build() as schedule: - builder.call(reference) - - self.assertScheduleEqual(schedule, reference) - - def test_append_instruction(self): - """Test appending an instruction to the active builder.""" - d0 = pulse.DriveChannel(0) - instruction = instructions.Delay(10, d0) - - with pulse.build() as schedule: - builder.append_instruction(instruction) - - self.assertScheduleEqual(schedule, (0, instruction)) - - def test_qubit_channels(self): - """Test getting the qubit channels of the active builder's backend.""" - with pulse.build(self.backend): - qubit_channels = pulse.qubit_channels(0) - - self.assertEqual( - qubit_channels, - { - pulse.DriveChannel(0), - pulse.MeasureChannel(0), - pulse.AcquireChannel(0), - pulse.ControlChannel(0), - pulse.ControlChannel(1), - }, - ) - - def test_num_qubits(self): - """Test builder utility to get number of qubits.""" - with pulse.build(self.backend): - self.assertEqual(pulse.num_qubits(), 2) - - def test_samples_to_seconds(self): - """Test samples to time""" - config = self.backend.configuration() - config.dt = 0.1 - with pulse.build(self.backend): - time = pulse.samples_to_seconds(100) - self.assertTrue(isinstance(time, float)) - self.assertEqual(pulse.samples_to_seconds(100), 10) - - def test_samples_to_seconds_array(self): - """Test samples to time (array format).""" - config = self.backend.configuration() - config.dt = 0.1 - with pulse.build(self.backend): - samples = np.array([100, 200, 300]) - times = pulse.samples_to_seconds(samples) - self.assertTrue(np.issubdtype(times.dtype, np.floating)) - np.testing.assert_allclose(times, np.array([10, 20, 30])) - - def test_seconds_to_samples(self): - """Test time to samples""" - config = self.backend.configuration() - config.dt = 0.1 - with pulse.build(self.backend): - samples = pulse.seconds_to_samples(10) - self.assertTrue(isinstance(samples, int)) - self.assertEqual(pulse.seconds_to_samples(10), 100) - - def test_seconds_to_samples_array(self): - """Test time to samples (array format).""" - config = self.backend.configuration() - config.dt = 0.1 - with pulse.build(self.backend): - times = np.array([10, 20, 30]) - samples = pulse.seconds_to_samples(times) - self.assertTrue(np.issubdtype(samples.dtype, np.integer)) - np.testing.assert_allclose(pulse.seconds_to_samples(times), np.array([100, 200, 300])) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestMacros(TestBuilder): - """Test builder macros.""" - - def test_macro(self): - """Test builder macro decorator.""" - - @pulse.macro - def nested(a): - pulse.play(pulse.Gaussian(100, a, 20), pulse.drive_channel(0)) - return a * 2 - - @pulse.macro - def test(): - pulse.play(pulse.Constant(100, 1.0), pulse.drive_channel(0)) - output = nested(0.5) - return output - - with pulse.build(self.backend) as schedule: - output = test() - self.assertEqual(output, 0.5 * 2) - - reference = pulse.Schedule() - reference += pulse.Play(pulse.Constant(100, 1.0), pulse.DriveChannel(0)) - reference += pulse.Play(pulse.Gaussian(100, 0.5, 20), pulse.DriveChannel(0)) - - self.assertScheduleEqual(schedule, reference) - - def test_measure(self): - """Test utility function - measure.""" - with pulse.build(self.backend) as schedule: - reg = pulse.measure(0) - - self.assertEqual(reg, pulse.MemorySlot(0)) - - reference = macros.measure( - qubits=[0], inst_map=self.inst_map, meas_map=self.configuration.meas_map - ) - - self.assertScheduleEqual(schedule, reference) - - def test_measure_multi_qubits(self): - """Test utility function - measure with multi qubits.""" - with pulse.build(self.backend) as schedule: - regs = pulse.measure([0, 1]) - - self.assertListEqual(regs, [pulse.MemorySlot(0), pulse.MemorySlot(1)]) - - reference = macros.measure( - qubits=[0, 1], inst_map=self.inst_map, meas_map=self.configuration.meas_map - ) - - self.assertScheduleEqual(schedule, reference) - - def test_measure_all(self): - """Test utility function - measure.""" - with pulse.build(self.backend) as schedule: - regs = pulse.measure_all() - - self.assertEqual(regs, [pulse.MemorySlot(0), pulse.MemorySlot(1)]) - reference = macros.measure_all(self.backend) - - self.assertScheduleEqual(schedule, reference) - - with self.assertWarns(DeprecationWarning): - backend = Fake127QPulseV1() - num_qubits = backend.configuration().num_qubits - with pulse.build(backend) as schedule: - with self.assertWarns(DeprecationWarning): - regs = pulse.measure_all() - - reference = backend.defaults().instruction_schedule_map.get( - "measure", list(range(num_qubits)) - ) - - self.assertScheduleEqual(schedule, reference) - - def test_delay_qubit(self): - """Test delaying on a qubit macro.""" - with pulse.build(self.backend) as schedule: - pulse.delay_qubits(10, 0) - - d0 = pulse.DriveChannel(0) - m0 = pulse.MeasureChannel(0) - a0 = pulse.AcquireChannel(0) - u0 = pulse.ControlChannel(0) - u1 = pulse.ControlChannel(1) - - reference = pulse.Schedule() - reference += instructions.Delay(10, d0) - reference += instructions.Delay(10, m0) - reference += instructions.Delay(10, a0) - reference += instructions.Delay(10, u0) - reference += instructions.Delay(10, u1) - - self.assertScheduleEqual(schedule, reference) - - def test_delay_qubits(self): - """Test delaying on multiple qubits to make sure we don't insert delays twice.""" - with pulse.build(self.backend) as schedule: - pulse.delay_qubits(10, 0, 1) - - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - m0 = pulse.MeasureChannel(0) - m1 = pulse.MeasureChannel(1) - a0 = pulse.AcquireChannel(0) - a1 = pulse.AcquireChannel(1) - u0 = pulse.ControlChannel(0) - u1 = pulse.ControlChannel(1) - - reference = pulse.Schedule() - reference += instructions.Delay(10, d0) - reference += instructions.Delay(10, d1) - reference += instructions.Delay(10, m0) - reference += instructions.Delay(10, m1) - reference += instructions.Delay(10, a0) - reference += instructions.Delay(10, a1) - reference += instructions.Delay(10, u0) - reference += instructions.Delay(10, u1) - - self.assertScheduleEqual(schedule, reference) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestBuilderComposition(TestBuilder): - """Test more sophisticated composite builder examples.""" - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestSubroutineCall(TestBuilder): - """Test for calling subroutine.""" - - def test_call(self): - """Test calling schedule instruction.""" - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - - reference = pulse.Schedule() - reference = reference.insert(10, instructions.Delay(10, d0)) - reference += instructions.Delay(20, d1) - - ref_sched = pulse.Schedule() - ref_sched += reference - - with pulse.build() as schedule: - with pulse.align_right(): - builder.call(reference) - - self.assertScheduleEqual(schedule, ref_sched) - - with pulse.build() as schedule: - with pulse.align_right(): - pulse.call(reference) - - self.assertScheduleEqual(schedule, ref_sched) - - def test_subroutine_not_transformed(self): - """Test called schedule is not transformed.""" - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - - subprogram = pulse.Schedule() - subprogram.insert(0, pulse.Delay(30, d0), inplace=True) - subprogram.insert(10, pulse.Delay(10, d1), inplace=True) - - with pulse.build() as target: - with pulse.align_right(): - pulse.delay(10, d1) - pulse.call(subprogram) - - reference = pulse.Schedule() - reference.insert(0, pulse.Delay(10, d1), inplace=True) - reference.insert(10, pulse.Delay(30, d0), inplace=True) - reference.insert(20, pulse.Delay(10, d1), inplace=True) - - self.assertScheduleEqual(target, reference) - - def test_deepcopying_subroutine(self): - """Test if deepcopying the schedule can copy inline subroutine.""" - from copy import deepcopy - - with pulse.build() as subroutine: - pulse.delay(10, pulse.DriveChannel(0)) - - with pulse.build() as main_prog: - pulse.call(subroutine) - - copied_prog = deepcopy(main_prog) - - main_call = main_prog.instructions[0] - copy_call = copied_prog.instructions[0] - - self.assertNotEqual(id(main_call), id(copy_call)) - - def test_call_with_parameters(self): - """Test call subroutine with parameters.""" - amp = circuit.Parameter("amp") - - with pulse.build() as subroutine: - pulse.play(pulse.Gaussian(160, amp, 40), pulse.DriveChannel(0)) - - with pulse.build() as main_prog: - pulse.call(subroutine, amp=0.1) - pulse.call(subroutine, amp=0.3) - - self.assertEqual(main_prog.is_parameterized(), False) - - assigned_sched = target_qobj_transform(main_prog) - - play_0 = assigned_sched.instructions[0][1] - play_1 = assigned_sched.instructions[1][1] - - self.assertEqual(play_0.pulse.amp, 0.1) - self.assertEqual(play_1.pulse.amp, 0.3) - - def test_call_partly_with_parameters(self): - """Test multiple calls partly with parameters then assign.""" - amp = circuit.Parameter("amp") - - with pulse.build() as subroutine: - pulse.play(pulse.Gaussian(160, amp, 40), pulse.DriveChannel(0)) - - with pulse.build() as main_prog: - pulse.call(subroutine, amp=0.1) - pulse.call(subroutine) - - self.assertEqual(main_prog.is_parameterized(), True) - - main_prog.assign_parameters({amp: 0.5}) - self.assertEqual(main_prog.is_parameterized(), False) - - assigned_sched = target_qobj_transform(main_prog) - - play_0 = assigned_sched.instructions[0][1] - play_1 = assigned_sched.instructions[1][1] - - self.assertEqual(play_0.pulse.amp, 0.1) - self.assertEqual(play_1.pulse.amp, 0.5) - - def test_call_with_not_existing_parameter(self): - """Test call subroutine with parameter not defined.""" - amp = circuit.Parameter("amp1") - - with pulse.build() as subroutine: - pulse.play(pulse.Gaussian(160, amp, 40), pulse.DriveChannel(0)) - - with self.assertRaises(exceptions.PulseError): - with pulse.build(): - pulse.call(subroutine, amp=0.1) - - def test_call_with_common_parameter(self): - """Test call subroutine with parameter that is defined multiple times.""" - amp = circuit.Parameter("amp") - - with pulse.build() as subroutine: - pulse.play(pulse.Gaussian(160, amp, 40), pulse.DriveChannel(0)) - pulse.play(pulse.Gaussian(320, amp, 80), pulse.DriveChannel(0)) - - with pulse.build() as main_prog: - pulse.call(subroutine, amp=0.1) - - assigned_sched = target_qobj_transform(main_prog) - - play_0 = assigned_sched.instructions[0][1] - play_1 = assigned_sched.instructions[1][1] - - self.assertEqual(play_0.pulse.amp, 0.1) - self.assertEqual(play_1.pulse.amp, 0.1) - - def test_call_with_parameter_name_collision(self): - """Test call subroutine with duplicated parameter names.""" - amp1 = circuit.Parameter("amp") - amp2 = circuit.Parameter("amp") - sigma = circuit.Parameter("sigma") - - with pulse.build() as subroutine: - pulse.play(pulse.Gaussian(160, amp1, sigma), pulse.DriveChannel(0)) - pulse.play(pulse.Gaussian(160, amp2, sigma), pulse.DriveChannel(0)) - - with pulse.build() as main_prog: - pulse.call(subroutine, value_dict={amp1: 0.1, amp2: 0.2}, sigma=40) - - assigned_sched = target_qobj_transform(main_prog) - - play_0 = assigned_sched.instructions[0][1] - play_1 = assigned_sched.instructions[1][1] - - self.assertEqual(play_0.pulse.amp, 0.1) - self.assertEqual(play_0.pulse.sigma, 40) - self.assertEqual(play_1.pulse.amp, 0.2) - self.assertEqual(play_1.pulse.sigma, 40) - - def test_call_subroutine_with_parametrized_duration(self): - """Test call subroutine containing a parametrized duration.""" - dur = circuit.Parameter("dur") - - with pulse.build() as subroutine: - pulse.play(pulse.Constant(dur, 0.1), pulse.DriveChannel(0)) - pulse.play(pulse.Constant(dur, 0.2), pulse.DriveChannel(0)) - - with pulse.build() as main: - pulse.call(subroutine) - - self.assertEqual(len(main.blocks), 1) diff --git a/test/python/pulse/test_instruction_schedule_map.py b/test/python/pulse/test_instruction_schedule_map.py deleted file mode 100644 index 1b3d9e31cb6c..000000000000 --- a/test/python/pulse/test_instruction_schedule_map.py +++ /dev/null @@ -1,636 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2019, 2024. -# -# 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 InstructionScheduleMap.""" -import copy -import pickle - -import numpy as np - -from qiskit.circuit.library.standard_gates import U1Gate, U3Gate, CXGate, XGate -from qiskit.circuit.parameter import Parameter -from qiskit.circuit.parameterexpression import ParameterExpression -from qiskit.pulse import ( - InstructionScheduleMap, - Play, - PulseError, - Schedule, - ScheduleBlock, - Waveform, - ShiftPhase, - Constant, -) -from qiskit.pulse.calibration_entries import CalibrationPublisher -from qiskit.pulse.channels import DriveChannel -from qiskit.qobj import PulseQobjInstruction -from qiskit.qobj.converters import QobjToInstructionConverter -from qiskit.providers.fake_provider import FakeOpenPulse2Q, Fake7QPulseV1 -from test import QiskitTestCase # pylint: disable=wrong-import-order -from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestInstructionScheduleMap(QiskitTestCase): - """Test the InstructionScheduleMap.""" - - def test_add(self): - """Test add, and that errors are raised when expected.""" - sched = Schedule() - sched.append(Play(Waveform(np.ones(5)), DriveChannel(0)), inplace=True) - inst_map = InstructionScheduleMap() - - inst_map.add("u1", 1, sched) - inst_map.add("u1", 0, sched) - - self.assertIn("u1", inst_map.instructions) - self.assertEqual(inst_map.qubits_with_instruction("u1"), [0, 1]) - self.assertTrue("u1" in inst_map.qubit_instructions(0)) - - with self.assertRaises(PulseError): - inst_map.add("u1", (), sched) - with self.assertRaises(PulseError): - inst_map.add("u1", 1, "not a schedule") - - def test_add_block(self): - """Test add block, and that errors are raised when expected.""" - sched = ScheduleBlock() - sched.append(Play(Waveform(np.ones(5)), DriveChannel(0)), inplace=True) - inst_map = InstructionScheduleMap() - - inst_map.add("u1", 1, sched) - inst_map.add("u1", 0, sched) - - self.assertIn("u1", inst_map.instructions) - self.assertEqual(inst_map.qubits_with_instruction("u1"), [0, 1]) - self.assertTrue("u1" in inst_map.qubit_instructions(0)) - - def test_instructions(self): - """Test `instructions`.""" - sched = Schedule() - inst_map = InstructionScheduleMap() - - inst_map.add("u1", 1, sched) - inst_map.add("u3", 0, sched) - - instructions = inst_map.instructions - for inst in ["u1", "u3"]: - self.assertTrue(inst in instructions) - - def test_has(self): - """Test `has` and `assert_has`.""" - sched = Schedule() - inst_map = InstructionScheduleMap() - - inst_map.add("u1", (0,), sched) - inst_map.add("cx", [0, 1], sched) - - self.assertTrue(inst_map.has("u1", [0])) - self.assertTrue(inst_map.has("cx", (0, 1))) - with self.assertRaises(PulseError): - inst_map.assert_has("dne", [0]) - with self.assertRaises(PulseError): - inst_map.assert_has("cx", 100) - - def test_has_from_mock(self): - """Test `has` and `assert_has` from mock data.""" - with self.assertWarns(DeprecationWarning): - backend = FakeOpenPulse2Q() - inst_map = backend.defaults().instruction_schedule_map - self.assertTrue(inst_map.has("u1", [0])) - self.assertTrue(inst_map.has("cx", (0, 1))) - self.assertTrue(inst_map.has("u3", 0)) - self.assertTrue(inst_map.has("measure", [0, 1])) - self.assertFalse(inst_map.has("u1", [0, 1])) - with self.assertRaises(PulseError): - inst_map.assert_has("dne", [0]) - with self.assertRaises(PulseError): - inst_map.assert_has("cx", 100) - - def test_qubits_with_instruction(self): - """Test `qubits_with_instruction`.""" - sched = Schedule() - inst_map = InstructionScheduleMap() - - inst_map.add("u1", (0,), sched) - inst_map.add("u1", (1,), sched) - inst_map.add("cx", [0, 1], sched) - - self.assertEqual(inst_map.qubits_with_instruction("u1"), [0, 1]) - self.assertEqual(inst_map.qubits_with_instruction("cx"), [(0, 1)]) - self.assertEqual(inst_map.qubits_with_instruction("none"), []) - - def test_qubit_instructions(self): - """Test `qubit_instructions`.""" - sched = Schedule() - inst_map = InstructionScheduleMap() - - inst_map.add("u1", (0,), sched) - inst_map.add("u1", (1,), sched) - inst_map.add("cx", [0, 1], sched) - - self.assertEqual(inst_map.qubit_instructions(0), ["u1"]) - self.assertEqual(inst_map.qubit_instructions(1), ["u1"]) - self.assertEqual(inst_map.qubit_instructions((0, 1)), ["cx"]) - self.assertEqual(inst_map.qubit_instructions(10), []) - - def test_get(self): - """Test `get`.""" - sched = Schedule() - sched.append(Play(Waveform(np.ones(5)), DriveChannel(0)), inplace=True) - inst_map = InstructionScheduleMap() - inst_map.add("x", 0, sched) - - self.assertEqual(sched, inst_map.get("x", (0,))) - - def test_get_block(self): - """Test `get` block.""" - sched = ScheduleBlock() - sched.append(Play(Waveform(np.ones(5)), DriveChannel(0)), inplace=True) - inst_map = InstructionScheduleMap() - inst_map.add("x", 0, sched) - - self.assertEqual(sched, inst_map.get("x", (0,))) - - def test_remove(self): - """Test removing a defined operation and removing an undefined operation.""" - sched = Schedule() - inst_map = InstructionScheduleMap() - - inst_map.add("tmp", 0, sched) - inst_map.remove("tmp", 0) - self.assertFalse(inst_map.has("tmp", 0)) - with self.assertRaises(PulseError): - inst_map.remove("not_there", (0,)) - self.assertFalse("tmp" in inst_map.qubit_instructions(0)) - - def test_pop(self): - """Test pop with default.""" - sched = Schedule() - inst_map = InstructionScheduleMap() - - inst_map.add("tmp", 100, sched) - self.assertEqual(inst_map.pop("tmp", 100), sched) - self.assertFalse(inst_map.has("tmp", 100)) - - self.assertEqual(inst_map.qubit_instructions(100), []) - self.assertEqual(inst_map.qubits_with_instruction("tmp"), []) - with self.assertRaises(PulseError): - inst_map.pop("not_there", (0,)) - - def test_add_gate(self): - """Test add, and that errors are raised when expected.""" - sched = Schedule() - sched.append(Play(Waveform(np.ones(5)), DriveChannel(0))) - inst_map = InstructionScheduleMap() - - inst_map.add(U1Gate(0), 1, sched) - inst_map.add(U1Gate(0), 0, sched) - - self.assertIn("u1", inst_map.instructions) - self.assertEqual(inst_map.qubits_with_instruction(U1Gate(0)), [0, 1]) - self.assertTrue("u1" in inst_map.qubit_instructions(0)) - - with self.assertRaises(PulseError): - inst_map.add(U1Gate(0), (), sched) - with self.assertRaises(PulseError): - inst_map.add(U1Gate(0), 1, "not a schedule") - - def test_instructions_gate(self): - """Test `instructions`.""" - sched = Schedule() - inst_map = InstructionScheduleMap() - - inst_map.add(U1Gate(0), 1, sched) - inst_map.add(U3Gate(0, 0, 0), 0, sched) - - instructions = inst_map.instructions - for inst in ["u1", "u3"]: - self.assertTrue(inst in instructions) - - def test_has_gate(self): - """Test `has` and `assert_has`.""" - sched = Schedule() - inst_map = InstructionScheduleMap() - - inst_map.add(U1Gate(0), (0,), sched) - inst_map.add(CXGate(), [0, 1], sched) - - self.assertTrue(inst_map.has(U1Gate(0), [0])) - self.assertTrue(inst_map.has(CXGate(), (0, 1))) - with self.assertRaises(PulseError): - inst_map.assert_has("dne", [0]) - with self.assertRaises(PulseError): - inst_map.assert_has(CXGate(), 100) - - def test_has_from_mock_gate(self): - """Test `has` and `assert_has` from mock data.""" - with self.assertWarns(DeprecationWarning): - backend = FakeOpenPulse2Q() - inst_map = backend.defaults().instruction_schedule_map - self.assertTrue(inst_map.has(U1Gate(0), [0])) - self.assertTrue(inst_map.has(CXGate(), (0, 1))) - self.assertTrue(inst_map.has(U3Gate(0, 0, 0), 0)) - self.assertTrue(inst_map.has("measure", [0, 1])) - self.assertFalse(inst_map.has(U1Gate(0), [0, 1])) - with self.assertRaises(PulseError): - inst_map.assert_has("dne", [0]) - with self.assertRaises(PulseError): - inst_map.assert_has(CXGate(), 100) - - def test_qubits_with_instruction_gate(self): - """Test `qubits_with_instruction`.""" - sched = Schedule() - inst_map = InstructionScheduleMap() - - inst_map.add(U1Gate(0), (0,), sched) - inst_map.add(U1Gate(0), (1,), sched) - inst_map.add(CXGate(), [0, 1], sched) - - self.assertEqual(inst_map.qubits_with_instruction(U1Gate(0)), [0, 1]) - self.assertEqual(inst_map.qubits_with_instruction(CXGate()), [(0, 1)]) - self.assertEqual(inst_map.qubits_with_instruction("none"), []) - - def test_qubit_instructions_gate(self): - """Test `qubit_instructions`.""" - sched = Schedule() - inst_map = InstructionScheduleMap() - - inst_map.add(U1Gate(0), (0,), sched) - inst_map.add(U1Gate(0), (1,), sched) - inst_map.add(CXGate(), [0, 1], sched) - - self.assertEqual(inst_map.qubit_instructions(0), ["u1"]) - self.assertEqual(inst_map.qubit_instructions(1), ["u1"]) - self.assertEqual(inst_map.qubit_instructions((0, 1)), ["cx"]) - self.assertEqual(inst_map.qubit_instructions(10), []) - - def test_get_gate(self): - """Test `get`.""" - sched = Schedule() - sched.append(Play(Waveform(np.ones(5)), DriveChannel(0))) - inst_map = InstructionScheduleMap() - inst_map.add(XGate(), 0, sched) - - self.assertEqual(sched, inst_map.get(XGate(), (0,))) - - def test_remove_gate(self): - """Test removing a defined operation and removing an undefined operation.""" - sched = Schedule() - inst_map = InstructionScheduleMap() - - inst_map.add("tmp", 0, sched) - inst_map.remove("tmp", 0) - self.assertFalse(inst_map.has("tmp", 0)) - with self.assertRaises(PulseError): - inst_map.remove("not_there", (0,)) - self.assertFalse("tmp" in inst_map.qubit_instructions(0)) - - def test_pop_gate(self): - """Test pop with default.""" - sched = Schedule() - inst_map = InstructionScheduleMap() - - inst_map.add(XGate(), 100, sched) - self.assertEqual(inst_map.pop(XGate(), 100), sched) - self.assertFalse(inst_map.has(XGate(), 100)) - - self.assertEqual(inst_map.qubit_instructions(100), []) - self.assertEqual(inst_map.qubits_with_instruction(XGate()), []) - with self.assertRaises(PulseError): - inst_map.pop("not_there", (0,)) - - def test_sequenced_parameterized_schedule(self): - """Test parameterized schedule consists of multiple instruction.""" - - with self.assertWarns(DeprecationWarning): - converter = QobjToInstructionConverter([], buffer=0) - qobjs = [ - PulseQobjInstruction(name="fc", ch="d0", t0=10, phase="P1"), - PulseQobjInstruction(name="fc", ch="d0", t0=20, phase="P2"), - PulseQobjInstruction(name="fc", ch="d0", t0=30, phase="P3"), - ] - converted_instruction = [converter(qobj) for qobj in qobjs] - - inst_map = InstructionScheduleMap() - - inst_map.add("inst_seq", 0, Schedule(*converted_instruction, name="inst_seq")) - - with self.assertRaises(PulseError): - inst_map.get("inst_seq", 0, P1=1, P2=2, P3=3, P4=4, P5=5) - - with self.assertRaises(PulseError): - inst_map.get("inst_seq", 0, 1, 2, 3, 4, 5, 6, 7, 8) - - p3_expr = Parameter("p3") - p3_expr = p3_expr.bind({p3_expr: 3}) - - sched = inst_map.get("inst_seq", 0, 1, 2, p3_expr) - self.assertEqual(sched.instructions[0][-1].phase, 1) - self.assertEqual(sched.instructions[1][-1].phase, 2) - self.assertEqual(sched.instructions[2][-1].phase, 3) - - sched = inst_map.get("inst_seq", 0, P1=1, P2=2, P3=p3_expr) - self.assertEqual(sched.instructions[0][-1].phase, 1) - self.assertEqual(sched.instructions[1][-1].phase, 2) - self.assertEqual(sched.instructions[2][-1].phase, 3) - - sched = inst_map.get("inst_seq", 0, 1, 2, P3=p3_expr) - self.assertEqual(sched.instructions[0][-1].phase, 1) - self.assertEqual(sched.instructions[1][-1].phase, 2) - self.assertEqual(sched.instructions[2][-1].phase, 3) - - def test_schedule_generator(self): - """Test schedule generator functionality.""" - - dur_val = 10 - amp = 1.0 - - def test_func(dur: int): - sched = Schedule() - waveform = Constant(int(dur), amp).get_waveform() - sched += Play(waveform, DriveChannel(0)) - return sched - - expected_sched = Schedule() - cons_waveform = Constant(dur_val, amp).get_waveform() - expected_sched += Play(cons_waveform, DriveChannel(0)) - - inst_map = InstructionScheduleMap() - inst_map.add("f", (0,), test_func) - self.assertEqual(inst_map.get("f", (0,), dur_val), expected_sched) - - self.assertEqual(inst_map.get_parameters("f", (0,)), ("dur",)) - - def test_schedule_generator_supports_parameter_expressions(self): - """Test expression-based schedule generator functionality.""" - - t_param = Parameter("t") - amp = 1.0 - - def test_func(dur: ParameterExpression, t_val: int): - dur_bound = dur.bind({t_param: t_val}) - sched = Schedule() - waveform = Constant(int(float(dur_bound)), amp).get_waveform() - sched += Play(waveform, DriveChannel(0)) - return sched - - expected_sched = Schedule() - cons_waveform = Constant(10, amp).get_waveform() - expected_sched += Play(cons_waveform, DriveChannel(0)) - - inst_map = InstructionScheduleMap() - inst_map.add("f", (0,), test_func) - self.assertEqual(inst_map.get("f", (0,), dur=2 * t_param, t_val=5), expected_sched) - - self.assertEqual( - inst_map.get_parameters("f", (0,)), - ( - "dur", - "t_val", - ), - ) - - def test_schedule_with_non_alphanumeric_ordering(self): - """Test adding and getting schedule with non obvious parameter ordering.""" - theta = Parameter("theta") - phi = Parameter("phi") - lamb = Parameter("lam") - - target_sched = Schedule() - target_sched.insert(0, ShiftPhase(theta, DriveChannel(0)), inplace=True) - target_sched.insert(10, ShiftPhase(phi, DriveChannel(0)), inplace=True) - target_sched.insert(20, ShiftPhase(lamb, DriveChannel(0)), inplace=True) - - inst_map = InstructionScheduleMap() - inst_map.add("target_sched", (0,), target_sched, arguments=["theta", "phi", "lam"]) - - ref_sched = Schedule() - ref_sched.insert(0, ShiftPhase(0, DriveChannel(0)), inplace=True) - ref_sched.insert(10, ShiftPhase(1, DriveChannel(0)), inplace=True) - ref_sched.insert(20, ShiftPhase(2, DriveChannel(0)), inplace=True) - - # if parameter is alphanumerical ordering this maps to - # theta -> 2 - # phi -> 1 - # lamb -> 0 - # however non alphanumerical ordering is specified in add method thus mapping should be - # theta -> 0 - # phi -> 1 - # lamb -> 2 - test_sched = inst_map.get("target_sched", (0,), 0, 1, 2) - - for test_inst, ref_inst in zip(test_sched.instructions, ref_sched.instructions): - self.assertEqual(test_inst[0], ref_inst[0]) - self.assertEqual(test_inst[1], ref_inst[1]) - - def test_binding_too_many_parameters(self): - """Test getting schedule with too many parameter binding.""" - param = Parameter("param") - - target_sched = Schedule() - target_sched.insert(0, ShiftPhase(param, DriveChannel(0)), inplace=True) - - inst_map = InstructionScheduleMap() - inst_map.add("target_sched", (0,), target_sched) - - with self.assertRaises(PulseError): - inst_map.get("target_sched", (0,), 0, 1, 2, 3) - - def test_binding_unassigned_parameters(self): - """Test getting schedule with unassigned parameter binding.""" - param = Parameter("param") - - target_sched = Schedule() - target_sched.insert(0, ShiftPhase(param, DriveChannel(0)), inplace=True) - - inst_map = InstructionScheduleMap() - inst_map.add("target_sched", (0,), target_sched) - - with self.assertRaises(PulseError): - inst_map.get("target_sched", (0,), P0=0) - - def test_schedule_with_multiple_parameters_under_same_name(self): - """Test getting schedule with parameters that have the same name.""" - param1 = Parameter("param") - param2 = Parameter("param") - param3 = Parameter("param") - - target_sched = Schedule() - target_sched.insert(0, ShiftPhase(param1, DriveChannel(0)), inplace=True) - target_sched.insert(10, ShiftPhase(param2, DriveChannel(0)), inplace=True) - target_sched.insert(20, ShiftPhase(param3, DriveChannel(0)), inplace=True) - - inst_map = InstructionScheduleMap() - inst_map.add("target_sched", (0,), target_sched) - - ref_sched = Schedule() - ref_sched.insert(0, ShiftPhase(1.23, DriveChannel(0)), inplace=True) - ref_sched.insert(10, ShiftPhase(1.23, DriveChannel(0)), inplace=True) - ref_sched.insert(20, ShiftPhase(1.23, DriveChannel(0)), inplace=True) - - test_sched = inst_map.get("target_sched", (0,), param=1.23) - - for test_inst, ref_inst in zip(test_sched.instructions, ref_sched.instructions): - self.assertEqual(test_inst[0], ref_inst[0]) - self.assertAlmostEqual(test_inst[1], ref_inst[1]) - - def test_get_schedule_with_unbound_parameter(self): - """Test get schedule with partial binding.""" - param1 = Parameter("param1") - param2 = Parameter("param2") - - target_sched = Schedule() - target_sched.insert(0, ShiftPhase(param1, DriveChannel(0)), inplace=True) - target_sched.insert(10, ShiftPhase(param2, DriveChannel(0)), inplace=True) - - inst_map = InstructionScheduleMap() - inst_map.add("target_sched", (0,), target_sched) - - ref_sched = Schedule() - ref_sched.insert(0, ShiftPhase(param1, DriveChannel(0)), inplace=True) - ref_sched.insert(10, ShiftPhase(1.23, DriveChannel(0)), inplace=True) - - test_sched = inst_map.get("target_sched", (0,), param2=1.23) - - for test_inst, ref_inst in zip(test_sched.instructions, ref_sched.instructions): - self.assertEqual(test_inst[0], ref_inst[0]) - self.assertAlmostEqual(test_inst[1], ref_inst[1]) - - def test_partially_bound_callable(self): - """Test register partial function.""" - import functools - - def callable_schedule(par_b, par_a): - sched = Schedule() - sched.insert(10, Play(Constant(10, par_b), DriveChannel(0)), inplace=True) - sched.insert(20, Play(Constant(10, par_a), DriveChannel(0)), inplace=True) - return sched - - ref_sched = Schedule() - ref_sched.insert(10, Play(Constant(10, 0.1), DriveChannel(0)), inplace=True) - ref_sched.insert(20, Play(Constant(10, 0.2), DriveChannel(0)), inplace=True) - - inst_map = InstructionScheduleMap() - - def test_callable_sched1(par_b): - return callable_schedule(par_b, 0.2) - - inst_map.add("my_gate1", (0,), test_callable_sched1, ["par_b"]) - ret_sched = inst_map.get("my_gate1", (0,), par_b=0.1) - self.assertEqual(ret_sched, ref_sched) - - # bind partially - test_callable_sched2 = functools.partial(callable_schedule, par_a=0.2) - - inst_map.add("my_gate2", (0,), test_callable_sched2, ["par_b"]) - ret_sched = inst_map.get("my_gate2", (0,), par_b=0.1) - self.assertEqual(ret_sched, ref_sched) - - def test_two_instmaps_equal(self): - """Test eq method when two instmaps are identical.""" - with self.assertWarns(DeprecationWarning): - backend = Fake7QPulseV1() - instmap1 = backend.defaults().instruction_schedule_map - instmap2 = copy.deepcopy(instmap1) - - self.assertEqual(instmap1, instmap2) - - def test_two_instmaps_different(self): - """Test eq method when two instmaps are not identical.""" - with self.assertWarns(DeprecationWarning): - backend = Fake7QPulseV1() - instmap1 = backend.defaults().instruction_schedule_map - instmap2 = copy.deepcopy(instmap1) - - # override one of instruction - instmap2.add("sx", (0,), Schedule()) - - self.assertNotEqual(instmap1, instmap2) - - def test_instmap_picklable(self): - """Test if instmap can be pickled.""" - with self.assertWarns(DeprecationWarning): - backend = Fake7QPulseV1() - instmap = backend.defaults().instruction_schedule_map - - ser_obj = pickle.dumps(instmap) - deser_instmap = pickle.loads(ser_obj) - - self.assertEqual(instmap, deser_instmap) - - def test_instmap_picklable_with_arguments(self): - """Test instmap pickling with an edge case. - - This test attempts to pickle instmap with custom entry, - in which arguments are provided by users in the form of - python dict key object that is not picklable. - """ - with self.assertWarns(DeprecationWarning): - backend = Fake7QPulseV1() - instmap = backend.defaults().instruction_schedule_map - - param1 = Parameter("P1") - param2 = Parameter("P2") - sched = Schedule() - sched.insert(0, Play(Constant(100, param1), DriveChannel(0)), inplace=True) - sched.insert(0, Play(Constant(100, param2), DriveChannel(1)), inplace=True) - to_assign = {"P1": 0.1, "P2": 0.2} - - # Note that dict keys is not picklable - # Instmap should typecast it into list to pickle itself. - instmap.add("custom", (0, 1), sched, arguments=to_assign.keys()) - - ser_obj = pickle.dumps(instmap) - deser_instmap = pickle.loads(ser_obj) - - self.assertEqual(instmap, deser_instmap) - - def test_check_backend_provider_cals(self): - """Test if schedules provided by backend provider is distinguishable.""" - with self.assertWarns(DeprecationWarning): - backend = FakeOpenPulse2Q() - instmap = backend.defaults().instruction_schedule_map - publisher = instmap.get("u1", (0,), P0=0).metadata["publisher"] - - self.assertEqual(publisher, CalibrationPublisher.BACKEND_PROVIDER) - - def test_check_user_cals(self): - """Test if schedules provided by user is distinguishable.""" - with self.assertWarns(DeprecationWarning): - backend = FakeOpenPulse2Q() - instmap = backend.defaults().instruction_schedule_map - - test_u1 = Schedule() - test_u1 += ShiftPhase(Parameter("P0"), DriveChannel(0)) - - instmap.add("u1", (0,), test_u1, arguments=["P0"]) - publisher = instmap.get("u1", (0,), P0=0).metadata["publisher"] - - self.assertEqual(publisher, CalibrationPublisher.QISKIT) - - def test_has_custom_gate(self): - """Test method to check custom gate.""" - with self.assertWarns(DeprecationWarning): - backend = FakeOpenPulse2Q() - instmap = backend.defaults().instruction_schedule_map - - self.assertFalse(instmap.has_custom_gate()) - - # add custom schedule - some_sched = Schedule() - instmap.add("u3", (0,), some_sched) - - self.assertTrue(instmap.has_custom_gate()) - - # delete custom schedule - instmap.remove("u3", (0,)) - self.assertFalse(instmap.has_custom_gate()) diff --git a/test/python/pulse/test_macros.py b/test/python/pulse/test_macros.py deleted file mode 100644 index c1f0b93339ab..000000000000 --- a/test/python/pulse/test_macros.py +++ /dev/null @@ -1,256 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2019, 2024. -# -# 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 cases for Pulse Macro functions.""" - -from qiskit.pulse import ( - Schedule, - AcquireChannel, - Acquire, - InstructionScheduleMap, - MeasureChannel, - MemorySlot, - GaussianSquare, - Play, -) -from qiskit.pulse import macros -from qiskit.pulse.exceptions import PulseError -from qiskit.providers.fake_provider import FakeOpenPulse2Q, Fake27QPulseV1, GenericBackendV2 -from test import QiskitTestCase # pylint: disable=wrong-import-order -from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestMeasure(QiskitTestCase): - """Pulse measure macro.""" - - @ignore_pulse_deprecation_warnings - def setUp(self): - super().setUp() - with self.assertWarns(DeprecationWarning): - self.backend = FakeOpenPulse2Q() - self.backend_v1 = Fake27QPulseV1() - - self.inst_map = self.backend.defaults().instruction_schedule_map - with self.assertWarns(DeprecationWarning): - self.backend_v2 = GenericBackendV2( - num_qubits=27, - calibrate_instructions=self.backend_v1.defaults().instruction_schedule_map, - seed=42, - ) - - def test_measure(self): - """Test macro - measure.""" - sched = macros.measure(qubits=[0], backend=self.backend) - expected = Schedule( - self.inst_map.get("measure", [0, 1]).filter(channels=[MeasureChannel(0)]), - Acquire(10, AcquireChannel(0), MemorySlot(0)), - ) - self.assertEqual(sched.instructions, expected.instructions) - - def test_measure_sched_with_qubit_mem_slots(self): - """Test measure with custom qubit_mem_slots.""" - sched = macros.measure(qubits=[0], backend=self.backend, qubit_mem_slots={0: 1}) - expected = Schedule( - self.inst_map.get("measure", [0, 1]).filter(channels=[MeasureChannel(0)]), - Acquire(10, AcquireChannel(0), MemorySlot(1)), - ) - self.assertEqual(sched.instructions, expected.instructions) - - def test_measure_sched_with_meas_map(self): - """Test measure with custom meas_map as list and dict.""" - sched_with_meas_map_list = macros.measure( - qubits=[0], backend=self.backend, meas_map=[[0, 1]] - ) - sched_with_meas_map_dict = macros.measure( - qubits=[0], backend=self.backend, meas_map={0: [0, 1], 1: [0, 1]} - ) - expected = Schedule( - self.inst_map.get("measure", [0, 1]).filter(channels=[MeasureChannel(0)]), - Acquire(10, AcquireChannel(0), MemorySlot(0)), - ) - self.assertEqual(sched_with_meas_map_list.instructions, expected.instructions) - self.assertEqual(sched_with_meas_map_dict.instructions, expected.instructions) - - def test_measure_with_custom_inst_map(self): - """Test measure with custom inst_map, meas_map with measure_name.""" - q0_sched = Play(GaussianSquare(1200, 1, 0.4, 1150), MeasureChannel(0)) - q0_sched += Acquire(1200, AcquireChannel(0), MemorySlot(0)) - inst_map = InstructionScheduleMap() - inst_map.add("my_sched", 0, q0_sched) - sched = macros.measure( - qubits=[0], measure_name="my_sched", inst_map=inst_map, meas_map=[[0]] - ) - self.assertEqual(sched.instructions, q0_sched.instructions) - - with self.assertRaises(PulseError): - macros.measure(qubits=[0], measure_name="name", inst_map=inst_map, meas_map=[[0]]) - - def test_fail_measure(self): - """Test failing measure.""" - with self.assertRaises(PulseError): - macros.measure(qubits=[0], meas_map=self.backend.configuration().meas_map) - with self.assertRaises(PulseError): - macros.measure(qubits=[0], inst_map=self.inst_map) - - def test_measure_v2(self): - """Test macro - measure with backendV2.""" - sched = macros.measure(qubits=[0], backend=self.backend_v2) - with self.assertWarns(DeprecationWarning): - expected = self.backend_v2.target.get_calibration("measure", (0,)).filter( - channels=[MeasureChannel(0), AcquireChannel(0)] - ) - self.assertEqual(sched.instructions, expected.instructions) - - def test_measure_v2_sched_with_qubit_mem_slots(self): - """Test measure with backendV2 and custom qubit_mem_slots.""" - sched = macros.measure(qubits=[0], backend=self.backend_v2, qubit_mem_slots={0: 2}) - with self.assertWarns(DeprecationWarning): - expected = self.backend_v2.target.get_calibration("measure", (0,)).filter( - channels=[ - MeasureChannel(0), - ] - ) - measure_duration = expected.filter(instruction_types=[Play]).duration - expected += Acquire(measure_duration, AcquireChannel(0), MemorySlot(2)) - self.assertEqual(sched.instructions, expected.instructions) - - def test_measure_v2_sched_with_meas_map(self): - """Test measure with backendV2 custom meas_map as list and dict.""" - sched_with_meas_map_list = macros.measure( - qubits=[0], backend=self.backend_v2, meas_map=[[0, 1]] - ) - sched_with_meas_map_dict = macros.measure( - qubits=[0], backend=self.backend_v2, meas_map={0: [0, 1], 1: [0, 1]} - ) - with self.assertWarns(DeprecationWarning): - expected = self.backend_v2.target.get_calibration("measure", (0,)).filter( - channels=[ - MeasureChannel(0), - ] - ) - measure_duration = expected.filter(instruction_types=[Play]).duration - expected += Acquire(measure_duration, AcquireChannel(0), MemorySlot(0)) - self.assertEqual(sched_with_meas_map_list.instructions, expected.instructions) - self.assertEqual(sched_with_meas_map_dict.instructions, expected.instructions) - - def test_multiple_measure_v2(self): - """Test macro - multiple qubit measure with backendV2.""" - sched = macros.measure(qubits=[0, 1], backend=self.backend_v2) - with self.assertWarns(DeprecationWarning): - expected = self.backend_v2.target.get_calibration("measure", (0,)).filter( - channels=[ - MeasureChannel(0), - ] - ) - expected += self.backend_v2.target.get_calibration("measure", (1,)).filter( - channels=[ - MeasureChannel(1), - ] - ) - measure_duration = expected.filter(instruction_types=[Play]).duration - expected += Acquire(measure_duration, AcquireChannel(0), MemorySlot(0)) - expected += Acquire(measure_duration, AcquireChannel(1), MemorySlot(1)) - self.assertEqual(sched.instructions, expected.instructions) - - def test_output_with_measure_v1_and_measure_v2(self): - """Test make outputs of measure_v1 and measure_v2 consistent.""" - sched_measure_v1 = macros.measure(qubits=[0, 1], backend=self.backend_v1) - sched_measure_v2 = macros.measure(qubits=[0, 1], backend=self.backend_v2) - - self.assertEqual(sched_measure_v1.instructions, sched_measure_v2.instructions) - - def test_output_with_measure_v1_and_measure_v2_sched_with_qubit_mem_slots(self): - """Test make outputs of measure_v1 and measure_v2 with custom qubit_mem_slots consistent.""" - sched_measure_v1 = macros.measure( - qubits=[0], backend=self.backend_v1, qubit_mem_slots={0: 2} - ) - sched_measure_v2 = macros.measure( - qubits=[0], backend=self.backend_v2, qubit_mem_slots={0: 2} - ) - self.assertEqual(sched_measure_v1.instructions, sched_measure_v2.instructions) - - def test_output_with_measure_v1_and_measure_v2_sched_with_meas_map(self): - """Test make outputs of measure_v1 and measure_v2 - with custom meas_map as list and dict consistent.""" - with self.assertWarns(DeprecationWarning): - backend = Fake27QPulseV1() - num_qubits_list_measure_v1 = list(range(backend.configuration().num_qubits)) - num_qubits_list_measure_v2 = list(range(self.backend_v2.num_qubits)) - sched_with_meas_map_list_v1 = macros.measure( - qubits=[0], backend=self.backend_v1, meas_map=[num_qubits_list_measure_v1] - ) - sched_with_meas_map_dict_v1 = macros.measure( - qubits=[0], - backend=self.backend_v1, - meas_map={0: num_qubits_list_measure_v1, 1: num_qubits_list_measure_v1}, - ) - sched_with_meas_map_list_v2 = macros.measure( - qubits=[0], backend=self.backend_v2, meas_map=[num_qubits_list_measure_v2] - ) - sched_with_meas_map_dict_v2 = macros.measure( - qubits=[0], - backend=self.backend_v2, - meas_map={0: num_qubits_list_measure_v2, 1: num_qubits_list_measure_v2}, - ) - self.assertEqual( - sched_with_meas_map_list_v1.instructions, - sched_with_meas_map_list_v2.instructions, - ) - self.assertEqual( - sched_with_meas_map_dict_v1.instructions, - sched_with_meas_map_dict_v2.instructions, - ) - - def test_output_with_multiple_measure_v1_and_measure_v2(self): - """Test macro - consistent output of multiple qubit measure with backendV1 and backendV2.""" - sched_measure_v1 = macros.measure(qubits=[0, 1], backend=self.backend_v1) - sched_measure_v2 = macros.measure(qubits=[0, 1], backend=self.backend_v2) - self.assertEqual(sched_measure_v1.instructions, sched_measure_v2.instructions) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestMeasureAll(QiskitTestCase): - """Pulse measure all macro.""" - - @ignore_pulse_deprecation_warnings - def setUp(self): - super().setUp() - with self.assertWarns(DeprecationWarning): - self.backend_v1 = FakeOpenPulse2Q() - self.inst_map = self.backend_v1.defaults().instruction_schedule_map - with self.assertWarns(DeprecationWarning): - self.backend_v2 = GenericBackendV2( - num_qubits=2, - calibrate_instructions=self.backend_v1.defaults().instruction_schedule_map, - seed=42, - ) - - def test_measure_all(self): - """Test measure_all function.""" - sched = macros.measure_all(self.backend_v1) - expected = Schedule(self.inst_map.get("measure", [0, 1])) - self.assertEqual(sched.instructions, expected.instructions) - - def test_measure_all_v2(self): - """Test measure_all function with backendV2.""" - sched = macros.measure_all(self.backend_v1) - expected = Schedule( - self.inst_map.get("measure", list(range(self.backend_v1.configuration().num_qubits))) - ) - self.assertEqual(sched.instructions, expected.instructions) - - def test_output_of_measure_all_with_backend_v1_and_v2(self): - """Test make outputs of measure_all with backendV1 and backendV2 consistent.""" - sched_measure_v1 = macros.measure_all(backend=self.backend_v1) - sched_measure_v2 = macros.measure_all(backend=self.backend_v2) - self.assertEqual(sched_measure_v1.instructions, sched_measure_v2.instructions) diff --git a/test/python/pulse/test_schedule.py b/test/python/pulse/test_schedule.py index 0d96977aab5e..fa59b8353c19 100644 --- a/test/python/pulse/test_schedule.py +++ b/test/python/pulse/test_schedule.py @@ -20,23 +20,17 @@ Play, Waveform, ShiftPhase, - Instruction, - SetFrequency, Acquire, Snapshot, Delay, - library, Gaussian, Drag, GaussianSquare, Constant, functional_pulse, - ShiftFrequency, - SetPhase, ) from qiskit.pulse.channels import ( MemorySlot, - RegisterSlot, DriveChannel, ControlChannel, AcquireChannel, @@ -45,7 +39,6 @@ ) from qiskit.pulse.exceptions import PulseError from qiskit.pulse.schedule import Schedule, _overlaps, _find_insertion_index -from qiskit.providers.fake_provider import FakeOpenPulse2Q from test import QiskitTestCase # pylint: disable=wrong-import-order from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings @@ -64,129 +57,12 @@ def linear(duration, slope, intercept): return slope * x + intercept self.linear = linear - with self.assertWarns(DeprecationWarning): - self.config = FakeOpenPulse2Q().configuration() @decorate_test_methods(ignore_pulse_deprecation_warnings) class TestScheduleBuilding(BaseTestSchedule): """Test construction of schedules.""" - def test_append_an_instruction_to_empty_schedule(self): - """Test append instructions to an empty schedule.""" - lp0 = self.linear(duration=3, slope=0.2, intercept=0.1) - - sched = Schedule() - sched = sched.append(Play(lp0, self.config.drive(0))) - self.assertEqual(0, sched.start_time) - self.assertEqual(3, sched.stop_time) - - def test_append_instructions_applying_to_different_channels(self): - """Test append instructions to schedule.""" - lp0 = self.linear(duration=3, slope=0.2, intercept=0.1) - - sched = Schedule() - sched = sched.append(Play(lp0, self.config.drive(0))) - sched = sched.append(Play(lp0, self.config.drive(1))) - self.assertEqual(0, sched.start_time) - # appending to separate channel so should be at same time. - self.assertEqual(3, sched.stop_time) - - def test_insert_an_instruction_into_empty_schedule(self): - """Test insert an instruction into an empty schedule.""" - lp0 = self.linear(duration=3, slope=0.2, intercept=0.1) - - sched = Schedule() - sched = sched.insert(10, Play(lp0, self.config.drive(0))) - self.assertEqual(10, sched.start_time) - self.assertEqual(13, sched.stop_time) - - def test_insert_an_instruction_before_an_existing_instruction(self): - """Test insert an instruction before an existing instruction.""" - lp0 = self.linear(duration=3, slope=0.2, intercept=0.1) - - sched = Schedule() - sched = sched.insert(10, Play(lp0, self.config.drive(0))) - sched = sched.insert(5, Play(lp0, self.config.drive(0))) - self.assertEqual(5, sched.start_time) - self.assertEqual(13, sched.stop_time) - - def test_fail_to_insert_instruction_into_occupied_timing(self): - """Test insert an instruction before an existing instruction.""" - lp0 = self.linear(duration=3, slope=0.2, intercept=0.1) - - sched = Schedule() - sched = sched.insert(10, Play(lp0, self.config.drive(0))) - with self.assertRaises(PulseError): - sched.insert(11, Play(lp0, self.config.drive(0))) - - def test_can_create_valid_schedule(self): - """Test valid schedule creation without error.""" - gp0 = library.Gaussian(duration=20, amp=0.7, sigma=3) - gp1 = library.Gaussian(duration=20, amp=0.7, sigma=3) - - sched = Schedule() - sched = sched.append(Play(gp0, self.config.drive(0))) - sched = sched.insert(60, ShiftPhase(-1.57, self.config.drive(0))) - sched = sched.insert(30, Play(gp1, self.config.drive(0))) - sched = sched.insert(60, Play(gp0, self.config.control([0, 1])[0])) - sched = sched.insert(80, Snapshot("label", "snap_type")) - sched = sched.insert(90, ShiftPhase(1.57, self.config.drive(0))) - sched = sched.insert( - 90, Acquire(10, self.config.acquire(0), MemorySlot(0), RegisterSlot(0)) - ) - self.assertEqual(0, sched.start_time) - self.assertEqual(100, sched.stop_time) - self.assertEqual(100, sched.duration) - new_sched = Schedule() - new_sched = new_sched.append(sched) - new_sched = new_sched.append(sched) - self.assertEqual(0, new_sched.start_time) - self.assertEqual(200, new_sched.stop_time) - self.assertEqual(200, new_sched.duration) - ids = set() - for _, inst in sched.instructions: - self.assertFalse(inst.id in ids) - ids.add(inst.id) - - def test_can_create_valid_schedule_with_syntax_sugar(self): - """Test that in place operations on schedule are still immutable - and return equivalent schedules.""" - gp0 = library.Gaussian(duration=20, amp=0.7, sigma=3) - gp1 = library.Gaussian(duration=20, amp=0.5, sigma=3) - - sched = Schedule() - sched += Play(gp0, self.config.drive(0)) - sched |= ShiftPhase(-1.57, self.config.drive(0)) << 60 - sched |= Play(gp1, self.config.drive(0)) << 30 - sched |= Play(gp0, self.config.control(qubits=[0, 1])[0]) << 60 - sched |= Snapshot("label", "snap_type") << 60 - sched |= ShiftPhase(1.57, self.config.drive(0)) << 90 - sched |= Acquire(10, self.config.acquire(0), MemorySlot(0)) << 90 - sched += sched - - def test_immutability(self): - """Test that operations are immutable.""" - gp0 = library.Gaussian(duration=100, amp=0.7, sigma=3) - gp1 = library.Gaussian(duration=20, amp=0.5, sigma=3) - - sched = Play(gp1, self.config.drive(0)) << 100 - # if schedule was mutable the next two sequences would overlap and an error - # would be raised. - sched.insert(0, Play(gp0, self.config.drive(0))) - sched.insert(0, Play(gp0, self.config.drive(0))) - - def test_inplace(self): - """Test that in place operations on schedule are still immutable.""" - gp0 = library.Gaussian(duration=100, amp=0.7, sigma=3) - gp1 = library.Gaussian(duration=20, amp=0.5, sigma=3) - - sched = Schedule() - sched = sched + Play(gp1, self.config.drive(0)) - sched2 = sched - sched += Play(gp0, self.config.drive(0)) - self.assertNotEqual(sched, sched2) - def test_empty_schedule(self): """Test empty schedule.""" sched = Schedule() @@ -216,76 +92,6 @@ def my_test_make_schedule(acquire: int, memoryslot: int, shift: int): PulseError, r".*MemorySlot\(1\).*overlaps .*", my_test_make_schedule, 4, 1, 0 ) - def test_flat_instruction_sequence_returns_instructions(self): - """Test if `flat_instruction_sequence` returns `Instruction`s.""" - lp0 = self.linear(duration=3, slope=0.2, intercept=0.1) - - # empty schedule with empty schedule - empty = Schedule().append(Schedule()) - for _, instr in empty.instructions: - self.assertIsInstance(instr, Instruction) - - # normal schedule - subsched = Schedule() - subsched = subsched.insert(20, Play(lp0, self.config.drive(0))) # grand child 1 - subsched = subsched.append(Play(lp0, self.config.drive(0))) # grand child 2 - - sched = Schedule() - sched = sched.append(Play(lp0, self.config.drive(0))) # child - sched = sched.append(subsched) - for _, instr in sched.instructions: - self.assertIsInstance(instr, Instruction) - - def test_absolute_start_time_of_grandchild(self): - """Test correct calculation of start time of grandchild of a schedule.""" - lp0 = self.linear(duration=10, slope=0.02, intercept=0.01) - - subsched = Schedule() - subsched = subsched.insert(20, Play(lp0, self.config.drive(0))) # grand child 1 - subsched = subsched.append(Play(lp0, self.config.drive(0))) # grand child 2 - - sched = Schedule() - sched = sched.append(Play(lp0, self.config.drive(0))) # child - sched = sched.append(subsched) - - start_times = sorted(shft + instr.start_time for shft, instr in sched.instructions) - self.assertEqual([0, 30, 40], start_times) - - def test_shift_schedule(self): - """Test shift schedule.""" - lp0 = self.linear(duration=10, slope=0.02, intercept=0.01) - - subsched = Schedule() - subsched = subsched.insert(20, Play(lp0, self.config.drive(0))) # grand child 1 - subsched = subsched.append(Play(lp0, self.config.drive(0))) # grand child 2 - - sched = Schedule() - sched = sched.append(Play(lp0, self.config.drive(0))) # child - sched = sched.append(subsched) - - shift = sched.shift(100) - - start_times = sorted(shft + instr.start_time for shft, instr in shift.instructions) - - self.assertEqual([100, 130, 140], start_times) - - def test_keep_original_schedule_after_attached_to_another_schedule(self): - """Test if a schedule keeps its children after attached to another schedule.""" - children = Acquire(10, self.config.acquire(0), MemorySlot(0)).shift(20) + Acquire( - 10, self.config.acquire(0), MemorySlot(0) - ) - self.assertEqual(2, len(list(children.instructions))) - - sched = Acquire(10, self.config.acquire(0), MemorySlot(0)).append(children) - self.assertEqual(3, len(list(sched.instructions))) - - # add 2 instructions to children (2 instructions -> 4 instructions) - children = children.append(Acquire(10, self.config.acquire(0), MemorySlot(0))) - children = children.insert(100, Acquire(10, self.config.acquire(0), MemorySlot(0))) - self.assertEqual(4, len(list(children.instructions))) - # sched must keep 3 instructions (must not update to 5 instructions) - self.assertEqual(3, len(list(sched.instructions))) - @patch("qiskit.utils.is_main_process", return_value=True) def test_auto_naming(self, is_main_process_mock): """Test that a schedule gets a default name, incremented per instance""" @@ -303,42 +109,6 @@ def test_auto_naming(self, is_main_process_mock): sched_2_name_count = int(sched_2.name[len("sched") :]) self.assertEqual(sched_2_name_count, sched_1_name_count + 1) - def test_name_inherited(self): - """Test that schedule keeps name if an instruction is added.""" - gp0 = library.Gaussian(duration=100, amp=0.7, sigma=3, name="pulse_name") - snapshot = Snapshot("snapshot_label", "state") - - sched1 = Schedule(name="test_name") - sched2 = Schedule(name=None) - sched3 = sched1 | sched2 - self.assertEqual(sched3.name, "test_name") - - sched_acq = Acquire(10, self.config.acquire(1), MemorySlot(1), name="acq_name") | sched1 - self.assertEqual(sched_acq.name, "acq_name") - - sched_pulse = Play(gp0, self.config.drive(0)) | sched1 - self.assertEqual(sched_pulse.name, "pulse_name") - - sched_fc = ShiftPhase(0.1, self.config.drive(0), name="fc_name") | sched1 - self.assertEqual(sched_fc.name, "fc_name") - - sched_snapshot = snapshot | sched1 - self.assertEqual(sched_snapshot.name, "snapshot_label") - - def test_schedule_with_acquire_on_single_qubit(self): - """Test schedule with acquire on single qubit.""" - sched_single = Schedule() - for i in range(self.config.n_qubits): - sched_single = sched_single.insert( - 10, - Acquire( - 10, self.config.acquire(i), mem_slot=MemorySlot(i), reg_slot=RegisterSlot(i) - ), - ) - - self.assertEqual(len(sched_single.instructions), 2) - self.assertEqual(len(sched_single.channels), 6) - def test_parametric_commands_in_sched(self): """Test that schedules can be built with parametric commands.""" sched = Schedule(name="test_parametric") @@ -451,16 +221,6 @@ def test_timeslots(self): self.assertEqual(reference_sched.timeslots[DriveChannel(0)], [(10, 10), (10, 20)]) self.assertEqual(reference_sched.timeslots[DriveChannel(1)], [(10, 60), (100, 100)]) - def test_len(self): - """Test __len__ method""" - sched = Schedule() - self.assertEqual(len(sched), 0) - - lp0 = self.linear(duration=3, slope=0.2, intercept=0.1) - for j in range(1, 10): - sched = sched.append(Play(lp0, self.config.drive(0))) - self.assertEqual(len(sched), j) - def test_inherit_from(self): """Test creating schedule with another schedule.""" ref_metadata = {"test": "value"} @@ -540,59 +300,6 @@ def setUp(self): super().setUp() self.delay_time = 10 - def test_delay_drive_channel(self): - """Test Delay on DriveChannel""" - drive_ch = self.config.drive(0) - pulse = Waveform(np.full(10, 0.1)) - # should pass as is an append - sched = Delay(self.delay_time, drive_ch) + Play(pulse, drive_ch) - self.assertIsInstance(sched, Schedule) - pulse_instr = sched.instructions[-1] - # assert last instruction is pulse - self.assertIsInstance(pulse_instr[1], Play) - # assert pulse is scheduled at time 10 - self.assertEqual(pulse_instr[0], 10) - # should fail due to overlap - with self.assertRaises(PulseError): - sched = Delay(self.delay_time, drive_ch) | Play(pulse, drive_ch) - - def test_delay_measure_channel(self): - """Test Delay on MeasureChannel""" - - measure_ch = self.config.measure(0) - pulse = Waveform(np.full(10, 0.1)) - # should pass as is an append - sched = Delay(self.delay_time, measure_ch) + Play(pulse, measure_ch) - self.assertIsInstance(sched, Schedule) - # should fail due to overlap - with self.assertRaises(PulseError): - sched = Delay(self.delay_time, measure_ch) | Play(pulse, measure_ch) - - def test_delay_control_channel(self): - """Test Delay on ControlChannel""" - - control_ch = self.config.control([0, 1])[0] - pulse = Waveform(np.full(10, 0.1)) - # should pass as is an append - sched = Delay(self.delay_time, control_ch) + Play(pulse, control_ch) - self.assertIsInstance(sched, Schedule) - # should fail due to overlap - with self.assertRaises(PulseError): - sched = Delay(self.delay_time, control_ch) | Play(pulse, control_ch) - self.assertIsInstance(sched, Schedule) - - def test_delay_acquire_channel(self): - """Test Delay on DriveChannel""" - - acquire_ch = self.config.acquire(0) - # should pass as is an append - sched = Delay(self.delay_time, acquire_ch) + Acquire(10, acquire_ch, MemorySlot(0)) - self.assertIsInstance(sched, Schedule) - # should fail due to overlap - with self.assertRaises(PulseError): - sched = Delay(self.delay_time, acquire_ch) | Acquire(10, acquire_ch, MemorySlot(0)) - self.assertIsInstance(sched, Schedule) - def test_delay_snapshot_channel(self): """Test Delay on DriveChannel""" @@ -611,31 +318,6 @@ def test_delay_snapshot_channel(self): class TestScheduleFilter(BaseTestSchedule): """Test Schedule filtering methods""" - def test_filter_channels(self): - """Test filtering over channels.""" - lp0 = self.linear(duration=3, slope=0.2, intercept=0.1) - sched = Schedule(name="fake_experiment") - sched = sched.insert(0, Play(lp0, self.config.drive(0))) - sched = sched.insert(10, Play(lp0, self.config.drive(1))) - sched = sched.insert(30, ShiftPhase(-1.57, self.config.drive(0))) - sched = sched.insert(60, Acquire(5, AcquireChannel(0), MemorySlot(0))) - sched = sched.insert(60, Acquire(5, AcquireChannel(1), MemorySlot(1))) - sched = sched.insert(90, Play(lp0, self.config.drive(0))) - - # split instructions for those on AcquireChannel(1) and those not - filtered, excluded = self._filter_and_test_consistency(sched, channels=[AcquireChannel(1)]) - self.assertEqual(len(filtered.instructions), 1) - self.assertEqual(len(excluded.instructions), 5) - - # Split schedule into the part with channels on 1 and into a part without - channels = [AcquireChannel(1), DriveChannel(1)] - filtered, excluded = self._filter_and_test_consistency(sched, channels=channels) - for _, inst in filtered.instructions: - self.assertTrue(any(chan in channels for chan in inst.channels)) - - for _, inst in excluded.instructions: - self.assertFalse(any(chan in channels for chan in inst.channels)) - def test_filter_exclude_name(self): """Test the name of the schedules after applying filter and exclude functions.""" sched = Schedule(name="test-schedule") @@ -648,246 +330,6 @@ def test_filter_exclude_name(self): self.assertEqual(sched.name, filtered.name) self.assertEqual(sched.name, excluded.name) - def test_filter_inst_types(self): - """Test filtering on instruction types.""" - lp0 = self.linear(duration=3, slope=0.2, intercept=0.1) - sched = Schedule(name="fake_experiment") - sched = sched.insert(0, Play(lp0, self.config.drive(0))) - sched = sched.insert(10, Play(lp0, self.config.drive(1))) - sched = sched.insert(30, ShiftPhase(-1.57, self.config.drive(0))) - sched = sched.insert(40, SetFrequency(8.0, self.config.drive(0))) - sched = sched.insert(50, ShiftFrequency(4.0e6, self.config.drive(0))) - sched = sched.insert(55, SetPhase(3.14, self.config.drive(0))) - for i in range(2): - sched = sched.insert(60, Acquire(5, self.config.acquire(i), MemorySlot(i))) - sched = sched.insert(90, Play(lp0, self.config.drive(0))) - - # test on Acquire - only_acquire, no_acquire = self._filter_and_test_consistency( - sched, instruction_types=[Acquire] - ) - for _, inst in only_acquire.instructions: - self.assertIsInstance(inst, Acquire) - for _, inst in no_acquire.instructions: - self.assertFalse(isinstance(inst, Acquire)) - - # test two instruction types - only_pulse_and_fc, no_pulse_and_fc = self._filter_and_test_consistency( - sched, instruction_types=[Play, ShiftPhase] - ) - for _, inst in only_pulse_and_fc.instructions: - self.assertIsInstance(inst, (Play, ShiftPhase)) - for _, inst in no_pulse_and_fc.instructions: - self.assertFalse(isinstance(inst, (Play, ShiftPhase))) - self.assertEqual(len(only_pulse_and_fc.instructions), 4) - self.assertEqual(len(no_pulse_and_fc.instructions), 5) - - # test on ShiftPhase - only_fc, no_fc = self._filter_and_test_consistency(sched, instruction_types={ShiftPhase}) - self.assertEqual(len(only_fc.instructions), 1) - self.assertEqual(len(no_fc.instructions), 8) - - # test on SetPhase - only_setp, no_setp = self._filter_and_test_consistency(sched, instruction_types={SetPhase}) - self.assertEqual(len(only_setp.instructions), 1) - self.assertEqual(len(no_setp.instructions), 8) - - # test on SetFrequency - only_setf, no_setf = self._filter_and_test_consistency( - sched, instruction_types=[SetFrequency] - ) - for _, inst in only_setf.instructions: - self.assertTrue(isinstance(inst, SetFrequency)) - self.assertEqual(len(only_setf.instructions), 1) - self.assertEqual(len(no_setf.instructions), 8) - - # test on ShiftFrequency - only_shiftf, no_shiftf = self._filter_and_test_consistency( - sched, instruction_types=[ShiftFrequency] - ) - for _, inst in only_shiftf.instructions: - self.assertTrue(isinstance(inst, ShiftFrequency)) - self.assertEqual(len(only_shiftf.instructions), 1) - self.assertEqual(len(no_shiftf.instructions), 8) - - def test_filter_intervals(self): - """Test filtering on intervals.""" - lp0 = self.linear(duration=3, slope=0.2, intercept=0.1) - sched = Schedule(name="fake_experiment") - sched = sched.insert(0, Play(lp0, self.config.drive(0))) - sched = sched.insert(10, Play(lp0, self.config.drive(1))) - sched = sched.insert(30, ShiftPhase(-1.57, self.config.drive(0))) - for i in range(2): - sched = sched.insert(60, Acquire(5, self.config.acquire(i), MemorySlot(i))) - sched = sched.insert(90, Play(lp0, self.config.drive(0))) - - # split schedule into instructions occurring in (0,13), and those outside - filtered, excluded = self._filter_and_test_consistency(sched, time_ranges=((0, 13),)) - for start_time, inst in filtered.instructions: - self.assertTrue((start_time >= 0) and (start_time + inst.stop_time <= 13)) - for start_time, inst in excluded.instructions: - self.assertFalse((start_time >= 0) and (start_time + inst.stop_time <= 13)) - self.assertEqual(len(filtered.instructions), 2) - self.assertEqual(len(excluded.instructions), 4) - - # split into schedule occurring in and outside of interval (59,65) - filtered, excluded = self._filter_and_test_consistency(sched, time_ranges=[(59, 65)]) - self.assertEqual(len(filtered.instructions), 2) - self.assertEqual(filtered.instructions[0][0], 60) - self.assertIsInstance(filtered.instructions[0][1], Acquire) - self.assertEqual(len(excluded.instructions), 4) - self.assertEqual(excluded.instructions[3][0], 90) - self.assertIsInstance(excluded.instructions[3][1], Play) - - # split instructions based on the interval - # (none should be, though they have some overlap with some of the instructions) - filtered, excluded = self._filter_and_test_consistency( - sched, time_ranges=[(0, 2), (8, 11), (61, 70)] - ) - self.assertEqual(len(filtered.instructions), 0) - self.assertEqual(len(excluded.instructions), 6) - - # split instructions from multiple non-overlapping intervals, specified - # as time ranges - filtered, excluded = self._filter_and_test_consistency( - sched, time_ranges=[(10, 15), (63, 93)] - ) - self.assertEqual(len(filtered.instructions), 2) - self.assertEqual(len(excluded.instructions), 4) - - # split instructions from non-overlapping intervals, specified as Intervals - filtered, excluded = self._filter_and_test_consistency( - sched, intervals=[(10, 15), (63, 93)] - ) - self.assertEqual(len(filtered.instructions), 2) - self.assertEqual(len(excluded.instructions), 4) - - def test_filter_multiple(self): - """Test filter composition.""" - lp0 = self.linear(duration=3, slope=0.2, intercept=0.1) - sched = Schedule(name="fake_experiment") - sched = sched.insert(0, Play(lp0, self.config.drive(0))) - sched = sched.insert(10, Play(lp0, self.config.drive(1))) - sched = sched.insert(30, ShiftPhase(-1.57, self.config.drive(0))) - for i in range(2): - sched = sched.insert(60, Acquire(5, self.config.acquire(i), MemorySlot(i))) - - sched = sched.insert(90, Play(lp0, self.config.drive(0))) - - # split instructions with filters on channel 0, of type Play - # occurring in the time interval (25, 100) - filtered, excluded = self._filter_and_test_consistency( - sched, - channels={self.config.drive(0)}, - instruction_types=[Play], - time_ranges=[(25, 100)], - ) - for time, inst in filtered.instructions: - self.assertIsInstance(inst, Play) - self.assertTrue(all(chan.index == 0 for chan in inst.channels)) - self.assertTrue(25 <= time <= 100) - self.assertEqual(len(excluded.instructions), 5) - self.assertTrue(excluded.instructions[0][1].channels[0] == DriveChannel(0)) - self.assertTrue(excluded.instructions[2][0] == 30) - - # split based on Plays in the specified intervals - filtered, excluded = self._filter_and_test_consistency( - sched, instruction_types=[Play], time_ranges=[(25, 100), (0, 11)] - ) - self.assertTrue(len(excluded.instructions), 3) - for time, inst in filtered.instructions: - self.assertIsInstance(inst, (ShiftPhase, Play)) - self.assertTrue(len(filtered.instructions), 4) - # make sure the Play instruction is not in the intervals - self.assertIsInstance(excluded.instructions[0][1], Play) - - # split based on Acquire in the specified intervals - filtered, excluded = self._filter_and_test_consistency( - sched, instruction_types=[Acquire], time_ranges=[(25, 100)] - ) - self.assertTrue(len(excluded.instructions), 4) - for _, inst in filtered.instructions: - self.assertIsInstance(inst, Acquire) - self.assertTrue(len(filtered.instructions), 2) - - def test_custom_filters(self): - """Test custom filters.""" - lp0 = self.linear(duration=3, slope=0.2, intercept=0.1) - sched = Schedule(name="fake_experiment") - sched = sched.insert(0, Play(lp0, self.config.drive(0))) - sched = sched.insert(10, Play(lp0, self.config.drive(1))) - sched = sched.insert(30, ShiftPhase(-1.57, self.config.drive(0))) - - filtered, excluded = self._filter_and_test_consistency(sched, lambda x: True) - for i in filtered.instructions: - self.assertTrue(i in sched.instructions) - for i in excluded.instructions: - self.assertFalse(i in sched.instructions) - - filtered, excluded = self._filter_and_test_consistency(sched, lambda x: False) - self.assertEqual(len(filtered.instructions), 0) - self.assertEqual(len(excluded.instructions), 3) - - filtered, excluded = self._filter_and_test_consistency(sched, lambda x: x[0] < 30) - self.assertEqual(len(filtered.instructions), 2) - self.assertEqual(len(excluded.instructions), 1) - - # multiple custom filters - filtered, excluded = self._filter_and_test_consistency( - sched, lambda x: x[0] > 0, lambda x: x[0] < 30 - ) - self.assertEqual(len(filtered.instructions), 1) - self.assertEqual(len(excluded.instructions), 2) - - def test_empty_filters(self): - """Test behavior on empty filters.""" - lp0 = self.linear(duration=3, slope=0.2, intercept=0.1) - sched = Schedule(name="fake_experiment") - sched = sched.insert(0, Play(lp0, self.config.drive(0))) - sched = sched.insert(10, Play(lp0, self.config.drive(1))) - sched = sched.insert(30, ShiftPhase(-1.57, self.config.drive(0))) - for i in range(2): - sched = sched.insert(60, Acquire(5, self.config.acquire(i), MemorySlot(i))) - sched = sched.insert(90, Play(lp0, self.config.drive(0))) - - # empty channels - filtered, excluded = self._filter_and_test_consistency(sched, channels=[]) - self.assertTrue(len(filtered.instructions) == 0) - self.assertTrue(len(excluded.instructions) == 6) - - # empty instruction_types - filtered, excluded = self._filter_and_test_consistency(sched, instruction_types=[]) - self.assertTrue(len(filtered.instructions) == 0) - self.assertTrue(len(excluded.instructions) == 6) - - # empty time_ranges - filtered, excluded = self._filter_and_test_consistency(sched, time_ranges=[]) - self.assertTrue(len(filtered.instructions) == 0) - self.assertTrue(len(excluded.instructions) == 6) - - # empty intervals - filtered, excluded = self._filter_and_test_consistency(sched, intervals=[]) - self.assertTrue(len(filtered.instructions) == 0) - self.assertTrue(len(excluded.instructions) == 6) - - # empty channels with other non-empty filters - filtered, excluded = self._filter_and_test_consistency( - sched, channels=[], instruction_types=[Play] - ) - self.assertTrue(len(filtered.instructions) == 0) - self.assertTrue(len(excluded.instructions) == 6) - - def _filter_and_test_consistency(self, schedule: Schedule, *args, **kwargs): - """ - Returns the tuple - (schedule.filter(*args, **kwargs), schedule.exclude(*args, **kwargs)), - including a test that schedule.filter | schedule.exclude == schedule - """ - filtered = schedule.filter(*args, **kwargs) - excluded = schedule.exclude(*args, **kwargs) - self.assertEqual(filtered | excluded, schedule) - return filtered, excluded - @decorate_test_methods(ignore_pulse_deprecation_warnings) class TestScheduleEquality(BaseTestSchedule): diff --git a/test/python/pulse/test_transforms.py b/test/python/pulse/test_transforms.py index fd7fd726d2ff..acf3dd5006ba 100644 --- a/test/python/pulse/test_transforms.py +++ b/test/python/pulse/test_transforms.py @@ -20,7 +20,6 @@ from qiskit.pulse import ( Play, Delay, - Acquire, Schedule, Waveform, Drag, @@ -37,216 +36,15 @@ SnapshotChannel, ) from qiskit.pulse.instructions import directives -from qiskit.providers.fake_provider import FakeOpenPulse2Q from test import QiskitTestCase # pylint: disable=wrong-import-order from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestAlignMeasures(QiskitTestCase): - """Test the helper function which aligns acquires.""" - - @ignore_pulse_deprecation_warnings - def setUp(self): - super().setUp() - with self.assertWarns(DeprecationWarning): - self.backend = FakeOpenPulse2Q() - self.config = self.backend.configuration() - self.inst_map = self.backend.defaults().instruction_schedule_map - self.short_pulse = pulse.Waveform( - samples=np.array([0.02739068], dtype=np.complex128), name="p0" - ) - - def test_align_measures(self): - """Test that one acquire is delayed to match the time of the later acquire.""" - sched = pulse.Schedule(name="fake_experiment") - sched.insert(0, Play(self.short_pulse, self.config.drive(0)), inplace=True) - sched.insert(1, Acquire(5, self.config.acquire(0), MemorySlot(0)), inplace=True) - sched.insert(10, Acquire(5, self.config.acquire(1), MemorySlot(1)), inplace=True) - sched.insert(10, Play(self.short_pulse, self.config.measure(0)), inplace=True) - sched.insert(11, Play(self.short_pulse, self.config.measure(0)), inplace=True) - sched.insert(10, Play(self.short_pulse, self.config.measure(1)), inplace=True) - aligned = transforms.align_measures([sched])[0] - self.assertEqual(aligned.name, "fake_experiment") - - ref = pulse.Schedule(name="fake_experiment") - ref.insert(0, Play(self.short_pulse, self.config.drive(0)), inplace=True) - ref.insert(10, Acquire(5, self.config.acquire(0), MemorySlot(0)), inplace=True) - ref.insert(10, Acquire(5, self.config.acquire(1), MemorySlot(1)), inplace=True) - ref.insert(19, Play(self.short_pulse, self.config.measure(0)), inplace=True) - ref.insert(20, Play(self.short_pulse, self.config.measure(0)), inplace=True) - ref.insert(10, Play(self.short_pulse, self.config.measure(1)), inplace=True) - - self.assertEqual(aligned, ref) - - aligned = transforms.align_measures([sched], self.inst_map, align_time=20)[0] - - ref = pulse.Schedule(name="fake_experiment") - ref.insert(10, Play(self.short_pulse, self.config.drive(0)), inplace=True) - ref.insert(20, Acquire(5, self.config.acquire(0), MemorySlot(0)), inplace=True) - ref.insert(20, Acquire(5, self.config.acquire(1), MemorySlot(1)), inplace=True) - ref.insert(29, Play(self.short_pulse, self.config.measure(0)), inplace=True) - ref.insert(30, Play(self.short_pulse, self.config.measure(0)), inplace=True) - ref.insert(20, Play(self.short_pulse, self.config.measure(1)), inplace=True) - self.assertEqual(aligned, ref) - - def test_align_post_u3(self): - """Test that acquires are scheduled no sooner than the duration of the longest X gate.""" - sched = pulse.Schedule(name="fake_experiment") - sched = sched.insert(0, Play(self.short_pulse, self.config.drive(0))) - sched = sched.insert(1, Acquire(5, self.config.acquire(0), MemorySlot(0))) - sched = transforms.align_measures([sched], self.inst_map)[0] - for time, inst in sched.instructions: - if isinstance(inst, Acquire): - self.assertEqual(time, 4) - sched = transforms.align_measures([sched], self.inst_map, max_calibration_duration=10)[0] - for time, inst in sched.instructions: - if isinstance(inst, Acquire): - self.assertEqual(time, 10) - - def test_multi_acquire(self): - """Test that the last acquire is aligned to if multiple acquires occur on the - same channel.""" - sched = pulse.Schedule() - sched.insert(0, Play(self.short_pulse, self.config.drive(0)), inplace=True) - sched.insert(4, Acquire(5, self.config.acquire(0), MemorySlot(0)), inplace=True) - sched.insert(20, Acquire(5, self.config.acquire(1), MemorySlot(1)), inplace=True) - sched.insert(10, Acquire(5, self.config.acquire(0), MemorySlot(0)), inplace=True) - aligned = transforms.align_measures([sched], self.inst_map) - - ref = pulse.Schedule() - ref.insert(0, Play(self.short_pulse, self.config.drive(0)), inplace=True) - ref.insert(20, Acquire(5, self.config.acquire(0), MemorySlot(0)), inplace=True) - ref.insert(20, Acquire(5, self.config.acquire(1), MemorySlot(1)), inplace=True) - ref.insert(26, Acquire(5, self.config.acquire(0), MemorySlot(0)), inplace=True) - self.assertEqual(aligned[0], ref) - - def test_multiple_acquires(self): - """Test that multiple acquires are also aligned.""" - sched = pulse.Schedule(name="fake_experiment") - sched.insert(0, Acquire(5, self.config.acquire(0), MemorySlot(0)), inplace=True) - sched.insert(5, Acquire(5, self.config.acquire(0), MemorySlot(0)), inplace=True) - sched.insert(10, Acquire(5, self.config.acquire(1), MemorySlot(1)), inplace=True) - - ref = pulse.Schedule() - ref.insert(10, Acquire(5, self.config.acquire(0), MemorySlot(0)), inplace=True) - ref.insert(15, Acquire(5, self.config.acquire(0), MemorySlot(0)), inplace=True) - ref.insert(10, Acquire(5, self.config.acquire(1), MemorySlot(1)), inplace=True) - - aligned = transforms.align_measures([sched], self.inst_map)[0] - - self.assertEqual(aligned, ref) - - def test_align_across_schedules(self): - """Test that acquires are aligned together across multiple schedules.""" - sched1 = pulse.Schedule(name="fake_experiment") - sched1 = sched1.insert(0, Play(self.short_pulse, self.config.drive(0))) - sched1 = sched1.insert(10, Acquire(5, self.config.acquire(0), MemorySlot(0))) - sched2 = pulse.Schedule(name="fake_experiment") - sched2 = sched2.insert(3, Play(self.short_pulse, self.config.drive(0))) - sched2 = sched2.insert(25, Acquire(5, self.config.acquire(0), MemorySlot(0))) - schedules = transforms.align_measures([sched1, sched2], self.inst_map) - for time, inst in schedules[0].instructions: - if isinstance(inst, Acquire): - self.assertEqual(time, 25) - for time, inst in schedules[0].instructions: - if isinstance(inst, Acquire): - self.assertEqual(time, 25) - - def test_align_all(self): - """Test alignment of all instructions in a schedule.""" - sched0 = pulse.Schedule() - sched0.insert(0, Play(self.short_pulse, self.config.drive(0)), inplace=True) - sched0.insert(10, Acquire(5, self.config.acquire(0), MemorySlot(0)), inplace=True) - - sched1 = pulse.Schedule() - sched1.insert(25, Play(self.short_pulse, self.config.drive(0)), inplace=True) - sched1.insert(25, Acquire(5, self.config.acquire(0), MemorySlot(0)), inplace=True) - - all_aligned = transforms.align_measures([sched0, sched1], self.inst_map, align_all=True) - - ref1_aligned = pulse.Schedule() - ref1_aligned.insert(15, Play(self.short_pulse, self.config.drive(0)), inplace=True) - ref1_aligned.insert(25, Acquire(5, self.config.acquire(0), MemorySlot(0)), inplace=True) - - self.assertEqual(all_aligned[0], ref1_aligned) - self.assertEqual(all_aligned[1], sched1) - - ref1_not_aligned = pulse.Schedule() - ref1_not_aligned.insert(0, Play(self.short_pulse, self.config.drive(0)), inplace=True) - ref1_not_aligned.insert(25, Acquire(5, self.config.acquire(0), MemorySlot(0)), inplace=True) - - all_not_aligned = transforms.align_measures( - [sched0, sched1], - self.inst_map, - align_all=False, - ) - self.assertEqual(all_not_aligned[0], ref1_not_aligned) - self.assertEqual(all_not_aligned[1], sched1) - - def test_measurement_at_zero(self): - """Test that acquire at t=0 works.""" - sched1 = pulse.Schedule(name="fake_experiment") - sched1 = sched1.insert(0, Play(self.short_pulse, self.config.drive(0))) - sched1 = sched1.insert(0, Acquire(5, self.config.acquire(0), MemorySlot(0))) - sched2 = pulse.Schedule(name="fake_experiment") - sched2 = sched2.insert(0, Play(self.short_pulse, self.config.drive(0))) - sched2 = sched2.insert(0, Acquire(5, self.config.acquire(0), MemorySlot(0))) - schedules = transforms.align_measures([sched1, sched2], max_calibration_duration=0) - for time, inst in schedules[0].instructions: - if isinstance(inst, Acquire): - self.assertEqual(time, 0) - for time, inst in schedules[0].instructions: - if isinstance(inst, Acquire): - self.assertEqual(time, 0) - - @decorate_test_methods(ignore_pulse_deprecation_warnings) class TestAddImplicitAcquires(QiskitTestCase): """Test the helper function which makes implicit acquires explicit.""" @ignore_pulse_deprecation_warnings - def setUp(self): - super().setUp() - with self.assertWarns(DeprecationWarning): - self.backend = FakeOpenPulse2Q() - self.config = self.backend.configuration() - self.short_pulse = pulse.Waveform( - samples=np.array([0.02739068], dtype=np.complex128), name="p0" - ) - sched = pulse.Schedule(name="fake_experiment") - sched = sched.insert(0, Play(self.short_pulse, self.config.drive(0))) - sched = sched.insert(5, Acquire(5, self.config.acquire(0), MemorySlot(0))) - sched = sched.insert(5, Acquire(5, self.config.acquire(1), MemorySlot(1))) - self.sched = sched - - def test_add_implicit(self): - """Test that implicit acquires are made explicit according to the meas map.""" - sched = transforms.add_implicit_acquires(self.sched, [[0, 1]]) - acquired_qubits = set() - for _, inst in sched.instructions: - if isinstance(inst, Acquire): - acquired_qubits.add(inst.acquire.index) - self.assertEqual(acquired_qubits, {0, 1}) - - def test_add_across_meas_map_sublists(self): - """Test that implicit acquires in separate meas map sublists are all added.""" - sched = transforms.add_implicit_acquires(self.sched, [[0, 2], [1, 3]]) - acquired_qubits = set() - for _, inst in sched.instructions: - if isinstance(inst, Acquire): - acquired_qubits.add(inst.acquire.index) - self.assertEqual(acquired_qubits, {0, 1, 2, 3}) - - def test_dont_add_all(self): - """Test that acquires aren't added if no qubits in the sublist aren't being acquired.""" - sched = transforms.add_implicit_acquires(self.sched, [[4, 5], [0, 2], [1, 3]]) - acquired_qubits = set() - for _, inst in sched.instructions: - if isinstance(inst, Acquire): - acquired_qubits.add(inst.acquire.index) - self.assertEqual(acquired_qubits, {0, 1, 2, 3}) - def test_multiple_acquires(self): """Test for multiple acquires.""" sched = pulse.Schedule() diff --git a/test/python/result/test_mitigators.py b/test/python/result/test_mitigators.py deleted file mode 100644 index 3d04249d6f78..000000000000 --- a/test/python/result/test_mitigators.py +++ /dev/null @@ -1,498 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2024. -# -# 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. -# pylint: disable=invalid-name - -"""Tests for error mitigation routines.""" - -import unittest -from collections import Counter - -import numpy as np - -from qiskit import QiskitError, QuantumCircuit -from qiskit.quantum_info import Statevector -from qiskit.quantum_info.operators.predicates import matrix_equal -from qiskit.result import ( - CorrelatedReadoutMitigator, - Counts, - LocalReadoutMitigator, -) -from qiskit.result.mitigation.utils import ( - counts_probability_vector, - expval_with_stddev, - stddev, - str2diag, -) -from qiskit.result.utils import marginal_counts -from qiskit.providers.fake_provider import Fake5QV1 -from test import QiskitTestCase # pylint: disable=wrong-import-order - - -class TestReadoutMitigation(QiskitTestCase): - """Tests for correlated and local readout mitigation.""" - - @classmethod - def setUpClass(cls): - super().setUpClass() - cls.rng = np.random.default_rng(42) - - @staticmethod - def compare_results(res1, res2): - """Compare the results between two runs""" - res1_total_shots = sum(res1.values()) - res2_total_shots = sum(res2.values()) - keys = set(res1.keys()).union(set(res2.keys())) - total = 0 - for key in keys: - val1 = res1.get(key, 0) / res1_total_shots - val2 = res2.get(key, 0) / res2_total_shots - total += abs(val1 - val2) ** 2 - return total - - @staticmethod - def mitigators(assignment_matrices, qubits=None): - """Generates the mitigators to test for given assignment matrices""" - full_assignment_matrix = assignment_matrices[0] - for m in assignment_matrices[1:]: - full_assignment_matrix = np.kron(full_assignment_matrix, m) - CRM = CorrelatedReadoutMitigator(full_assignment_matrix, qubits) - LRM = LocalReadoutMitigator(assignment_matrices, qubits) - mitigators = [CRM, LRM] - return mitigators - - @staticmethod - def simulate_circuit(circuit, assignment_matrix, num_qubits, shots=1024): - """Simulates the given circuit under the given readout noise""" - probs = Statevector.from_instruction(circuit).probabilities() - noisy_probs = assignment_matrix @ probs - labels = [bin(a)[2:].zfill(num_qubits) for a in range(2**num_qubits)] - results = TestReadoutMitigation.rng.choice(labels, size=shots, p=noisy_probs) - return Counts(dict(Counter(results))) - - @staticmethod - def ghz_3_circuit(): - """A 3-qubit circuit generating |000>+|111>""" - c = QuantumCircuit(3) - c.h(0) - c.cx(0, 1) - c.cx(1, 2) - return (c, "ghz_3_ciruit", 3) - - @staticmethod - def first_qubit_h_3_circuit(): - """A 3-qubit circuit generating |000>+|001>""" - c = QuantumCircuit(3) - c.h(0) - return (c, "first_qubit_h_3_circuit", 3) - - @staticmethod - def assignment_matrices(): - """A 3-qubit readout noise assignment matrices""" - return LocalReadoutMitigator(backend=Fake5QV1())._assignment_mats[0:3] - - @staticmethod - def counts_data(circuit, assignment_matrices, shots=1024): - """Generates count data for the noisy and noiseless versions of the circuit simulation""" - full_assignment_matrix = assignment_matrices[0] - for m in assignment_matrices[1:]: - full_assignment_matrix = np.kron(full_assignment_matrix, m) - num_qubits = len(assignment_matrices) - ideal_assignment_matrix = np.eye(2**num_qubits) - counts_ideal = TestReadoutMitigation.simulate_circuit( - circuit, ideal_assignment_matrix, num_qubits, shots - ) - counts_noise = TestReadoutMitigation.simulate_circuit( - circuit, full_assignment_matrix, num_qubits, shots - ) - probs_noise = {key: value / shots for key, value in counts_noise.items()} - return counts_ideal, counts_noise, probs_noise - - def test_mitigation_improvement(self): - """Test whether readout mitigation led to more accurate results""" - shots = 1024 - with self.assertWarns(DeprecationWarning): - # TODO self.assignment_matrices calls LocalReadoutMitigator, - # which only supports BackendV1 at the moment: - # https://github.com/Qiskit/qiskit/issues/12832 - assignment_matrices = self.assignment_matrices() - mitigators = self.mitigators(assignment_matrices) - circuit, circuit_name, num_qubits = self.ghz_3_circuit() - counts_ideal, counts_noise, probs_noise = self.counts_data( - circuit, assignment_matrices, shots - ) - unmitigated_error = self.compare_results(counts_ideal, counts_noise) - with self.assertWarns(DeprecationWarning): - unmitigated_stddev = stddev(probs_noise, shots) - - for mitigator in mitigators: - with self.assertWarns(DeprecationWarning): - mitigated_quasi_probs = mitigator.quasi_probabilities(counts_noise) - mitigated_probs = ( - mitigated_quasi_probs.nearest_probability_distribution().binary_probabilities( - num_bits=num_qubits - ) - ) - mitigated_error = self.compare_results(counts_ideal, mitigated_probs) - self.assertLess( - mitigated_error, - unmitigated_error * 0.8, - f"Mitigator {mitigator} did not improve circuit {circuit_name} measurements", - ) - mitigated_stddev_upper_bound = mitigated_quasi_probs._stddev_upper_bound - max_unmitigated_stddev = max(unmitigated_stddev.values()) - self.assertGreaterEqual( - mitigated_stddev_upper_bound, - max_unmitigated_stddev, - f"Mitigator {mitigator} on circuit {circuit_name} gave stddev upper bound " - f"{mitigated_stddev_upper_bound} while unmitigated stddev maximum is " - f"{max_unmitigated_stddev}", - ) - - def test_expectation_improvement(self): - """Test whether readout mitigation led to more accurate results - and that its standard deviation is increased""" - shots = 1024 - with self.assertWarns(DeprecationWarning): - assignment_matrices = self.assignment_matrices() - mitigators = self.mitigators(assignment_matrices) - num_qubits = len(assignment_matrices) - diagonals = [] - diagonals.append("IZ0") - diagonals.append("101") - diagonals.append("IZZ") - qubit_index = {i: i for i in range(num_qubits)} - circuit, circuit_name, num_qubits = self.ghz_3_circuit() - counts_ideal, counts_noise, _ = self.counts_data(circuit, assignment_matrices, shots) - with self.assertWarns(DeprecationWarning): - probs_ideal, _ = counts_probability_vector(counts_ideal, qubit_index=qubit_index) - probs_noise, _ = counts_probability_vector(counts_noise, qubit_index=qubit_index) - for diagonal in diagonals: - if isinstance(diagonal, str): - with self.assertWarns(DeprecationWarning): - diagonal = str2diag(diagonal) - with self.assertWarns(DeprecationWarning): - unmitigated_expectation, unmitigated_stddev = expval_with_stddev( - diagonal, probs_noise, shots=counts_noise.shots() - ) - ideal_expectation = np.dot(probs_ideal, diagonal) - unmitigated_error = np.abs(ideal_expectation - unmitigated_expectation) - for mitigator in mitigators: - with self.assertWarns(DeprecationWarning): - mitigated_expectation, mitigated_stddev = mitigator.expectation_value( - counts_noise, diagonal - ) - mitigated_error = np.abs(ideal_expectation - mitigated_expectation) - self.assertLess( - mitigated_error, - unmitigated_error, - f"Mitigator {mitigator} did not improve circuit {circuit_name} expectation " - f"computation for diagonal {diagonal} ideal: {ideal_expectation}, unmitigated:" - f" {unmitigated_expectation} mitigated: {mitigated_expectation}", - ) - self.assertGreaterEqual( - mitigated_stddev, - unmitigated_stddev, - f"Mitigator {mitigator} did not increase circuit {circuit_name} the" - f" standard deviation", - ) - - def test_clbits_parameter(self): - """Test whether the clbits parameter is handled correctly""" - shots = 10000 - with self.assertWarns(DeprecationWarning): - assignment_matrices = self.assignment_matrices() - mitigators = self.mitigators(assignment_matrices) - circuit, _, _ = self.first_qubit_h_3_circuit() - counts_ideal, counts_noise, _ = self.counts_data(circuit, assignment_matrices, shots) - counts_ideal_12 = marginal_counts(counts_ideal, [1, 2]) - counts_ideal_02 = marginal_counts(counts_ideal, [0, 2]) - - for mitigator in mitigators: - with self.assertWarns(DeprecationWarning): - mitigated_probs_12 = ( - mitigator.quasi_probabilities(counts_noise, qubits=[1, 2], clbits=[1, 2]) - .nearest_probability_distribution() - .binary_probabilities(num_bits=2) - ) - mitigated_error = self.compare_results(counts_ideal_12, mitigated_probs_12) - self.assertLess( - mitigated_error, - 0.001, - f"Mitigator {mitigator} did not correctly marginalize for qubits 1,2", - ) - with self.assertWarns(DeprecationWarning): - mitigated_probs_02 = ( - mitigator.quasi_probabilities(counts_noise, qubits=[0, 2], clbits=[0, 2]) - .nearest_probability_distribution() - .binary_probabilities(num_bits=2) - ) - mitigated_error = self.compare_results(counts_ideal_02, mitigated_probs_02) - self.assertLess( - mitigated_error, - 0.001, - f"Mitigator {mitigator} did not correctly marginalize for qubits 0,2", - ) - - def test_qubits_parameter(self): - """Test whether the qubits parameter is handled correctly""" - shots = 10000 - with self.assertWarns(DeprecationWarning): - assignment_matrices = self.assignment_matrices() - mitigators = self.mitigators(assignment_matrices) - circuit, _, _ = self.first_qubit_h_3_circuit() - counts_ideal, counts_noise, _ = self.counts_data(circuit, assignment_matrices, shots) - counts_ideal_012 = counts_ideal - counts_ideal_210 = Counts({"000": counts_ideal["000"], "100": counts_ideal["001"]}) - counts_ideal_102 = Counts({"000": counts_ideal["000"], "010": counts_ideal["001"]}) - - for mitigator in mitigators: - with self.assertWarns(DeprecationWarning): - mitigated_probs_012 = ( - mitigator.quasi_probabilities(counts_noise, qubits=[0, 1, 2]) - .nearest_probability_distribution() - .binary_probabilities(num_bits=3) - ) - mitigated_error = self.compare_results(counts_ideal_012, mitigated_probs_012) - self.assertLess( - mitigated_error, - 0.001, - f"Mitigator {mitigator} did not correctly handle qubit order 0, 1, 2", - ) - with self.assertWarns(DeprecationWarning): - mitigated_probs_210 = ( - mitigator.quasi_probabilities(counts_noise, qubits=[2, 1, 0]) - .nearest_probability_distribution() - .binary_probabilities(num_bits=3) - ) - mitigated_error = self.compare_results(counts_ideal_210, mitigated_probs_210) - self.assertLess( - mitigated_error, - 0.001, - f"Mitigator {mitigator} did not correctly handle qubit order 2, 1, 0", - ) - with self.assertWarns(DeprecationWarning): - mitigated_probs_102 = ( - mitigator.quasi_probabilities(counts_noise, qubits=[1, 0, 2]) - .nearest_probability_distribution() - .binary_probabilities(num_bits=3) - ) - mitigated_error = self.compare_results(counts_ideal_102, mitigated_probs_102) - self.assertLess( - mitigated_error, - 0.001, - "Mitigator {mitigator} did not correctly handle qubit order 1, 0, 2", - ) - - def test_repeated_qubits_parameter(self): - """Tests the order of mitigated qubits.""" - shots = 10000 - with self.assertWarns(DeprecationWarning): - assignment_matrices = self.assignment_matrices() - mitigators = self.mitigators(assignment_matrices, qubits=[0, 1, 2]) - circuit, _, _ = self.first_qubit_h_3_circuit() - counts_ideal, counts_noise, _ = self.counts_data(circuit, assignment_matrices, shots) - counts_ideal_012 = counts_ideal - counts_ideal_210 = Counts({"000": counts_ideal["000"], "100": counts_ideal["001"]}) - - for mitigator in mitigators: - with self.assertWarns(DeprecationWarning): - mitigated_probs_210 = ( - mitigator.quasi_probabilities(counts_noise, qubits=[2, 1, 0]) - .nearest_probability_distribution() - .binary_probabilities(num_bits=3) - ) - mitigated_error = self.compare_results(counts_ideal_210, mitigated_probs_210) - self.assertLess( - mitigated_error, - 0.001, - f"Mitigator {mitigator} did not correctly handle qubit order 2,1,0", - ) - with self.assertWarns(DeprecationWarning): - # checking qubit order 2,1,0 should not "overwrite" the default 0,1,2 - mitigated_probs_012 = ( - mitigator.quasi_probabilities(counts_noise) - .nearest_probability_distribution() - .binary_probabilities(num_bits=3) - ) - mitigated_error = self.compare_results(counts_ideal_012, mitigated_probs_012) - self.assertLess( - mitigated_error, - 0.001, - f"Mitigator {mitigator} did not correctly handle qubit order 0,1,2 " - f"(the expected default)", - ) - - def test_qubits_subset_parameter(self): - """Tests mitigation on a subset of the initial set of qubits.""" - - shots = 10000 - with self.assertWarns(DeprecationWarning): - assignment_matrices = self.assignment_matrices() - mitigators = self.mitigators(assignment_matrices, qubits=[2, 4, 6]) - circuit, _, _ = self.first_qubit_h_3_circuit() - counts_ideal, counts_noise, _ = self.counts_data(circuit, assignment_matrices, shots) - counts_ideal_2 = marginal_counts(counts_ideal, [0]) - counts_ideal_6 = marginal_counts(counts_ideal, [2]) - - for mitigator in mitigators: - with self.assertWarns(DeprecationWarning): - mitigated_probs_2 = ( - mitigator.quasi_probabilities(counts_noise, qubits=[2]) - .nearest_probability_distribution() - .binary_probabilities(num_bits=1) - ) - mitigated_error = self.compare_results(counts_ideal_2, mitigated_probs_2) - self.assertLess( - mitigated_error, - 0.001, - "Mitigator {mitigator} did not correctly handle qubit subset", - ) - with self.assertWarns(DeprecationWarning): - mitigated_probs_6 = ( - mitigator.quasi_probabilities(counts_noise, qubits=[6]) - .nearest_probability_distribution() - .binary_probabilities(num_bits=1) - ) - mitigated_error = self.compare_results(counts_ideal_6, mitigated_probs_6) - self.assertLess( - mitigated_error, - 0.001, - f"Mitigator {mitigator} did not correctly handle qubit subset", - ) - with self.assertWarns(DeprecationWarning): - diagonal = str2diag("ZZ") - ideal_expectation = 0 - with self.assertWarns(DeprecationWarning): - mitigated_expectation, _ = mitigator.expectation_value( - counts_noise, diagonal, qubits=[2, 6] - ) - mitigated_error = np.abs(ideal_expectation - mitigated_expectation) - self.assertLess( - mitigated_error, - 0.1, - f"Mitigator {mitigator} did not improve circuit expectation", - ) - - def test_from_backend(self): - """Test whether a local mitigator can be created directly from backend properties""" - with self.assertWarns(DeprecationWarning): - backend = Fake5QV1() - num_qubits = len(backend.properties().qubits) - probs = TestReadoutMitigation.rng.random((num_qubits, 2)) - for qubit_idx, qubit_prop in enumerate(backend.properties().qubits): - for prop in qubit_prop: - if prop.name == "prob_meas1_prep0": - prop.value = probs[qubit_idx][0] - if prop.name == "prob_meas0_prep1": - prop.value = probs[qubit_idx][1] - with self.assertWarns(DeprecationWarning): - LRM_from_backend = LocalReadoutMitigator(backend=backend) - - mats = [] - for qubit_idx in range(num_qubits): - mat = np.array( - [ - [1 - probs[qubit_idx][0], probs[qubit_idx][1]], - [probs[qubit_idx][0], 1 - probs[qubit_idx][1]], - ] - ) - mats.append(mat) - with self.assertWarns(DeprecationWarning): - LRM_from_matrices = LocalReadoutMitigator(assignment_matrices=mats) - self.assertTrue( - matrix_equal( - LRM_from_backend.assignment_matrix(), LRM_from_matrices.assignment_matrix() - ) - ) - - def test_error_handling(self): - """Test that the assignment matrices are valid.""" - bad_matrix_A = np.array([[-0.3, 1], [1.3, 0]]) # negative indices - bad_matrix_B = np.array([[0.2, 1], [0.7, 0]]) # columns not summing to 1 - good_matrix_A = np.array([[0.2, 1], [0.8, 0]]) - for bad_matrix in [bad_matrix_A, bad_matrix_B]: - with self.assertRaises(QiskitError) as cm: - with self.assertWarns(DeprecationWarning): - CorrelatedReadoutMitigator(bad_matrix) - self.assertEqual( - cm.exception.message, - "Assignment matrix columns must be valid probability distributions", - ) - - with self.assertRaises(QiskitError) as cm: - amats = [good_matrix_A, bad_matrix_A] - with self.assertWarns(DeprecationWarning): - LocalReadoutMitigator(amats) - self.assertEqual( - cm.exception.message, - "Assignment matrix columns must be valid probability distributions", - ) - - with self.assertRaises(QiskitError) as cm: - amats = [bad_matrix_B, good_matrix_A] - with self.assertWarns(DeprecationWarning): - LocalReadoutMitigator(amats) - self.assertEqual( - cm.exception.message, - "Assignment matrix columns must be valid probability distributions", - ) - - def test_expectation_value_endian(self): - """Test that endian for expval is little.""" - with self.assertWarns(DeprecationWarning): - assignment_matrices = self.assignment_matrices() - mitigators = self.mitigators(assignment_matrices) - counts = Counts({"10": 3, "11": 24, "00": 74, "01": 923}) - for mitigator in mitigators: - with self.assertWarns(DeprecationWarning): - expval, _ = mitigator.expectation_value(counts, diagonal="IZ", qubits=[0, 1]) - self.assertAlmostEqual(expval, -1.0, places=0) - - def test_quasi_probabilities_shots_passing(self): - """Test output of LocalReadoutMitigator.quasi_probabilities - - We require the number of shots to be set in the output. - """ - with self.assertWarns(DeprecationWarning): - mitigator = LocalReadoutMitigator([np.array([[0.9, 0.1], [0.1, 0.9]])], qubits=[0]) - counts = Counts({"10": 3, "11": 24, "00": 74, "01": 923}) - with self.assertWarns(DeprecationWarning): - quasi_dist = mitigator.quasi_probabilities(counts) - self.assertEqual(quasi_dist.shots, sum(counts.values())) - - # custom number of shots - with self.assertWarns(DeprecationWarning): - quasi_dist = mitigator.quasi_probabilities(counts, shots=1025) - self.assertEqual(quasi_dist.shots, 1025) - - -class TestLocalReadoutMitigation(QiskitTestCase): - """Tests specific to the local readout mitigator""" - - def test_assignment_matrix(self): - """Tests that the local mitigator generates the full assignment matrix correctly""" - qubits = [7, 2, 3] - with self.assertWarns(DeprecationWarning): - backend = Fake5QV1() - assignment_matrices = LocalReadoutMitigator(backend=backend)._assignment_mats[0:3] - expected_assignment_matrix = np.kron( - np.kron(assignment_matrices[2], assignment_matrices[1]), assignment_matrices[0] - ) - expected_mitigation_matrix = np.linalg.inv(expected_assignment_matrix) - with self.assertWarns(DeprecationWarning): - LRM = LocalReadoutMitigator(assignment_matrices, qubits) - self.assertTrue(matrix_equal(expected_mitigation_matrix, LRM.mitigation_matrix())) - self.assertTrue(matrix_equal(expected_assignment_matrix, LRM.assignment_matrix())) - - -if __name__ == "__main__": - unittest.main() diff --git a/test/python/transpiler/test_1q.py b/test/python/transpiler/test_1q.py index 13379f410c34..3e8502f3064c 100644 --- a/test/python/transpiler/test_1q.py +++ b/test/python/transpiler/test_1q.py @@ -16,7 +16,7 @@ from qiskit import QuantumCircuit from qiskit.compiler import transpile -from qiskit.providers.fake_provider import Fake1Q, GenericBackendV2 +from qiskit.providers.fake_provider import GenericBackendV2 from qiskit.providers.basic_provider import BasicSimulator from qiskit.transpiler import TranspilerError from test import combine # pylint: disable=wrong-import-order @@ -41,23 +41,6 @@ def circuit_3516(): return circuit -@ddt -class Test1QFailing(QiskitTestCase): - """1Q tests that should fail.""" - - @combine( - circuit=[circuit_3516], - level=[0, 1, 2, 3], - dsc="Transpiling {circuit.__name__} at level {level} should fail", - name="{circuit.__name__}_level{level}_fail_v1", - ) - def test(self, circuit, level): - """All the levels with all the 1Q backendV1""" - with self.assertRaises(TranspilerError): - with self.assertWarns(DeprecationWarning): - transpile(circuit(), backend=Fake1Q(), optimization_level=level, seed_transpiler=42) - - @ddt class Test1QV2Failing(QiskitTestCase): """1QV2 tests that should fail.""" @@ -74,25 +57,6 @@ def test(self, circuit, level): transpile(circuit(), backend=Fake1QV2, optimization_level=level, seed_transpiler=42) -@ddt -class Test1QWorking(QiskitTestCase): - """1QV1 tests that should work.""" - - @combine( - circuit=[emptycircuit], - level=[0, 1, 2, 3], - dsc="Transpiling {circuit.__name__} at level {level} should work", - name="{circuit.__name__}_level{level}_valid_v1", - ) - def test_device(self, circuit, level): - """All the levels with all the 1Q backendV1""" - with self.assertWarns(DeprecationWarning): - result = transpile( - circuit(), backend=Fake1Q(), optimization_level=level, seed_transpiler=42 - ) - self.assertIsInstance(result, QuantumCircuit) - - @ddt class TestBasicSimulatorWorking(QiskitTestCase): """All the levels with a simulator backend""" diff --git a/test/python/transpiler/test_instruction_durations.py b/test/python/transpiler/test_instruction_durations.py index d9a3ef2b1773..3fe0e4c78e7f 100644 --- a/test/python/transpiler/test_instruction_durations.py +++ b/test/python/transpiler/test_instruction_durations.py @@ -15,7 +15,6 @@ """Test InstructionDurations class.""" from qiskit.circuit import Delay, Parameter -from qiskit.providers.fake_provider import Fake27QPulseV1 from qiskit.providers.fake_provider import GenericBackendV2 from qiskit.transpiler.exceptions import TranspilerError from qiskit.transpiler.instruction_durations import InstructionDurations @@ -36,27 +35,6 @@ def test_fail_if_invalid_dict_is_supplied_when_construction(self): with self.assertRaises(TranspilerError): InstructionDurations(invalid_dic) - def test_from_backend_for_backend_with_dt(self): - # Remove context once https://github.com/Qiskit/qiskit/issues/12760 is fixed - with self.assertWarns(DeprecationWarning): - backend = Fake27QPulseV1() - gate = self._find_gate_with_length(backend) - durations = InstructionDurations.from_backend(backend) - self.assertGreater(durations.dt, 0) - self.assertGreater(durations.get(gate, 0), 0) - - def test_from_backend_for_backend_without_dt(self): - # Remove context once https://github.com/Qiskit/qiskit/issues/12760 is fixed - with self.assertWarns(DeprecationWarning): - backend = Fake27QPulseV1() - delattr(backend.configuration(), "dt") - gate = self._find_gate_with_length(backend) - durations = InstructionDurations.from_backend(backend) - self.assertIsNone(durations.dt) - self.assertGreater(durations.get(gate, 0, "s"), 0) - with self.assertRaises(TranspilerError): - durations.get(gate, 0) - def test_update_with_parameters(self): durations = InstructionDurations( [("rzx", (0, 1), 150, (0.5,)), ("rzx", (0, 1), 300, (1.0,))] diff --git a/test/python/transpiler/test_passmanager_config.py b/test/python/transpiler/test_passmanager_config.py index 85cbb7909aef..cf406c41ac92 100644 --- a/test/python/transpiler/test_passmanager_config.py +++ b/test/python/transpiler/test_passmanager_config.py @@ -15,7 +15,7 @@ from qiskit import QuantumRegister from qiskit.providers.backend import Backend from qiskit.providers.basic_provider import BasicSimulator -from qiskit.providers.fake_provider import Fake20QV1, Fake27QPulseV1, GenericBackendV2 +from qiskit.providers.fake_provider import GenericBackendV2 from qiskit.transpiler.coupling import CouplingMap from qiskit.transpiler.passmanager_config import PassManagerConfig from test import QiskitTestCase # pylint: disable=wrong-import-order @@ -25,21 +25,6 @@ class TestPassManagerConfig(QiskitTestCase): """Test PassManagerConfig.from_backend().""" - def test_config_from_backend(self): - """Test from_backend() with a valid backend. - - `Fake27QPulseV1` is used in this testcase. This backend has `defaults` attribute - that contains an instruction schedule map. - """ - with self.assertWarns(DeprecationWarning): - backend = Fake27QPulseV1() - config = PassManagerConfig.from_backend(backend) - self.assertEqual(config.basis_gates, backend.configuration().basis_gates) - self.assertEqual(config.inst_map, backend.defaults().instruction_schedule_map) - self.assertEqual( - str(config.coupling_map), str(CouplingMap(backend.configuration().coupling_map)) - ) - def test_config_from_backend_v2(self): """Test from_backend() with a BackendV2 instance.""" backend = GenericBackendV2(num_qubits=27, seed=42) @@ -54,30 +39,6 @@ def test_invalid_backend(self): with self.assertRaises(AttributeError): PassManagerConfig.from_backend(Backend()) - def test_from_backend_and_user_v1(self): - """Test from_backend() with a backend and user options. - - `FakeMelbourne` is used in this testcase. This backend does not have - `defaults` attribute and thus not provide an instruction schedule map. - - REMOVE AFTER Fake20QV1 GETS REMOVED. - """ - qr = QuantumRegister(4, "qr") - initial_layout = [None, qr[0], qr[1], qr[2], None, qr[3]] - - with self.assertWarns(DeprecationWarning): - backend = Fake20QV1() - config = PassManagerConfig.from_backend( - backend, basis_gates=["user_gate"], initial_layout=initial_layout - ) - self.assertEqual(config.basis_gates, ["user_gate"]) - self.assertNotEqual(config.basis_gates, backend.configuration().basis_gates) - self.assertIsNone(config.inst_map) - self.assertEqual( - str(config.coupling_map), str(CouplingMap(backend.configuration().coupling_map)) - ) - self.assertEqual(config.initial_layout, initial_layout) - def test_from_backend_and_user(self): """Test from_backend() with a backend and user options. @@ -104,16 +65,6 @@ def test_from_backend_and_user(self): self.assertEqual(str(config.coupling_map), str(CouplingMap(backend.coupling_map))) self.assertEqual(config.initial_layout, initial_layout) - def test_from_backendv1_inst_map_is_none(self): - """Test that from_backend() works with backend that has defaults defined as None.""" - with self.assertWarns(DeprecationWarning): - backend = Fake27QPulseV1() - backend.defaults = lambda: None - with self.assertWarns(DeprecationWarning): - config = PassManagerConfig.from_backend(backend) - self.assertIsInstance(config, PassManagerConfig) - self.assertIsNone(config.inst_map) - def test_invalid_user_option(self): """Test from_backend() with an invalid user option.""" backend = GenericBackendV2(num_qubits=20, seed=42) @@ -137,7 +88,6 @@ def test_str(self): \ttranslation_method: None \tscheduling_method: None \tinstruction_durations:\u0020 -\tbackend_properties: None \tapproximation_degree: None \tseed_transpiler: None \ttiming_constraints: None diff --git a/test/python/transpiler/test_preset_passmanagers.py b/test/python/transpiler/test_preset_passmanagers.py index 5b23e777fac4..50626f0cc3df 100644 --- a/test/python/transpiler/test_preset_passmanagers.py +++ b/test/python/transpiler/test_preset_passmanagers.py @@ -37,7 +37,7 @@ PadDynamicalDecoupling, RemoveResetInZeroState, ) -from qiskit.providers.fake_provider import Fake5QV1, Fake20QV1, GenericBackendV2 +from qiskit.providers.fake_provider import GenericBackendV2 from qiskit.converters import circuit_to_dag from qiskit.circuit.library import GraphStateGate from qiskit.quantum_info import random_unitary @@ -328,28 +328,6 @@ def test(self, circuit, level, backend): result = transpile(circuit(), backend=backend, optimization_level=level, seed_transpiler=42) self.assertIsInstance(result, QuantumCircuit) - @combine( - circuit=[emptycircuit, circuit_2532], - level=[0, 1, 2, 3], - backend=[ - Fake5QV1(), - Fake20QV1(), - ], - dsc="Transpiler {circuit.__name__} on {backend} backend V1 at level {level}", - name="{circuit.__name__}_{backend}_level{level}", - ) - def test_v1(self, circuit, level, backend): - """All the levels with all the backends""" - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - result = transpile( - circuit(), backend=backend, optimization_level=level, seed_transpiler=42 - ) - self.assertIsInstance(result, QuantumCircuit) - @data(0, 1, 2, 3) def test_quantum_volume_function_transpile(self, opt_level): """Test quantum_volume transpilation.""" @@ -1319,17 +1297,8 @@ class TestGeneratePresetPassManagers(QiskitTestCase): @data(0, 1, 2, 3) def test_with_backend(self, optimization_level): """Test a passmanager is constructed when only a backend and optimization level.""" - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex=r"qiskit\.providers\.models\.backendconfiguration\.GateConfig`", - ): - backend = Fake20QV1() - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `generate_preset_pass_manager` function will " - "stop supporting inputs of type `BackendV1`", - ): - pm = generate_preset_pass_manager(optimization_level, backend) + backend = GenericBackendV2(num_qubits=2) + pm = generate_preset_pass_manager(optimization_level, backend) self.assertIsInstance(pm, PassManager) def test_default_optimization_level(self): diff --git a/test/python/transpiler/test_target.py b/test/python/transpiler/test_target.py index f7aae24eff54..cfdc117dc99a 100644 --- a/test/python/transpiler/test_target.py +++ b/test/python/transpiler/test_target.py @@ -45,11 +45,7 @@ from qiskit.transpiler.exceptions import TranspilerError from qiskit.transpiler import Target from qiskit.transpiler import InstructionProperties -from qiskit.providers.fake_provider import ( - GenericBackendV2, - Fake5QV1, - Fake7QPulseV1, -) +from qiskit.providers.fake_provider import GenericBackendV2 from test import QiskitTestCase # pylint: disable=wrong-import-order from qiskit.providers.backend import QubitProperties from test.python.providers.fake_mumbai_v2 import ( # pylint: disable=wrong-import-order @@ -2008,69 +2004,6 @@ def test_basis_gates_coupling_map(self): self.assertEqual({(0,), (1,), (2,)}, target["u"].keys()) self.assertEqual({(0, 1), (1, 2), (2, 0)}, target["cx"].keys()) - def test_properties(self): - with self.assertWarns(DeprecationWarning): - fake_backend = Fake5QV1() - config = fake_backend.configuration() - properties = fake_backend.properties() - target = Target.from_configuration( - basis_gates=config.basis_gates, - num_qubits=config.num_qubits, - coupling_map=CouplingMap(config.coupling_map), - backend_properties=properties, - ) - self.assertEqual(0, target["rz"][(0,)].error) - self.assertEqual(0, target["rz"][(0,)].duration) - - def test_properties_with_durations(self): - with self.assertWarns(DeprecationWarning): - fake_backend = Fake5QV1() - config = fake_backend.configuration() - properties = fake_backend.properties() - durations = InstructionDurations([("rz", 0, 0.5)], dt=1.0) - target = Target.from_configuration( - basis_gates=config.basis_gates, - num_qubits=config.num_qubits, - coupling_map=CouplingMap(config.coupling_map), - backend_properties=properties, - instruction_durations=durations, - dt=config.dt, - ) - self.assertEqual(0.5, target["rz"][(0,)].duration) - - def test_inst_map(self): - with self.assertWarns(DeprecationWarning): - fake_backend = Fake7QPulseV1() - config = fake_backend.configuration() - properties = fake_backend.properties() - defaults = fake_backend.defaults() - constraints = TimingConstraints(**config.timing_constraints) - with self.assertWarns(DeprecationWarning): - target = Target.from_configuration( - basis_gates=config.basis_gates, - num_qubits=config.num_qubits, - coupling_map=CouplingMap(config.coupling_map), - backend_properties=properties, - dt=config.dt, - inst_map=defaults.instruction_schedule_map, - timing_constraints=constraints, - ) - self.assertIsNotNone(target["sx"][(0,)].calibration) - self.assertEqual(target.granularity, constraints.granularity) - self.assertEqual(target.min_length, constraints.min_length) - self.assertEqual(target.pulse_alignment, constraints.pulse_alignment) - self.assertEqual(target.acquire_alignment, constraints.acquire_alignment) - - def test_concurrent_measurements(self): - with self.assertWarns(DeprecationWarning): - fake_backend = Fake5QV1() - config = fake_backend.configuration() - target = Target.from_configuration( - basis_gates=config.basis_gates, - concurrent_measurements=config.meas_map, - ) - self.assertEqual(target.concurrent_measurements, config.meas_map) - def test_custom_basis_gates(self): basis_gates = ["my_x", "cx"] custom_name_mapping = {"my_x": XGate()} diff --git a/test/python/transpiler/test_vf2_layout.py b/test/python/transpiler/test_vf2_layout.py index 5257a9d1cee2..ffdca3410655 100644 --- a/test/python/transpiler/test_vf2_layout.py +++ b/test/python/transpiler/test_vf2_layout.py @@ -27,7 +27,7 @@ from qiskit.transpiler.passes.layout.vf2_layout import VF2Layout, VF2LayoutStopReason from qiskit._accelerate.error_map import ErrorMap from qiskit.converters import circuit_to_dag -from qiskit.providers.fake_provider import Fake5QV1, Fake127QPulseV1, GenericBackendV2 +from qiskit.providers.fake_provider import GenericBackendV2 from qiskit.circuit import Measure from qiskit.circuit.library import GraphStateGate, CXGate, XGate, HGate from qiskit.transpiler import PassManager, AnalysisPass @@ -35,7 +35,7 @@ from qiskit.transpiler.preset_passmanagers.common import generate_embed_passmanager from test import QiskitTestCase # pylint: disable=wrong-import-order -from ..legacy_cmaps import TENERIFE_CMAP, RUESCHLIKON_CMAP, MANHATTAN_CMAP +from ..legacy_cmaps import TENERIFE_CMAP, RUESCHLIKON_CMAP, MANHATTAN_CMAP, YORKTOWN_CMAP class LayoutTestCase(QiskitTestCase): @@ -53,9 +53,8 @@ def assertLayout(self, dag, coupling_map, property_set, strict_direction=False): def run(dag, wire_map): for gate in dag.two_qubit_ops(): - with self.assertWarns(DeprecationWarning): - if dag.has_calibration_for(gate) or isinstance(gate.op, ControlFlowOp): - continue + if isinstance(gate.op, ControlFlowOp): + continue physical_q0 = wire_map[gate.qargs[0]] physical_q1 = wire_map[gate.qargs[1]] @@ -631,31 +630,28 @@ def test_no_properties(self): def test_with_properties(self): """Test it finds the least noise perfect layout with no properties.""" - with self.assertWarns(DeprecationWarning): - backend = Fake5QV1() qr = QuantumRegister(2) qc = QuantumCircuit(qr) qc.x(qr) qc.measure_all() - cmap = CouplingMap(backend.configuration().coupling_map) - properties = backend.properties() - vf2_pass = VF2Layout(cmap, properties=properties) + cmap = CouplingMap(YORKTOWN_CMAP) + backend = GenericBackendV2(num_qubits=5, coupling_map=cmap, seed=15) + vf2_pass = VF2Layout(target=backend.target) property_set = {} vf2_pass(qc, property_set) self.assertEqual(set(property_set["layout"].get_physical_bits()), {1, 3}) def test_max_trials_exceeded(self): """Test it exits when max_trials is reached.""" - with self.assertWarns(DeprecationWarning): - backend = Fake5QV1() + qr = QuantumRegister(2) qc = QuantumCircuit(qr) qc.x(qr) qc.cx(0, 1) qc.measure_all() - cmap = CouplingMap(backend.configuration().coupling_map) - properties = backend.properties() - vf2_pass = VF2Layout(cmap, properties=properties, seed=-1, max_trials=1) + cmap = CouplingMap(YORKTOWN_CMAP) + backend = GenericBackendV2(num_qubits=5, coupling_map=cmap, seed=1) + vf2_pass = VF2Layout(target=backend.target, seed=-1, max_trials=1) property_set = {} with self.assertLogs("qiskit.transpiler.passes.layout.vf2_layout", level="DEBUG") as cm: vf2_pass(qc, property_set) @@ -667,16 +663,14 @@ def test_max_trials_exceeded(self): def test_time_limit_exceeded(self): """Test the pass stops after time_limit is reached.""" - with self.assertWarns(DeprecationWarning): - backend = Fake5QV1() qr = QuantumRegister(2) qc = QuantumCircuit(qr) qc.x(qr) qc.cx(0, 1) qc.measure_all() - cmap = CouplingMap(backend.configuration().coupling_map) - properties = backend.properties() - vf2_pass = VF2Layout(cmap, properties=properties, seed=-1, time_limit=0.0) + cmap = CouplingMap(YORKTOWN_CMAP) + backend = GenericBackendV2(num_qubits=5, coupling_map=cmap, seed=1) + vf2_pass = VF2Layout(target=backend.target, seed=-1, time_limit=0.0) property_set = {} with self.assertLogs("qiskit.transpiler.passes.layout.vf2_layout", level="DEBUG") as cm: vf2_pass(qc, property_set) @@ -690,31 +684,9 @@ def test_time_limit_exceeded(self): self.assertEqual(set(property_set["layout"].get_physical_bits()), {2, 0}) - def test_reasonable_limits_for_simple_layouts_v1(self): - """Test that the default trials is set to a reasonable number. - REMOVE ONCE Fake127QPulseV1 IS GONE""" - with self.assertWarns(DeprecationWarning): - backend = Fake127QPulseV1() - qc = QuantumCircuit(5) - qc.cx(2, 3) - qc.cx(0, 1) - cmap = CouplingMap(backend.configuration().coupling_map) - properties = backend.properties() - # Run without any limits set - vf2_pass = VF2Layout(cmap, properties=properties, seed=42) - property_set = {} - with self.assertLogs("qiskit.transpiler.passes.layout.vf2_layout", level="DEBUG") as cm: - vf2_pass(qc, property_set) - self.assertIn( - "DEBUG:qiskit.transpiler.passes.layout.vf2_layout:Trial 299 is >= configured max trials 299", - cm.output, - ) - self.assertEqual(set(property_set["layout"].get_physical_bits()), {57, 58, 61, 62, 0}) - def test_reasonable_limits_for_simple_layouts(self): """Test that the default trials is set to a reasonable number.""" - with self.assertWarns(DeprecationWarning): - backend = GenericBackendV2(27, calibrate_instructions=True, seed=42) + backend = GenericBackendV2(27, seed=42) qc = QuantumCircuit(5) qc.cx(2, 3) qc.cx(0, 1) @@ -732,16 +704,14 @@ def test_reasonable_limits_for_simple_layouts(self): def test_no_limits_with_negative(self): """Test that we're not enforcing a trial limit if set to negative.""" - with self.assertWarns(DeprecationWarning): - backend = Fake5QV1() qc = QuantumCircuit(3) qc.h(0) - cmap = CouplingMap(backend.configuration().coupling_map) - properties = backend.properties() + cmap = CouplingMap(YORKTOWN_CMAP) + backend = GenericBackendV2(num_qubits=5, coupling_map=cmap, seed=4) + # Run without any limits set vf2_pass = VF2Layout( - cmap, - properties=properties, + target=backend.target, seed=42, max_trials=0, ) diff --git a/test/python/transpiler/test_vf2_post_layout.py b/test/python/transpiler/test_vf2_post_layout.py index 9aaab695197a..0de3c4141366 100644 --- a/test/python/transpiler/test_vf2_post_layout.py +++ b/test/python/transpiler/test_vf2_post_layout.py @@ -20,7 +20,7 @@ from qiskit.transpiler import CouplingMap, Layout, TranspilerError from qiskit.transpiler.passes.layout.vf2_post_layout import VF2PostLayout, VF2PostLayoutStopReason from qiskit.converters import circuit_to_dag -from qiskit.providers.fake_provider import Fake5QV1, GenericBackendV2 +from qiskit.providers.fake_provider import GenericBackendV2 from qiskit.circuit import Qubit from qiskit.compiler.transpiler import transpile from qiskit.transpiler.target import Target, InstructionProperties @@ -95,27 +95,6 @@ def test_no_constraints(self): with self.assertRaises(TranspilerError): empty_pass.run(circuit_to_dag(qc)) - def test_no_backend_properties(self): - """Test we raise at runtime if no properties are provided with a coupling graph.""" - qc = QuantumCircuit(2) - empty_pass = VF2PostLayout(coupling_map=CouplingMap([(0, 1), (1, 2)])) - with self.assertRaises(TranspilerError): - empty_pass.run(circuit_to_dag(qc)) - - def test_empty_circuit(self): - """Test no solution found for empty circuit""" - with self.assertWarns(DeprecationWarning): - backend = Fake5QV1() - qc = QuantumCircuit(2, 2) - cmap = CouplingMap(backend.configuration().coupling_map) - props = backend.properties() - vf2_pass = VF2PostLayout(coupling_map=cmap, properties=props) - vf2_pass.run(circuit_to_dag(qc)) - self.assertEqual( - vf2_pass.property_set["VF2PostLayout_stop_reason"], - VF2PostLayoutStopReason.NO_BETTER_SOLUTION_FOUND, - ) - def test_empty_circuit_v2(self): """Test no solution found for empty circuit with v2 backend""" qc = QuantumCircuit(2, 2) @@ -129,35 +108,6 @@ def test_empty_circuit_v2(self): VF2PostLayoutStopReason.NO_BETTER_SOLUTION_FOUND, ) - def test_skip_3q_circuit(self): - """Test that the pass is a no-op on circuits with >2q gates.""" - with self.assertWarns(DeprecationWarning): - backend = Fake5QV1() - qc = QuantumCircuit(3) - qc.ccx(0, 1, 2) - cmap = CouplingMap(backend.configuration().coupling_map) - props = backend.properties() - vf2_pass = VF2PostLayout(coupling_map=cmap, properties=props) - vf2_pass.run(circuit_to_dag(qc)) - self.assertEqual( - vf2_pass.property_set["VF2PostLayout_stop_reason"], VF2PostLayoutStopReason.MORE_THAN_2Q - ) - - def test_skip_3q_circuit_control_flow(self): - """Test that the pass is a no-op on circuits with >2q gates.""" - with self.assertWarns(DeprecationWarning): - backend = Fake5QV1() - qc = QuantumCircuit(3) - with qc.for_loop((1,)): - qc.ccx(0, 1, 2) - cmap = CouplingMap(backend.configuration().coupling_map) - props = backend.properties() - vf2_pass = VF2PostLayout(coupling_map=cmap, properties=props) - vf2_pass.run(circuit_to_dag(qc)) - self.assertEqual( - vf2_pass.property_set["VF2PostLayout_stop_reason"], VF2PostLayoutStopReason.MORE_THAN_2Q - ) - def test_skip_3q_circuit_v2(self): """Test that the pass is a no-op on circuits with >2q gates with a target.""" qc = QuantumCircuit(3) @@ -185,58 +135,6 @@ def test_skip_3q_circuit_control_flow_v2(self): vf2_pass.property_set["VF2PostLayout_stop_reason"], VF2PostLayoutStopReason.MORE_THAN_2Q ) - def test_2q_circuit_5q_backend(self): - """A simple example, without considering the direction - 0 - 1 - qr1 - qr0 - """ - with self.assertWarns(DeprecationWarning): - backend = Fake5QV1() - - qr = QuantumRegister(2, "qr") - circuit = QuantumCircuit(qr) - circuit.cx(qr[1], qr[0]) # qr1 -> qr0 - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - tqc = transpile(circuit, backend, layout_method="dense") - initial_layout = tqc._layout - dag = circuit_to_dag(tqc) - cmap = CouplingMap(backend.configuration().coupling_map) - props = backend.properties() - pass_ = VF2PostLayout(coupling_map=cmap, properties=props, seed=self.seed) - pass_.run(dag) - self.assertLayout(dag, cmap, pass_.property_set) - self.assertNotEqual(pass_.property_set["post_layout"], initial_layout) - - def test_2q_circuit_5q_backend_controlflow(self): - """A simple example, without considering the direction - 0 - 1 - qr1 - qr0 - """ - with self.assertWarns(DeprecationWarning): - backend = Fake5QV1() - - circuit = QuantumCircuit(2, 1) - with circuit.for_loop((1,)): - circuit.cx(1, 0) # qr1 -> qr0 - with circuit.if_test((circuit.clbits[0], True)) as else_: - pass - with else_: - with circuit.while_loop((circuit.clbits[0], True)): - circuit.cx(1, 0) # qr1 -> qr0 - initial_layout = Layout(dict(enumerate(circuit.qubits))) - circuit._layout = initial_layout - dag = circuit_to_dag(circuit) - cmap = CouplingMap(backend.configuration().coupling_map) - props = backend.properties() - pass_ = VF2PostLayout(coupling_map=cmap, properties=props, seed=self.seed) - pass_.run(dag) - self.assertLayout(dag, cmap, pass_.property_set) - self.assertNotEqual(pass_.property_set["post_layout"], initial_layout) - def test_2q_circuit_5q_backend_max_trials(self): """A simple example, without considering the direction 0 - 1 @@ -273,45 +171,6 @@ def test_2q_circuit_5q_backend_max_trials(self): self.assertLayout(dag, cmap, pass_.property_set) self.assertNotEqual(pass_.property_set["post_layout"], initial_layout) - def test_2q_circuit_5q_backend_max_trials_v1(self): - """A simple example, without considering the direction - 0 - 1 - qr1 - qr0 - """ - max_trials = 11 - with self.assertWarns(DeprecationWarning): - backend = Fake5QV1() - - qr = QuantumRegister(2, "qr") - circuit = QuantumCircuit(qr) - circuit.cx(qr[1], qr[0]) # qr1 -> qr0 - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - tqc = transpile(circuit, backend, layout_method="dense") - initial_layout = tqc._layout - dag = circuit_to_dag(tqc) - cmap = CouplingMap(backend.configuration().coupling_map) - props = backend.properties() - pass_ = VF2PostLayout( - coupling_map=cmap, properties=props, seed=self.seed, max_trials=max_trials - ) - - with self.assertLogs( - "qiskit.transpiler.passes.layout.vf2_post_layout", level="DEBUG" - ) as cm: - pass_.run(dag) - self.assertIn( - f"DEBUG:qiskit.transpiler.passes.layout.vf2_post_layout:Trial {max_trials} " - f"is >= configured max trials {max_trials}", - cm.output, - ) - - self.assertLayout(dag, cmap, pass_.property_set) - self.assertNotEqual(pass_.property_set["post_layout"], initial_layout) - def test_best_mapping_ghz_state_full_device_multiple_qregs(self): """Test best mappings with multiple registers""" backend = GenericBackendV2( @@ -587,30 +446,6 @@ def test_no_constraints(self): with self.assertRaises(TranspilerError): empty_pass.run(circuit_to_dag(qc)) - def test_no_backend_properties(self): - """Test we raise at runtime if no properties are provided with a coupling graph.""" - qc = QuantumCircuit(2) - empty_pass = VF2PostLayout( - coupling_map=CouplingMap([(0, 1), (1, 2)]), strict_direction=False - ) - with self.assertRaises(TranspilerError): - empty_pass.run(circuit_to_dag(qc)) - - def test_empty_circuit(self): - """Test no solution found for empty circuit""" - with self.assertWarns(DeprecationWarning): - backend = Fake5QV1() - - qc = QuantumCircuit(2, 2) - cmap = CouplingMap(backend.configuration().coupling_map) - props = backend.properties() - vf2_pass = VF2PostLayout(coupling_map=cmap, properties=props, strict_direction=False) - vf2_pass.run(circuit_to_dag(qc)) - self.assertEqual( - vf2_pass.property_set["VF2PostLayout_stop_reason"], - VF2PostLayoutStopReason.NO_BETTER_SOLUTION_FOUND, - ) - def test_empty_circuit_v2(self): """Test no solution found for empty circuit with v2 backend""" qc = QuantumCircuit(2, 2) @@ -627,22 +462,6 @@ def test_empty_circuit_v2(self): VF2PostLayoutStopReason.NO_BETTER_SOLUTION_FOUND, ) - def test_skip_3q_circuit(self): - """Test that the pass is a no-op on circuits with >2q gates.""" - with self.assertWarns(DeprecationWarning): - backend = Fake5QV1() - - qc = QuantumCircuit(3) - qc.ccx(0, 1, 2) - cmap = CouplingMap(backend.configuration().coupling_map) - props = backend.properties() - vf2_pass = VF2PostLayout(coupling_map=cmap, properties=props, strict_direction=False) - vf2_pass.run(circuit_to_dag(qc)) - self.assertEqual( - vf2_pass.property_set["VF2PostLayout_stop_reason"], - VF2PostLayoutStopReason.MORE_THAN_2Q, - ) - def test_skip_3q_circuit_v2(self): """Test that the pass is a no-op on circuits with >2q gates with a target.""" qc = QuantumCircuit(3) @@ -686,36 +505,6 @@ def test_best_mapping_ghz_state_full_device_multiple_qregs(self): self.assertLayout(dag, cmap, pass_.property_set) self.assertNotEqual(pass_.property_set["post_layout"], initial_layout) - def test_best_mapping_ghz_state_full_device_multiple_qregs_v1(self): - """Test best mappings with multiple registers""" - with self.assertWarns(DeprecationWarning): - backend = Fake5QV1() - qr_a = QuantumRegister(2) - qr_b = QuantumRegister(3) - qc = QuantumCircuit(qr_a, qr_b) - qc.h(qr_a[0]) - qc.cx(qr_a[0], qr_a[1]) - qc.cx(qr_a[0], qr_b[0]) - qc.cx(qr_a[0], qr_b[1]) - qc.cx(qr_a[0], qr_b[2]) - qc.measure_all() - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - tqc = transpile(qc, backend, seed_transpiler=self.seed, layout_method="trivial") - initial_layout = tqc._layout - dag = circuit_to_dag(tqc) - cmap = CouplingMap(backend.configuration().coupling_map) - props = backend.properties() - pass_ = VF2PostLayout( - coupling_map=cmap, properties=props, seed=self.seed, strict_direction=False - ) - pass_.run(dag) - self.assertLayout(dag, cmap, pass_.property_set) - self.assertNotEqual(pass_.property_set["post_layout"], initial_layout) - def test_2q_circuit_5q_backend(self): """A simple example, without considering the direction 0 - 1 @@ -739,34 +528,6 @@ def test_2q_circuit_5q_backend(self): self.assertLayout(dag, cmap, pass_.property_set) self.assertNotEqual(pass_.property_set["post_layout"], initial_layout) - def test_2q_circuit_5q_backend_v1(self): - """A simple example, without considering the direction - 0 - 1 - qr1 - qr0 - """ - with self.assertWarns(DeprecationWarning): - backend = Fake5QV1() - - qr = QuantumRegister(2, "qr") - circuit = QuantumCircuit(qr) - circuit.cx(qr[1], qr[0]) # qr1 -> qr0 - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `transpile` function will " - "stop supporting inputs of type `BackendV1`", - ): - tqc = transpile(circuit, backend, layout_method="dense") - initial_layout = tqc._layout - dag = circuit_to_dag(tqc) - cmap = CouplingMap(backend.configuration().coupling_map) - props = backend.properties() - pass_ = VF2PostLayout( - coupling_map=cmap, properties=props, seed=self.seed, strict_direction=False - ) - pass_.run(dag) - self.assertLayout(dag, cmap, pass_.property_set) - self.assertNotEqual(pass_.property_set["post_layout"], initial_layout) - def test_best_mapping_ghz_state_full_device_multiple_qregs_v2(self): """Test best mappings with multiple registers""" diff --git a/test/python/visualization/references/20_plot_circuit_layout.png b/test/python/visualization/references/20_plot_circuit_layout.png index f9fb472d4458932f87c65bdee0de0682fb43cff2..d0e577d38cad71d3f0ca895810b10758547ac50b 100644 GIT binary patch literal 64071 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%0DvlUxMQn^IiP?eSrd6`Zz_bt7k-N=H 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≈I<4ec^-M5NP`Qi&wK4!Vl`sy=_^Ef1M-J1IrGL@KZ9RlYPl-S%l0u!`m11u zL;8gw{7)@8dwRCYMV@@#ay({s1MX>BYM{9hT-!uI^e^)Xa~&?aYM`BoIagr65a0Ob z$6-D`u?tvX{0aGPQ-kh%DmuTRSL{@_Du@>z5-&s#8hAMKj?2>ZY1B+??QL~=OcQqGp2N^d+s-H4iFo-|%kFTEO)h43 zcK6)g^%)(w(RoGHovu5tRxLZ7^@IxOL2&tC(U9I`%4jNcVkm2aVm2kSfhP@2Rla|* zWhYfG;?7>G(4Dtb7R@N1RP3?f=LfN-H}BvsUFu|)_LQ9Wt)?aQ9^cV4tk2A>sfS1s z_{D7>%Wb!JmNOL{)Pc(#5*g97fv(s1`1nFj0A{#k3^_og(QpVR%?|4kv~PQRJ|UrS zaFdAj3F6%&oN>E$wJkzP&ciXElB4FS(8g>z|MujPvWkid3qi|JLZWi^(8oQ_?Yb^8iLX*0upBdwJp9wShT{2%vNB1dC7iUj@2>1MD z<9T5l7H>caNW%$ZB^L}0XCl`ZBIV~=&#$r=Y&1z6`Fi-PH+3@h;>ew!=GQ?YB(qe2Wa#c2UiKQD?W?XgqZ)D z5AsCs6`!mzVk!UMr*B}Z`IMzl1#N9?M6Wb(VL%QYIWkr#lY!#`#^W#!hck1DrDZti z^wK0`uK)Y+$!MwuQ2%LYuw9ty!+cbi`b%@Yzy&Tyme^ohH*extNm^A%LO|gsZjNVT z+Q%lQS0nnP;^TvA`k&%-jEjqVOLcH`Oogy2l)WJ2N6Sl9&L}}hI0Z2~4Uuq8(Z6d> z&qVb5><|vD*jr&a^`7d=mDV1=ct13B$uEa^BRF{)BHFl8IeX|v4;AVWD4j`W9Ob?K zJ(QLcdrzRXJU2Htw7o!2k*xb53r{mZOy*bAQX)p|Pz%$*CP35FCGEUS#3{TRcb#Bh zqR9xh=bwQ(IAW^sr~W(t{n8lAJj;pzp2>E|t*WZhqT>+eEvTfRkgWGiZ6gU{fS5K6 zGyX-0eFw@c9;!>Aqo{r zJ(SZvfHPlDaAy;bJG^}P(vnD~P~+_9Vw~xAZNx1|84vGRoT-ylbts#?1A>*H?iJ-| zMf{T=xSpK)>#0Nv>Q;h<-v^znnFcxI+)K2W0#;Vmv-;G{|?9_x1S9Xs?ZCuZ3os7JVv>#Cm!A_EE@Afjrdh$nA9@ zb&Kn1>-Du&1)c2OqL(&XEPgg5wzj%~L7UCeVMHy0X;`beg)VSq)Uf;~DzO2$P7jrm z`=u9F{lKs8BR#S_)?xkK-pNUrNnv(}KlP@+x{gkSfgwf;C4aFUDDiMjj#yt*S{Hzu z_+BnXi?2gGWi(WGILfARz;=vRVNrG!BrOjBAFEQg?`^z~m`(sYvlPE9@Fv~a_W1LumK9y8j6 z7yVb~h`c%s@o`7QMa7sr>LIxGJGMlnr0C#SB0la? z&Gy=)AQZ!9PWqJ*4CMxpL5dlmq)4Gqk`#RtaTXzrPcN@twzU<*GDN$qM7x3o2@Sz^ z!Wi;Dy()nZB9bCwWyX)D9byiCVw(Q<4R|8FuAz)Sjn|{^fR94FVJnhR;_P4{u-O0k m1OFL=|Ez=m4|}0=o$1YiCz9fEx87~QkEW`QN|v%^z<&XB4%5m2 literal 23584 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ΜMd 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%0AkkmKd|(jD|brDKjgHT z!(q?kAi)b(BFKy&jC^mS7(A5Z;HRgVD=rnS5 zMj@X8#an4)%EQ!V%W9C}w+6=NDAx9gC+D>gl5`Mg)UVF|MXRr+&Mso}^sOgjFle2= z*Vjgw%Ll{kWRYtYP#tg4g2LZ{~; zO5T8FJ#9aRmTxnxt2R1gd_X7*6K}y;Lm^2pTT8>^FkIzJ9_So@ac*uM4sdA5eblCWtfexeWZ9k+;UX5d?hT0zRJVXn7-@aaIA7 zA}t4AH06lZ+Lr=+S*}G?>P_xQ6f`KRX@YiZ)VYl;w%eWf(A(=zkV?p-OQl2j{k`*L`PPZ#66Jv7L{djn zWK`VHxyi?=6Fq@YB7*7Nlrz@+EUN9Fd1LBLHRS*bG@q(tbGGuDKSU8L9^-o_*tEa- z1uI~L0jX;&5dC)boLr5W(SA~fs}1O^qZ+Bn4rih{ic&CBSi(2T)IZS^X<>M?j+cAX z*h^9Fv9{4mx=JozRqJ^E>9{|i^u!b&JEaMQ$zX&reeTT|I@p|$$*@%}o=`Y4W&I`S z|23)h*GsLZ)2xVGN6UZ(;&;!EPXF(BhH0~`pT#TdZz({#c!1D0z6=7x_|_J4ykh_~i(C!9o}Tzy_Py0zw|y zMXIKaJBt^(8onotm~`aZLqr^O(85Wq-2a25v%*5i~|X)|i(jna4%YmhtCxsw)bimc8 zxih6YH(jx63LCt+Yu`Rw7qh&vO$&gp^#{Gu$AorV|jUe z3MkuHx7_Qbr^8sMuHZ5rqyttkXl7i7Y&QH_(fhx@I$)F{9*}cIkPZf9ZvMUWZ*Tk? e8~+T4?Zk#S#@CpAl6PQOAU2k#PE?wECjS?qQTqh| literal 16769 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 literal 0 HcmV?d00001 diff --git a/test/visual/mpl/circuit/references/5bit_quantum_computer.png b/test/visual/mpl/circuit/references/5bit_quantum_computer.png new file mode 100644 index 0000000000000000000000000000000000000000..74afcaf97fd11d01400586961e2d0e3ec5718277 GIT binary patch literal 17661 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 ZOZY-6-@{}8_$m^VcM59qm9l1G{{x>4_{9JK literal 0 HcmV?d00001 diff --git a/test/visual/mpl/circuit/references/7_plot_circuit_layout.png b/test/visual/mpl/circuit/references/7_plot_circuit_layout.png new file mode 100644 index 0000000000000000000000000000000000000000..937081b236ce875580fbc271b083e2c05cd7d5d5 GIT binary patch literal 25394 zcmeFZ^;=Zm7dEVdbf|!Wlrf|z(hUlt4oJ61x75%jAT=YXphHOv2#(U-9fP2>Ae|%9 zLrM3$51;Sz{0HxEkJsg;*O@c>?7iY%Yu#&|30GHrLQQd<;@r7&)bOW|G|!#8;Cb#G zkv16#xFY++6aoH`a97lK*K)RY_cC*}I;Udhj&N{xcd#?R;c4aSX6NiAbWh@*Am0sJ zcXx!FBtO67|GnX!v#SmNO;w^1un0Ngse#+MbF^mA-}9Mr8FuH+nWw@ZJ=FG2UOD#h zp0M$sKb4c4w>7!@v-s}XVPcCxatr)*=mQF@)t#w0o@YFFF>%fvh_3q$b~bbALNRe~ z6Feo|tGj!7zOJvt+F&hQ{i|c`uzt#mzRl$w433U4=AEMZ0E72!-5-XdVH}}Ns%RL`O)5_`3{GxV z7!89fk%eGja7}qe0=WH3vndxG9dn693XaBx{=cvMKZ*VSU@+-?z$CHq=%1Dg%gbMC zYLbG2&i5?}>*(kRi-~FJ=)|rq!uzb42(Z{%@kj~p^&4t3+w@}<&hstdbjfmoDNRie zHM8hrV`IVXB?!E{Q_YI#YUK>gTsKCUUU5IA8fGOh4Cl2otZa2Eyu3UTY52w45i{c5yD%8fP<2hs{*2s- zMg4jhfA8d^YGB}LjGS1k(y!j$#?dnS{Z1QMod52`6W-Z4EBL-mVYIg9AMv>#A8#ME zIvN@YpVWr2?OJpat9iTNl94+1*gAM=-VP$ zX9AC+PMf^yH(3P}I+p|9Pfi*KtcS3#=X=$?ea|eWI$v=Uu4h>o9pfE%G9MW5onyGT zSTJDDCIC6LkC{sQ_6>=V^7{AVc9go2QPyIa+Bybx+nuh^L) zlZ0aPeWQ{jy74jURVY`AcW{4(n#qnxh2vOj2(9c>3yT@|KxOn+^-&HM`^azcYdj+h zOYNV{$>UWoEfbR-O8(kL_Tyjdza}QS78bZ~-@aX1QL*WK($#R@bfnm7+`V5V{`h&8 zcEm)Dm)ptF{^A~xT|2Zp$EkXMz1j|uh+9sz8;`*s@qi<7F13`}zY>1Ct5&9_udAyi zt$R}ZM+)M9T8g{={h?!|#R>0k`l=5P_gwm&b!R8zS zUS57@waD)-up|6!_I)zBO(8j4qKLh%v-A8=z{=3xU`4&hce-*7dI9H2>Fn(6e2-DI zyUN+|yAnn8%3z7A8CAQJe)~PA`*J0A{hYja?(F}IZ|HPB-Enr?TKL5?LByj%}ep{^Edq24A`*=j04X<zru)i43s^7ZT2 z_a=Ai+q@bMjllnnH+?KDEVj0{1*D~q64{+!zWj67*@sd&{vIZOQMoS$z$b?>z2Xt- zbe(;;*ou;rhNTiVuBg$HG<9TsPB;I>Pv?_4=lazlNxvPwz)i709PkUTpKa|O9aZxw ze%|v^Q$F7*(qLVo+~pzPuvhL&O17IE514FhLeTN9!a95Dh+A=Y4O>%>ex|NB644IhR5gwDi=wr!05e+i>G2cy-QrFK7|MA4 z`hi9zGYiXKu=$Rdofc|(*@z+9S8?*b5sBZ8#>re zH&XB4?+u(73iztY!^_LNcQh~8b2xPx5O2yc8w(Tw51;vjAtl{^>&!Mc7PvVzeA+j} z$V51wf09?2o*oQVT8GS3tYN=PcL_F&S(8UAwNE2ja#jYm9@+cg4o{O0PiN!p4C@oz z4Q68+9$Q&)Y|eGf5V7x_lRLuGR-K+4QhT5&f*GXX9Jix`WZI@Xq8b-h!#4yEYy+3* z2ooE`7!1bU)6=-G8(UqS7#DZ-xuM}mp&1eT(KIP!%USvP-5Xvv;RQV)D8O0-wrCos zPA;X4V2+Cn^;(ZQ4oOCK+I7nTz|{L6ihHfH0Efl)+X3(RB;zM)KbVV;GjuZBUK-HW zRjq60f>)V?ICP~|u+WP3XkgdOwvXDZYkNIsEmSe@egL;KC z{^KNvU+nSZf+9y+2K&k4K0%#yJub;CpyN?yNN;q0ZS7ISZikX)noC6i7QNoX|G>{? zXLwW*v8?p;P?ekK<}0b_7+V*rC#p@fCgct5dImJk)t3{ON^(5V+MQ?4>p*p~>cYs@ z!Pek$G1nm^CQVf{804B9x|~QZucn~rk(s;Oh-KbSIyPmhn#Is3gNygP2@H%(7{)uw zIF$~wfeQ*4>|YSlm9S}-_wb$z;_)(*gT!9BL8IA6oyuryG|={~6{+(DEU)qKf$D6E zN=FesOj3gnyziMH_*!!QWbZrge`RKu3kxr zJL74a`*Z9!%&rykp2sY>keZ*KWC{ruK*A}UqG2ONnI(Kl?rGj?-4z#=QUEp10)65utIDrtAmrUzb z(9u&1@(gG>vp^~7`rCfF_16Ok<%RUilalbSjnH?fX>ejG$djhReklXAHIv zKZe1k?=IXytfwEEUMp{2$w{jglygI4UqMm*<%$jdSA2=zU~C3{P^YkxLGxad67Nj_ z){6FgL{mOA)%TVRDsriv3}|Mp_7mb^vu}a)G$Jg#_sO6;anoO^9zuE&cOyA`$3icKOa~$w6P?u!cQqiF7aoz4VQB#HVPMeLPFlY}bapdg` ze1ef#>O^I`tM}T3I{r%Tf1fm&?Ttp`9}z0KgTyXM z%esl^(85qsHjNP{n)1Ktmz#ZIweGyNn0{U~)&PzSczhk($8%EBY}vnYrD`+q*VB?y5#tWQ!RjDar%gAJx@D{NpjmOZC%n{LL+Zn%(G_wG74 zXx&xlLm_c0!`-G0A;@L$vctfY(8iFYAO5s7HIb@yKi4WqH#2LuS2QMl|0X;h(%t<( zjJ_n(RWgX|JBJp_S8*8oO~Jcx-s{l0fECw7hSqsRi~Me^5k>i#ar_5FH(Fe5<&V~t zd*xz|iz+5BP#T_nhZp+J%}D$&z3GK4!iEl|>E?6VXHWaIfzL98?x^maD1S)!U7F9w zn(aYdRxbAOEX{1MDWW=Bp#=u{uu{~)Cuu+up2!OhQyXD1Tui#d(!u7OkCGaCVDbL{ zej@3|R(~k(*;8FCJYIbzu3O|cyl(*5c6$B_gAb;{pX9KdBN37wa=8%5ph5S zleNBlk}}nS#1^^0HOfrN;~snkGJ?a24JIDdn=HB zYFQ-oj#>h}Z!9T!ugQGaF@mG>6P(k~uAGs0?Q7EI)Q{UZTeU9NTF`Z3Vha-Bnu0(^ zvyWI%{RM_QjUV5xh8Rg+n{+=jZ8*T}7$KD8^v24FMVZd}G{%f)u+9VR?hiKaYHmw> zf*(<)eKuZ1qT3?|B;gK8BD~G3adKwFg3<<+;t|V`hQh!W55P0JDkI(2C+7L9X+FCm?wo+wgv{NkQUV!hFch&hE+sGV`5u#`ci=)z zrd)Q9OTC&Y{nETlf!$LaE;;EZ78t-ai-9~+ zVIdwsQeI1e16F@|-6H98o`kbjG`2-(7@nx>AF|%*Bt8I??)q@pa6X6}o+tq}(a%YT z`z5sAnGd|r%5HB_?4gfjpj$Ln(-ds|?jJ@H%DnR=(o4*D0Y>ieH+s_uCvk-AWE^)%sW#63x>5BZ5} z#QF4e;!qTAe{}UFX%m+>Wh@r|8IO||uynEk8AuJuYxxh`aKRIONNQNFvxX3@thdmJ z`%)aBKrDXTTAX_AJj1NI$wiTYLRZ;Zvyh}7ollZ}(;wqa5#Hu}3{BM>g`OY%mSH^c zRGt!-+IlBQPmeB0H;9E+6?Iyr&{Dk*C6(z75Y<+gbSJ7^e4Lq8d?CI0QrkLi1(7b~ z_sWTGyo%&y&Oaf3IIj*#4HJFaO)N&7GVqva*y|Qwg>l|T0r7t7DQ`)>iIcy~pZA+D zF6pkv@Vl_^_VTav)SIQ(@)2?j>l)=!(V!Rr-zNe_+;d8<>SZJ5PbJW;Fp9fUob<@4s%0iQ^l0q;+f6Ik zZSRS-mggk$i)@O-jf_$7w&Og5s#Kuh5-S)oK_xLkeY#7Em^<1+N|L3y>}u>CMB|NB zLEV0c3;6YREyPHKef4>2JP#awf4J)n$Q#=3BKCf7p{joxk5fiDr;ZGLxF;%j^~Ahr zC4Gkz_+5UNy3xl}A2^!IQ^p1DPp=F6OTgP)ibYPUq~P}Zw-yVlVNXozOP{|w zeXK7jCbx-(T_mZo6BVTBAp~y{37tL{Nb5iCudzNUgOMFBri_xKRIQ@;ldi3XY}4n$ zX5*Wj5?LjvS1>{*dCX$c*GDtmcW39ewX6S#mrnTn{YsFVTBJYPV^ueCER4p!5*k+d zB2F_DidpMfS>D+}4aHh(av~f2SPoFdZO$gt9b;4=%Oa!l?B|YDP%Efs;lrs83N6S= zb>)g9<99)TOV6TNHKz5@0q(*}40bAfpQgd`+NkweA;-^&h%W@>P!z9WQP^H08+pz)1L} z!5LknKzEIqiIS8DySTF?;BDr-W5NPbqjH_XOp!n!C8PEl^9&8%*oH%aT{cw15nCtb z;%1_mFUsmmfb+ zlXIA$on1tj*jO=X>xOo%ynT+d`1#_~#HCTKr+Qb~*4rO?Z+nBNT23+PO(Z-t@9c!e z4p|o_Jr;?*rb>z)BcjjJCUXzDZ6@LAP2Wn%w}QbRWVrK6zs$i+W`1=u+YVOu@yW}6 zn}k<3WKnpcryq0z1^8=QVp@Rz>ZpK`f$!N3E>eia!;I9pnU0$ zXiHNn@=)huOnlf4ePhv$7aVFVD5bUj8XSYqOgi^CX$`{jWR4SFEgdo;Y$(meV!W`> zu5$SCpWtxq)zvXFu5RQLKO247W%l5pwDsj)`mw?mf#enPsCa(iFL~KyD1o_((6({T z%si@rq>U$vRS)@jkWWmPWyReE{a%?-jt9CKe}lmjZ-M1=_yCACpV0MULUO(*E;Y|C zQ`)FOJQ&M2akrD^FH*#1tM%}xldKABCKjXuEB?G0c||=ZOUtK;b9p7rj}KZ$*KM;Y z*`w|g7?Pe*q13{n3!`=P8f#X|Z7?tfN#N)D4UD3EVK!bp4g>cv!G41%8P{mV%fi2r zZU4$IZ9Q(4A7-ZYH1bE}+uYj2$kNtn)l%H$)F$rPRpZ0!#)K(PGux+S$r9JaQ8qby z-Y)%(>b38^^TLHC+vD^|es5D?gw@`3A|0wCggpR;sq37louolYH5c1jlSKY_eA(dz ziF5Tvdj{PXZsLMC8V#@KbYW*-vcN_VHD-I#SG^Z_N zmsOrG8CvVpmDVs>`|Z*Rm2cQ=!bIWb(;a<7q1uhsb(jF@%#~$FT1x>f~P2Q$>QG1wYL}i4c8QS z^Jh3`#zu(~>EDJA^q-fnOhQ_XXwx_M^2;!08w+jYJde~AIqMNR&si>*v{e;m1-$B+ zSX^Bnw?9^hiQpW~*47CPVN#wCEx)5Y_rU)4B`cH+QR~**8HC$UEvb@I!+b+3Ik&0K z6N6}&3Oi8Yby{gswPq84Ild0neB_I~fAqOVRBH`l+Qc_2k?;P(8Pv_s8vD?(=w@1T_SVN3xfJrX}2l}#kvIK4V>v?6S^RdP$I~$QZS20-+bp3u- zFttvWyo9vK0Oi>Fa>6E^m^oEcXb8(t_BTOozH4Pjtwze{&E(?|#l5ay(>n{j$__~I zo2QJ;6MHoe>6`A}X*Ri4EBOo^foi&kLOyQZHtty=N6~d}Bcn45woPteC^DYg3^b>Y zAm%0YW%)yE&Cx$YvnR9M(#(DSH5bSbnbDd|nPy%wS{C%+Wf;wQ$NuBf)RmK}a$aFa zwzUeI?~7&ctw8dHXHV&xq#XeV-hMn>3gtI2Bbg8*HmWG30wgOX zP67EtD;Illcp~;rG6@Q|IMTg|*m<>gTs4W{t;i8`_>=llVRlGUho*}-H| z*D=#wbP$;&(oPr9?8ZkoI+naft330?0>7@L=wqwguTFQu$|A#BPEK%6-5UoPd7UhA zO?JeQKP?)YV^i4i<&%0IGYgG!%uG{$ac!w@{d+616-;;l*$1 zm;SbQe3oX7yD^ri5Lm}?jcr>bOi%IsOt1PLdkQ&7e;1Y-9!rX7unIJ6ZKuyeD|bqSk`?eLJZ@zQ#c!27@duR zh;wb4tD4+96bac{==IvSu-KdGFut-Vs0l*y)qHp0-&;(%RM6oH{R`b2vVJo7xpyV=3Wp!u>e8zIl__P& z%hk;ttlL(tFXvYG>ig&#EeP%UKID%MY6zfb^Pe4^zdzvP^nyn2_**ZjI$E2B%Cpa^ z#br3h>qNd}D&?g2`QNQDHouJO=7OP7b%|Tajd?jV8BWVNX<2O6L#U<6WP`MyuCrlU z*`%t?^Yy;|dB)$e>#tAll2qDb^3-5i`iul@&ZV|%iAqtSt$iUlkj-SHq*Ul0~oLO}`a&7i)RrwuUzSpFYf0fZmEX+tM1fzZ9Wlpnk`Npxs7mKtN zr8Wt19~w4)3EHN}^+bz=@%nt&;%KG)V_tQu#opDwtyXxNA>`;$=k0jq1~hgVuo)4L zbQCi`&uTtfNE4gbolrtsBb!utuee=z3ltQIRA8?wc6Tz-J3|P~kNU%jseXp@oxv1d zGfJ8oplVh$9|#`j472oxRZSp=WDDaiH`B0<%mfTgsl!t7uGe`c%*6ra^3ft%<+(F3YF&8@Vus zRPIO%=irzKbrxJN*{d~0?=6OfMOwYrMtK|G+Gxiq*6QzQpLcWy&-w|TRV9v`c!D=H zoVMiJqHfloYfp`jkbj+%AG$=bH%p3x>nnhii$4StbLopk;qfJqYOi2=<%o$C(z4@! zhThOKCK1swODOZY|8AQ)EXvuKl0D#DA4G|y14`ryD8{Q&F0FPaqw3EyvQaDNmg)3r zv&T6!Y*Vqw$ZYt;&aN-ZU3@$D*KrBx(sEgY$4v8bsc>l9G81F)?GF52!X;vSb3k3* z`lj5RD>&R8weLzCnb{Wx`9dXBMrJ_Goc{-mGXS!Z_n`*yTSJhn6UsS>6xN5!YgLrd z?tskD4A0IA6`?fMooLbLq#?aODzzzk7vARqRL}9U_U1-&9ARVfytlQN?U!3{-g_ic z;O^he2OMd>Vou)lAT2MM-xTBj&$>CBW+-eOJK3cAS!pyazx6KYqqW7MN7y@tCdDc2 zV_RG5LJF73l9#)tYGH6aK;Vbh3_i3l+8Iux8J=1-1{D`4D7!kHfX~@f$S$s;jGo|M z1x|kBfLAMl4<22v^|`IBBKhcY8~&1Fn?#N$TAL3LGUq<&FvnSPEfaz;U_=E5cwH!? z!C={amb=sqQe<|Ha(XB12UO7!K~1Vx0F|Azgfp)BDOqjWX2w{u9S&mvhJ$5?XH2J1 zk5IoopE7*;`DgvIXl%1}Vf5B*4PwVG#7r?^!@|aNtm&u|4&}X4aD!}K(|+E}tai3Q z%R5vw^ERqzY!-0xcC>0!x~_i74ZovDT(y<_&~{Yb0}_S9dZ39~xkT+ptAKPZ!{fGp zkfa#^17&oJp{dxX&|7uK`^hzjiTRrpa9(Zjg!nhNK21^OTzg>PYyQfeKA@7dHFp%Q z`4I5)zAB5txrS73)++D5H-?uKZravc11Yh9a}1R^IC*2a>a>8#x)n5k7-Dhu{l0p)aHt3)jxZ^^#bPFEA3MFWB^q z4XL6j!obmE#)~h^iC9I|`BFt&zeW2Th+H0`qO2-% zsl+s&m9Jb%UZCoF%K_g9{vynwK|H{KSbIOBQxjz7?TSKi!?G>`@u?W_UR;iE3uCz3OlhpTIzj z$30;2)w~+SZZ<$i#cil3_(T30fcyJ^)pH+M$~NmtFXWRNiJRyhiB6S(7!P#*ufD3n zSCe14EK`TgaOUv#Ye4$;ecGhUS06eKvmGFvGr1h-nn1v#v^`>;0(A zo=guj{jmHe#06Kn4j!GHnHB2i+|IVl9C~f1=`;0P4!h^z+_Rl|Irn649yS|`_d71r z!4qk~LnSUNsvDAnh8i0?3o^sA8d!Qi&>W9Vdtaf;Md2ZvD7h-S>O+79ecRA86S#v7 z%J4V7V+~swS&(hUKgUX8JOV&HuG!zNIO$WAEETt$VCA9%JaCCl9F;EniizSZUE`!MXWO6ZVg~Ktlp#VVd1vH4A;u^Ce)}AF>_({wYKJSDRf_0PwQ)fo0wXA& z$+`hBaL`a8u*SuON^SLZkQso6|MiEsgD>7K3~<@mJMkP2yalx@L0tg)Q`znK{B3pP zIGK~<_+}3aG`0h{A}`~jFkk95w&)cJlEX+y+}h88fGCs{?gHnpc^My$Pc>P;6b3U2 zhuU8}YPfb$;Oc&_0;LENiIAv^00i=KYtTPW%{7Xd7;>@{CX{tpo;7~F!MQGG)Kcm4 zhf0)iwwh0yK3M>E>gxzyKV$p!1-Xs_UYuT%F6#$Utz!dH4c0bbTa9weO<-j12(9yc zqB;+0?FY1}!2^!oL9|hs)DR{A%5G@x|C)6=dKW7Sg4^MFYRJda0~Wn5_aHq0vM*Y@ z*U9+2TM`5`)GBY=pfGsW-qST9+I4vSTM@#;r8O^i+6OboSx2QVhh%upL71!#?L^5) z#6jP6k$j}B{NdUI$V$%oxS7~n`oAeU#){kg4nQZAE&YG3-);hle#w2|du(EH0Mr^A z5htMYyAQxi+dZ9Z@E$Ork(qg41rsTdD=9$}9vUz0kvf#0(;dtm5RAs-%-63eYw`dO z=T%yyA1}X>$XO;E4mwL$Jz0N(B#kE(+S6e3VByd`nMF))4SPBJPG~N+4?06>d*3>e zdIZHS$RyrNgHnT>GKL>mgreg{GU9`Iv6j*LQc>Z&Dq0CLIStU?4>Bx{w-6E_NME^- z!ez-3dj*nD1*paNLE89=0%Rq}E3ho6JIc{aRDqQ7n)xHXRl2-d@{%jd{p@ODSfOjc z&hR81BJ(z1my#wAWVF5-#8y0&&K8~nPVQ7}Q#82Sz)NFEz~YbI+|vK$X*aMsU{QGb z2oh%%5Kau42C;`uq0e1xdicgifxSuHLg0x|kl=VMc~N=3sjq5e#xFAL+jn$~J2+7I zWyRjnb7FUC8`y!I*XpKarQkn7tcl@fm<2ub+HZsnRuq0=5y}mr$ps#ltEG+E7vopU z{I+5dn!0FoJ9H6b5y$4X*-4BYEom>kjvOFe2|)u_A9e4(R&*=Q@suH2CpZ-_MaR5= zo~ms^%^d#_3Nk-z7wo;7voY9EpeiLScW{zkBcYYB5qWRev)8^A#sRgo%?EUwSnWT* z>JzaD!Qp8}geFAq#>GfOD={b{b|o`&ezM8AU)ia!D2|R1hc4?HQag`-kQtO>bov5D zHUJ3pJp&-AR4X=lj{2I;iYF_1o*D>9JaAwJR|<-*P9ii0@=Hj|*{S?iVLUwGs#5dB zvYD>q&hXpAX@bw%hu9bvXyt2)y?y7r^1ImN#)u4eahV_(L37la@TVE_g*gS?Y=N(s zx2Qpm9YY0f=lD{^=49|uW^e$?m#{EMr{o&+`PXW!7_{{)0}1%N`_hS^(bVS-nJN>= z$Wjr%PgDP$%2mkdLugw?A`Ms^Dd6Ld7Ylq+? zK1F-1U^Y^oMq(}YK+!EhmZd@j1$&aZuZi!KE#{r1oBTX$G&e%>Me?G$y8qc>lvbk&D7NpUP$QdtVRA8CD51J(#~(pjNvp1&z4wU+jurrO)ihsaKZIDfKOT`i&OSANN$?l ziNwb$ATo&r!JZ@_^ttl5ZF&(?Mg1I12lOIVjn$x(7R+SfjtltNe@yh*vY`BdKiz9n zYKLk;G~%!OutmHw5e_7yFSvO0&TKc0=IQJnD}O9S1|kn62MlL7X1`62?-oors?Ept zL80f$0qLfje3^42_!^XFD=DN*uH2fk;+Xy5EP+;%cjS1av1(G0Pw{WP7_AfoSt6({ zcF*5o2pbX^`QNIA4o<7P!&c@XPRfC~(XW7B$b#{`3~L=7ueUa0;7hOv-&=(c$e13q zs>W+?RTNYOkpI>(EQ*eif)tSk+KqW(?f=H>CV`jpJ}KaWgJMQoeoh2TsJLxD7vo2L zUoD7^v4C#A8S(ksl~rT85-!WzpQ~hve;Aa3%T>^E1k=f`Rx}$r2PI}F_`GkY@Wzqo z*ZffD;@O4HrsTsk4rn>|+rL%aD$kl#p#_+nx>smngEKR)($!xeIdNT8;<3tEtpZfV2>?>CuT}`<1*Ux!O z&zbSxtPp?r2;x+JQ3`Dmj7&-1P6ia$Un;y_UJaQHxfEKZ&_}NUO$z&VB}AiIy6X?dJumTrlcurP!x@&Oy`#7)qG$;=Hu}| z`MAYxP7HNuQbY6Xokw!WF_-B;^NSvRbn*VKGTfJS=ArYyFIjAHJsp#3*V@*%R+ps= z{>z`?dTD&D`4skN*s+2tj<@09VFzM$kG)#fd=y8p|9OA{S!%%{4?2bpD5P46S_FVk zwX3;X(=pf7JP6hM(=7%+ zDp~IEv_ZRM1xUGDO(;q^4-$Y7h5dx+GmpV8yLTvM0+1i`Ag(^#6k>;e1-=X)$||Q2 zz1PDg6>v2&l^hBnkQ2ING%te&$>HkoGpYiXQ2b@X)TfZg!c;=at@Wk3{0Ol`y;7f2 z_n-2rKwDAOAZD0FEVmOj>TiPJ7lFZ!gOJrH%&ms2{vOYk?rkmhZa7z8GZOfc-F46l z8)#Yz8<{~#P5-b1NsueZ#o_(f{Ocg!uUl!gGWT|Uaxw?YDur%O#A@NMM)*M783DDq zQyLvZ1Rj~l3DE*!_N|=D%)xnwP=&(*GIw}?W;sP%XINr8R2%dV{;lf6g+P>m_j5;> z{$%;&_si7*@U`yHoT0WPIH_>gTm@h$5VyZqrd{^7Ysj$RfJ$PRN(pG0?O>fW)oMNp z47-gh(4P(6psgDd!+JGSWd?oNz|2?AtFw#-*7f?Eq<+Zw`SXg9d0lOpw2|);k2?jh{ zYUBzt)o$AkEtI~YAw3D%0$MBg2b3mg6Quf6w%q>Ecl`UWukN+ zTDs6r)RMm~GO{WEi2g^jSsGfq98nTY^ z+D0P8B;!ClSK>TdgFEIv}hVB5DyR#1G>m5pSAj_2K;>uYwEl zMKn{>SLBAmZMc85fLsXx_9Cc>uq;nAOap{Ujoj(JgYm*M4)84VY5&;zT;B_5V(mt4 zshr&A$NybTkcvSptDF|^kfO$JU-I|NL@5(Ko}kFvg>4%lRGCB z^%|oFGol6OoE^@U)EB(Q+s+BN9{lX_B^!uO_zszj#8pLLcn67)C4mVGP6~LnF7)gW zpg0>{GM}011Jhjr=kyQmfE-81kjBm;`Zdq0TiWKJo!(M?bUvWj(Et9JO*X~L<7M~!a%*U5FroNgAkWp@0GXI(%0&Hj-u9BVa(3k8 zdEj07k|GI3ut4tN$X zM5FNDSftOj?J$mfZz1k_UDX{z-iQz&1B%W+5@vAEe>WrQA9~L|fDlF;h&`)OI|jf} zn%xF~fMGX2VrjUq47ARD4PxfF2Sz$OdkLF}&#Z)3w-&dd`_Gk$A{FSf;2lLqb%ndc zmV%IxL9{gX0=*()Yzc6ZPL@=WDgWc)!$36wzxZ-R-WFIN)F+h!Hna5{I>cv)uFfVD z<;#lyJ|BXEu=>AsJm;Th@}=(0i-YNgv=XjBAm>Wx3ysg0Af66jKK`!+t;W-8klCOq z^y!;qn2XzxPt1lcGa@8(`xK#jr-6)D)HugH$$UwrAKm1Ef)BX$p}}?0yl%ENLQn|T zP2i@&pbkV+ypX&Ia+P*KsNeN7wfqgL8gfVk2n}Mu>CFZcHe}lH?p~l)gPOFkEHZ7q z#@5-Jf8R5+k?TmouS4p-1wtN&n`t+w`^yPIO&=kH#Dg%PdHKyPTf5h>n!z2u%62;aU|W`^g-91!GzEkW z5zm(S^aaIAA21Dx(XU3acKo&1MN-pD+<84LId7(-Fbkd4?Kw(H~_MKVM_NocGzm+W?z zT*Un*len>(XM)l-I$r@ow^TnhN;T{%_Zd5jju@XSg9?2C2PrZlh5e*x>=6WXAMNd4 z4^RTHV+kpd0h#t!$hj2xB0kshmC7bKSkfDht}$3>LR}HfkIIULu1#No1}aFAPXMv_ z74)OwiuWQumjePZQ6}I(ny?umkcEZN>3sGbP%3BEE^tP0mHSbKX+!VB#hhED2c!uo zl-s;msaMqgi-#PK+=z0M+2gF+z~q0N479g#=y>wlvADjf`#GY3Vr+qJD}9FI z+si+xLIS0!VP7&f#Xu;7aG(75AeHi*^=_$@8$P1w87H8-giD~KKCrT@^w+8UXg=Oc z#1xFsAih|p|4TAiAos$QVx`CQ!zMx=MhogK_-Nu@6x415U#!o|=CkJ>UoL zBIgbuUQD48a4;NzsYhP{`pxGR=1U=1aI~KT8A%27u~` zY!DRP)F95eW|O&ulke{L;9h=P}LWIX@UgGQK`=2Ko-XnPvKIQ;x~^iS0*rOE@jL1a7| zeAjMvGDw)nWo%}!m_Gz4%y1j%HMTI@wbD^%XLv&hag^Ipq$vOy5&7F&m2M(f{sX)9 zex$BQY`~75Sh7+zVb+foq26aEGW|yW6${i1ZN903L>9-4grN z47AX6;$=>@?lCe6jh~H|z&U_BXVDDu{a}-Gxk^(CvC#RT^@)CD#E@&0?EmH#9WGi5 zvVN%f3%?Z`yboUB=kPoFdTiE!!Ttftg#oHfk}}T7{X6JV8V{5DhxGQ-&htzAlA4;5 zA)l;xaWSB|BPXujfd?~szmj@&3}f zG33gHLl&O5$IGq;5JYj9vsXTO&0MGqjl&9LXfSpCyB_x0(~$#UE{EFhA8ZzxVa|~i zTIb7hvbLKc_WS%6ZL?O*w4vd*-DM>(j|vo+xp}-ke@b<%AhfxSdNS?D-+YI(Htrcj zR={FE7d;a{9_^PaDG-vrU=rBQ*`}Ef>4%tAl8M*ui-pjkq(JWok=jb>$D$ZY$an-S zn7n2E@T?pGxNOy;%rW{chtD(w&O=)orXMgdCo=^Qn1N(7Xr3X-0MXIoFlo zdU0#yPtmSi7hdLkmc|@f{rZwIy~d6LlO%YDPePQ5%V||KOW6twG5>jhIZ(KYj`*XG z$`&r-AIB!idoFAb^h)08v{40f)3_sRTSqFL@7(PxM`t9XX1Kxc>)D=FRGy36gq5V) zgHfSNY^0+KAM7)O49a@PFY)>+&o!c}Zk|(0OaxXpdjtN}(vtpU$O{YtG>^|;Ra7^i z8DLP?V&e75x!SyR@qPhMpday9^D~s9BT`!nZSZF~a77R)`Y`1>P{uX`ni!0~nyhGl zz4bH$SKm1DzR>e>t_fAn9I8Mjp`(Hqnk?Xbh`YUB6Ue^$4zqZ|)#b7NE0wGxy9MuC zq!)$yP;q>Tib{c#j!g@rME_8cDfjs~=D5(pp;59$ZL(ku%O6^Hkc)?px-gy)r0|d5 zBxq`o>`qaw`Qg5@znxL9lJdO{0=ChUv@b%XicHt5sGqXc<1z&9NRGk8TU zU#QGk0L%*YpRx1aQ)EmIy3?A@t=)ezAk}PKb%&{=v5HOn_hlMw776OQYc%>>G{}fa z?EyU$1^%B;TAh-X5o1oyPD>sd%1JpKY#Hl!=)p^BB&dwF<;RzE4T;&k-7>L8Z%=M6 zEP&x$sATPDz0Q)lT3=n`)X|q_Gub>+_?e?rH(}!3-R+wTO#jZJ2XH2q=DzuQHm6WV zwz`u7gScQry(TFq+J`SCgZqaW-FH#yUP~$mPkNfdG@WX zUPEza-KgCjdzz^)+6z#Ao!%aJTV(4T&c{mzoLL`-K5;GCviMo9Di1?eu7!KwjR`BETYhG4LSo z(qQXXt@T#w_3oPHx;*%xoV(f29dUx(c^kiG&DGxf?~JW<3i6l+`M|4xxV4-+I8Aq} z$ha?Ge?sRsuRfeEsHf#;PhOzDb{;fn4%eua-+#4qr&9H3YKq4H`o(a1L|np6PPZ699fvF1M#TCn?ehB@!vHPad+*Q7yQp_}mlZ?M!%tBA$z+zi@l zjVUmGQ9N%mn1F#2PR9;C1-2XpG=esho1PjS%)=NeC8mo zb3L55OFUb~eJAuzOUeYs-_+cg?xIL2S*_*9=2q36F?-0bzAEh6OLG%p|JkmAc@k>NQ4le$*kuw;7K zA;3rO-)@>6SZ?>c<=^U&VmX*+m0;lg_9Y?5usW>J zy~edRa55di@Z3Ohi{TlA*(vx9lfbPv>2DUA#V#?7iD{Zbsidh375{38++iER-(!Gb z9Zw2gkKM21N&mgIh4S|SHQb5k!V={}XVbla$03N#SW5 zn816GU$qcZD(kB?%_;Y0jUgrfbVDpy+A>bK&{X^4>gu8mf4zXyKeXryJMq~xHS2hE zT8m6PO09f9^QpUA)pKR^`&<6{AN^`_U7I~}J>Vw*n64*Qc8XzCg}^U2KtIOf1bz-e z)OoV=V0#(*xsXM7$*8G^XIYs%7yyZ9Ltfjljw(o|Wv`Xfe#Q5O9{G$jxm;$1Np(0y z`r2qt@>2D|i4T~S#I)CP0+b`YKlj4>Z*|~gW8*pKCmYgGY=5Mt_Gu1xR=`hmw6+>I zNGGUf{InD-Ei2pDsc67}pGcS(_nPt-78d^N^hdE1O6lp_)+eqh_(gw&r-7_)(vQ~R zdF-iDr18`bTXDOw5xSiPFuCeW%O*u#r>D`yyp}rjg57ta3v-du2G=}zY0G-4_Zdr@ zyO-DIEPr4^!`|Bl)A??U!9Z1(Qbs?YNqzEe!|Cx+d%+O}_>BNJpB)NF<_~J3n&a84 z+{t&S#Txxqi!ZwfFoBiD7!T&lypUQIhhw-kAw8E0M@6RJx?xYWjP$FGB-rCR6Y5_Y zv$Sn(ZLJ$NY#YAX?=boH<;zTUgSD0x-R@MNT;Mus-~&U$B>bu%^qBjg)fzt);z){< z&393r3mxQqJ6}m`m>ck0&RMurXK^(|rcK^3_IO2aO0Gbfnqd~NR0SA^m0S81;@W%p z+dV(P?~$bLwQzw`?NR#r`4z0Ztwm;M^R8Ae->ctv@2qZOBIjr#W(Pg&Mgk*Sz-914 zG@*!D&+y{fD3$Z1ZKiSrJ8%fx+967w!x_9%>q6GO^Rg_){~aPCqW(>lI^@#-*WQ``L%qI#yizG)+9t_%Iw!;w zB3qW}B%NeCmSZVfC~KC`D9e;Wa+ppIPK0Ai5`!!WGc=g&Su)meWFHK}SZ0{-^>#kr z$M-Mz{`T>!$Gm6ezOVbbujO?;XU08rVKtOszcp?zb&Hs)4-QOb=Raz6^2US`NJ{Av zOYcQSEkk!5E1mETZAw!UY-Yj`OCFU%oMc}LUvOtn#%DYH?6L0wrvFppK+@Yntal+f zd9`YCNOPsz%&ed%J~6RtaIgjNIkvX8&aXe*^Z`r*hl1tsE`HXJ z+n8((&(uhB7+|GXmhP^6u;Q-GDk2o&7VNf>MPI)vXSaI*TqW9`^CJQuk-;c68BCA` z^knb)iY5(cFPXk+F(`9W_Owe(bj!UMpRM!7zB_3MyYO9oYKjk^U=$Fpf=SGqsQ3M# zo;mwN)!l<-*sAbvq+I!03rkDpgev(ZDtLq^c+SHlv$#nA6#&;0P}ZZLzzcx?0FZ0^zXJrUF--BG*Ic~X@418Td?8#*K$ zn?z~HCoG-zbBf*gK3a6fQ^0f-`cIqAlewYVYqcmlzp+s#YV2Z*Qu}eb9CGLXSbhto zx$4e3>6W<~_XDs%_EP$O}~ zD{$4bw!uqrX<6y%j{wNh)!psi>Nhtvk|FV!#Wsi9Tl^y~2+H8|gG0O%;Cw;*#TnuU{qO^D6wwBRkFKcUIAo>8{DppM6 z3LcL=AS74yT3rx@>H?;ew>Oa%W4Qee@r^ay&7Z9yy*+L&;zRUg z6(`xFmGU)x%)YS$*FkrzkSB*_n!3Sh{u{tV@;iwDKbe`Cc}4a*xm_O=78WpkiWA$P zSWC#ueNx#&d3GNLd#{aXJq5P<@MmQI9@svT`U$_9nZSj5ppXAG&9&HC>>4+TzEQ}&^{-$*`9Zfa^;t4L$3 z1J%lJ>4Bl4q2}7iV?ZBGd|!FCT`mThAmg+q$MHkCUvbYBU8M}>U8)k{M%uU+NLtFBixtpg;h*actu>(cJX?j9c>51vp;ySeyJy%Ot$ z$u{qi}Z+#Z=@_UZLmUhd+$*8(l4F zSnjj0C2FyKr5-|ffEqP85wsd=YHDt!N$4IbEiL7A%5NTC2pVR;_Un&2T<O|J8spg?pOO*B+VxfGQgra_H|fCl(jB zhR9&nraMWD z=}2rG1ehF9d31)h{oO-n#nIh#)wDK}%DcBe4$3V$m7ka~w`p){7#aBih2<#NZ_Ze* zZ>^Gz;h@5iQ;UttnEEB2RJlMx?hmahX37G@aMQm?baf;C^WyKrd)TUkTGEjtVwmvol1s^-2i5ZTx01Chv5l1excyD!AoNq*fwh>^KsP4W8S7T)1_sS46dDX3wad)ixC5 z)Oh36an4HSm#-j4e1ldYhWE+Yscnjf3>C7iKN3g2SI`$L-jBqnUNj5QzAY)U9|>i2knYE$ z!rdAdrp1@vZi`3UehSs2A?*rve>%Trh0?1CF(F+jYYbM`N?PgBkVc$(r_zpgI>@X0 z#st1H;#QxS6~6G-LY~L-l3!GFzw!J&avD7Z0nPy7BFh=-j-C84%9b}TVoVwFVNtzo z_u~qRN~8X5)e5U9?nQZr|0FcDM+0YJ6$Z4EB$!QsCbcg=RQEE8&IFqIr^mR9`p}E( zT;6_~`@)mR)F#pa6?E;Lyh}=s#a?n z>+_s@5m)LKvx+{t!zlQ%@`xsA*GnV+dH7g*G;+Yfp;M;U97c>jz5WV(KzHBas$KffcO$ zd(Su0{F%S1z{o-&efC^Yt7c<=G>20 z*X1xWk@OHbJ(_FaQ4;HWcD^Bq98zZgCha}b1LFr=IT<|~nBgR=MxVDh(E%p-=T{0n z3(`UC1cp6*LR8~Ofq;l;(sBJ9hatz_lBP;Pks&>_g3k5OwNVw2qDrA>p{J)hw69eF zpg&oMk-~bOLc*gtL`tIo_!>Kty-0{5@3Y^+bPHB_S{77e#-8Nmn!2}p(yv=4v;j71 zzb1H7v%^#c1yMl*x_A4Qm7ydjI%t~%1<)d3rMdArj(nC0^cQiKy7Mmj$G~9`2d_9- zuqC8cZF!LDLqdr^;M*HfjJ?;T_`yT#^##2>$XZ&0!U#q7pFT{ll0sNY35qm5SwzEdp0ZUQeVn!d`xY>4QAuJx5h@T0|pzQ*a(TbigfBA9>eGn|GIu^hi zEWeY3hGien^VTSVZ+kGgHORLL&@5Ft|5KZdzYu-S!@*i4E0{Ol+`;DZ^Q>r~4_)ST z8%@DrJK-Ukd6Riv%(qLt`DMk(u0~(Q!V3o zv%&9)i69(xm~+%g$@+Aw-spwgQzwui8ZU&krP2v!(|EnBzXHCh5ZSP>+M9v*P;~7i zt#9VM3)Q?cd5GO0c%oA~U-Hwnb{c!4R1JRzt#7TyC3qAcBJ6LBc2dLc;4=9AS8w6z z$kjiC-~$Q}+kWV+bs*CC7NON6Ok&_@0gBnL0K=A`j?1b)M^_U~a2V5zdD`3wqqYjT zW2u0=Iu8qY?K%$28J2J^SBZjIF-nBwO+reAk!evO0hE5q=XVVUpJ=n|?sv9R8Y~sO z{Z)A86j}%aFEf?mk)MmqXHyoazga%HQn!r*c}4&gLDXUDIe-Jg_4d5c`3;l=ii=-N zWptrnlGlSGHM}SJ8uaabkXCv7Vx6Sh3D^*HHNX#9a|8DQTiFXSL5^|SYp5z1Na+Co zP(VQ7j9t}VfZ)74n_q5fOKXbL82y|J;2pzK#zc%l(f9}NBx|xZW>L=rA>6A-M*&Po1<=eK>IT=dTuyagHG?rJ8M^u zBYO3iXVPRgbXj|goOmJsCD)_yYdS`0+JMcR`cqpz{+h{f$GiP3E#oN=gg{Xz^J# z?_pEJgsA5Y4 z6Cg>=Ei4qF$b`eGBJ0SV#%|_d$}S6wiQSs*$ww%n98Noz;~y#l0zkR?YqG9b$j}h{ zC>rC18}#M1U;88!I3_ZDRg|j9>U9#;41E4I&ytx(-pJ$7xEuEJ6&CbTe}8|*a+mQo z@f2vWGA?i=_$;6}z{GNyXw>;ESVo|*p2N-ChzHTn%~vjHYcHpx7DpbVmTFO<&tbE) zH#!JQP`ZdVd(c`Pw0d`>=F#+q%6}f!17;vk<|yju=p=@G<3VZGyf#c$g9S<3=*~en zl$n{Cz{O=iCKX2v9>+lXvDgJsWLDR7b7(#gCw)eC{6Y{uo!9Tr5p){go_E%M^+Z)QwX2XBf~!GVma;_Xd!#r;J*@6K8vHeng9+3XJOB}A1NsIWBj!u-?0W7XRRq76P5845^8W(xO$o` zDOeqtr_~8E`lfc^)6pg6RpVz{l2sRqn=^(v6RJBu%#{tedU#ZRA6vk4**n2J_W?_q zOrI?+De<9-;SAQ7-sEfVQ{MKTItwW>E>CwMevc4BcY+jUNBTeI_nEgt zXL3THfzfS2@hY{Wql312VcI_leB)ACdG(!sGD@#0ycmPkeX%r)fTf4m8dTv_gffys z=8#z3MVl!c3b@rc@M)CuDk{Z6t6os64Ma$?&(N5_?|=NVHVZDRnPlYWrzEjf!)pcR zWe|dSaXvGnw`T?vg~m{x~WKO}52`dO#j0-nsS)IKIp_jdjFr4OaNg*-GcWxgU55Ja5KRI0V~1 zGZMcRiSW7oFKi~Yi;0Lh!To`-y9EMFj+$6oHzJ%@(n`KJT!xYee^pmHu8~o9#F+82 zJvbu&M)_Sx&tz=TDh0rV){Q>4*g**W)1FgrpH)!cwbuosSAoo)m9(X5HPc8eWfH5D z===TiA){AnKZAjKq`u03^Ty#@)qN-^`>qb*n4>8CUn{dTmmy_6n<9mX}JA$zC6$z!w(U)Y}aL}>gl_x@k%{Qm=W{=dI$@P9w-u*T(4NN?a_D+f~G_bYbj M=^9-wxa1J_KdtF<%>V!Z literal 0 HcmV?d00001 diff --git a/test/visual/mpl/circuit/references/7bit_quantum_computer.png b/test/visual/mpl/circuit/references/7bit_quantum_computer.png new file mode 100644 index 0000000000000000000000000000000000000000..dbcaefb9fefba0ba5c31b8d8d387452000806636 GIT binary patch literal 25652 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 Date: Mon, 10 Feb 2025 16:12:35 +0100 Subject: [PATCH 07/29] Another attempt after fixing lint --- qiskit/pulse/builder.py | 1 + .../circuit/test_circuit_matplotlib_drawer.py | 54 ------------------- 2 files changed, 1 insertion(+), 54 deletions(-) diff --git a/qiskit/pulse/builder.py b/qiskit/pulse/builder.py index 08d6f96d1215..372318dac69b 100644 --- a/qiskit/pulse/builder.py +++ b/qiskit/pulse/builder.py @@ -1739,6 +1739,7 @@ def barrier(*channels_or_qubits: chans.Channel | int, name: str | None = None): This directive prevents the compiler from moving instructions across the barrier. The barrier allows the pulse compiler to take care of more advanced scheduling alignment operations across channels. + .. note:: Requires the active builder context to have a backend set if qubits are barriered on. diff --git a/test/visual/mpl/circuit/test_circuit_matplotlib_drawer.py b/test/visual/mpl/circuit/test_circuit_matplotlib_drawer.py index 8accaf15f8f6..0a2aaad0e718 100644 --- a/test/visual/mpl/circuit/test_circuit_matplotlib_drawer.py +++ b/test/visual/mpl/circuit/test_circuit_matplotlib_drawer.py @@ -2393,60 +2393,6 @@ def test_switch_standalone_var(self): ) self.assertGreaterEqual(ratio, self.threshold) - def test_gate_map(self): - """Test switch with standalone Var.""" - from io import BytesIO - from ddt import ddt, data - from qiskit.providers.fake_provider import GenericBackendV2 - from qiskit.visualization import ( - plot_gate_map, - plot_coupling_map, - plot_circuit_layout, - plot_error_map, - ) - from qiskit.utils import optionals - from qiskit import QuantumRegister, QuantumCircuit - from qiskit.transpiler.layout import Layout, TranspileLayout - from ....python.legacy_cmaps import KYOTO_CMAP, MUMBAI_CMAP, YORKTOWN_CMAP, ALMADEN_CMAP, LAGOS_CMAP - - backends = [ - GenericBackendV2(num_qubits=5, coupling_map=YORKTOWN_CMAP, seed=0), - GenericBackendV2(num_qubits=20, coupling_map=ALMADEN_CMAP, seed=0), - GenericBackendV2(num_qubits=7, coupling_map=LAGOS_CMAP, seed=0), - ] - for backend in backends: - n = backend.num_qubits - fig = plot_gate_map(backend) - fname = str(n)+"bit_quantum_computer"+".png" - fig.savefig(self._image_path(fname), format="png") - - ratio = VisualTestUtilities._save_diff( - self._image_path(fname), - self._reference_path(fname), - fname, - FAILURE_DIFF_DIR, - FAILURE_PREFIX, - ) - for backend in backends: - layout_length = int(backend.num_qubits / 2) - qr = QuantumRegister(layout_length, "qr") - circuit = QuantumCircuit(qr) - circuit._layout = TranspileLayout( - Layout({qr[i]: i * 2 for i in range(layout_length)}), - {qubit: index for index, qubit in enumerate(circuit.qubits)}, - ) - circuit._layout.initial_layout.add_register(qr) - n = backend.num_qubits - fig = plot_circuit_layout(circuit, backend) - fname = str(n)+"_plot_circuit_layout"+".png" - fig.savefig(self._image_path(fname), format="png") - ratio = VisualTestUtilities._save_diff( - self._image_path(fname), - self._reference_path(fname), - fname, - FAILURE_DIFF_DIR, - FAILURE_PREFIX, - ) if __name__ == "__main__": unittest.main(verbosity=1) From 6c8d616d961678ca65638a2081aecfeef240a9fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elena=20Pe=C3=B1a=20Tapia?= Date: Mon, 10 Feb 2025 21:03:07 +0100 Subject: [PATCH 08/29] Desperate measures until better measures are found --- test/python/visualization/test_gate_map.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/python/visualization/test_gate_map.py b/test/python/visualization/test_gate_map.py index 3df3e6285d2d..944fed1a9ba2 100644 --- a/test/python/visualization/test_gate_map.py +++ b/test/python/visualization/test_gate_map.py @@ -59,7 +59,7 @@ def test_plot_gate_map(self, backend): with BytesIO() as img_buffer: fig.savefig(img_buffer, format="png") img_buffer.seek(0) - self.assertImagesAreEqual(Image.open(img_buffer), img_ref, 0.05) + self.assertImagesAreEqual(Image.open(img_buffer), img_ref, 0.1) plt.close(fig) @data(*backends) @@ -81,7 +81,7 @@ def test_plot_circuit_layout(self, backend): with BytesIO() as img_buffer: fig.savefig(img_buffer, format="png") img_buffer.seek(0) - self.assertImagesAreEqual(Image.open(img_buffer), img_ref, 0.05) + self.assertImagesAreEqual(Image.open(img_buffer), img_ref, 0.1) plt.close(fig) @unittest.skipIf(not optionals.HAS_MATPLOTLIB, "matplotlib not available.") From 06a855193392fd61aa5216d673937c81af5c0ab8 Mon Sep 17 00:00:00 2001 From: Eli Arbel Date: Tue, 11 Feb 2025 11:50:18 +0200 Subject: [PATCH 09/29] Handle QPY compatibility testing. Misc other fixes --- qiskit/qpy/binary_io/circuits.py | 2 +- qiskit/qpy/binary_io/schedules.py | 10 +++++----- .../remove-pulse-qpy-07a96673c8f10e38.yaml | 2 +- test/qpy_compat/test_qpy.py | 18 +++++++++++++++--- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/qiskit/qpy/binary_io/circuits.py b/qiskit/qpy/binary_io/circuits.py index 92e6e7d55c14..ee284233a41d 100644 --- a/qiskit/qpy/binary_io/circuits.py +++ b/qiskit/qpy/binary_io/circuits.py @@ -639,7 +639,7 @@ def _read_custom_operations(file_obj, version, vectors): def _read_calibrations(file_obj, version, vectors, metadata_deserializer): - # TODO: document the purpose of this function + """Consume calibrations data, make the file handle point to the next section""" header = formats.CALIBRATION._make( struct.unpack(formats.CALIBRATION_PACK, file_obj.read(formats.CALIBRATION_SIZE)) ) diff --git a/qiskit/qpy/binary_io/schedules.py b/qiskit/qpy/binary_io/schedules.py index ddfdbad42b03..811197ad16a1 100644 --- a/qiskit/qpy/binary_io/schedules.py +++ b/qiskit/qpy/binary_io/schedules.py @@ -143,12 +143,11 @@ def _read_symbolic_pulse(file_obj, version) -> None: value.read_value(file_obj, version, {}) # read duration value.read_value(file_obj, version, {}) # read name - if class_name not in ("SymbolicPulse", "ScalableSymbolicPulse"): + if class_name not in {"SymbolicPulse", "ScalableSymbolicPulse"}: raise NotImplementedError(f"Unknown class '{class_name}'") def _read_symbolic_pulse_v6(file_obj, version, use_symengine) -> None: - # TODO: document purpose make = formats.SYMBOLIC_PULSE_V2._make pack = formats.SYMBOLIC_PULSE_PACK_V2 size = formats.SYMBOLIC_PULSE_SIZE_V2 @@ -177,7 +176,7 @@ def _read_symbolic_pulse_v6(file_obj, version, use_symengine) -> None: value.read_value(file_obj, version, {}) # read duration value.read_value(file_obj, version, {}) # read name - if class_name not in ("SymbolicPulse", "ScalableSymbolicPulse"): + if class_name not in {"SymbolicPulse", "ScalableSymbolicPulse"}: raise NotImplementedError(f"Unknown class '{class_name}'") @@ -194,7 +193,6 @@ def _read_alignment_context(file_obj, version) -> None: # pylint: disable=too-many-return-statements def _loads_operand(type_key, data_bytes, version, use_symengine): - # TODO: document purpose ADD NONE TO ALL THE DUMMY READERS if type_key == type_keys.ScheduleOperand.WAVEFORM: return common.data_from_binary(data_bytes, _read_waveform, version=version) if type_key == type_keys.ScheduleOperand.SYMBOLIC_PULSE: @@ -228,7 +226,7 @@ def _read_element(file_obj, version, metadata_deserializer, use_symengine) -> No type_key = common.read_type_key(file_obj) if type_key == type_keys.Program.SCHEDULE_BLOCK: - read_schedule_block(file_obj, version, metadata_deserializer, use_symengine) + return read_schedule_block(file_obj, version, metadata_deserializer, use_symengine) # read operands common.read_sequence( @@ -237,6 +235,8 @@ def _read_element(file_obj, version, metadata_deserializer, use_symengine) -> No # read name value.read_value(file_obj, version, {}) + return None + def _loads_reference_item(type_key, data_bytes, metadata_deserializer, version) -> None: if type_key == type_keys.Value.NULL: diff --git a/releasenotes/notes/remove-pulse-qpy-07a96673c8f10e38.yaml b/releasenotes/notes/remove-pulse-qpy-07a96673c8f10e38.yaml index 09e6c651420e..f393e7ccfd20 100644 --- a/releasenotes/notes/remove-pulse-qpy-07a96673c8f10e38.yaml +++ b/releasenotes/notes/remove-pulse-qpy-07a96673c8f10e38.yaml @@ -5,7 +5,7 @@ upgrade_qpy: via the :func:`qiskit.qpy.dump` function has been removed. Furthermore, in order to keep backward compatibility, users can still load payloads containing pulse data (i.e. either ``ScheduleBlock`` s or containing pulse gates) using the :func:`qiskit.qpy.load` function. - However, pulse data is ignore, resulting with potentially partially specified circuits. + However, pulse data is ignored, resulting with potentially partially specified circuits. In particular, loading a ``ScheduleBlock`` payload will result with a circuit having only a name and metadata. Loading a :class:`~.QuantumCircuit` payload with pulse gates will result with a circuit containing undefined custom instructions. diff --git a/test/qpy_compat/test_qpy.py b/test/qpy_compat/test_qpy.py index 221bb4a7e6af..0ba8e22d7690 100755 --- a/test/qpy_compat/test_qpy.py +++ b/test/qpy_compat/test_qpy.py @@ -848,10 +848,10 @@ def generate_circuits(version_parts): ] if version_parts >= (0, 19, 2): output_circuits["control_flow.qpy"] = generate_control_flow_circuits() - if version_parts >= (0, 21, 0) and version_parts < (2, 0, 0): + if version_parts >= (0, 21, 0) and version_parts < (2, 0): output_circuits["schedule_blocks.qpy"] = generate_schedule_blocks() output_circuits["pulse_gates.qpy"] = generate_calibrated_circuits() - if version_parts >= (0, 24, 0) and version_parts < (2, 0, 0): + if version_parts >= (0, 24, 0) and version_parts < (2, 0): output_circuits["referenced_schedule_blocks.qpy"] = generate_referenced_schedule() if version_parts >= (0, 24, 0): output_circuits["control_flow_switch.qpy"] = generate_control_flow_switch_circuits() @@ -860,7 +860,7 @@ def generate_circuits(version_parts): output_circuits["controlled_gates.qpy"] = generate_controlled_gates() if version_parts >= (0, 24, 2): output_circuits["layout.qpy"] = generate_layout_circuits() - if version_parts >= (0, 25, 0) and version_parts < (2, 0, 0): + if version_parts >= (0, 25, 0) and version_parts < (2, 0): output_circuits["acquire_inst_with_kernel_and_disc.qpy"] = ( generate_acquire_instruction_with_kernel_and_discriminator() ) @@ -951,11 +951,23 @@ def generate_qpy(qpy_files): def load_qpy(qpy_files, version_parts): """Load qpy circuits from files and compare to reference circuits.""" + pulse_files = { + "schedule_blocks.qpy", + "pulse_gates.qpy", + "referenced_schedule_blocks.qpy", + "acquire_inst_with_kernel_and_disc.qpy", + } for path, circuits in qpy_files.items(): print(f"Loading qpy file: {path}") with open(path, "rb") as fd: qpy_circuits = load(fd) equivalent = path in {"open_controlled_gates.qpy", "controlled_gates.qpy"} + if path in pulse_files: + # Qiskit Pulse was removed in version 2.0. We want to be able to load + # pulse-based payloads, however these will be partially specified hence + # we should not compare them to the cached circuits. + # See https://github.com/Qiskit/qiskit/pull/13814 + continue for i, circuit in enumerate(circuits): bind = None if path == "parameterized.qpy": From 9ea2fd3ae84fd3ce5a05d8f936d64aed3fa73044 Mon Sep 17 00:00:00 2001 From: Eli Arbel <46826214+eliarbel@users.noreply.github.com> Date: Wed, 12 Feb 2025 10:48:17 +0200 Subject: [PATCH 10/29] Update qiskit/qpy/binary_io/circuits.py Co-authored-by: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> --- qiskit/qpy/binary_io/circuits.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qiskit/qpy/binary_io/circuits.py b/qiskit/qpy/binary_io/circuits.py index ee284233a41d..ed1b58d64db7 100644 --- a/qiskit/qpy/binary_io/circuits.py +++ b/qiskit/qpy/binary_io/circuits.py @@ -651,7 +651,7 @@ def _read_calibrations(file_obj, version, vectors, metadata_deserializer): if name: warnings.warn( category=exceptions.QPYLoadingDeprecatedFeatureWarning, - message="Support for loading dulse gates has been removed in Qiskit 2.0. " + message="Support for loading pulse gates has been removed in Qiskit 2.0. " f"If `{name}` is in the circuit, it will be left as a custom instruction" " without definition.", ) From 27ffb5191b2caf80dd63c86c2fa0cac4296b3fb9 Mon Sep 17 00:00:00 2001 From: Eli Arbel Date: Wed, 12 Feb 2025 12:06:31 +0200 Subject: [PATCH 11/29] Remove pulse from GenericBackendV2 This commit removes pulse-related functionality from GenericBackendV2, as part of Pulse removal in Qiskit 2.0. This includes the ability to initialize the backend with custom calibrations and query it for channel information. Also, various clean ups where made to accommodate for the updated API of GenericBackendV2. --- .../fake_provider/generic_backend_v2.py | 708 +----------------- qiskit/pulse/builder.py | 78 +- ...se-generic-backendv2-738ad9f7ab64b8fd.yaml | 6 + test/python/circuit/test_scheduled_circuit.py | 22 +- test/python/compiler/test_transpiler.py | 117 +-- .../python/primitives/test_backend_sampler.py | 26 +- .../primitives/test_backend_sampler_v2.py | 5 +- .../fake_provider/test_generic_backend_v2.py | 43 +- test/python/providers/test_backend_v2.py | 49 +- test/python/providers/test_pulse_defaults.py | 73 -- test/python/pulse/test_builder_v2.py | 324 -------- test/python/pulse/test_macros.py | 256 ------- .../transpiler/test_instruction_durations.py | 3 +- .../transpiler/test_passmanager_config.py | 14 +- test/python/transpiler/test_sabre_swap.py | 18 +- .../python/transpiler/test_stochastic_swap.py | 9 +- test/python/transpiler/test_target.py | 285 ------- test/python/transpiler/test_vf2_layout.py | 3 +- 18 files changed, 94 insertions(+), 1945 deletions(-) create mode 100644 releasenotes/notes/remove-pulse-generic-backendv2-738ad9f7ab64b8fd.yaml delete mode 100644 test/python/providers/test_pulse_defaults.py delete mode 100644 test/python/pulse/test_builder_v2.py delete mode 100644 test/python/pulse/test_macros.py diff --git a/qiskit/providers/fake_provider/generic_backend_v2.py b/qiskit/providers/fake_provider/generic_backend_v2.py index afb2c6b2bf82..0891302f1528 100644 --- a/qiskit/providers/fake_provider/generic_backend_v2.py +++ b/qiskit/providers/fake_provider/generic_backend_v2.py @@ -15,12 +15,8 @@ from __future__ import annotations import warnings -from collections.abc import Iterable -from typing import List, Dict, Any, Union import numpy as np -from qiskit import pulse -from qiskit.pulse.instruction_schedule_map import InstructionScheduleMap from qiskit.circuit import QuantumCircuit, Instruction from qiskit.circuit.controlflow import ( IfElseOp, @@ -37,12 +33,6 @@ from qiskit.providers.basic_provider import BasicSimulator from qiskit.providers.backend import BackendV2 from qiskit.utils import optionals as _optionals -from qiskit.providers.models.pulsedefaults import Command -from qiskit.qobj.converters.pulse_instruction import QobjToInstructionConverter -from qiskit.pulse.calibration_entries import PulseQobjDef -from qiskit.providers.models.pulsedefaults import MeasurementKernel, Discriminator -from qiskit.qobj.pulse_qobj import QobjMeasurementOption -from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency, deprecate_pulse_arg # Noise default values/ranges for duration and error of supported # instructions. There are two possible formats: @@ -77,440 +67,13 @@ } -class PulseDefaults: - """Internal - Description of default settings for Pulse systems. These are instructions - or settings that - may be good starting points for the Pulse user. The user may modify these defaults for custom - scheduling. - """ - - # Copy from the deprecated from qiskit.providers.models.pulsedefaults.PulseDefaults - - _data = {} - - def __init__( - self, - qubit_freq_est: List[float], - meas_freq_est: List[float], - buffer: int, - pulse_library: List[PulseLibraryItem], - cmd_def: List[Command], - meas_kernel: MeasurementKernel = None, - discriminator: Discriminator = None, - **kwargs: Dict[str, Any], - ): - """ - Validate and reformat transport layer inputs to initialize. - Args: - qubit_freq_est: Estimated qubit frequencies in GHz. - meas_freq_est: Estimated measurement cavity frequencies in GHz. - buffer: Default buffer time (in units of dt) between pulses. - pulse_library: Pulse name and sample definitions. - cmd_def: Operation name and definition in terms of Commands. - meas_kernel: The measurement kernels - discriminator: The discriminators - **kwargs: Other attributes for the super class. - """ - self._data = {} - self.buffer = buffer - self.qubit_freq_est = [freq * 1e9 for freq in qubit_freq_est] - """Qubit frequencies in Hertz.""" - self.meas_freq_est = [freq * 1e9 for freq in meas_freq_est] - """Measurement frequencies in Hertz.""" - self.pulse_library = pulse_library - self.cmd_def = cmd_def - self.instruction_schedule_map = InstructionScheduleMap() - self.converter = QobjToInstructionConverter(pulse_library) - - for inst in cmd_def: - entry = PulseQobjDef(converter=self.converter, name=inst.name) - entry.define(inst.sequence, user_provided=False) - self.instruction_schedule_map._add( - instruction_name=inst.name, - qubits=tuple(inst.qubits), - entry=entry, - ) - - if meas_kernel is not None: - self.meas_kernel = meas_kernel - if discriminator is not None: - self.discriminator = discriminator - - self._data.update(kwargs) - - def __getattr__(self, name): - try: - return self._data[name] - except KeyError as ex: - raise AttributeError(f"Attribute {name} is not defined") from ex - - def to_dict(self): - """Return a dictionary format representation of the PulseDefaults. - Returns: - dict: The dictionary form of the PulseDefaults. - """ - out_dict = { - "qubit_freq_est": self.qubit_freq_est, - "meas_freq_est": self.qubit_freq_est, - "buffer": self.buffer, - "pulse_library": [x.to_dict() for x in self.pulse_library], - "cmd_def": [x.to_dict() for x in self.cmd_def], - } - if hasattr(self, "meas_kernel"): - out_dict["meas_kernel"] = self.meas_kernel.to_dict() - if hasattr(self, "discriminator"): - out_dict["discriminator"] = self.discriminator.to_dict() - for key, value in self.__dict__.items(): - if key not in [ - "qubit_freq_est", - "meas_freq_est", - "buffer", - "pulse_library", - "cmd_def", - "meas_kernel", - "discriminator", - "converter", - "instruction_schedule_map", - ]: - out_dict[key] = value - out_dict.update(self._data) - - out_dict["qubit_freq_est"] = [freq * 1e-9 for freq in self.qubit_freq_est] - out_dict["meas_freq_est"] = [freq * 1e-9 for freq in self.meas_freq_est] - return out_dict - - @classmethod - def from_dict(cls, data): - """Create a new PulseDefaults object from a dictionary. - - Args: - data (dict): A dictionary representing the PulseDefaults - to create. It will be in the same format as output by - :meth:`to_dict`. - Returns: - PulseDefaults: The PulseDefaults from the input dictionary. - """ - schema = { - "pulse_library": PulseLibraryItem, # The class PulseLibraryItem is deprecated - "cmd_def": Command, - "meas_kernel": MeasurementKernel, - "discriminator": Discriminator, - } - - # Pulse defaults data is nested dictionary. - # To avoid deepcopy and avoid mutating the source object, create new dict here. - in_data = {} - for key, value in data.items(): - if key in schema: - with warnings.catch_warnings(): - # The class PulseLibraryItem is deprecated - warnings.filterwarnings("ignore", category=DeprecationWarning, module="qiskit") - if isinstance(value, list): - in_data[key] = list(map(schema[key].from_dict, value)) - else: - in_data[key] = schema[key].from_dict(value) - else: - in_data[key] = value - - return cls(**in_data) - - def __str__(self): - qubit_freqs = [freq / 1e9 for freq in self.qubit_freq_est] - meas_freqs = [freq / 1e9 for freq in self.meas_freq_est] - qfreq = f"Qubit Frequencies [GHz]\n{qubit_freqs}" - mfreq = f"Measurement Frequencies [GHz]\n{meas_freqs} " - return f"<{self.__class__.__name__}({str(self.instruction_schedule_map)}{qfreq}\n{mfreq})>" - - -def _to_complex(value: Union[List[float], complex]) -> complex: - """Convert the input value to type ``complex``. - Args: - value: Value to be converted. - Returns: - Input value in ``complex``. - Raises: - TypeError: If the input value is not in the expected format. - """ - if isinstance(value, list) and len(value) == 2: - return complex(value[0], value[1]) - elif isinstance(value, complex): - return value - - raise TypeError(f"{value} is not in a valid complex number format.") - - -class PulseLibraryItem: - """INTERNAL - An item in a pulse library.""" - - # Copy from the deprecated from qiskit.qobj.PulseLibraryItem - def __init__(self, name, samples): - """Instantiate a pulse library item. - - Args: - name (str): A name for the pulse. - samples (list[complex]): A list of complex values defining pulse - shape. - """ - self.name = name - if isinstance(samples[0], list): - self.samples = np.array([complex(sample[0], sample[1]) for sample in samples]) - else: - self.samples = samples - - def to_dict(self): - """Return a dictionary format representation of the pulse library item. - - Returns: - dict: The dictionary form of the PulseLibraryItem. - """ - return {"name": self.name, "samples": self.samples} - - @classmethod - def from_dict(cls, data): - """Create a new PulseLibraryItem object from a dictionary. - - Args: - data (dict): A dictionary for the experiment config - - Returns: - PulseLibraryItem: The object from the input dictionary. - """ - return cls(**data) - - def __repr__(self): - return f"PulseLibraryItem({self.name}, {repr(self.samples)})" - - def __str__(self): - return f"Pulse Library Item:\n\tname: {self.name}\n\tsamples: {self.samples}" - - def __eq__(self, other): - if isinstance(other, PulseLibraryItem): - if self.to_dict() == other.to_dict(): - return True - return False - - -class PulseQobjInstruction: - """Internal - A class representing a single instruction in a PulseQobj Experiment.""" - - # Copy from the deprecated from qiskit.qobj.PulseQobjInstruction - - _COMMON_ATTRS = [ - "ch", - "conditional", - "val", - "phase", - "frequency", - "duration", - "qubits", - "memory_slot", - "register_slot", - "label", - "type", - "pulse_shape", - "parameters", - ] - - def __init__( - self, - name, - t0, - ch=None, - conditional=None, - val=None, - phase=None, - duration=None, - qubits=None, - memory_slot=None, - register_slot=None, - kernels=None, - discriminators=None, - label=None, - type=None, # pylint: disable=invalid-name,redefined-builtin - pulse_shape=None, - parameters=None, - frequency=None, - ): - """Instantiate a new PulseQobjInstruction object. - - Args: - name (str): The name of the instruction - t0 (int): Pulse start time in integer **dt** units. - ch (str): The channel to apply the pulse instruction. - conditional (int): The register to use for a conditional for this - instruction - val (complex): Complex value to apply, bounded by an absolute value - of 1. - phase (float): if a ``fc`` instruction, the frame change phase in - radians. - frequency (float): if a ``sf`` instruction, the frequency in Hz. - duration (int): The duration of the pulse in **dt** units. - qubits (list): A list of ``int`` representing the qubits the - instruction operates on - memory_slot (list): If a ``measure`` instruction this is a list - of ``int`` containing the list of memory slots to store the - measurement results in (must be the same length as qubits). - If a ``bfunc`` instruction this is a single ``int`` of the - memory slot to store the boolean function result in. - register_slot (list): If a ``measure`` instruction this is a list - of ``int`` containing the list of register slots in which to - store the measurement results (must be the same length as - qubits). If a ``bfunc`` instruction this is a single ``int`` - of the register slot in which to store the result. - kernels (list): List of :class:`QobjMeasurementOption` objects - defining the measurement kernels and set of parameters if the - measurement level is 1 or 2. Only used for ``acquire`` - instructions. - discriminators (list): A list of :class:`QobjMeasurementOption` - used to set the discriminators to be used if the measurement - level is 2. Only used for ``acquire`` instructions. - label (str): Label of instruction - type (str): Type of instruction - pulse_shape (str): The shape of the parametric pulse - parameters (dict): The parameters for a parametric pulse - """ - self.name = name - self.t0 = t0 - if ch is not None: - self.ch = ch - if conditional is not None: - self.conditional = conditional - if val is not None: - self.val = val - if phase is not None: - self.phase = phase - if frequency is not None: - self.frequency = frequency - if duration is not None: - self.duration = duration - if qubits is not None: - self.qubits = qubits - if memory_slot is not None: - self.memory_slot = memory_slot - if register_slot is not None: - self.register_slot = register_slot - if kernels is not None: - self.kernels = kernels - if discriminators is not None: - self.discriminators = discriminators - if label is not None: - self.label = label - if type is not None: - self.type = type - if pulse_shape is not None: - self.pulse_shape = pulse_shape - if parameters is not None: - self.parameters = parameters - - def to_dict(self): - """Return a dictionary format representation of the Instruction. - - Returns: - dict: The dictionary form of the PulseQobjInstruction. - """ - out_dict = {"name": self.name, "t0": self.t0} - for attr in self._COMMON_ATTRS: - if hasattr(self, attr): - out_dict[attr] = getattr(self, attr) - if hasattr(self, "kernels"): - out_dict["kernels"] = [x.to_dict() for x in self.kernels] - if hasattr(self, "discriminators"): - out_dict["discriminators"] = [x.to_dict() for x in self.discriminators] - return out_dict - - def __repr__(self): - out = f'PulseQobjInstruction(name="{self.name}", t0={self.t0}' - for attr in self._COMMON_ATTRS: - attr_val = getattr(self, attr, None) - if attr_val is not None: - if isinstance(attr_val, str): - out += f', {attr}="{attr_val}"' - else: - out += f", {attr}={attr_val}" - out += ")" - return out - - def __str__(self): - out = f"Instruction: {self.name}\n" - out += f"\t\tt0: {self.t0}\n" - for attr in self._COMMON_ATTRS: - if hasattr(self, attr): - out += f"\t\t{attr}: {getattr(self, attr)}\n" - return out - - @classmethod - def from_dict(cls, data): - """Create a new PulseQobjExperimentConfig object from a dictionary. - - Args: - data (dict): A dictionary for the experiment config - - Returns: - PulseQobjInstruction: The object from the input dictionary. - """ - schema = { - "discriminators": QobjMeasurementOption, - "kernels": QobjMeasurementOption, - } - skip = ["t0", "name"] - - # Pulse instruction data is nested dictionary. - # To avoid deepcopy and avoid mutating the source object, create new dict here. - in_data = {} - for key, value in data.items(): - if key in skip: - continue - if key == "parameters": - # This is flat dictionary of parametric pulse parameters - formatted_value = value.copy() - if "amp" in formatted_value: - formatted_value["amp"] = _to_complex(formatted_value["amp"]) - in_data[key] = formatted_value - continue - if key in schema: - if isinstance(value, list): - in_data[key] = list(map(schema[key].from_dict, value)) - else: - in_data[key] = schema[key].from_dict(value) - else: - in_data[key] = value - - return cls(data["name"], data["t0"], **in_data) - - def __eq__(self, other): - if isinstance(other, PulseQobjInstruction): - if self.to_dict() == other.to_dict(): - return True - return False - - -def _pulse_library(): - # The number of samples determines the pulse durations of the corresponding - # instructions. This default defines pulses with durations in multiples of - # 16 dt for consistency with the pulse granularity of real IBM devices, but - # keeps the number smaller than what would be realistic for - # manageability. If needed, more realistic durations could be added in the - # future (order of 160dt for 1q gates, 1760dt for 2q gates and measure). - return [ - PulseLibraryItem( - name="pulse_1", samples=np.linspace(0, 1.0, 16, dtype=np.complex128) - ), # 16dt - PulseLibraryItem( - name="pulse_2", samples=np.linspace(0, 1.0, 32, dtype=np.complex128) - ), # 32dt - PulseLibraryItem( - name="pulse_3", samples=np.linspace(0, 1.0, 64, dtype=np.complex128) - ), # 64dt - ] - - class GenericBackendV2(BackendV2): """Generic :class:`~.BackendV2` implementation with a configurable constructor. This class will return a :class:`~.BackendV2` instance that runs on a local simulator (in the spirit of fake backends) and contains all the necessary information to test backend-interfacing components, such as the transpiler. A :class:`.GenericBackendV2` instance can be constructed from as little as a specified ``num_qubits``, but users can additionally configure the basis gates, coupling map, - ability to run dynamic circuits (control flow instructions), instruction calibrations and dtm. + ability to run dynamic circuits (control flow instructions) and dtm. The remainder of the backend properties are generated by randomly sampling from default ranges extracted from historical IBM backend data. The seed for this random generation can be fixed to ensure the reproducibility of the backend output. @@ -519,8 +82,6 @@ class GenericBackendV2(BackendV2): transpilation. """ - @deprecate_pulse_arg("pulse_channels") - @deprecate_pulse_arg("calibrate_instructions") def __init__( self, num_qubits: int, @@ -528,10 +89,8 @@ def __init__( *, coupling_map: list[list[int]] | CouplingMap | None = None, control_flow: bool = False, - calibrate_instructions: bool | InstructionScheduleMap | None = None, dtm: float | None = None, seed: int | None = None, - pulse_channels: bool = True, noise_info: bool = True, ): """ @@ -563,26 +122,11 @@ def __init__( control_flow: Flag to enable control flow directives on the target (defaults to False). - calibrate_instructions: DEPRECATED. Instruction calibration settings, this argument - supports both boolean and :class:`.InstructionScheduleMap` as - input types, and is ``None`` by default: - - #. If ``calibrate_instructions==None``, no calibrations will be added to the target. - #. If ``calibrate_instructions==True``, all gates will be calibrated for all - qubits using the default pulse schedules generated internally. - #. If ``calibrate_instructions==False``, all gates will be "calibrated" for - all qubits with an empty pulse schedule. - #. If an :class:`.InstructionScheduleMap` instance is given, the calibrations - in this instruction schedule map will be appended to the target - instead of the default pulse schedules (this allows for custom calibrations). - dtm: System time resolution of output signals in nanoseconds. None by default. seed: Optional seed for generation of default values. - pulse_channels: DEPRECATED. If true, sets default pulse channel information on the backend. - noise_info: If true, associates gates and qubits with default noise information. """ @@ -598,13 +142,9 @@ def __init__( self._dtm = dtm self._num_qubits = num_qubits self._control_flow = control_flow - self._calibrate_instructions = calibrate_instructions self._supported_gates = get_standard_gate_name_mapping() self._noise_info = noise_info - if calibrate_instructions and not noise_info: - raise QiskitError("Must set parameter noise_info when calibrating instructions.") - if coupling_map is None: self._coupling_map = CouplingMap().from_full(num_qubits) else: @@ -627,10 +167,6 @@ def __init__( self._basis_gates.append(name) self._build_generic_target() - if pulse_channels: - self._build_default_channels() - else: - self.channels_map = {} @property def target(self): @@ -650,20 +186,6 @@ def dtm(self) -> float: def meas_map(self) -> list[list[int]]: return self._target.concurrent_measurements - def _build_default_channels(self) -> None: - with warnings.catch_warnings(): - warnings.simplefilter(action="ignore", category=DeprecationWarning) - # Prevent pulse deprecation warnings from being emitted - channels_map = { - "acquire": {(i,): [pulse.AcquireChannel(i)] for i in range(self.num_qubits)}, - "drive": {(i,): [pulse.DriveChannel(i)] for i in range(self.num_qubits)}, - "measure": {(i,): [pulse.MeasureChannel(i)] for i in range(self.num_qubits)}, - "control": { - (edge): [pulse.ControlChannel(i)] for i, edge in enumerate(self._coupling_map) - }, - } - setattr(self, "channels_map", channels_map) - def _get_noise_defaults(self, name: str, num_qubits: int) -> tuple: """Return noise default values/ranges for duration and error of supported instructions. There are two possible formats: @@ -677,110 +199,9 @@ def _get_noise_defaults(self, name: str, num_qubits: int) -> tuple: return _NOISE_DEFAULTS_FALLBACK["1-q"] return _NOISE_DEFAULTS_FALLBACK["multi-q"] - def _get_calibration_sequence( - self, inst: str, num_qubits: int, qargs: tuple[int] - ) -> list[PulseQobjInstruction]: - """Return calibration pulse sequence for given instruction (defined by name and num_qubits) - acting on qargs. - """ - - pulse_library = _pulse_library() - # Note that the calibration pulses are different for - # 1q gates vs 2q gates vs measurement instructions. - if inst == "measure": - with warnings.catch_warnings(): - # The class PulseQobjInstruction is deprecated - warnings.filterwarnings("ignore", category=DeprecationWarning, module="qiskit") - sequence = [ - PulseQobjInstruction( - name="acquire", - duration=1792, - t0=0, - qubits=qargs, - memory_slot=qargs, - ) - ] + [ - PulseQobjInstruction(name=pulse_library[1].name, ch=f"m{i}", t0=0) - for i in qargs - ] - return sequence - with warnings.catch_warnings(): - # The class PulseQobjInstruction is deprecated - warnings.filterwarnings("ignore", category=DeprecationWarning, module="qiskit") - if num_qubits == 1: - return [ - PulseQobjInstruction(name="fc", ch=f"u{qargs[0]}", t0=0, phase="-P0"), - PulseQobjInstruction(name=pulse_library[0].name, ch=f"d{qargs[0]}", t0=0), - ] - return [ - PulseQobjInstruction(name=pulse_library[1].name, ch=f"d{qargs[0]}", t0=0), - PulseQobjInstruction(name=pulse_library[2].name, ch=f"u{qargs[0]}", t0=0), - PulseQobjInstruction(name=pulse_library[1].name, ch=f"d{qargs[1]}", t0=0), - PulseQobjInstruction(name="fc", ch=f"d{qargs[1]}", t0=0, phase=2.1), - ] - - def _generate_calibration_defaults(self) -> PulseDefaults: - """Generate pulse calibration defaults as specified with `self._calibrate_instructions`. - If `self._calibrate_instructions` is True, the pulse schedules will be generated from - a series of default calibration sequences. If `self._calibrate_instructions` is False, - the pulse schedules will contain empty calibration sequences, but still be generated and - added to the target. - """ - - # If self._calibrate_instructions==True, this method - # will generate default pulse schedules for all gates in self._basis_gates, - # except for `delay` and `reset`. - calibration_buffer = self._basis_gates.copy() - for inst in ["delay", "reset"]: - calibration_buffer.remove(inst) - - # List of calibration commands (generated from sequences of PulseQobjInstructions) - # corresponding to each calibrated instruction. Note that the calibration pulses - # are different for 1q gates vs 2q gates vs measurement instructions. - cmd_def = [] - for inst in calibration_buffer: - num_qubits = self._supported_gates[inst].num_qubits - qarg_set = self._coupling_map if num_qubits > 1 else list(range(self.num_qubits)) - if inst == "measure": - cmd_def.append( - Command( - name=inst, - qubits=qarg_set, - sequence=( - self._get_calibration_sequence(inst, num_qubits, qarg_set) - if self._calibrate_instructions - else [] - ), - ) - ) - else: - for qarg in qarg_set: - qubits = [qarg] if num_qubits == 1 else qarg - cmd_def.append( - Command( - name=inst, - qubits=qubits, - sequence=( - self._get_calibration_sequence(inst, num_qubits, qubits) - if self._calibrate_instructions - else [] - ), - ) - ) - - qubit_freq_est = np.random.normal(4.8, scale=0.01, size=self.num_qubits).tolist() - meas_freq_est = np.linspace(6.4, 6.6, self.num_qubits).tolist() - return PulseDefaults( - qubit_freq_est=qubit_freq_est, - meas_freq_est=meas_freq_est, - buffer=0, - pulse_library=_pulse_library(), - cmd_def=cmd_def, - ) - def _build_generic_target(self): """This method generates a :class:`~.Target` instance with - default qubit, instruction and calibration properties. + default qubit and instruction properties. """ # the qubit properties are sampled from default ranges properties = _QUBIT_PROPERTIES @@ -810,17 +231,8 @@ def _build_generic_target(self): concurrent_measurements=[list(range(self._num_qubits))], ) - # Generate instruction schedule map with calibrations to add to target. - calibration_inst_map = None - if self._calibrate_instructions is not None: - if isinstance(self._calibrate_instructions, InstructionScheduleMap): - calibration_inst_map = self._calibrate_instructions - else: - defaults = self._generate_calibration_defaults() - calibration_inst_map = defaults.instruction_schedule_map - # Iterate over gates, generate noise params from defaults, - # and add instructions, noise and calibrations to target. + # and add instructions and noise information to the target. for name in self._basis_gates: if name not in self._supported_gates: raise QiskitError( @@ -835,7 +247,7 @@ def _build_generic_target(self): ) if self._noise_info: noise_params = self._get_noise_defaults(name, gate.num_qubits) - self._add_noisy_instruction_to_target(gate, noise_params, calibration_inst_map) + self._add_noisy_instruction_to_target(gate, noise_params) else: qarg_set = self._coupling_map if gate.num_qubits > 1 else range(self.num_qubits) props = {(qarg,) if isinstance(qarg, int) else qarg: None for qarg in qarg_set} @@ -853,7 +265,6 @@ def _add_noisy_instruction_to_target( self, instruction: Instruction, noise_params: tuple[float, ...] | None, - calibration_inst_map: InstructionScheduleMap | None, ) -> None: """Add instruction properties to target for specified instruction. @@ -861,7 +272,6 @@ def _add_noisy_instruction_to_target( instruction: Instance of instruction to be added to the target noise_params: Error and duration noise values/ranges to include in instruction properties. - calibration_inst_map: Instruction schedule map with calibration defaults """ qarg_set = self._coupling_map if instruction.num_qubits > 1 else range(self.num_qubits) props = {} @@ -878,46 +288,16 @@ def _add_noisy_instruction_to_target( self._rng.uniform(*noise_params[2:]), ) ) - with warnings.catch_warnings(): - warnings.simplefilter(action="ignore", category=DeprecationWarning) - # Prevent pulse deprecations from being emitted - if ( - calibration_inst_map is not None - and instruction.name not in ["reset", "delay"] - and qarg in calibration_inst_map.qubits_with_instruction(instruction.name) - ): - # Do NOT call .get method. This parses Qobj immediately. - # This operation is computationally expensive and should be bypassed. - calibration_entry = calibration_inst_map._get_calibration_entry( - instruction.name, qargs - ) - else: - calibration_entry = None - if duration is not None and len(noise_params) > 2: - # Ensure exact conversion of duration from seconds to dt - dt = _QUBIT_PROPERTIES["dt"] - rounded_duration = round(duration / dt) * dt - # Clamp rounded duration to be between min and max values - duration = max(noise_params[0], min(rounded_duration, noise_params[1])) - props.update({qargs: InstructionProperties(duration, error, calibration_entry)}) - self._target.add_instruction(instruction, props) - # The "measure" instruction calibrations need to be added qubit by qubit, once the - # instruction has been added to the target. - if calibration_inst_map is not None and instruction.name == "measure": - for qarg in calibration_inst_map.qubits_with_instruction(instruction.name): - try: - qargs = tuple(qarg) - except TypeError: - qargs = (qarg,) - # Do NOT call .get method. This parses Qobj immediately. - # This operation is computationally expensive and should be bypassed. - calibration_entry = calibration_inst_map._get_calibration_entry( - instruction.name, qargs - ) - for qubit in qargs: - if qubit < self.num_qubits: - self._target[instruction.name][(qubit,)].calibration = calibration_entry + if duration is not None and len(noise_params) > 2: + # Ensure exact conversion of duration from seconds to dt + dt = _QUBIT_PROPERTIES["dt"] + rounded_duration = round(duration / dt) * dt + # Clamp rounded duration to be between min and max values + duration = max(noise_params[0], min(rounded_duration, noise_params[1])) + props.update({qargs: InstructionProperties(duration, error, None)}) + + self._target.add_instruction(instruction, props) def run(self, run_input, **options): """Run on the backend using a simulator. @@ -934,11 +314,9 @@ def run(self, run_input, **options): Noisy simulations of pulse jobs are not yet supported in :class:`~.GenericBackendV2`. Args: - run_input (QuantumCircuit or Schedule or ScheduleBlock or list): An - individual or a list of - :class:`~qiskit.circuit.QuantumCircuit`, - :class:`~qiskit.pulse.ScheduleBlock`, or - :class:`~qiskit.pulse.Schedule` objects to run on the backend. + run_input (QuantumCircuit or list): An + individual or a list of :class:`~qiskit.circuit.QuantumCircuit` + objects to run on the backend. options: Any kwarg options to pass to the backend for running the config. If a key is also present in the options attribute/object, then the expectation is that the value @@ -952,25 +330,15 @@ def run(self, run_input, **options): QiskitError: If a pulse job is supplied and qiskit_aer is not installed. """ circuits = run_input - pulse_job = None - if isinstance(circuits, (pulse.Schedule, pulse.ScheduleBlock)): - pulse_job = True - elif isinstance(circuits, QuantumCircuit): - pulse_job = False - elif isinstance(circuits, list): - if circuits: - if all(isinstance(x, (pulse.Schedule, pulse.ScheduleBlock)) for x in circuits): - pulse_job = True - elif all(isinstance(x, QuantumCircuit) for x in circuits): - pulse_job = False - if pulse_job is None: # submitted job is invalid + if not isinstance(circuits, QuantumCircuit) and ( + not isinstance(circuits, list) + or not all(isinstance(x, QuantumCircuit) for x in circuits) + ): raise QiskitError( f"Invalid input object {circuits}, must be either a " - "QuantumCircuit, Schedule, or a list of either" + "QuantumCircuit or a list of QuantumCircuit objects" ) - if pulse_job: # pulse job - raise QiskitError("Pulse simulation is currently not supported for V2 backends.") - # circuit job + if not _optionals.HAS_AER: warnings.warn("Aer not found using BasicSimulator and no noise", RuntimeWarning) if self._sim is None: @@ -1001,35 +369,3 @@ def _default_options(cls) -> Options: return AerSimulator._default_options() else: return BasicSimulator._default_options() - - @deprecate_pulse_dependency - def drive_channel(self, qubit: int): - drive_channels_map = getattr(self, "channels_map", {}).get("drive", {}) - qubits = (qubit,) - if qubits in drive_channels_map: - return drive_channels_map[qubits][0] - return None - - @deprecate_pulse_dependency - def measure_channel(self, qubit: int): - measure_channels_map = getattr(self, "channels_map", {}).get("measure", {}) - qubits = (qubit,) - if qubits in measure_channels_map: - return measure_channels_map[qubits][0] - return None - - @deprecate_pulse_dependency - def acquire_channel(self, qubit: int): - acquire_channels_map = getattr(self, "channels_map", {}).get("acquire", {}) - qubits = (qubit,) - if qubits in acquire_channels_map: - return acquire_channels_map[qubits][0] - return None - - @deprecate_pulse_dependency - def control_channel(self, qubits: Iterable[int]): - control_channels_map = getattr(self, "channels_map", {}).get("control", {}) - qubits = tuple(qubits) - if qubits in control_channels_map: - return control_channels_map[qubits] - return [] diff --git a/qiskit/pulse/builder.py b/qiskit/pulse/builder.py index 70ecc9d11dfa..5d6c5fbd2d41 100644 --- a/qiskit/pulse/builder.py +++ b/qiskit/pulse/builder.py @@ -104,14 +104,12 @@ Methods to return the correct channels for the respective qubit indices. -.. plot:: - :include-source: - :nofigs: +.. code-block:: python from qiskit import pulse from qiskit.providers.fake_provider import GenericBackendV2 - backend = GenericBackendV2(num_qubits=2, calibrate_instructions=True) + backend = GenericBackendV2(num_qubits=2) with pulse.build(backend) as drive_sched: d0 = pulse.drive_channel(0) @@ -132,14 +130,12 @@ Pulse instructions are available within the builder interface. Here's an example: -.. plot:: - :alt: Output from the previous code. - :include-source: +.. code-block:: python from qiskit import pulse from qiskit.providers.fake_provider import GenericBackendV2 - backend = GenericBackendV2(num_qubits=2, calibrate_instructions=True) + backend = GenericBackendV2(num_qubits=2) with pulse.build(backend) as drive_sched: d0 = pulse.drive_channel(0) @@ -181,9 +177,7 @@ example an alignment context like :func:`align_right` may be used to align all pulses as late as possible in a pulse program. -.. plot:: - :alt: Output from the previous code. - :include-source: +.. code-block:: python from qiskit import pulse @@ -213,14 +207,12 @@ Macros help you add more complex functionality to your pulse program. -.. plot:: - :include-source: - :nofigs: +.. code-block:: python from qiskit import pulse from qiskit.providers.fake_provider import GenericBackendV2 - backend = GenericBackendV2(num_qubits=2, calibrate_instructions=True) + backend = GenericBackendV2(num_qubits=2) with pulse.build(backend) as measure_sched: mem_slot = pulse.measure(0) @@ -241,15 +233,13 @@ The utility functions can be used to gather attributes about the backend and modify how the program is built. -.. plot:: - :include-source: - :nofigs: +.. code-block:: python from qiskit import pulse from qiskit.providers.fake_provider import GenericBackendV2 - backend = GenericBackendV2(num_qubits=2, calibrate_instructions=True) + backend = GenericBackendV2(num_qubits=2) with pulse.build(backend) as u3_sched: print('Number of qubits in backend: {}'.format(pulse.num_qubits())) @@ -651,10 +641,7 @@ def build( To enter a building context and starting building a pulse program: - .. plot:: - :include-source: - :nofigs: - :context: reset + .. code-block:: python from qiskit import transpile, pulse from qiskit.providers.fake_provider import FakeOpenPulse2Q @@ -750,9 +737,7 @@ def append_instruction(instruction: instructions.Instruction): Examples: - .. plot:: - :include-source: - :nofigs: + .. code-block:: python from qiskit import pulse @@ -1663,15 +1648,12 @@ def call( 1. Calling a schedule block (recommended) - .. plot:: - :include-source: - :nofigs: - :context: reset + .. code-block:: python from qiskit import circuit, pulse from qiskit.providers.fake_provider import GenericBackendV2 - backend = GenericBackendV2(num_qubits=5, calibrate_instructions=True) + backend = GenericBackendV2(num_qubits=5) with pulse.build() as x_sched: pulse.play(pulse.Gaussian(160, 0.1, 40), pulse.DriveChannel(0)) @@ -1698,10 +1680,7 @@ def call( The actual program is stored in the reference table attached to the schedule. - .. plot:: - :include-source: - :nofigs: - :context: + .. code-block:: python print(pulse_prog.references) @@ -1712,10 +1691,7 @@ def call( In addition, you can call a parameterized target program with parameter assignment. - .. plot:: - :include-source: - :nofigs: - :context: + .. code-block:: python amp = circuit.Parameter("amp") @@ -1754,10 +1730,7 @@ def call( If there is a name collision between parameters, you can distinguish them by specifying each parameter object in a python dictionary. For example, - .. plot:: - :include-source: - :nofigs: - :context: + .. code-block:: python amp1 = circuit.Parameter('amp') amp2 = circuit.Parameter('amp') @@ -1786,10 +1759,7 @@ def call( 2. Calling a schedule - .. plot:: - :include-source: - :nofigs: - :context: + .. code-block:: python x_sched = backend.instruction_schedule_map.get("x", (0,)) @@ -1927,9 +1897,7 @@ def barrier(*channels_or_qubits: chans.Channel | int, name: str | None = None): in the case where we are calling an outside circuit or schedule and want to align a pulse at the end of one call: - .. plot:: - :include-source: - :nofigs: + .. code-block:: python import math from qiskit import pulse @@ -2040,10 +2008,7 @@ def measure( To use the measurement it is as simple as specifying the qubit you wish to measure: - .. plot:: - :include-source: - :nofigs: - :context: reset + .. code-block:: python from qiskit import pulse from qiskit.providers.fake_provider import FakeOpenPulse2Q @@ -2063,10 +2028,7 @@ def measure( future we will support using this handle to a result register to build up ones program. It is also possible to supply this register: - .. plot:: - :include-source: - :nofigs: - :context: + .. code-block:: python with pulse.build(backend) as pulse_prog: pulse.play(pulse.Constant(100, 1.0), qubit_drive_chan) diff --git a/releasenotes/notes/remove-pulse-generic-backendv2-738ad9f7ab64b8fd.yaml b/releasenotes/notes/remove-pulse-generic-backendv2-738ad9f7ab64b8fd.yaml new file mode 100644 index 000000000000..147b785c48b8 --- /dev/null +++ b/releasenotes/notes/remove-pulse-generic-backendv2-738ad9f7ab64b8fd.yaml @@ -0,0 +1,6 @@ +--- +upgrade_providers: + - | + As part of Pulse removal in Qiskit 2.0, pulse support has been removed from + :class:`.GenericBackendV2`. This includes the ability to initialize the backend + with custom calibrations and pulse channels information. diff --git a/test/python/circuit/test_scheduled_circuit.py b/test/python/circuit/test_scheduled_circuit.py index 45238dc79e74..f72b6d2adb23 100644 --- a/test/python/circuit/test_scheduled_circuit.py +++ b/test/python/circuit/test_scheduled_circuit.py @@ -57,8 +57,7 @@ def test_schedule_circuit_when_backend_tells_dt(self): qc.h(0) # 195[dt] qc.h(1) # 210[dt] - with self.assertWarns(DeprecationWarning): - backend = GenericBackendV2(2, calibrate_instructions=True, seed=42) + backend = GenericBackendV2(2, seed=42) sc = transpile(qc, backend, scheduling_method="alap", layout_method="trivial") self.assertEqual(sc.duration, 451095) @@ -382,17 +381,12 @@ def test_per_qubit_durations_loose_constrain(self): def test_per_qubit_durations(self): """Test target with custom instruction_durations""" - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="argument ``calibrate_instructions`` is deprecated", - ): - target = GenericBackendV2( - 3, - calibrate_instructions=True, - coupling_map=[[0, 1], [1, 2]], - basis_gates=["cx", "h"], - seed=42, - ).target + target = GenericBackendV2( + 3, + coupling_map=[[0, 1], [1, 2]], + basis_gates=["cx", "h"], + seed=42, + ).target target.update_instruction_properties("cx", (0, 1), InstructionProperties(0.00001)) target.update_instruction_properties("cx", (1, 2), InstructionProperties(0.00001)) target.update_instruction_properties("h", (0,), InstructionProperties(0.000002)) @@ -435,8 +429,8 @@ def test_convert_duration_to_dt(self): """Test that circuit duration unit conversion is applied only when necessary. Tests fix for bug reported in PR #11782.""" + backend = GenericBackendV2(num_qubits=3, seed=42) with self.assertWarns(DeprecationWarning): - backend = GenericBackendV2(num_qubits=3, calibrate_instructions=True, seed=42) schedule_config = ScheduleConfig( inst_map=backend.target.instruction_schedule_map(), meas_map=backend.meas_map, diff --git a/test/python/compiler/test_transpiler.py b/test/python/compiler/test_transpiler.py index 5c707c00d884..f1f691da5a89 100644 --- a/test/python/compiler/test_transpiler.py +++ b/test/python/compiler/test_transpiler.py @@ -19,7 +19,6 @@ import sys from logging import StreamHandler, getLogger from unittest.mock import patch -import warnings import numpy as np import rustworkx as rx from ddt import data, ddt, unpack @@ -82,7 +81,7 @@ from qiskit.pulse import InstructionScheduleMap from qiskit.quantum_info import Operator, random_unitary from qiskit.utils import parallel -from qiskit.transpiler import CouplingMap, Layout, PassManager, TransformationPass +from qiskit.transpiler import CouplingMap, Layout, PassManager from qiskit.transpiler.exceptions import TranspilerError, CircuitTooWideForTarget from qiskit.transpiler.passes import BarrierBeforeFinalMeasurements, GateDirection, VF2PostLayout @@ -1461,57 +1460,6 @@ def test_inst_durations_from_calibrations(self): with self.assertWarns(DeprecationWarning): self.assertEqual(out.duration, cal.duration) - @data(0, 1, 2, 3) - def test_multiqubit_gates_calibrations(self, opt_level): - """Test multiqubit gate > 2q with calibrations works - - Adapted from issue description in https://github.com/Qiskit/qiskit-terra/issues/6572 - """ - circ = QuantumCircuit(5) - custom_gate = Gate("my_custom_gate", 5, []) - circ.append(custom_gate, [0, 1, 2, 3, 4]) - circ.measure_all() - backend = GenericBackendV2(num_qubits=6) - - with self.assertWarns(DeprecationWarning): - with pulse.build(backend=backend, name="custom") as my_schedule: - pulse.play( - pulse.library.Gaussian(duration=128, amp=0.1, sigma=16), pulse.drive_channel(0) - ) - pulse.play( - pulse.library.Gaussian(duration=128, amp=0.1, sigma=16), pulse.drive_channel(1) - ) - pulse.play( - pulse.library.Gaussian(duration=128, amp=0.1, sigma=16), pulse.drive_channel(2) - ) - pulse.play( - pulse.library.Gaussian(duration=128, amp=0.1, sigma=16), pulse.drive_channel(3) - ) - pulse.play( - pulse.library.Gaussian(duration=128, amp=0.1, sigma=16), pulse.drive_channel(4) - ) - pulse.play( - pulse.library.Gaussian(duration=128, amp=0.1, sigma=16), pulse.ControlChannel(1) - ) - pulse.play( - pulse.library.Gaussian(duration=128, amp=0.1, sigma=16), pulse.ControlChannel(2) - ) - pulse.play( - pulse.library.Gaussian(duration=128, amp=0.1, sigma=16), pulse.ControlChannel(3) - ) - pulse.play( - pulse.library.Gaussian(duration=128, amp=0.1, sigma=16), pulse.ControlChannel(4) - ) - circ.add_calibration("my_custom_gate", [0, 1, 2, 3, 4], my_schedule, []) - trans_circ = transpile( - circ, - backend=backend, - optimization_level=opt_level, - layout_method="trivial", - seed_transpiler=42, - ) - self.assertEqual({"measure": 5, "my_custom_gate": 1, "barrier": 1}, trans_circ.count_ops()) - @data(0, 1, 2, 3) def test_circuit_with_delay(self, optimization_level): """Verify a circuit with delay can transpile to a scheduled circuit.""" @@ -1609,17 +1557,12 @@ def test_scheduling_instruction_constraints_backend(self): def test_scheduling_instruction_constraints(self): """Test that scheduling-related loose transpile constraints work with target.""" - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="argument ``calibrate_instructions`` is deprecated", - ): - target = GenericBackendV2( - 2, - calibrate_instructions=True, - coupling_map=[[0, 1]], - basis_gates=["cx", "h"], - seed=42, - ).target + target = GenericBackendV2( + 2, + coupling_map=[[0, 1]], + basis_gates=["cx", "h"], + seed=42, + ).target qc = QuantumCircuit(2) qc.h(0) qc.delay(0.000001, 1, "s") @@ -2790,52 +2733,6 @@ def test_parallel_dispatch(self, opt_level): self.assertTrue(math.isclose(count["00000"], 500, rel_tol=0.1)) self.assertTrue(math.isclose(count["01111"], 500, rel_tol=0.1)) - def test_parallel_dispatch_lazy_cal_loading(self): - """Test adding calibration by lazy loading in parallel environment.""" - - class TestAddCalibration(TransformationPass): - """A fake pass to test lazy pulse qobj loading in parallel environment.""" - - def __init__(self, target): - """Instantiate with target.""" - super().__init__() - self.target = target - - def run(self, dag): - """Run test pass that adds calibration of SX gate of qubit 0.""" - with warnings.catch_warnings(): - warnings.simplefilter("ignore", category=DeprecationWarning) - # DAGCircuit.add_calibration() is deprecated but we can't use self.assertWarns() here - dag.add_calibration( - "sx", - qubits=(0,), - schedule=self.target["sx"][(0,)].calibration, # PulseQobj is parsed here - ) - return dag - - # Create backend with empty calibrations (PulseQobjEntries) - with self.assertWarns(DeprecationWarning): - backend = GenericBackendV2( - num_qubits=4, - calibrate_instructions=False, - ) - - # This target has PulseQobj entries that provide a serialized schedule data - pass_ = TestAddCalibration(backend.target) - pm = PassManager(passes=[pass_]) - self.assertIsNone(backend.target["sx"][(0,)]._calibration._definition) - - qc = QuantumCircuit(1) - qc.sx(0) - qc_copied = [qc for _ in range(10)] - - qcs_cal_added = pm.run(qc_copied) - with self.assertWarns(DeprecationWarning): - ref_cal = backend.target["sx"][(0,)].calibration - for qc_test in qcs_cal_added: - added_cal = qc_test.calibrations["sx"][((0,), ())] - self.assertEqual(added_cal, ref_cal) - @data(0, 1, 2, 3) def test_parallel_singleton_conditional_gate(self, opt_level): """Test that singleton mutable instance doesn't lose state in parallel.""" diff --git a/test/python/primitives/test_backend_sampler.py b/test/python/primitives/test_backend_sampler.py index dc77a3c47ce6..6acfa6443530 100644 --- a/test/python/primitives/test_backend_sampler.py +++ b/test/python/primitives/test_backend_sampler.py @@ -368,10 +368,7 @@ def max_circuits(self): def test_primitive_job_size_limit_backend_v1(self): """Test primitive respects backend's job size limit.""" - with self.assertWarns(DeprecationWarning): - backend = GenericBackendV2( - 7, calibrate_instructions=True, basis_gates=["cx", "u1", "u2", "u3"], seed=42 - ) + backend = GenericBackendV2(7, basis_gates=["cx", "u1", "u2", "u3"], seed=42) qc = QuantumCircuit(1) qc.measure_all() qc2 = QuantumCircuit(1) @@ -410,10 +407,7 @@ def test_circuit_with_dynamic_circuit(self): def test_sequential_run(self): """Test sequential run.""" - with self.assertWarns(DeprecationWarning): - backend = GenericBackendV2( - 7, calibrate_instructions=True, basis_gates=["cx", "u1", "u2", "u3"], seed=42 - ) + backend = GenericBackendV2(7, basis_gates=["cx", "u1", "u2", "u3"], seed=42) qc = QuantumCircuit(1) qc.measure_all() qc2 = QuantumCircuit(1) @@ -461,10 +455,8 @@ def callback(msg): bound_counter = CallbackPass("bound_pass_manager", callback) bound_pass = PassManager(bound_counter) + backend = GenericBackendV2(7, basis_gates=["cx", "u1", "u2", "u3"], seed=42) with self.assertWarns(DeprecationWarning): - backend = GenericBackendV2( - 7, calibrate_instructions=True, basis_gates=["cx", "u1", "u2", "u3"], seed=42 - ) sampler = BackendSampler(backend=backend, bound_pass_manager=bound_pass) _ = sampler.run([self._circuit[0]]).result() expected = [ @@ -485,13 +477,11 @@ def callback(msg): # pylint: disable=function-redefined bound_counter = CallbackPass("bound_pass_manager", callback) bound_pass = PassManager(bound_counter) - with self.assertWarns(DeprecationWarning): - backend = GenericBackendV2( - 7, - calibrate_instructions=True, - basis_gates=["cx", "u1", "u2", "u3"], - seed=42, - ) + backend = GenericBackendV2( + 7, + basis_gates=["cx", "u1", "u2", "u3"], + seed=42, + ) with self.assertWarns(DeprecationWarning): sampler = BackendSampler(backend=backend, bound_pass_manager=bound_pass) _ = sampler.run([self._circuit[0], self._circuit[0]]).result() diff --git a/test/python/primitives/test_backend_sampler_v2.py b/test/python/primitives/test_backend_sampler_v2.py index 77830d5c9224..dc5c9ee82e9d 100644 --- a/test/python/primitives/test_backend_sampler_v2.py +++ b/test/python/primitives/test_backend_sampler_v2.py @@ -1484,10 +1484,7 @@ def max_circuits(self): def test_job_size_limit_backend_v1(self): """Test BackendSamplerV2 respects backend's job size limit.""" - with self.assertWarns(DeprecationWarning): - backend = GenericBackendV2( - 2, calibrate_instructions=True, basis_gates=["cx", "u1", "u2", "u3"], seed=42 - ) + backend = GenericBackendV2(2, basis_gates=["cx", "u1", "u2", "u3"], seed=42) qc = QuantumCircuit(1) qc.measure_all() qc2 = QuantumCircuit(1) diff --git a/test/python/providers/fake_provider/test_generic_backend_v2.py b/test/python/providers/fake_provider/test_generic_backend_v2.py index d42a6dbf7e07..1cd02fb91097 100644 --- a/test/python/providers/fake_provider/test_generic_backend_v2.py +++ b/test/python/providers/fake_provider/test_generic_backend_v2.py @@ -47,18 +47,6 @@ def test_ccx_2Q(self): with self.assertRaises(QiskitError): GenericBackendV2(num_qubits=2, basis_gates=["ccx", "id"], seed=42) - def test_calibration_no_noise_info(self): - """Test failing with a backend with calibration and no noise info""" - with self.assertRaises(QiskitError): - with self.assertWarns(DeprecationWarning): - GenericBackendV2( - num_qubits=2, - basis_gates=["ccx", "id"], - calibrate_instructions=True, - noise_info=False, - seed=42, - ) - def test_no_noise(self): """Test no noise info when parameter is false""" backend = GenericBackendV2( @@ -91,14 +79,12 @@ def test_no_noise_fully_connected(self): def test_no_info(self): """Test no noise info when parameter is false""" - with self.assertWarns(DeprecationWarning): - backend = GenericBackendV2( - num_qubits=5, - coupling_map=CouplingMap.from_line(5), - noise_info=False, - pulse_channels=False, - seed=42, - ) + backend = GenericBackendV2( + num_qubits=5, + coupling_map=CouplingMap.from_line(5), + noise_info=False, + seed=42, + ) qc = QuantumCircuit(5) qc.h(0) qc.cx(0, 1) @@ -110,23 +96,6 @@ def test_no_info(self): self.assertTrue(Operator.from_circuit(qc_res).equiv(qc)) self.assertEqual(backend.target.qubit_properties, None) - def test_no_pulse_channels(self): - """Test no/empty pulse channels when parameter is false""" - with self.assertWarns(DeprecationWarning): - backend = GenericBackendV2( - num_qubits=5, coupling_map=CouplingMap.from_line(5), pulse_channels=False, seed=42 - ) - qc = QuantumCircuit(5) - qc.h(0) - qc.cx(0, 1) - qc.cx(0, 2) - qc.cx(1, 4) - qc.cx(3, 0) - qc.cx(2, 4) - qc_res = generate_preset_pass_manager(optimization_level=2, backend=backend).run(qc) - self.assertTrue(Operator.from_circuit(qc_res).equiv(qc)) - self.assertTrue(len(backend.channels_map) == 0) - def test_operation_names(self): """Test that target basis gates include "delay", "measure" and "reset" even if not provided by user.""" diff --git a/test/python/providers/test_backend_v2.py b/test/python/providers/test_backend_v2.py index b3c5d3531ff1..6f9f68a21a52 100644 --- a/test/python/providers/test_backend_v2.py +++ b/test/python/providers/test_backend_v2.py @@ -28,12 +28,11 @@ from qiskit.compiler import transpile from qiskit.providers.basic_provider import BasicSimulator from qiskit.providers.fake_provider import GenericBackendV2 -from qiskit.pulse import channels from qiskit.quantum_info import Operator from qiskit.transpiler import InstructionProperties from test import QiskitTestCase # pylint: disable=wrong-import-order -from ..legacy_cmaps import BOGOTA_CMAP, TENERIFE_CMAP +from ..legacy_cmaps import TENERIFE_CMAP from .fake_mumbai_v2 import FakeMumbaiFractionalCX @@ -203,49 +202,3 @@ def test_transpile_mumbai_target(self): expected.measure(qr[0], cr[0]) expected.measure(qr[1], cr[1]) self.assertEqual(expected, tqc) - - @data(0, 1, 2, 3, 4) - def test_drive_channel(self, qubit): - """Test getting drive channel with qubit index.""" - backend = GenericBackendV2(num_qubits=5, seed=42) - with self.assertWarns(DeprecationWarning): - chan = backend.drive_channel(qubit) - ref = channels.DriveChannel(qubit) - self.assertEqual(chan, ref) - - @data(0, 1, 2, 3, 4) - def test_measure_channel(self, qubit): - """Test getting measure channel with qubit index.""" - backend = GenericBackendV2(num_qubits=5, seed=42) - with self.assertWarns(DeprecationWarning): - chan = backend.measure_channel(qubit) - ref = channels.MeasureChannel(qubit) - self.assertEqual(chan, ref) - - @data(0, 1, 2, 3, 4) - def test_acquire_channel(self, qubit): - """Test getting acquire channel with qubit index.""" - backend = GenericBackendV2(num_qubits=5, seed=42) - with self.assertWarns(DeprecationWarning): - chan = backend.acquire_channel(qubit) - ref = channels.AcquireChannel(qubit) - self.assertEqual(chan, ref) - - @data((4, 3), (3, 4), (3, 2), (2, 3), (1, 2), (2, 1), (1, 0), (0, 1)) - def test_control_channel(self, qubits): - """Test getting acquire channel with qubit index.""" - bogota_cr_channels_map = { - (4, 3): 7, - (3, 4): 6, - (3, 2): 5, - (2, 3): 4, - (1, 2): 2, - (2, 1): 3, - (1, 0): 1, - (0, 1): 0, - } - backend = GenericBackendV2(num_qubits=5, coupling_map=BOGOTA_CMAP, seed=42) - with self.assertWarns(DeprecationWarning): - chan = backend.control_channel(qubits)[0] - ref = channels.ControlChannel(bogota_cr_channels_map[qubits]) - self.assertEqual(chan, ref) diff --git a/test/python/providers/test_pulse_defaults.py b/test/python/providers/test_pulse_defaults.py deleted file mode 100644 index 2d8fe5b7bf11..000000000000 --- a/test/python/providers/test_pulse_defaults.py +++ /dev/null @@ -1,73 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2019. -# -# 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 PulseDefaults part of the backend.""" -import copy -import warnings - -import numpy as np - -from qiskit.providers.fake_provider import FakeOpenPulse2Q, GenericBackendV2 -from test import QiskitTestCase # pylint: disable=wrong-import-order - - -class TestPulseDefaults(QiskitTestCase): - """Test the PulseDefaults creation and method usage.""" - - def setUp(self): - super().setUp() - with self.assertWarns(DeprecationWarning): - # BackendV2 does not have defaults - self.defs = FakeOpenPulse2Q().defaults() - backend = GenericBackendV2( - 2, calibrate_instructions=True, basis_gates=["cx", "u1", "u2", "u3"], seed=42 - ) - self.inst_map = backend.instruction_schedule_map - - def test_buffer(self): - """Test getting the buffer value.""" - self.assertEqual(self.defs.buffer, 10) - - def test_freq_est(self): - """Test extracting qubit frequencies.""" - warnings.simplefilter("ignore") - self.assertEqual(self.defs.qubit_freq_est[1], 5.0 * 1e9) - self.assertEqual(self.defs.meas_freq_est[0], 6.5 * 1e9) - warnings.simplefilter("default") - - def test_default_building(self): - """Test building of ops definition is properly built from backend.""" - self.assertTrue(self.inst_map.has("u1", (0,))) - self.assertTrue(self.inst_map.has("u3", (0,))) - self.assertTrue(self.inst_map.has("u3", 1)) - self.assertTrue(self.inst_map.has("cx", (0, 1))) - self.assertEqual(self.inst_map.get_parameters("u1", 0), ("P0",)) - u1_minus_pi = self.inst_map.get("u1", 0, P0=np.pi) - fc_cmd = u1_minus_pi.instructions[0][-1] - self.assertAlmostEqual(fc_cmd.phase, -np.pi) - - def test_str(self): - """Test that __str__ method works.""" - self.assertEqual( - "" in str(self.defs)[100:] - ) - - def test_deepcopy(self): - """Test that deepcopy creates an identical object.""" - copy_defs = copy.deepcopy(self.defs) - self.assertEqual(list(copy_defs.to_dict().keys()), list(self.defs.to_dict().keys())) diff --git a/test/python/pulse/test_builder_v2.py b/test/python/pulse/test_builder_v2.py deleted file mode 100644 index 29248f6179ca..000000000000 --- a/test/python/pulse/test_builder_v2.py +++ /dev/null @@ -1,324 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2024. -# -# 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 pulse builder with backendV2 context utilities.""" - -import numpy as np - -from qiskit import pulse -from qiskit.pulse import macros - -from qiskit.pulse.instructions import directives -from qiskit.pulse.transforms import target_qobj_transform -from qiskit.providers.fake_provider import GenericBackendV2 -from qiskit.pulse import instructions -from test import QiskitTestCase # pylint: disable=wrong-import-order -from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings - -from ..legacy_cmaps import MUMBAI_CMAP - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestBuilderV2(QiskitTestCase): - """Test the pulse builder context with backendV2.""" - - def setUp(self): - super().setUp() - with self.assertWarns(DeprecationWarning): - self.backend = GenericBackendV2( - num_qubits=27, coupling_map=MUMBAI_CMAP, calibrate_instructions=True, seed=42 - ) - - def assertScheduleEqual(self, program, target): - """Assert an error when two pulse programs are not equal. - - .. note:: Two programs are converted into standard execution format then compared. - """ - self.assertEqual(target_qobj_transform(program), target_qobj_transform(target)) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestContextsV2(TestBuilderV2): - """Test builder contexts.""" - - def test_phase_compensated_frequency_offset(self): - """Test that the phase offset context properly compensates for phase - accumulation with backendV2.""" - d0 = pulse.DriveChannel(0) - with pulse.build(self.backend) as schedule: - with pulse.frequency_offset(1e9, d0, compensate_phase=True): - pulse.delay(10, d0) - - reference = pulse.Schedule() - reference += instructions.ShiftFrequency(1e9, d0) - reference += instructions.Delay(10, d0) - reference += instructions.ShiftPhase( - -2 * np.pi * ((1e9 * 10 * self.backend.target.dt) % 1), d0 - ) - reference += instructions.ShiftFrequency(-1e9, d0) - self.assertScheduleEqual(schedule, reference) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestChannelsV2(TestBuilderV2): - """Test builder channels.""" - - def test_drive_channel(self): - """Text context builder drive channel.""" - with pulse.build(self.backend): - with self.assertWarns(DeprecationWarning): - self.assertEqual(pulse.drive_channel(0), pulse.DriveChannel(0)) - - def test_measure_channel(self): - """Text context builder measure channel.""" - with pulse.build(self.backend): - with self.assertWarns(DeprecationWarning): - self.assertEqual(pulse.measure_channel(0), pulse.MeasureChannel(0)) - - def test_acquire_channel(self): - """Text context builder acquire channel.""" - with self.assertWarns(DeprecationWarning): - with pulse.build(self.backend): - self.assertEqual(pulse.acquire_channel(0), pulse.AcquireChannel(0)) - - def test_control_channel(self): - """Text context builder control channel.""" - with pulse.build(self.backend): - with self.assertWarns(DeprecationWarning): - self.assertEqual(pulse.control_channels(0, 1)[0], pulse.ControlChannel(0)) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestDirectivesV2(TestBuilderV2): - """Test builder directives.""" - - def test_barrier_on_qubits(self): - """Test barrier directive on qubits with backendV2. - A part of qubits map of Mumbai - 0 -- 1 -- 4 -- - | - | - 2 - """ - with pulse.build(self.backend) as schedule: - with self.assertWarns(DeprecationWarning): - pulse.barrier(0, 1) - reference = pulse.ScheduleBlock() - reference += directives.RelativeBarrier( - pulse.DriveChannel(0), - pulse.DriveChannel(1), - pulse.MeasureChannel(0), - pulse.MeasureChannel(1), - pulse.ControlChannel(0), - pulse.ControlChannel(1), - pulse.ControlChannel(2), - pulse.ControlChannel(3), - pulse.ControlChannel(4), - pulse.ControlChannel(8), - pulse.AcquireChannel(0), - pulse.AcquireChannel(1), - ) - self.assertEqual(schedule, reference) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestUtilitiesV2(TestBuilderV2): - """Test builder utilities.""" - - def test_active_backend(self): - """Test getting active builder backend.""" - with pulse.build(self.backend): - self.assertEqual(pulse.active_backend(), self.backend) - - def test_qubit_channels(self): - """Test getting the qubit channels of the active builder's backend.""" - with pulse.build(self.backend): - with self.assertWarns(DeprecationWarning): - qubit_channels = pulse.qubit_channels(0) - - self.assertEqual( - qubit_channels, - { - pulse.DriveChannel(0), - pulse.MeasureChannel(0), - pulse.AcquireChannel(0), - pulse.ControlChannel(0), - pulse.ControlChannel(1), - }, - ) - - def test_num_qubits(self): - """Test builder utility to get number of qubits with backendV2.""" - with pulse.build(self.backend): - self.assertEqual(pulse.num_qubits(), 27) - - def test_samples_to_seconds(self): - """Test samples to time with backendV2""" - target = self.backend.target - target.dt = 0.1 - with pulse.build(self.backend): - time = pulse.samples_to_seconds(100) - self.assertTrue(isinstance(time, float)) - self.assertEqual(pulse.samples_to_seconds(100), 10) - - def test_samples_to_seconds_array(self): - """Test samples to time (array format) with backendV2.""" - target = self.backend.target - target.dt = 0.1 - with pulse.build(self.backend): - samples = np.array([100, 200, 300]) - times = pulse.samples_to_seconds(samples) - self.assertTrue(np.issubdtype(times.dtype, np.floating)) - np.testing.assert_allclose(times, np.array([10, 20, 30])) - - def test_seconds_to_samples(self): - """Test time to samples with backendV2""" - target = self.backend.target - target.dt = 0.1 - with pulse.build(self.backend): - samples = pulse.seconds_to_samples(10) - self.assertTrue(isinstance(samples, int)) - self.assertEqual(pulse.seconds_to_samples(10), 100) - - def test_seconds_to_samples_array(self): - """Test time to samples (array format) with backendV2.""" - target = self.backend.target - target.dt = 0.1 - with pulse.build(self.backend): - times = np.array([10, 20, 30]) - samples = pulse.seconds_to_samples(times) - self.assertTrue(np.issubdtype(samples.dtype, np.integer)) - np.testing.assert_allclose(pulse.seconds_to_samples(times), np.array([100, 200, 300])) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestMacrosV2(TestBuilderV2): - """Test builder macros with backendV2.""" - - def test_macro(self): - """Test builder macro decorator.""" - - @pulse.macro - def nested(a): - with self.assertWarns(DeprecationWarning): - pulse.play(pulse.Gaussian(100, a, 20), pulse.drive_channel(0)) - return a * 2 - - @pulse.macro - def test(): - with self.assertWarns(DeprecationWarning): - pulse.play(pulse.Constant(100, 1.0), pulse.drive_channel(0)) - output = nested(0.5) - return output - - with pulse.build(self.backend) as schedule: - output = test() - self.assertEqual(output, 0.5 * 2) - - reference = pulse.Schedule() - reference += pulse.Play(pulse.Constant(100, 1.0), pulse.DriveChannel(0)) - reference += pulse.Play(pulse.Gaussian(100, 0.5, 20), pulse.DriveChannel(0)) - - self.assertScheduleEqual(schedule, reference) - - def test_measure(self): - """Test utility function - measure with backendV2.""" - with pulse.build(self.backend) as schedule: - with self.assertWarns(DeprecationWarning): - reg = pulse.measure(0) - - self.assertEqual(reg, pulse.MemorySlot(0)) - - reference = macros.measure(qubits=[0], backend=self.backend, meas_map=self.backend.meas_map) - - self.assertScheduleEqual(schedule, reference) - - def test_measure_multi_qubits(self): - """Test utility function - measure with multi qubits with backendV2.""" - with pulse.build(self.backend) as schedule: - with self.assertWarns(DeprecationWarning): - regs = pulse.measure([0, 1]) - - self.assertListEqual(regs, [pulse.MemorySlot(0), pulse.MemorySlot(1)]) - - reference = macros.measure( - qubits=[0, 1], backend=self.backend, meas_map=self.backend.meas_map - ) - - self.assertScheduleEqual(schedule, reference) - - def test_measure_all(self): - """Test utility function - measure with backendV2..""" - with pulse.build(self.backend) as schedule: - with self.assertWarns(DeprecationWarning): - regs = pulse.measure_all() - - self.assertEqual(regs, [pulse.MemorySlot(i) for i in range(self.backend.num_qubits)]) - reference = macros.measure_all(self.backend) - - self.assertScheduleEqual(schedule, reference) - - def test_delay_qubit(self): - """Test delaying on a qubit macro.""" - with pulse.build(self.backend) as schedule: - with self.assertWarns(DeprecationWarning): - pulse.delay_qubits(10, 0) - - d0 = pulse.DriveChannel(0) - m0 = pulse.MeasureChannel(0) - a0 = pulse.AcquireChannel(0) - u0 = pulse.ControlChannel(0) - u1 = pulse.ControlChannel(1) - - reference = pulse.Schedule() - reference += instructions.Delay(10, d0) - reference += instructions.Delay(10, m0) - reference += instructions.Delay(10, a0) - reference += instructions.Delay(10, u0) - reference += instructions.Delay(10, u1) - - self.assertScheduleEqual(schedule, reference) - - def test_delay_qubits(self): - """Test delaying on multiple qubits with backendV2 to make sure we don't insert delays twice.""" - with pulse.build(self.backend) as schedule: - with self.assertWarns(DeprecationWarning): - pulse.delay_qubits(10, 0, 1) - - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - m0 = pulse.MeasureChannel(0) - m1 = pulse.MeasureChannel(1) - a0 = pulse.AcquireChannel(0) - a1 = pulse.AcquireChannel(1) - u0 = pulse.ControlChannel(0) - u1 = pulse.ControlChannel(1) - u2 = pulse.ControlChannel(2) - u3 = pulse.ControlChannel(3) - u4 = pulse.ControlChannel(4) - u8 = pulse.ControlChannel(8) - - reference = pulse.Schedule() - reference += instructions.Delay(10, d0) - reference += instructions.Delay(10, d1) - reference += instructions.Delay(10, m0) - reference += instructions.Delay(10, m1) - reference += instructions.Delay(10, a0) - reference += instructions.Delay(10, a1) - reference += instructions.Delay(10, u0) - reference += instructions.Delay(10, u1) - reference += instructions.Delay(10, u2) - reference += instructions.Delay(10, u3) - reference += instructions.Delay(10, u4) - reference += instructions.Delay(10, u8) - - self.assertScheduleEqual(schedule, reference) diff --git a/test/python/pulse/test_macros.py b/test/python/pulse/test_macros.py deleted file mode 100644 index c1f0b93339ab..000000000000 --- a/test/python/pulse/test_macros.py +++ /dev/null @@ -1,256 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2019, 2024. -# -# 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 cases for Pulse Macro functions.""" - -from qiskit.pulse import ( - Schedule, - AcquireChannel, - Acquire, - InstructionScheduleMap, - MeasureChannel, - MemorySlot, - GaussianSquare, - Play, -) -from qiskit.pulse import macros -from qiskit.pulse.exceptions import PulseError -from qiskit.providers.fake_provider import FakeOpenPulse2Q, Fake27QPulseV1, GenericBackendV2 -from test import QiskitTestCase # pylint: disable=wrong-import-order -from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestMeasure(QiskitTestCase): - """Pulse measure macro.""" - - @ignore_pulse_deprecation_warnings - def setUp(self): - super().setUp() - with self.assertWarns(DeprecationWarning): - self.backend = FakeOpenPulse2Q() - self.backend_v1 = Fake27QPulseV1() - - self.inst_map = self.backend.defaults().instruction_schedule_map - with self.assertWarns(DeprecationWarning): - self.backend_v2 = GenericBackendV2( - num_qubits=27, - calibrate_instructions=self.backend_v1.defaults().instruction_schedule_map, - seed=42, - ) - - def test_measure(self): - """Test macro - measure.""" - sched = macros.measure(qubits=[0], backend=self.backend) - expected = Schedule( - self.inst_map.get("measure", [0, 1]).filter(channels=[MeasureChannel(0)]), - Acquire(10, AcquireChannel(0), MemorySlot(0)), - ) - self.assertEqual(sched.instructions, expected.instructions) - - def test_measure_sched_with_qubit_mem_slots(self): - """Test measure with custom qubit_mem_slots.""" - sched = macros.measure(qubits=[0], backend=self.backend, qubit_mem_slots={0: 1}) - expected = Schedule( - self.inst_map.get("measure", [0, 1]).filter(channels=[MeasureChannel(0)]), - Acquire(10, AcquireChannel(0), MemorySlot(1)), - ) - self.assertEqual(sched.instructions, expected.instructions) - - def test_measure_sched_with_meas_map(self): - """Test measure with custom meas_map as list and dict.""" - sched_with_meas_map_list = macros.measure( - qubits=[0], backend=self.backend, meas_map=[[0, 1]] - ) - sched_with_meas_map_dict = macros.measure( - qubits=[0], backend=self.backend, meas_map={0: [0, 1], 1: [0, 1]} - ) - expected = Schedule( - self.inst_map.get("measure", [0, 1]).filter(channels=[MeasureChannel(0)]), - Acquire(10, AcquireChannel(0), MemorySlot(0)), - ) - self.assertEqual(sched_with_meas_map_list.instructions, expected.instructions) - self.assertEqual(sched_with_meas_map_dict.instructions, expected.instructions) - - def test_measure_with_custom_inst_map(self): - """Test measure with custom inst_map, meas_map with measure_name.""" - q0_sched = Play(GaussianSquare(1200, 1, 0.4, 1150), MeasureChannel(0)) - q0_sched += Acquire(1200, AcquireChannel(0), MemorySlot(0)) - inst_map = InstructionScheduleMap() - inst_map.add("my_sched", 0, q0_sched) - sched = macros.measure( - qubits=[0], measure_name="my_sched", inst_map=inst_map, meas_map=[[0]] - ) - self.assertEqual(sched.instructions, q0_sched.instructions) - - with self.assertRaises(PulseError): - macros.measure(qubits=[0], measure_name="name", inst_map=inst_map, meas_map=[[0]]) - - def test_fail_measure(self): - """Test failing measure.""" - with self.assertRaises(PulseError): - macros.measure(qubits=[0], meas_map=self.backend.configuration().meas_map) - with self.assertRaises(PulseError): - macros.measure(qubits=[0], inst_map=self.inst_map) - - def test_measure_v2(self): - """Test macro - measure with backendV2.""" - sched = macros.measure(qubits=[0], backend=self.backend_v2) - with self.assertWarns(DeprecationWarning): - expected = self.backend_v2.target.get_calibration("measure", (0,)).filter( - channels=[MeasureChannel(0), AcquireChannel(0)] - ) - self.assertEqual(sched.instructions, expected.instructions) - - def test_measure_v2_sched_with_qubit_mem_slots(self): - """Test measure with backendV2 and custom qubit_mem_slots.""" - sched = macros.measure(qubits=[0], backend=self.backend_v2, qubit_mem_slots={0: 2}) - with self.assertWarns(DeprecationWarning): - expected = self.backend_v2.target.get_calibration("measure", (0,)).filter( - channels=[ - MeasureChannel(0), - ] - ) - measure_duration = expected.filter(instruction_types=[Play]).duration - expected += Acquire(measure_duration, AcquireChannel(0), MemorySlot(2)) - self.assertEqual(sched.instructions, expected.instructions) - - def test_measure_v2_sched_with_meas_map(self): - """Test measure with backendV2 custom meas_map as list and dict.""" - sched_with_meas_map_list = macros.measure( - qubits=[0], backend=self.backend_v2, meas_map=[[0, 1]] - ) - sched_with_meas_map_dict = macros.measure( - qubits=[0], backend=self.backend_v2, meas_map={0: [0, 1], 1: [0, 1]} - ) - with self.assertWarns(DeprecationWarning): - expected = self.backend_v2.target.get_calibration("measure", (0,)).filter( - channels=[ - MeasureChannel(0), - ] - ) - measure_duration = expected.filter(instruction_types=[Play]).duration - expected += Acquire(measure_duration, AcquireChannel(0), MemorySlot(0)) - self.assertEqual(sched_with_meas_map_list.instructions, expected.instructions) - self.assertEqual(sched_with_meas_map_dict.instructions, expected.instructions) - - def test_multiple_measure_v2(self): - """Test macro - multiple qubit measure with backendV2.""" - sched = macros.measure(qubits=[0, 1], backend=self.backend_v2) - with self.assertWarns(DeprecationWarning): - expected = self.backend_v2.target.get_calibration("measure", (0,)).filter( - channels=[ - MeasureChannel(0), - ] - ) - expected += self.backend_v2.target.get_calibration("measure", (1,)).filter( - channels=[ - MeasureChannel(1), - ] - ) - measure_duration = expected.filter(instruction_types=[Play]).duration - expected += Acquire(measure_duration, AcquireChannel(0), MemorySlot(0)) - expected += Acquire(measure_duration, AcquireChannel(1), MemorySlot(1)) - self.assertEqual(sched.instructions, expected.instructions) - - def test_output_with_measure_v1_and_measure_v2(self): - """Test make outputs of measure_v1 and measure_v2 consistent.""" - sched_measure_v1 = macros.measure(qubits=[0, 1], backend=self.backend_v1) - sched_measure_v2 = macros.measure(qubits=[0, 1], backend=self.backend_v2) - - self.assertEqual(sched_measure_v1.instructions, sched_measure_v2.instructions) - - def test_output_with_measure_v1_and_measure_v2_sched_with_qubit_mem_slots(self): - """Test make outputs of measure_v1 and measure_v2 with custom qubit_mem_slots consistent.""" - sched_measure_v1 = macros.measure( - qubits=[0], backend=self.backend_v1, qubit_mem_slots={0: 2} - ) - sched_measure_v2 = macros.measure( - qubits=[0], backend=self.backend_v2, qubit_mem_slots={0: 2} - ) - self.assertEqual(sched_measure_v1.instructions, sched_measure_v2.instructions) - - def test_output_with_measure_v1_and_measure_v2_sched_with_meas_map(self): - """Test make outputs of measure_v1 and measure_v2 - with custom meas_map as list and dict consistent.""" - with self.assertWarns(DeprecationWarning): - backend = Fake27QPulseV1() - num_qubits_list_measure_v1 = list(range(backend.configuration().num_qubits)) - num_qubits_list_measure_v2 = list(range(self.backend_v2.num_qubits)) - sched_with_meas_map_list_v1 = macros.measure( - qubits=[0], backend=self.backend_v1, meas_map=[num_qubits_list_measure_v1] - ) - sched_with_meas_map_dict_v1 = macros.measure( - qubits=[0], - backend=self.backend_v1, - meas_map={0: num_qubits_list_measure_v1, 1: num_qubits_list_measure_v1}, - ) - sched_with_meas_map_list_v2 = macros.measure( - qubits=[0], backend=self.backend_v2, meas_map=[num_qubits_list_measure_v2] - ) - sched_with_meas_map_dict_v2 = macros.measure( - qubits=[0], - backend=self.backend_v2, - meas_map={0: num_qubits_list_measure_v2, 1: num_qubits_list_measure_v2}, - ) - self.assertEqual( - sched_with_meas_map_list_v1.instructions, - sched_with_meas_map_list_v2.instructions, - ) - self.assertEqual( - sched_with_meas_map_dict_v1.instructions, - sched_with_meas_map_dict_v2.instructions, - ) - - def test_output_with_multiple_measure_v1_and_measure_v2(self): - """Test macro - consistent output of multiple qubit measure with backendV1 and backendV2.""" - sched_measure_v1 = macros.measure(qubits=[0, 1], backend=self.backend_v1) - sched_measure_v2 = macros.measure(qubits=[0, 1], backend=self.backend_v2) - self.assertEqual(sched_measure_v1.instructions, sched_measure_v2.instructions) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestMeasureAll(QiskitTestCase): - """Pulse measure all macro.""" - - @ignore_pulse_deprecation_warnings - def setUp(self): - super().setUp() - with self.assertWarns(DeprecationWarning): - self.backend_v1 = FakeOpenPulse2Q() - self.inst_map = self.backend_v1.defaults().instruction_schedule_map - with self.assertWarns(DeprecationWarning): - self.backend_v2 = GenericBackendV2( - num_qubits=2, - calibrate_instructions=self.backend_v1.defaults().instruction_schedule_map, - seed=42, - ) - - def test_measure_all(self): - """Test measure_all function.""" - sched = macros.measure_all(self.backend_v1) - expected = Schedule(self.inst_map.get("measure", [0, 1])) - self.assertEqual(sched.instructions, expected.instructions) - - def test_measure_all_v2(self): - """Test measure_all function with backendV2.""" - sched = macros.measure_all(self.backend_v1) - expected = Schedule( - self.inst_map.get("measure", list(range(self.backend_v1.configuration().num_qubits))) - ) - self.assertEqual(sched.instructions, expected.instructions) - - def test_output_of_measure_all_with_backend_v1_and_v2(self): - """Test make outputs of measure_all with backendV1 and backendV2 consistent.""" - sched_measure_v1 = macros.measure_all(backend=self.backend_v1) - sched_measure_v2 = macros.measure_all(backend=self.backend_v2) - self.assertEqual(sched_measure_v1.instructions, sched_measure_v2.instructions) diff --git a/test/python/transpiler/test_instruction_durations.py b/test/python/transpiler/test_instruction_durations.py index d9a3ef2b1773..9813dc4e7303 100644 --- a/test/python/transpiler/test_instruction_durations.py +++ b/test/python/transpiler/test_instruction_durations.py @@ -96,8 +96,7 @@ def test_fail_if_get_unbounded_duration_with_unit_conversion_when_dt_is_not_prov def test_from_backend_with_backendv2(self): """Test if `from_backend()` method allows using BackendV2""" - with self.assertWarns(DeprecationWarning): - backend = GenericBackendV2(num_qubits=4, calibrate_instructions=True, seed=42) + backend = GenericBackendV2(num_qubits=4, seed=42) inst_durations = InstructionDurations.from_backend(backend) self.assertEqual(inst_durations, backend.target.durations()) self.assertIsInstance(inst_durations, InstructionDurations) diff --git a/test/python/transpiler/test_passmanager_config.py b/test/python/transpiler/test_passmanager_config.py index 85cbb7909aef..fccd68f0a261 100644 --- a/test/python/transpiler/test_passmanager_config.py +++ b/test/python/transpiler/test_passmanager_config.py @@ -87,14 +87,12 @@ def test_from_backend_and_user(self): qr = QuantumRegister(4, "qr") initial_layout = [None, qr[0], qr[1], qr[2], None, qr[3]] - with self.assertWarns(DeprecationWarning): - backend = GenericBackendV2( - num_qubits=20, - coupling_map=ALMADEN_CMAP, - basis_gates=["id", "u1", "u2", "u3", "cx"], - calibrate_instructions=None, - seed=42, - ) + backend = GenericBackendV2( + num_qubits=20, + coupling_map=ALMADEN_CMAP, + basis_gates=["id", "u1", "u2", "u3", "cx"], + seed=42, + ) config = PassManagerConfig.from_backend( backend, basis_gates=["user_gate"], initial_layout=initial_layout ) diff --git a/test/python/transpiler/test_sabre_swap.py b/test/python/transpiler/test_sabre_swap.py index 109053ee8324..23a54433ed62 100644 --- a/test/python/transpiler/test_sabre_swap.py +++ b/test/python/transpiler/test_sabre_swap.py @@ -13,7 +13,6 @@ """Test the Sabre Swap pass""" import unittest -import warnings import itertools import ddt @@ -1380,17 +1379,12 @@ class TestSabreSwapRandomCircuitValidOutput(QiskitTestCase): @classmethod def setUpClass(cls): super().setUpClass() - with warnings.catch_warnings(): - # Catch warnings since self.assertWarns cannot be used here. - # The `calibrate_instructions` argument is deprecated in Qiksit 1.3 - warnings.simplefilter("ignore", category=DeprecationWarning) - cls.backend = GenericBackendV2( - num_qubits=27, - calibrate_instructions=True, - control_flow=True, - coupling_map=MUMBAI_CMAP, - seed=42, - ) + cls.backend = GenericBackendV2( + num_qubits=27, + control_flow=True, + coupling_map=MUMBAI_CMAP, + seed=42, + ) cls.coupling_edge_set = {tuple(x) for x in cls.backend.coupling_map} cls.basis_gates = set(cls.backend.operation_names) diff --git a/test/python/transpiler/test_stochastic_swap.py b/test/python/transpiler/test_stochastic_swap.py index 7e4dfe63de3c..bae6328a9b84 100644 --- a/test/python/transpiler/test_stochastic_swap.py +++ b/test/python/transpiler/test_stochastic_swap.py @@ -13,7 +13,6 @@ """Test the Stochastic Swap pass""" import unittest -import warnings import numpy.random @@ -1528,13 +1527,7 @@ class TestStochasticSwapRandomCircuitValidOutput(QiskitTestCase): @classmethod def setUpClass(cls): super().setUpClass() - with warnings.catch_warnings(): - # Catch warnings since self.assertWarns cannot be used here. - # The `calibrate_instructions` argument is deprecated in Qiksit 1.3 - warnings.simplefilter("ignore", category=DeprecationWarning) - cls.backend = GenericBackendV2( - num_qubits=27, calibrate_instructions=True, control_flow=True, seed=42 - ) + cls.backend = GenericBackendV2(num_qubits=27, control_flow=True, seed=42) cls.coupling_edge_set = {tuple(x) for x in cls.backend.coupling_map} cls.basis_gates = set(cls.backend.operation_names) diff --git a/test/python/transpiler/test_target.py b/test/python/transpiler/test_target.py index f7aae24eff54..694ef38dc4fa 100644 --- a/test/python/transpiler/test_target.py +++ b/test/python/transpiler/test_target.py @@ -36,9 +36,6 @@ from qiskit.circuit import IfElseOp, ForLoopOp, WhileLoopOp, SwitchCaseOp from qiskit.circuit.measure import Measure from qiskit.circuit.parameter import Parameter -from qiskit import pulse -from qiskit.pulse.instruction_schedule_map import InstructionScheduleMap -from qiskit.pulse.calibration_entries import CalibrationPublisher, ScheduleDef from qiskit.transpiler.coupling import CouplingMap from qiskit.transpiler.instruction_durations import InstructionDurations from qiskit.transpiler.timing_constraints import TimingConstraints @@ -1209,288 +1206,6 @@ def test_target_no_num_qubits_qubit_properties(self): self.assertEqual(target.num_qubits, len(qubit_properties)) -class TestPulseTarget(QiskitTestCase): - def setUp(self): - super().setUp() - self.pulse_target = Target( - dt=3e-7, granularity=2, min_length=4, pulse_alignment=8, acquire_alignment=8 - ) - with self.assertWarns(DeprecationWarning): - with pulse.build(name="sx_q0") as self.custom_sx_q0: - pulse.play(pulse.Constant(100, 0.1), pulse.DriveChannel(0)) - with pulse.build(name="sx_q1") as self.custom_sx_q1: - pulse.play(pulse.Constant(100, 0.2), pulse.DriveChannel(1)) - sx_props = { - (0,): InstructionProperties( - duration=35.5e-9, error=0.000413, calibration=self.custom_sx_q0 - ), - (1,): InstructionProperties( - duration=35.5e-9, error=0.000502, calibration=self.custom_sx_q1 - ), - } - self.pulse_target.add_instruction(SXGate(), sx_props) - - def test_instruction_schedule_map(self): - with self.assertWarns(DeprecationWarning): - inst_map = self.pulse_target.instruction_schedule_map() - self.assertIn("sx", inst_map.instructions) - self.assertEqual(inst_map.qubits_with_instruction("sx"), [0, 1]) - self.assertTrue("sx" in inst_map.qubit_instructions(0)) - - def test_instruction_schedule_map_ideal_sim_backend(self): - ideal_sim_target = Target(num_qubits=3) - theta = Parameter("theta") - phi = Parameter("phi") - lam = Parameter("lambda") - for inst in [ - UGate(theta, phi, lam), - RXGate(theta), - RYGate(theta), - RZGate(theta), - CXGate(), - ECRGate(), - CCXGate(), - Measure(), - ]: - ideal_sim_target.add_instruction(inst, {None: None}) - with self.assertWarns(DeprecationWarning): - inst_map = ideal_sim_target.instruction_schedule_map() - self.assertEqual(InstructionScheduleMap(), inst_map) - - def test_str(self): - expected = """Target -Number of qubits: 2 -Instructions: - sx - (0,): - Duration: 3.55e-08 sec. - Error Rate: 0.000413 - With pulse schedule calibration - (1,): - Duration: 3.55e-08 sec. - Error Rate: 0.000502 - With pulse schedule calibration -""" - self.assertEqual(expected, str(self.pulse_target)) - - def test_update_from_instruction_schedule_map_add_instruction(self): - target = Target() - with self.assertWarns(DeprecationWarning): - inst_map = InstructionScheduleMap() - inst_map.add("sx", 0, self.custom_sx_q0) - inst_map.add("sx", 1, self.custom_sx_q1) - with self.assertWarns(DeprecationWarning): - target.update_from_instruction_schedule_map(inst_map, {"sx": SXGate()}) - self.assertEqual(inst_map, target.instruction_schedule_map()) - - def test_update_from_instruction_schedule_map_with_schedule_parameter(self): - self.pulse_target.dt = None - with self.assertWarns(DeprecationWarning): - inst_map = InstructionScheduleMap() - duration = Parameter("duration") - - with self.assertWarns(DeprecationWarning): - with pulse.build(name="sx_q0") as custom_sx: - pulse.play(pulse.Constant(duration, 0.2), pulse.DriveChannel(0)) - - inst_map.add("sx", 0, custom_sx, ["duration"]) - - target = Target(dt=3e-7) - with self.assertWarns(DeprecationWarning): - target.update_from_instruction_schedule_map(inst_map, {"sx": SXGate()}) - self.assertEqual(inst_map, target.instruction_schedule_map()) - - def test_update_from_instruction_schedule_map_update_schedule(self): - self.pulse_target.dt = None - with self.assertWarns(DeprecationWarning): - inst_map = InstructionScheduleMap() - with pulse.build(name="sx_q1") as custom_sx: - pulse.play(pulse.Constant(1000, 0.2), pulse.DriveChannel(1)) - - inst_map.add("sx", 0, self.custom_sx_q0) - inst_map.add("sx", 1, custom_sx) - with self.assertWarns(DeprecationWarning): - self.pulse_target.update_from_instruction_schedule_map(inst_map, {"sx": SXGate()}) - self.assertEqual(inst_map, self.pulse_target.instruction_schedule_map()) - # Calibration doesn't change for q0 - self.assertEqual(self.pulse_target["sx"][(0,)].duration, 35.5e-9) - self.assertEqual(self.pulse_target["sx"][(0,)].error, 0.000413) - # Calibration is updated for q1 without error dict and gate time - self.assertIsNone(self.pulse_target["sx"][(1,)].duration) - self.assertIsNone(self.pulse_target["sx"][(1,)].error) - - def test_update_from_instruction_schedule_map_new_instruction_no_name_map(self): - target = Target() - with self.assertWarns(DeprecationWarning): - inst_map = InstructionScheduleMap() - inst_map.add("sx", 0, self.custom_sx_q0) - inst_map.add("sx", 1, self.custom_sx_q1) - with self.assertWarns(DeprecationWarning): - target.update_from_instruction_schedule_map(inst_map) - self.assertEqual(target["sx"][(0,)].calibration, self.custom_sx_q0) - self.assertEqual(target["sx"][(1,)].calibration, self.custom_sx_q1) - - def test_update_from_instruction_schedule_map_new_qarg_raises(self): - with self.assertWarns(DeprecationWarning): - inst_map = InstructionScheduleMap() - inst_map.add("sx", 0, self.custom_sx_q0) - inst_map.add("sx", 1, self.custom_sx_q1) - inst_map.add("sx", 2, self.custom_sx_q1) - with self.assertWarns(DeprecationWarning): - self.pulse_target.update_from_instruction_schedule_map(inst_map) - self.assertFalse(self.pulse_target.instruction_supported("sx", (2,))) - - def test_update_from_instruction_schedule_map_with_dt_set(self): - with self.assertWarns(DeprecationWarning): - inst_map = InstructionScheduleMap() - with pulse.build(name="sx_q1") as custom_sx: - pulse.play(pulse.Constant(1000, 0.2), pulse.DriveChannel(1)) - - inst_map.add("sx", 0, self.custom_sx_q0) - inst_map.add("sx", 1, custom_sx) - self.pulse_target.dt = 1.0 - with self.assertWarns(DeprecationWarning): - self.pulse_target.update_from_instruction_schedule_map(inst_map, {"sx": SXGate()}) - self.assertEqual(inst_map, self.pulse_target.instruction_schedule_map()) - self.assertEqual(self.pulse_target["sx"][(1,)].duration, 1000.0) - self.assertIsNone(self.pulse_target["sx"][(1,)].error) - # This is an edge case. - # System dt is read-only property and changing it will break all underlying calibrations. - # duration of sx0 returns previous value since calibration doesn't change. - self.assertEqual(self.pulse_target["sx"][(0,)].duration, 35.5e-9) - self.assertEqual(self.pulse_target["sx"][(0,)].error, 0.000413) - - def test_update_from_instruction_schedule_map_with_error_dict(self): - with self.assertWarns(DeprecationWarning): - inst_map = InstructionScheduleMap() - with pulse.build(name="sx_q1") as custom_sx: - pulse.play(pulse.Constant(1000, 0.2), pulse.DriveChannel(1)) - - inst_map.add("sx", 0, self.custom_sx_q0) - inst_map.add("sx", 1, custom_sx) - self.pulse_target.dt = 1.0 - error_dict = {"sx": {(1,): 1.0}} - - with self.assertWarns(DeprecationWarning): - self.pulse_target.update_from_instruction_schedule_map( - inst_map, {"sx": SXGate()}, error_dict=error_dict - ) - self.assertEqual(self.pulse_target["sx"][(1,)].error, 1.0) - self.assertEqual(self.pulse_target["sx"][(0,)].error, 0.000413) - - def test_timing_constraints(self): - generated_constraints = self.pulse_target.timing_constraints() - expected_constraints = TimingConstraints(2, 4, 8, 8) - for i in ["granularity", "min_length", "pulse_alignment", "acquire_alignment"]: - self.assertEqual( - getattr(generated_constraints, i), - getattr(expected_constraints, i), - f"Generated constraints differs from expected for attribute {i}" - f"{getattr(generated_constraints, i)}!={getattr(expected_constraints, i)}", - ) - - def test_default_instmap_has_no_custom_gate(self): - with self.assertWarns(DeprecationWarning): - backend = GenericBackendV2(num_qubits=27, calibrate_instructions=True) - target = backend.target - - # This copies .calibration of InstructionProperties of each instruction - # This must not convert PulseQobj to Schedule during this. - # See qiskit-terra/#9595 - with self.assertWarns(DeprecationWarning): - inst_map = target.instruction_schedule_map() - self.assertFalse(inst_map.has_custom_gate()) - - # Get pulse schedule. This generates Schedule provided by backend. - with self.assertWarns(DeprecationWarning): - sched = inst_map.get("sx", (0,)) - self.assertEqual(sched.metadata["publisher"], CalibrationPublisher.BACKEND_PROVIDER) - self.assertFalse(inst_map.has_custom_gate()) - - # Update target with custom instruction. This is user provided schedule. - with self.assertWarns(DeprecationWarning): - new_prop = InstructionProperties( - duration=self.custom_sx_q0.duration, - error=None, - calibration=self.custom_sx_q0, - ) - target.update_instruction_properties(instruction="sx", qargs=(0,), properties=new_prop) - with self.assertWarns(DeprecationWarning): - inst_map = target.instruction_schedule_map() - self.assertTrue(inst_map.has_custom_gate()) - - empty = InstructionProperties() - target.update_instruction_properties(instruction="sx", qargs=(0,), properties=empty) - with self.assertWarns(DeprecationWarning): - inst_map = target.instruction_schedule_map() - self.assertFalse(inst_map.has_custom_gate()) - - def test_get_empty_target_calibration(self): - target = Target() - properties = {(0,): InstructionProperties(duration=100, error=0.1)} - target.add_instruction(XGate(), properties) - - with self.assertWarns(DeprecationWarning): - self.assertIsNone(target["x"][(0,)].calibration) - - def test_has_calibration(self): - target = Target() - properties = { - (0,): InstructionProperties(duration=100, error=0.1), - (1,): None, - } - target.add_instruction(XGate(), properties) - - with self.assertWarns(DeprecationWarning): - # Test false for properties with no calibration - self.assertFalse(target.has_calibration("x", (0,))) - # Test false for no properties - self.assertFalse(target.has_calibration("x", (1,))) - - with self.assertWarns(DeprecationWarning): - properties = { - (0,): InstructionProperties( - duration=self.custom_sx_q0.duration, - error=None, - calibration=self.custom_sx_q0, - ) - } - target.add_instruction(SXGate(), properties) - - # Test true for properties with calibration - with self.assertWarns(DeprecationWarning): - self.assertTrue(target.has_calibration("sx", (0,))) - - def test_loading_legacy_ugate_instmap(self): - # This is typical IBM backend situation. - # IBM provider used to have u1, u2, u3 in the basis gates and - # these have been replaced with sx and rz. - # However, IBM provider still provides calibration of these u gates, - # and the inst map loads them as backend calibrations. - # Target is implicitly updated with inst map when it is set in transpile. - # If u gates are not excluded, they may appear in the transpiled circuit. - # These gates are no longer supported by hardware. - with self.assertWarns(DeprecationWarning): - entry = ScheduleDef() - entry.define(pulse.Schedule(name="fake_u3"), user_provided=False) # backend provided - instmap = InstructionScheduleMap() - instmap._add("u3", (0,), entry) - - # Today's standard IBM backend target with sx, rz basis - target = Target() - target.add_instruction(SXGate(), {(0,): InstructionProperties()}) - target.add_instruction(RZGate(Parameter("θ")), {(0,): InstructionProperties()}) - target.add_instruction(Measure(), {(0,): InstructionProperties()}) - names_before = set(target.operation_names) - - with self.assertWarns(DeprecationWarning): - target.update_from_instruction_schedule_map(instmap) - names_after = set(target.operation_names) - - # Otherwise u3 and sx-rz basis conflict in 1q decomposition. - self.assertSetEqual(names_before, names_after) - - class TestGlobalVariableWidthOperations(QiskitTestCase): def setUp(self): super().setUp() diff --git a/test/python/transpiler/test_vf2_layout.py b/test/python/transpiler/test_vf2_layout.py index 5257a9d1cee2..9fbc9ac45480 100644 --- a/test/python/transpiler/test_vf2_layout.py +++ b/test/python/transpiler/test_vf2_layout.py @@ -713,8 +713,7 @@ def test_reasonable_limits_for_simple_layouts_v1(self): def test_reasonable_limits_for_simple_layouts(self): """Test that the default trials is set to a reasonable number.""" - with self.assertWarns(DeprecationWarning): - backend = GenericBackendV2(27, calibrate_instructions=True, seed=42) + backend = GenericBackendV2(27, seed=42) qc = QuantumCircuit(5) qc.cx(2, 3) qc.cx(0, 1) From 082a26f309576235da787869cc8096c23437585a Mon Sep 17 00:00:00 2001 From: Eli Arbel Date: Fri, 14 Feb 2025 11:32:31 +0200 Subject: [PATCH 12/29] First pass --- .../src/basis/basis_translator/mod.rs | 39 +- crates/accelerate/src/check_map.rs | 6 +- .../src/euler_one_qubit_decomposer.rs | 12 - crates/accelerate/src/gate_direction.rs | 33 +- .../instruction_properties.rs | 1 - crates/circuit/src/converters.rs | 5 - crates/circuit/src/dag_circuit.rs | 256 ------------ qiskit/circuit/quantumcircuit.py | 201 +--------- qiskit/compiler/transpiler.py | 9 - qiskit/converters/circuit_to_dagdependency.py | 2 - .../converters/circuit_to_dagdependency_v2.py | 1 - qiskit/converters/dag_to_circuit.py | 1 - qiskit/converters/dag_to_dagdependency.py | 1 - qiskit/converters/dag_to_dagdependency_v2.py | 1 - qiskit/converters/dagdependency_to_circuit.py | 6 - qiskit/converters/dagdependency_to_dag.py | 5 - qiskit/dagcircuit/dagdependency.py | 34 +- qiskit/dagcircuit/dagdependency_v2.py | 76 ---- qiskit/providers/backend_compat.py | 95 +---- .../basic_provider/basic_simulator.py | 2 +- .../fake_provider/generic_backend_v2.py | 2 +- .../fake_provider/utils/backend_converter.py | 4 +- qiskit/scheduler/config.py | 37 -- qiskit/scheduler/lowering.py | 187 --------- qiskit/scheduler/methods/__init__.py | 15 - qiskit/scheduler/methods/basic.py | 140 ------- qiskit/scheduler/schedule_circuit.py | 69 ---- qiskit/scheduler/sequence.py | 104 ----- qiskit/transpiler/basepasses.py | 5 +- .../passes/basis/unroll_3q_or_more.py | 2 - .../passes/basis/unroll_custom_definitions.py | 2 +- .../passes/calibration/base_builder.py | 79 ---- .../passes/calibration/exceptions.py | 22 -- .../passes/optimization/normalize_rx_angle.py | 1 + .../optimization/optimize_1q_decomposition.py | 18 +- qiskit/transpiler/passes/scheduling/alap.py | 1 - .../scheduling/alignments/check_durations.py | 7 - qiskit/transpiler/passes/scheduling/asap.py | 1 - .../passes/scheduling/base_scheduler.py | 9 +- .../passes/scheduling/dynamical_decoupling.py | 29 +- .../passes/scheduling/padding/base_padding.py | 1 - .../padding/dynamical_decoupling.py | 56 +-- .../scheduling/scheduling/base_scheduler.py | 18 +- .../passes/scheduling/time_unit_conversion.py | 29 +- .../passes/synthesis/high_level_synthesis.py | 3 +- qiskit/transpiler/passmanager_config.py | 14 - .../preset_passmanagers/builtin_plugins.py | 34 +- .../transpiler/preset_passmanagers/common.py | 2 +- .../generate_preset_pass_manager.py | 126 ++---- qiskit/transpiler/target.py | 363 +----------------- qiskit/visualization/circuit/matplotlib.py | 19 +- test/python/circuit/test_calibrations.py | 61 --- .../python/circuit/test_circuit_operations.py | 5 - .../python/circuit/test_circuit_properties.py | 97 ----- test/python/circuit/test_compose.py | 32 -- test/python/circuit/test_parameters.py | 159 -------- test/python/circuit/test_scheduled_circuit.py | 1 - test/python/compiler/test_transpiler.py | 148 ------- test/python/converters/test_circuit_to_dag.py | 15 - .../test_circuit_to_dagdependency.py | 15 - .../test_circuit_to_dagdependency_v2.py | 14 - test/python/dagcircuit/test_compose.py | 17 - test/python/primitives/test_primitive.py | 39 +- test/python/pulse/test_block.py | 19 +- .../transpiler/test_dynamical_decoupling.py | 185 --------- test/python/transpiler/test_gate_direction.py | 44 --- .../transpiler/test_normalize_rx_angle.py | 1 + .../transpiler/test_passmanager_config.py | 17 - .../transpiler/test_preset_passmanagers.py | 1 - .../test_scheduling_padding_pass.py | 28 -- test/python/transpiler/test_target.py | 24 +- test/python/transpiler/test_vf2_layout.py | 5 +- .../python/transpiler/test_vf2_post_layout.py | 16 +- .../mpl/circuit/references/calibrations.png | Bin 7213 -> 0 bytes .../calibrations_with_control_gates.png | Bin 8984 -> 0 bytes .../calibrations_with_rzz_and_rxx.png | Bin 12305 -> 0 bytes .../calibrations_with_swap_and_reset.png | Bin 10213 -> 0 bytes .../circuit/test_circuit_matplotlib_drawer.py | 143 ------- 78 files changed, 130 insertions(+), 3141 deletions(-) delete mode 100644 qiskit/scheduler/config.py delete mode 100644 qiskit/scheduler/lowering.py delete mode 100644 qiskit/scheduler/methods/__init__.py delete mode 100644 qiskit/scheduler/methods/basic.py delete mode 100644 qiskit/scheduler/schedule_circuit.py delete mode 100644 qiskit/scheduler/sequence.py delete mode 100644 qiskit/transpiler/passes/calibration/base_builder.py delete mode 100644 qiskit/transpiler/passes/calibration/exceptions.py delete mode 100644 test/python/circuit/test_calibrations.py delete mode 100644 test/visual/mpl/circuit/references/calibrations.png delete mode 100644 test/visual/mpl/circuit/references/calibrations_with_control_gates.png delete mode 100644 test/visual/mpl/circuit/references/calibrations_with_rzz_and_rxx.png delete mode 100644 test/visual/mpl/circuit/references/calibrations_with_swap_and_reset.png diff --git a/crates/accelerate/src/basis/basis_translator/mod.rs b/crates/accelerate/src/basis/basis_translator/mod.rs index 996ba6412c16..ee9471505d3c 100644 --- a/crates/accelerate/src/basis/basis_translator/mod.rs +++ b/crates/accelerate/src/basis/basis_translator/mod.rs @@ -213,8 +213,7 @@ fn extract_basis( min_qubits: usize, ) -> PyResult<()> { for (node, operation) in circuit.op_nodes(true) { - if !circuit.has_calibration_for_index(py, node)? - && circuit.get_qargs(operation.qubits).len() >= min_qubits + if circuit.get_qargs(operation.qubits).len() >= min_qubits { basis.insert((operation.op.name().to_string(), operation.op.num_qubits())); } @@ -244,10 +243,7 @@ fn extract_basis( .borrow(); for (index, inst) in circuit_data.iter().enumerate() { let instruction_object = circuit.get_item(index)?; - let has_calibration = circuit - .call_method1(intern!(py, "_has_calibration_for"), (&instruction_object,))?; - if !has_calibration.is_truthy()? - && circuit_data.get_qargs(inst.qubits).len() >= min_qubits + if circuit_data.get_qargs(inst.qubits).len() >= min_qubits { basis.insert((inst.op.name().to_string(), inst.op.num_qubits())); } @@ -280,7 +276,7 @@ fn extract_basis_target( ) -> PyResult<()> { for (node, node_obj) in dag.op_nodes(true) { let qargs: &[Qubit] = dag.get_qargs(node_obj.qubits); - if dag.has_calibration_for_index(py, node)? || qargs.len() < min_qubits { + if qargs.len() < min_qubits { continue; } // Treat the instruction as on an incomplete basis if the qargs are in the @@ -343,6 +339,7 @@ fn extract_basis_target( /// This needs to use a Python instance of `QuantumCircuit` due to it needing /// to access `has_calibration_for()` which is unavailable through rust. However, /// this API will be removed with the deprecation of `Pulse`. +// TODO: remove this fn extract_basis_target_circ( circuit: &Bound, source_basis: &mut HashSet, @@ -355,10 +352,7 @@ fn extract_basis_target_circ( let circ_data = circ_data_bound.borrow(); for (index, node_obj) in circ_data.iter().enumerate() { let qargs = circ_data.get_qargs(node_obj.qubits); - if circuit - .call_method1("_has_calibration_for", (circuit.get_item(index)?,))? - .is_truthy()? - || qargs.len() < min_qubits + if qargs.len() < min_qubits { continue; } @@ -535,29 +529,6 @@ fn apply_translation( continue; } - if dag.has_calibration_for_index(py, node)? { - out_dag.apply_operation_back( - py, - node_obj.op.clone(), - node_qarg, - node_carg, - if node_obj.params_view().is_empty() { - None - } else { - Some( - node_obj - .params_view() - .iter() - .map(|param| param.clone_ref(py)) - .collect(), - ) - }, - node_obj.extra_attrs.clone(), - #[cfg(feature = "cache_pygates")] - None, - )?; - continue; - } let unique_qargs: Option = if qubit_set.is_empty() { None } else { diff --git a/crates/accelerate/src/check_map.rs b/crates/accelerate/src/check_map.rs index 68281d0ca198..5f8240fbb213 100644 --- a/crates/accelerate/src/check_map.rs +++ b/crates/accelerate/src/check_map.rs @@ -36,7 +36,7 @@ fn recurse<'py>( None => edge_set.contains(&[qubits[0].into(), qubits[1].into()]), } }; - for (node, inst) in dag.op_nodes(false) { + for (_node, inst) in dag.op_nodes(false) { let qubits = dag.get_qargs(inst.qubits); if inst.op.control_flow() { if let OperationRef::Instruction(py_inst) = inst.op.view() { @@ -65,9 +65,7 @@ fn recurse<'py>( } } } - } else if qubits.len() == 2 - && (dag.calibrations_empty() || !dag.has_calibration_for_index(py, node)?) - && !check_qubits(qubits) + } else if qubits.len() == 2 && !check_qubits(qubits) { return Ok(Some(( inst.op.name().to_string(), diff --git a/crates/accelerate/src/euler_one_qubit_decomposer.rs b/crates/accelerate/src/euler_one_qubit_decomposer.rs index bc4da40e57d6..30aec7922c22 100644 --- a/crates/accelerate/src/euler_one_qubit_decomposer.rs +++ b/crates/accelerate/src/euler_one_qubit_decomposer.rs @@ -1094,18 +1094,6 @@ pub(crate) fn optimize_1q_gates_decomposition( } else { unreachable!("nodes in runs will always be op nodes") }; - if !dag.calibrations_empty() { - let mut has_calibration = false; - for node in &raw_run { - if dag.has_calibration_for_index(py, *node)? { - has_calibration = true; - break; - } - } - if has_calibration { - continue; - } - } if basis_gates_per_qubit[qubit.index()].is_none() { let basis_gates = match target { Some(target) => Some( diff --git a/crates/accelerate/src/gate_direction.rs b/crates/accelerate/src/gate_direction.rs index 711779a3b47a..5a1871189b17 100755 --- a/crates/accelerate/src/gate_direction.rs +++ b/crates/accelerate/src/gate_direction.rs @@ -292,7 +292,7 @@ where } } - if op_args.len() != 2 || dag.has_calibration_for_index(py, node)? { + if op_args.len() != 2 { continue; }; @@ -336,7 +336,6 @@ where } // No matching replacement found if gate_complies(packed_inst, &[op_args1, op_args0]) - || has_calibration_for_op_node(py, dag, packed_inst, &[op_args1, op_args0])? { return Err(TranspilerError::new_err(format!("{} would be supported on {:?} if the direction was swapped, but no rules are known to do that. {:?} can be automatically flipped.", packed_inst.op.name(), op_args, vec!["cx", "cz", "ecr", "swap", "rzx", "rxx", "ryy", "rzz"]))); // NOTE: Make sure to update the list of the supported gates if adding more replacements @@ -376,36 +375,6 @@ where Ok(dag) } -// Check whether the dag as calibration for a DAGOpNode -fn has_calibration_for_op_node( - py: Python, - dag: &DAGCircuit, - packed_inst: &PackedInstruction, - qargs: &[Qubit], -) -> PyResult { - let py_args = PyTuple::new(py, dag.qubits().map_indices(qargs))?; - - let dag_op_node = Py::new( - py, - ( - DAGOpNode { - instruction: CircuitInstruction { - operation: packed_inst.op.clone(), - qubits: py_args.unbind(), - clbits: PyTuple::empty(py).unbind(), - params: packed_inst.params_view().iter().cloned().collect(), - extra_attrs: packed_inst.extra_attrs.clone(), - #[cfg(feature = "cache_pygates")] - py_op: packed_inst.py_op.clone(), - }, - }, - DAGNode { node: None }, - ), - )?; - - dag.has_calibration_for(py, dag_op_node.borrow(py)) -} - // Return a replacement DAG for the given standard gate in the supported list // TODO: optimize it by caching the DAGs of the non-parametric gates and caching and // mutating upon request the DAGs of the parametric gates diff --git a/crates/accelerate/src/target_transpiler/instruction_properties.rs b/crates/accelerate/src/target_transpiler/instruction_properties.rs index a7a31c87924c..5de5b656913e 100644 --- a/crates/accelerate/src/target_transpiler/instruction_properties.rs +++ b/crates/accelerate/src/target_transpiler/instruction_properties.rs @@ -37,7 +37,6 @@ impl InstructionProperties { /// specified set of qubits /// error (Option): The average error rate for the instruction on the specified /// set of qubits. - /// calibration (Option): The pulse representation of the instruction. #[new] #[pyo3(signature = (duration=None, error=None))] pub fn new(_py: Python<'_>, duration: Option, error: Option) -> Self { diff --git a/crates/circuit/src/converters.rs b/crates/circuit/src/converters.rs index b9b7b433eec8..b49cfb1ed6cd 100644 --- a/crates/circuit/src/converters.rs +++ b/crates/circuit/src/converters.rs @@ -30,7 +30,6 @@ use crate::packed_instruction::PackedInstruction; pub struct QuantumCircuitData<'py> { pub data: CircuitData, pub name: Option>, - pub calibrations: Option>>, pub metadata: Option>, pub qregs: Option>, pub cregs: Option>, @@ -47,10 +46,6 @@ impl<'py> FromPyObject<'py> for QuantumCircuitData<'py> { Ok(QuantumCircuitData { data: data_borrowed, name: ob.getattr(intern!(py, "name")).ok(), - calibrations: ob - .getattr(intern!(py, "_calibrations_prop"))? - .extract() - .ok(), metadata: ob.getattr(intern!(py, "metadata")).ok(), qregs: ob .getattr(intern!(py, "qregs")) diff --git a/crates/circuit/src/dag_circuit.rs b/crates/circuit/src/dag_circuit.rs index 0dbf6aff8979..31b31beff86f 100644 --- a/crates/circuit/src/dag_circuit.rs +++ b/crates/circuit/src/dag_circuit.rs @@ -188,8 +188,6 @@ pub struct DAGCircuit { #[pyo3(get, set)] metadata: Option, - calibrations: HashMap>, - dag: StableDiGraph, #[pyo3(get)] @@ -371,7 +369,6 @@ impl DAGCircuit { Ok(DAGCircuit { name: None, metadata: Some(PyDict::new(py).unbind().into()), - calibrations: HashMap::new(), dag: StableDiGraph::default(), qregs: PyDict::new(py).unbind(), cregs: PyDict::new(py).unbind(), @@ -520,7 +517,6 @@ impl DAGCircuit { let out_dict = PyDict::new(py); out_dict.set_item("name", self.name.as_ref().map(|x| x.clone_ref(py)))?; out_dict.set_item("metadata", self.metadata.as_ref().map(|x| x.clone_ref(py)))?; - out_dict.set_item("_calibrations_prop", self.calibrations.clone())?; out_dict.set_item("qregs", self.qregs.clone_ref(py))?; out_dict.set_item("cregs", self.cregs.clone_ref(py))?; out_dict.set_item("global_phase", self.global_phase.clone())?; @@ -606,10 +602,6 @@ impl DAGCircuit { let dict_state = state.downcast_bound::(py)?; self.name = dict_state.get_item("name")?.unwrap().extract()?; self.metadata = dict_state.get_item("metadata")?.unwrap().extract()?; - self.calibrations = dict_state - .get_item("_calibrations_prop")? - .unwrap() - .extract()?; self.qregs = dict_state.get_item("qregs")?.unwrap().extract()?; self.cregs = dict_state.get_item("cregs")?.unwrap().extract()?; self.global_phase = dict_state.get_item("global_phase")?.unwrap().extract()?; @@ -827,182 +819,6 @@ impl DAGCircuit { Ok(()) } - /// Return calibration dictionary. - /// - /// The custom pulse definition of a given gate is of the form - /// {'gate_name': {(qubits, params): schedule}} - /// - /// DEPRECATED since Qiskit 1.3.0 and will be removed in Qiskit 2.0.0 - #[getter] - fn get_calibrations(&self, py: Python) -> HashMap> { - emit_pulse_dependency_deprecation( - py, - "property ``qiskit.dagcircuit.dagcircuit.DAGCircuit.calibrations``", - ); - - self.calibrations.clone() - } - - /// Set the circuit calibration data from a dictionary of calibration definition. - /// - /// Args: - /// calibrations (dict): A dictionary of input in the format - /// {'gate_name': {(qubits, gate_params): schedule}} - /// - /// DEPRECATED since Qiskit 1.3.0 and will be removed in Qiskit 2.0.0 - #[setter] - fn set_calibrations(&mut self, py: Python, calibrations: HashMap>) { - emit_pulse_dependency_deprecation( - py, - "property ``qiskit.dagcircuit.dagcircuit.DAGCircuit.calibrations``", - ); - - self.calibrations = calibrations; - } - - // This is an alternative and Python-private path to 'get_calibration' to avoid - // deprecation warnings - #[getter(_calibrations_prop)] - fn get_calibrations_prop(&self) -> HashMap> { - self.calibrations.clone() - } - - // This is an alternative and Python-private path to 'set_calibration' to avoid - // deprecation warnings - #[setter(_calibrations_prop)] - fn set_calibrations_prop(&mut self, calibrations: HashMap>) { - self.calibrations = calibrations; - } - - /// Register a low-level, custom pulse definition for the given gate. - /// - /// Args: - /// gate (Union[Gate, str]): Gate information. - /// qubits (Union[int, Tuple[int]]): List of qubits to be measured. - /// schedule (Schedule): Schedule information. - /// params (Optional[List[Union[float, Parameter]]]): A list of parameters. - /// - /// Raises: - /// Exception: if the gate is of type string and params is None. - /// - /// DEPRECATED since Qiskit 1.3.0 and will be removed in Qiskit 2.0.0 - #[pyo3(signature=(gate, qubits, schedule, params=None))] - fn add_calibration<'py>( - &mut self, - py: Python<'py>, - mut gate: Bound<'py, PyAny>, - qubits: Bound<'py, PyAny>, - schedule: Py, - mut params: Option>, - ) -> PyResult<()> { - emit_pulse_dependency_deprecation( - py, - "method ``qiskit.dagcircuit.dagcircuit.DAGCircuit.add_calibration``", - ); - - if gate.is_instance(imports::GATE.get_bound(py))? { - params = Some(gate.getattr(intern!(py, "params"))?); - gate = gate.getattr(intern!(py, "name"))?; - } - - let params_tuple = if let Some(operands) = params { - let add_calibration = PyModule::from_code( - py, - std::ffi::CString::new( - r#" -import numpy as np - -def _format(operand): - try: - # Using float/complex value as a dict key is not good idea. - # This makes the mapping quite sensitive to the rounding error. - # However, the mechanism is already tied to the execution model (i.e. pulse gate) - # and we cannot easily update this rule. - # The same logic exists in QuantumCircuit.add_calibration. - evaluated = complex(operand) - if np.isreal(evaluated): - evaluated = float(evaluated.real) - if evaluated.is_integer(): - evaluated = int(evaluated) - return evaluated - except TypeError: - # Unassigned parameter - return operand - "#, - )? - .as_c_str(), - std::ffi::CString::new("add_calibration.py")?.as_c_str(), - std::ffi::CString::new("add_calibration")?.as_c_str(), - )?; - - let format = add_calibration.getattr("_format")?; - let mapped: PyResult> = - operands.try_iter()?.map(|p| format.call1((p?,))).collect(); - PyTuple::new(py, mapped?)?.into_any() - } else { - PyTuple::empty(py).into_any() - }; - - let calibrations = self - .calibrations - .entry(gate.extract()?) - .or_insert_with(|| PyDict::new(py).unbind()) - .bind(py); - - let qubits = if let Ok(qubits) = qubits.downcast::() { - qubits.to_tuple()?.into_any() - } else { - PyTuple::new(py, [qubits])?.into_any() - }; - let key = PyTuple::new(py, &[qubits.unbind(), params_tuple.into_any().unbind()])?; - calibrations.set_item(key, schedule)?; - Ok(()) - } - - /// Return True if the dag has a calibration defined for the node operation. In this - /// case, the operation does not need to be translated to the device basis. - /// - /// DEPRECATED since Qiskit 1.3.0 and will be removed in Qiskit 2.0.0 - pub fn has_calibration_for(&self, py: Python, node: PyRef) -> PyResult { - emit_pulse_dependency_deprecation( - py, - "method ``qiskit.dagcircuit.dagcircuit.DAGCircuit.has_calibration_for``", - ); - - self._has_calibration_for(py, node) - } - - fn _has_calibration_for(&self, py: Python, node: PyRef) -> PyResult { - if !self - .calibrations - .contains_key(node.instruction.operation.name()) - { - return Ok(false); - } - let mut params = Vec::new(); - for p in &node.instruction.params { - if let Param::ParameterExpression(exp) = p { - let exp = exp.bind(py); - if !exp.getattr(intern!(py, "parameters"))?.is_truthy()? { - let as_py_float = exp.call_method0(intern!(py, "__float__"))?; - params.push(as_py_float.unbind()); - continue; - } - } - params.push(p.into_py_any(py)?); - } - let qubits: Vec = self - .qubits - .map_bits(node.instruction.qubits.bind(py).iter())? - .map(|bit| bit.0) - .collect(); - let qubits = PyTuple::new(py, qubits)?; - let params = PyTuple::new(py, params)?; - self.calibrations[node.instruction.operation.name()] - .bind(py) - .contains((qubits, params)) - } - /// Remove all operation nodes with the given name. fn remove_all_ops_named(&mut self, opname: &str) { let mut to_remove = Vec::new(); @@ -1987,18 +1803,6 @@ def _format(operand): dag.global_phase = add_global_phase(py, &dag.global_phase, &other.global_phase)?; - for (gate, cals) in other.calibrations.iter() { - let calibrations = match dag.calibrations.get(gate) { - Some(calibrations) => calibrations, - None => { - dag.calibrations - .insert(gate.clone(), PyDict::new(py).unbind()); - &dag.calibrations[gate] - } - }; - calibrations.bind(py).update(cals.bind(py).as_mapping())?; - } - // This is all the handling we need for realtime variables, if there's no remapping. They: // // * get added to the DAG and then operations involving them get appended on normally. @@ -2434,22 +2238,6 @@ def _format(operand): if !phase_eq { return Ok(false); } - if self.calibrations.len() != other.calibrations.len() { - return Ok(false); - } - - for (k, v1) in &self.calibrations { - match other.calibrations.get(k) { - Some(v2) => { - if !v1.bind(py).eq(v2.bind(py))? { - return Ok(false); - } - } - None => { - return Ok(false); - } - } - } // We don't do any semantic equivalence between Var nodes, as things stand; DAGs can only be // equal in our mind if they use the exact same UUID vars. @@ -6256,7 +6044,6 @@ impl DAGCircuit { Ok(Self { name: None, metadata: Some(PyDict::new(py).unbind().into()), - calibrations: HashMap::default(), dag: StableDiGraph::with_capacity(num_nodes, num_edges), qregs: PyDict::new(py).unbind(), cregs: PyDict::new(py).unbind(), @@ -6439,44 +6226,6 @@ impl DAGCircuit { Ok(()) } - pub fn calibrations_empty(&self) -> bool { - self.calibrations.is_empty() - } - - pub fn has_calibration_for_index(&self, py: Python, node_index: NodeIndex) -> PyResult { - let node = &self.dag[node_index]; - if let NodeType::Operation(instruction) = node { - if !self.calibrations.contains_key(instruction.op.name()) { - return Ok(false); - } - let params = match &instruction.params { - Some(params) => { - let mut out_params = Vec::new(); - for p in params.iter() { - if let Param::ParameterExpression(exp) = p { - let exp = exp.bind(py); - if !exp.getattr(intern!(py, "parameters"))?.is_truthy()? { - let as_py_float = exp.call_method0(intern!(py, "__float__"))?; - out_params.push(as_py_float.unbind()); - continue; - } - } - out_params.push(p.into_pyobject(py)?.into_any().unbind()); - } - PyTuple::new(py, out_params) - } - None => Ok(PyTuple::empty(py)), - }?; - let qargs = self.qargs_interner.get(instruction.qubits); - let qubits = PyTuple::new(py, qargs.iter().map(|x| x.0))?; - self.calibrations[instruction.op.name()] - .bind(py) - .contains((qubits, params).into_py_any(py)?) - } else { - Err(DAGCircuitError::new_err("Specified node is not an op node")) - } - } - /// Return the op name counts in the circuit /// /// Args: @@ -6734,10 +6483,6 @@ impl DAGCircuit { _ => unreachable!("Incorrect parameter assigned for global phase"), }; - if let Some(calibrations) = qc.calibrations { - new_dag.calibrations = calibrations; - } - new_dag.metadata = qc.metadata.map(|meta| meta.unbind()); // Add the qubits depending on order, and produce the qargs map. @@ -6862,7 +6607,6 @@ impl DAGCircuit { let circ = QuantumCircuitData { data: circuit_data, name: None, - calibrations: None, metadata: None, qregs: None, cregs: None, diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py index 7ab1bae5d8cd..e813cbe6f59f 100644 --- a/qiskit/circuit/quantumcircuit.py +++ b/qiskit/circuit/quantumcircuit.py @@ -150,7 +150,6 @@ class QuantumCircuit: Immutable data attribute Summary ========================= ====================================================================== :attr:`ancillas` List of :class:`AncillaQubit`\\ s tracked by the circuit. - :attr:`calibrations` Custom user-supplied pulse calibrations for individual instructions. :attr:`cregs` List of :class:`ClassicalRegister`\\ s tracked by the circuit. :attr:`clbits` List of :class:`Clbit`\\ s tracked by the circuit. @@ -229,12 +228,6 @@ class QuantumCircuit: .. autoattribute:: parameters - The storage of any :ref:`manual pulse-level calibrations ` for individual - instructions on the circuit is in :attr:`calibrations`. This presents as a :class:`dict`, but - should not be mutated directly; use the methods discussed in :ref:`circuit-calibrations`. - - .. autoattribute:: calibrations - If you have transpiled your circuit, so you have a physical circuit, you can inspect the :attr:`layout` attribute for information stored by the transpiler about how the virtual qubits of the source circuit map to the hardware qubits of your physical circuit, both at the start and @@ -813,19 +806,8 @@ class QuantumCircuit: .. automethod:: clear .. automethod:: remove_final_measurements - .. _circuit-calibrations: - - Manual calibration of instructions - ---------------------------------- - - :class:`QuantumCircuit` can store :attr:`calibrations` of instructions that define the pulses - used to run them on one particular hardware backend. You can - - .. automethod:: add_calibration - .. automethod:: has_calibration_for - - Circuit properties + Circuit properties ================== Simple circuit metrics @@ -1115,7 +1097,6 @@ def __init__( self._data: CircuitData = CircuitData() self._ancillas: list[AncillaQubit] = [] - self._calibrations: DefaultDict[str, dict[tuple, Any]] = defaultdict(dict) self.add_register(*regs) self._layout = None @@ -1330,67 +1311,6 @@ def op_start_times(self) -> list[int]: ) return self._op_start_times - @property - @deprecate_pulse_dependency(is_property=True) - def calibrations(self) -> dict: - """Return calibration dictionary. - - The custom pulse definition of a given gate is of the form - ``{'gate_name': {(qubits, params): schedule}}`` - """ - return self._calibrations_prop - - @calibrations.setter - @deprecate_pulse_dependency(is_property=True) - def calibrations(self, calibrations: dict): - """Set the circuit calibration data from a dictionary of calibration definition. - - Args: - calibrations (dict): A dictionary of input in the format - ``{'gate_name': {(qubits, gate_params): schedule}}`` - """ - self._calibrations_prop = calibrations - - @property - def _calibrations_prop(self) -> dict: - """An alternative private path to the `calibrations` property for - avoiding deprecation warnings.""" - return dict(self._calibrations) - - @_calibrations_prop.setter - def _calibrations_prop(self, calibrations: dict): - """An alternative private path to the `calibrations` property for - avoiding deprecation warnings.""" - self._calibrations = defaultdict(dict, calibrations) - - @deprecate_pulse_dependency - def has_calibration_for(self, instruction: CircuitInstruction | tuple): - """Return True if the circuit has a calibration defined for the instruction context. In this - case, the operation does not need to be translated to the device basis. - """ - - return self._has_calibration_for(instruction) - - def _has_calibration_for(self, instruction: CircuitInstruction | tuple): - """An alternative private path to the `has_calibration_for` method for - avoiding deprecation warnings.""" - if isinstance(instruction, CircuitInstruction): - operation = instruction.operation - qubits = instruction.qubits - else: - operation, qubits, _ = instruction - if not self._calibrations_prop or operation.name not in self._calibrations_prop: - return False - qubits = tuple(self.qubits.index(qubit) for qubit in qubits) - params = [] - for p in operation.params: - if isinstance(p, ParameterExpression) and not p.parameters: - params.append(float(p)) - else: - params.append(p) - params = tuple(params) - return (qubits, params) in self._calibrations_prop[operation.name] - @property def metadata(self) -> dict: """The user provided metadata associated with the circuit. @@ -2030,9 +1950,6 @@ def replace_var(var: expr.Var, cache: Mapping[expr.Var, expr.Var]) -> expr.Var: ) edge_map.update(zip(other.clbits, dest._cbit_argument_conversion(clbits))) - for gate, cals in other._calibrations_prop.items(): - dest._calibrations[gate].update(cals) - dest.duration = None dest.unit = "dt" dest.global_phase += other.global_phase @@ -3712,7 +3629,7 @@ def copy_empty_like( That structure includes: - * name, calibrations and other metadata + * name and other metadata * global phase * all the qubits and clbits, including the registers * the realtime variables defined in the circuit, handled according to the ``vars`` keyword @@ -3766,7 +3683,7 @@ def copy_empty_like( def clear(self) -> None: """Clear all instructions in self. - Clearing the circuits will keep the metadata and calibrations. + Clearing the circuits will keep the metadata. .. seealso:: :meth:`copy_empty_like` @@ -4381,70 +4298,10 @@ def assign_parameters( # pylint: disable=missing-raises-doc " the circuit." ) - def create_mapping_view(): - return raw_mapping - target._data.assign_parameters_mapping(raw_mapping) else: - # This should be a cache retrieval, since we warmed the cache. We need to keep hold of - # what the parameters were before anything is assigned, because we assign parameters in - # the calibrations (which aren't tracked in the internal parameter table) after, which - # would change what we create. We don't make the full Python-space mapping object of - # parameters to values eagerly because 99.9% of the time we don't need it, and it's - # relatively expensive to do for large numbers of parameters. - initial_parameters = target._data.parameters - - def create_mapping_view(): - return dict(zip(initial_parameters, parameters)) - target._data.assign_parameters_iterable(parameters) - # Finally, assign the parameters inside any of the calibrations. We don't track these in - # the `ParameterTable`, so we manually reconstruct things. We lazily construct the mapping - # `{parameter: bound_value}` the first time we encounter a binding (we have to scan for - # this, because calibrations don't use a parameter-table lookup), rather than always paying - # the cost - most circuits don't have parametric calibrations, and it's expensive. - mapping_view = None - - def map_calibration(qubits, parameters, schedule): - # All calls to this function should share the same `{Parameter: bound_value}` mapping, - # which we only want to lazily construct a single time. - nonlocal mapping_view - if mapping_view is None: - mapping_view = create_mapping_view() - - modified = False - new_parameters = list(parameters) - for i, parameter in enumerate(new_parameters): - if not isinstance(parameter, ParameterExpression): - continue - if not (contained := parameter.parameters & mapping_view.keys()): - continue - for to_bind in contained: - parameter = parameter.assign(to_bind, mapping_view[to_bind]) - if not parameter.parameters: - parameter = parameter.numeric() - if isinstance(parameter, complex): - raise TypeError(f"Calibration cannot use complex number: '{parameter}'") - new_parameters[i] = parameter - modified = True - if modified: - schedule.assign_parameters(mapping_view) - return (qubits, tuple(new_parameters)), schedule - - target._calibrations = defaultdict( - dict, - ( - ( - gate, - dict( - map_calibration(qubits, parameters, schedule) - for (qubits, parameters), schedule in calibrations.items() - ), - ) - for gate, calibrations in target._calibrations.items() - ), - ) return None if inplace else target def _unroll_param_dict( @@ -6770,57 +6627,6 @@ def continue_loop(self) -> InstructionSet: ContinueLoopOp(self.num_qubits, self.num_clbits), self.qubits, self.clbits, copy=False ) - @deprecate_pulse_dependency - def add_calibration( - self, - gate: Union[Gate, str], - qubits: Sequence[int], - # Schedule has the type `qiskit.pulse.Schedule`, but `qiskit.pulse` cannot be imported - # while this module is, and so Sphinx will not accept a forward reference to it. Sphinx - # needs the types available at runtime, whereas mypy will accept it, because it handles the - # type checking by static analysis. - schedule, - params: Sequence[ParameterValueType] | None = None, - ) -> None: - """Register a low-level, custom pulse definition for the given gate. - - Args: - gate (Union[Gate, str]): Gate information. - qubits (Union[int, Tuple[int]]): List of qubits to be measured. - schedule (Schedule): Schedule information. - params (Optional[List[Union[float, Parameter]]]): A list of parameters. - - Raises: - Exception: if the gate is of type string and params is None. - """ - - def _format(operand): - try: - # Using float/complex value as a dict key is not good idea. - # This makes the mapping quite sensitive to the rounding error. - # However, the mechanism is already tied to the execution model (i.e. pulse gate) - # and we cannot easily update this rule. - # The same logic exists in DAGCircuit.add_calibration. - evaluated = complex(operand) - if np.isreal(evaluated): - evaluated = float(evaluated.real) - if evaluated.is_integer(): - evaluated = int(evaluated) - return evaluated - except TypeError: - # Unassigned parameter - return operand - - if isinstance(gate, Gate): - params = gate.params - gate = gate.name - if params is not None: - params = tuple(map(_format, params)) - else: - params = () - - self._calibrations[gate][(tuple(qubits), params)] = schedule - # Functions only for scheduled circuits def qubit_duration(self, *qubits: Union[Qubit, int]) -> float: """Return the duration between the start and stop time of the first and last instructions, @@ -7093,5 +6899,4 @@ def _copy_metadata(original, cpy, vars_mode): else: # pragma: no cover raise ValueError(f"unknown vars_mode: '{vars_mode}'") - cpy._calibrations = _copy.deepcopy(original._calibrations) cpy._metadata = _copy.deepcopy(original._metadata) diff --git a/qiskit/compiler/transpiler.py b/qiskit/compiler/transpiler.py index 4d705481ce71..16e1da4a851b 100644 --- a/qiskit/compiler/transpiler.py +++ b/qiskit/compiler/transpiler.py @@ -66,12 +66,10 @@ additional_msg="The `target` parameter should be used instead. You can build a `Target` instance " "with defined properties with Target.from_configuration(..., backend_properties=...)", ) -@deprecate_pulse_arg("inst_map", predicate=lambda inst_map: inst_map is not None) def transpile( # pylint: disable=too-many-return-statements circuits: _CircuitT, backend: Optional[Backend] = None, basis_gates: Optional[List[str]] = None, - inst_map: Optional[List[InstructionScheduleMap]] = None, coupling_map: Optional[Union[CouplingMap, List[List[int]]]] = None, backend_properties: Optional[BackendProperties] = None, initial_layout: Optional[Union[Layout, Dict, List]] = None, @@ -133,12 +131,6 @@ def transpile( # pylint: disable=too-many-return-statements will override the backend's. basis_gates: List of basis gate names to unroll to (e.g: ``['u1', 'u2', 'u3', 'cx']``). If ``None``, do not unroll. - inst_map: DEPRECATED. Mapping of unrolled gates to pulse schedules. If this is not provided, - transpiler tries to get from the backend. If any user defined calibration - is found in the map and this is used in a circuit, transpiler attaches - the custom gate definition to the circuit. This enables one to flexibly - override the low-level instruction implementation. This feature is available - iff the backend supports the pulse gate experiment. coupling_map: Directed coupling map (perhaps custom) to target in mapping. If the coupling map is symmetric, both directions need to be specified. @@ -429,7 +421,6 @@ def callback_func(**kwargs): instruction_durations=instruction_durations, backend_properties=backend_properties, timing_constraints=timing_constraints, - inst_map=inst_map, initial_layout=initial_layout, layout_method=layout_method, routing_method=routing_method, diff --git a/qiskit/converters/circuit_to_dagdependency.py b/qiskit/converters/circuit_to_dagdependency.py index e617cf30c4fd..26b5896f69f4 100644 --- a/qiskit/converters/circuit_to_dagdependency.py +++ b/qiskit/converters/circuit_to_dagdependency.py @@ -46,6 +46,4 @@ def circuit_to_dagdependency(circuit, create_preds_and_succs=True): dagdependency._add_predecessors() dagdependency._add_successors() - dagdependency._calibrations = circuit._calibrations_prop - return dagdependency diff --git a/qiskit/converters/circuit_to_dagdependency_v2.py b/qiskit/converters/circuit_to_dagdependency_v2.py index f55a0cf6716c..32a429ab1bac 100644 --- a/qiskit/converters/circuit_to_dagdependency_v2.py +++ b/qiskit/converters/circuit_to_dagdependency_v2.py @@ -27,7 +27,6 @@ def _circuit_to_dagdependency_v2(circuit): dagdependency = _DAGDependencyV2() dagdependency.name = circuit.name dagdependency.metadata = circuit.metadata - dagdependency._calibrations = circuit._calibrations_prop dagdependency.global_phase = circuit.global_phase dagdependency.add_qubits(circuit.qubits) diff --git a/qiskit/converters/dag_to_circuit.py b/qiskit/converters/dag_to_circuit.py index 5c81dd07a6bf..e05de30fb6f2 100644 --- a/qiskit/converters/dag_to_circuit.py +++ b/qiskit/converters/dag_to_circuit.py @@ -71,7 +71,6 @@ def dag_to_circuit(dag, copy_operations=True): for var in dag.iter_declared_vars(): circuit.add_uninitialized_var(var) circuit.metadata = dag.metadata - circuit._calibrations_prop = dag._calibrations_prop circuit._data = circuit_data diff --git a/qiskit/converters/dag_to_dagdependency.py b/qiskit/converters/dag_to_dagdependency.py index 19fb70a31bd6..55f88b0883d8 100644 --- a/qiskit/converters/dag_to_dagdependency.py +++ b/qiskit/converters/dag_to_dagdependency.py @@ -50,6 +50,5 @@ def dag_to_dagdependency(dag, create_preds_and_succs=True): # copy metadata dagdependency.global_phase = dag.global_phase - dagdependency._calibrations_prop = dag._calibrations_prop return dagdependency diff --git a/qiskit/converters/dag_to_dagdependency_v2.py b/qiskit/converters/dag_to_dagdependency_v2.py index 29eb12300f00..ce38f378aec1 100644 --- a/qiskit/converters/dag_to_dagdependency_v2.py +++ b/qiskit/converters/dag_to_dagdependency_v2.py @@ -27,7 +27,6 @@ def _dag_to_dagdependency_v2(dag): dagdependency.name = dag.name dagdependency.metadata = dag.metadata dagdependency.global_phase = dag.global_phase - dagdependency.calibrations = dag._calibrations_prop dagdependency.add_qubits(dag.qubits) dagdependency.add_clbits(dag.clbits) diff --git a/qiskit/converters/dagdependency_to_circuit.py b/qiskit/converters/dagdependency_to_circuit.py index 541207d175d2..9599adb84ac6 100644 --- a/qiskit/converters/dagdependency_to_circuit.py +++ b/qiskit/converters/dagdependency_to_circuit.py @@ -34,12 +34,6 @@ def dagdependency_to_circuit(dagdependency): ) circuit.metadata = dagdependency.metadata - if hasattr(dagdependency, "_calibrations_prop"): - circuit._calibrations_prop = dagdependency._calibrations_prop - else: - # This can be _DAGDependencyV2 - circuit._calibrations_prop = dagdependency.calibrations - for node in dagdependency.topological_nodes(): circuit._append(CircuitInstruction(node.op.copy(), node.qargs, node.cargs)) diff --git a/qiskit/converters/dagdependency_to_dag.py b/qiskit/converters/dagdependency_to_dag.py index 3b500d82c884..932d926ca10a 100644 --- a/qiskit/converters/dagdependency_to_dag.py +++ b/qiskit/converters/dagdependency_to_dag.py @@ -45,10 +45,5 @@ def dagdependency_to_dag(dagdependency): # copy metadata dagcircuit.global_phase = dagdependency.global_phase - if isinstance(dagdependency, DAGDependency): - dagcircuit._calibrations_prop = dagdependency._calibrations_prop - else: - # This can be _DAGDependencyV2 - dagcircuit._calibrations_prop = dagdependency.calibrations return dagcircuit diff --git a/qiskit/dagcircuit/dagdependency.py b/qiskit/dagcircuit/dagdependency.py index 63e9114a6ca1..1ca633b0e9b4 100644 --- a/qiskit/dagcircuit/dagdependency.py +++ b/qiskit/dagcircuit/dagdependency.py @@ -115,7 +115,6 @@ def __init__(self): self.clbits = [] self._global_phase: float | ParameterExpression = 0.0 - self._calibrations: dict[str, dict[tuple, Schedule]] = defaultdict(dict) self.duration = None self.unit = "dt" @@ -146,37 +145,6 @@ def global_phase(self, angle: float | ParameterExpression): else: self._global_phase = angle % (2 * math.pi) - @property - @deprecate_pulse_dependency(is_property=True) - def calibrations(self) -> dict[str, dict[tuple, Schedule]]: - """Return calibration dictionary. - - The custom pulse definition of a given gate is of the form - ``{'gate_name': {(qubits, params): schedule}}``. - """ - return self._calibrations_prop - - @calibrations.setter - @deprecate_pulse_dependency(is_property=True) - def calibrations(self, calibrations: dict[str, dict[tuple, Schedule]]): - """Set the circuit calibration data from a dictionary of calibration definition. - - Args: - calibrations (dict): A dictionary of input in the format - {'gate_name': {(qubits, gate_params): schedule}} - """ - self._calibrations_prop = calibrations - - @property - def _calibrations_prop(self) -> dict[str, dict[tuple, Schedule]]: - """An alternative path to be used internally to avoid deprecation warnings""" - return dict(self._calibrations) - - @_calibrations_prop.setter - def _calibrations_prop(self, calibrations: dict[str, dict[tuple, Schedule]]): - """An alternative path to be used internally to avoid deprecation warnings""" - self._calibrations = defaultdict(dict, calibrations) - def to_retworkx(self): """Returns the DAGDependency in retworkx format.""" return self._multi_graph @@ -544,7 +512,7 @@ def draw(self, scale=0.7, filename=None, style="color"): Graphviz ` to be installed. Args: - scale (float): scaling factor + scale (float): sng factor filename (str): file path to save image to (format inferred from name) style (str): 'plain': B&W graph 'color' (default): color input/output/op nodes diff --git a/qiskit/dagcircuit/dagdependency_v2.py b/qiskit/dagcircuit/dagdependency_v2.py index 6389ecddad89..5e174e5e12d3 100644 --- a/qiskit/dagcircuit/dagdependency_v2.py +++ b/qiskit/dagcircuit/dagdependency_v2.py @@ -110,7 +110,6 @@ def __init__(self): self._clbit_indices: Dict[Clbit, BitLocations] = {} self._global_phase = 0 - self._calibrations = defaultdict(dict) # Map of number of each kind of op, keyed on op name self._op_names = {} @@ -142,81 +141,6 @@ def global_phase(self, angle): else: self._global_phase = angle % (2 * math.pi) - @property - def calibrations(self): - """Return calibration dictionary. - - The custom pulse definition of a given gate is of the form - ``{'gate_name': {(qubits, params): schedule}}``. - """ - return dict(self._calibrations) - - @calibrations.setter - def calibrations(self, calibrations): - """Set the circuit calibration data from a dictionary of calibration definition. - - Args: - calibrations (dict): A dictionary of input in the format - {'gate_name': {(qubits, gate_params): schedule}} - """ - self._calibrations = defaultdict(dict, calibrations) - - def add_calibration(self, gate, qubits, schedule, params=None): - """Register a low-level, custom pulse definition for the given gate. - - Args: - gate (Union[Gate, str]): Gate information. - qubits (Union[int, Tuple[int]]): List of qubits to be measured. - schedule (Schedule): Schedule information. - params (Optional[List[Union[float, Parameter]]]): A list of parameters. - - Raises: - Exception: if the gate is of type string and params is None. - """ - - def _format(operand): - try: - # Using float/complex value as a dict key is not good idea. - # This makes the mapping quite sensitive to the rounding error. - # However, the mechanism is already tied to the execution model (i.e. pulse gate) - # and we cannot easily update this rule. - # The same logic exists in QuantumCircuit.add_calibration. - evaluated = complex(operand) - if np.isreal(evaluated): - evaluated = float(evaluated.real) - if evaluated.is_integer(): - evaluated = int(evaluated) - return evaluated - except TypeError: - # Unassigned parameter - return operand - - if isinstance(gate, Gate): - params = gate.params - gate = gate.name - if params is not None: - params = tuple(map(_format, params)) - else: - params = () - - self._calibrations[gate][(tuple(qubits), params)] = schedule - - def has_calibration_for(self, node): - """Return True if the dag has a calibration defined for the node operation. In this - case, the operation does not need to be translated to the device basis. - """ - if not self.calibrations or node.op.name not in self.calibrations: - return False - qubits = tuple(self.qubits.index(qubit) for qubit in node.qargs) - params = [] - for p in node.op.params: - if isinstance(p, ParameterExpression) and not p.parameters: - params.append(float(p)) - else: - params.append(p) - params = tuple(params) - return (qubits, params) in self.calibrations[node.op.name] - def size(self): """Returns the number of gates in the circuit""" return len(self._multi_graph) diff --git a/qiskit/providers/backend_compat.py b/qiskit/providers/backend_compat.py index 571500fa35e9..df6fa3e2d145 100644 --- a/qiskit/providers/backend_compat.py +++ b/qiskit/providers/backend_compat.py @@ -22,20 +22,16 @@ from qiskit.providers.models.backendconfiguration import BackendConfiguration from qiskit.providers.models.backendproperties import BackendProperties from qiskit.circuit.controlflow import CONTROL_FLOW_OP_NAMES, get_control_flow_name_mapping -from qiskit.providers.models.pulsedefaults import PulseDefaults from qiskit.providers.options import Options from qiskit.providers.exceptions import BackendPropertyError -from qiskit.utils.deprecate_pulse import deprecate_pulse_arg, deprecate_pulse_dependency logger = logging.getLogger(__name__) -@deprecate_pulse_arg("defaults") def convert_to_target( configuration: BackendConfiguration, properties: BackendProperties = None, - defaults: PulseDefaults = None, custom_name_mapping: Optional[Dict[str, Any]] = None, add_delay: bool = True, filter_faulty: bool = True, @@ -43,36 +39,18 @@ def convert_to_target( """Decode transpiler target from backend data set. This function generates :class:`.Target`` instance from intermediate - legacy objects such as :class:`.BackendProperties` and :class:`.PulseDefaults`. + legacy objects such as :class:`.BackendProperties`. These objects are usually components of the legacy :class:`.BackendV1` model. Args: configuration: Backend configuration as ``BackendConfiguration`` properties: Backend property dictionary or ``BackendProperties`` - defaults: DEPRECATED. Backend pulse defaults dictionary or ``PulseDefaults`` - custom_name_mapping: A name mapping must be supplied for the operation - not included in Qiskit Standard Gate name mapping, otherwise the operation - will be dropped in the resulting ``Target`` object. add_delay: If True, adds delay to the instruction set. filter_faulty: If True, this filters the non-operational qubits. Returns: A ``Target`` instance. """ - return _convert_to_target( - configuration, properties, defaults, custom_name_mapping, add_delay, filter_faulty - ) - - -def _convert_to_target( - configuration: BackendConfiguration, - properties: BackendProperties = None, - defaults: PulseDefaults = None, - custom_name_mapping: Optional[Dict[str, Any]] = None, - add_delay: bool = True, - filter_faulty: bool = True, -): - """An alternative private path to avoid pulse deprecations""" # importing packages where they are needed, to avoid cyclic-import. # pylint: disable=cyclic-import from qiskit.transpiler.target import ( @@ -248,44 +226,6 @@ def _get_value(prop_dict, prop_name): if not filter_faulty or (q not in faulty_qubits) } - if defaults: - inst_sched_map = defaults.instruction_schedule_map - - for name in inst_sched_map.instructions: - for qubits in inst_sched_map.qubits_with_instruction(name): - if not isinstance(qubits, tuple): - qubits = (qubits,) - if ( - name not in all_instructions - or name not in prop_name_map - or prop_name_map[name] is None - or qubits not in prop_name_map[name] - ): - logger.info( - "Gate calibration for instruction %s on qubits %s is found " - "in the PulseDefaults payload. However, this entry is not defined in " - "the gate mapping of Target. This calibration is ignored.", - name, - qubits, - ) - continue - - if (name, qubits) in faulty_ops: - continue - - entry = inst_sched_map._get_calibration_entry(name, qubits) - try: - prop_name_map[name][qubits]._calibration_prop = entry - except AttributeError: - # if instruction properties are "None", add entry - prop_name_map[name].update({qubits: InstructionProperties(None, None, entry)}) - logger.info( - "The PulseDefaults payload received contains an instruction %s on " - "qubits %s which is not present in the configuration or properties payload." - "A new properties entry will be added to include the new calibration data.", - name, - qubits, - ) # Add parsed properties to target target = Target(**in_data) for inst_name in all_instructions: @@ -345,21 +285,6 @@ class BackendV2Converter(BackendV2): 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`. - - When using custom calibrations (or other custom workflows) it is **not** recommended - to mutate the ``BackendV1`` object before applying this converter. For example, in order to - convert a ``BackendV1`` object with a customized ``defaults().instruction_schedule_map``, - which has a custom calibration for an operation, the operation name must be in - ``configuration().basis_gates`` and ``name_mapping`` must be supplied for the operation. - Otherwise, the operation will be dropped in the resulting ``BackendV2`` object. - - Instead it is typically better to add custom calibrations **after** applying this converter - instead of updating ``BackendV1.defaults()`` in advance. For example:: - - backend_v2 = BackendV2Converter(backend_v1) - backend_v2.target.add_instruction( - custom_gate, {(0, 1): InstructionProperties(calibration=custom_sched)} - ) """ def __init__( @@ -420,7 +345,7 @@ def target(self): :rtype: Target """ if self._target is None: - self._target = _convert_to_target( + self._target = convert_to_target( configuration=self._config, properties=self._properties, defaults=self._defaults, @@ -446,21 +371,5 @@ def dtm(self) -> float: def meas_map(self) -> List[List[int]]: return self._config.meas_map - @deprecate_pulse_dependency - def drive_channel(self, qubit: int): - return self._config.drive(qubit) - - @deprecate_pulse_dependency - def measure_channel(self, qubit: int): - return self._config.measure(qubit) - - @deprecate_pulse_dependency - def acquire_channel(self, qubit: int): - return self._config.acquire(qubit) - - @deprecate_pulse_dependency - def control_channel(self, qubits: Iterable[int]): - return self._config.control(qubits) - def run(self, run_input, **options): return self._backend.run(run_input, **options) diff --git a/qiskit/providers/basic_provider/basic_simulator.py b/qiskit/providers/basic_provider/basic_simulator.py index 6025cae3df7c..ee7b5df74fce 100644 --- a/qiskit/providers/basic_provider/basic_simulator.py +++ b/qiskit/providers/basic_provider/basic_simulator.py @@ -125,7 +125,7 @@ def target(self) -> Target: def _build_basic_target(self) -> Target: """Helper method that returns a minimal target with a basis gate set but - no coupling map, instruction properties or calibrations. + no coupling map or instruction properties. Returns: The configured target. diff --git a/qiskit/providers/fake_provider/generic_backend_v2.py b/qiskit/providers/fake_provider/generic_backend_v2.py index 28a1061a9499..4d4aded058b7 100644 --- a/qiskit/providers/fake_provider/generic_backend_v2.py +++ b/qiskit/providers/fake_provider/generic_backend_v2.py @@ -300,7 +300,7 @@ def _add_noisy_instruction_to_target( rounded_duration = round(duration / dt) * dt # Clamp rounded duration to be between min and max values duration = max(noise_params[0], min(rounded_duration, noise_params[1])) - props.update({qargs: InstructionProperties(duration, error, None)}) + props.update({qargs: InstructionProperties(duration, error)}) self._target.add_instruction(instruction, props) diff --git a/qiskit/providers/fake_provider/utils/backend_converter.py b/qiskit/providers/fake_provider/utils/backend_converter.py index 9e038c39df38..bd0ccd3aae58 100644 --- a/qiskit/providers/fake_provider/utils/backend_converter.py +++ b/qiskit/providers/fake_provider/utils/backend_converter.py @@ -26,7 +26,7 @@ from qiskit.circuit.reset import Reset from qiskit.providers.models.pulsedefaults import PulseDefaults - +# TODO: do we need this function? def convert_to_target(conf_dict: dict, props_dict: dict = None, defs_dict: dict = None) -> Target: """Uses configuration, properties and pulse defaults dicts to construct and return Target class. @@ -44,7 +44,7 @@ def convert_to_target(conf_dict: dict, props_dict: dict = None, defs_dict: dict if props_dict: qubit_props = qubit_props_from_props(props_dict) target = Target(qubit_properties=qubit_props, concurrent_measurements=conf_dict.get("meas_map")) - # Parse from properties if it exsits + # Parse from properties if it exists if props_dict is not None: # Parse instructions gates = {} diff --git a/qiskit/scheduler/config.py b/qiskit/scheduler/config.py deleted file mode 100644 index a1c5ba9a2c59..000000000000 --- a/qiskit/scheduler/config.py +++ /dev/null @@ -1,37 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2019. -# -# 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. - -"""Scheduling container classes.""" - -from typing import List - -from qiskit.pulse.instruction_schedule_map import InstructionScheduleMap -from qiskit.pulse.utils import format_meas_map -from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency - - -class ScheduleConfig: - """Configuration for pulse scheduling.""" - - @deprecate_pulse_dependency(moving_to_dynamics=True) - def __init__(self, inst_map: InstructionScheduleMap, meas_map: List[List[int]], dt: float): - """ - Container for information needed to schedule a QuantumCircuit into a pulse Schedule. - - Args: - inst_map: The schedule definition of all gates supported on a backend. - meas_map: A list of groups of qubits which have to be measured together. - dt: Sample duration. - """ - self.inst_map = inst_map - self.meas_map = format_meas_map(meas_map) - self.dt = dt diff --git a/qiskit/scheduler/lowering.py b/qiskit/scheduler/lowering.py deleted file mode 100644 index f0fb33957d9e..000000000000 --- a/qiskit/scheduler/lowering.py +++ /dev/null @@ -1,187 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 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. - -"""Lower gates to schedules. The relative timing within gates is respected. This -module handles the translation, but does not handle timing. -""" -from collections import namedtuple -from typing import Dict, List, Optional, Union - -from qiskit.circuit.barrier import Barrier -from qiskit.circuit.delay import Delay -from qiskit.circuit.duration import convert_durations_to_dt -from qiskit.circuit.measure import Measure -from qiskit.circuit.quantumcircuit import QuantumCircuit -from qiskit.exceptions import QiskitError -from qiskit.pulse import Schedule -from qiskit.pulse import instructions as pulse_inst -from qiskit.pulse.channels import AcquireChannel, MemorySlot, DriveChannel -from qiskit.pulse.exceptions import PulseError -from qiskit.pulse.macros import measure -from qiskit.scheduler.config import ScheduleConfig -from qiskit.providers import BackendV1, BackendV2 - -CircuitPulseDef = namedtuple( - "CircuitPulseDef", - ["schedule", "qubits"], # The schedule which implements the quantum circuit command -) # The labels of the qubits involved in the command according to the circuit - - -def lower_gates( - circuit: QuantumCircuit, - schedule_config: ScheduleConfig, - backend: Optional[Union[BackendV1, BackendV2]] = None, -) -> List[CircuitPulseDef]: - """ - Return a list of Schedules and the qubits they operate on, for each element encountered in the - input circuit. - - Without concern for the final schedule, extract and return a list of Schedules and the qubits - they operate on, for each element encountered in the input circuit. Measures are grouped when - possible, so ``qc.measure(q0, c0)`` or ``qc.measure(q1, c1)`` will generate a synchronous - measurement pulse. - - Args: - circuit: The quantum circuit to translate. - schedule_config: Backend specific parameters used for building the Schedule. - backend: Pass in the backend used to build the Schedule, the backend could be BackendV1 - or BackendV2 - - Returns: - A list of CircuitPulseDefs: the pulse definition for each circuit element. - - Raises: - QiskitError: If circuit uses a command that isn't defined in config.inst_map. - """ - from qiskit.pulse.transforms.base_transforms import target_qobj_transform - - circ_pulse_defs = [] - - inst_map = schedule_config.inst_map - qubit_mem_slots = {} # Map measured qubit index to classical bit index - - # convert the unit of durations from SI to dt before lowering - circuit = convert_durations_to_dt(circuit, dt_in_sec=schedule_config.dt, inplace=False) - - def get_measure_schedule(qubit_mem_slots: Dict[int, int]) -> CircuitPulseDef: - """Create a schedule to measure the qubits queued for measuring.""" - sched = Schedule() - # Exclude acquisition on these qubits, since they are handled by the user calibrations - acquire_excludes = {} - if Measure().name in circuit.calibrations.keys(): - qubits = tuple(sorted(qubit_mem_slots.keys())) - params = () - for qubit in qubits: - try: - meas_q = circuit.calibrations[Measure().name][((qubit,), params)] - meas_q = target_qobj_transform(meas_q) - acquire_q = meas_q.filter(channels=[AcquireChannel(qubit)]) - mem_slot_index = [ - chan.index for chan in acquire_q.channels if isinstance(chan, MemorySlot) - ][0] - if mem_slot_index != qubit_mem_slots[qubit]: - raise KeyError( - "The measurement calibration is not defined on " - "the requested classical bits" - ) - sched |= meas_q - del qubit_mem_slots[qubit] - acquire_excludes[qubit] = mem_slot_index - except KeyError: - pass - - if qubit_mem_slots: - qubits = list(qubit_mem_slots.keys()) - qubit_mem_slots.update(acquire_excludes) - meas_sched = measure( - qubits=qubits, - backend=backend, - inst_map=inst_map, - meas_map=schedule_config.meas_map, - qubit_mem_slots=qubit_mem_slots, - ) - meas_sched = target_qobj_transform(meas_sched) - meas_sched = meas_sched.exclude( - channels=[AcquireChannel(qubit) for qubit in acquire_excludes] - ) - sched |= meas_sched - qubit_mem_slots.clear() - return CircuitPulseDef( - schedule=sched, - qubits=[chan.index for chan in sched.channels if isinstance(chan, AcquireChannel)], - ) - - qubit_indices = {bit: idx for idx, bit in enumerate(circuit.qubits)} - clbit_indices = {bit: idx for idx, bit in enumerate(circuit.clbits)} - - for instruction in circuit.data: - inst_qubits = [qubit_indices[qubit] for qubit in instruction.qubits] - - if any(q in qubit_mem_slots for q in inst_qubits): - # If we are operating on a qubit that was scheduled to be measured, process that first - circ_pulse_defs.append(get_measure_schedule(qubit_mem_slots)) - - if isinstance(instruction.operation, Barrier): - circ_pulse_defs.append( - CircuitPulseDef(schedule=instruction.operation, qubits=inst_qubits) - ) - elif isinstance(instruction.operation, Delay): - sched = Schedule(name=instruction.operation.name) - for qubit in inst_qubits: - for channel in [DriveChannel]: - sched += pulse_inst.Delay( - duration=instruction.operation.duration, channel=channel(qubit) - ) - circ_pulse_defs.append(CircuitPulseDef(schedule=sched, qubits=inst_qubits)) - elif isinstance(instruction.operation, Measure): - if len(inst_qubits) != 1 and len(instruction.clbits) != 1: - raise QiskitError( - f"Qubit '{inst_qubits}' or classical bit '{instruction.clbits}' errored because the " - "circuit Measure instruction only takes one of " - "each." - ) - qubit_mem_slots[inst_qubits[0]] = clbit_indices[instruction.clbits[0]] - else: - try: - gate_cals = circuit.calibrations[instruction.operation.name] - schedule = gate_cals[ - ( - tuple(inst_qubits), - tuple( - p if getattr(p, "parameters", None) else float(p) - for p in instruction.operation.params - ), - ) - ] - schedule = target_qobj_transform(schedule) - circ_pulse_defs.append(CircuitPulseDef(schedule=schedule, qubits=inst_qubits)) - continue - except KeyError: - pass # Calibration not defined for this operation - - try: - schedule = inst_map.get( - instruction.operation, inst_qubits, *instruction.operation.params - ) - schedule = target_qobj_transform(schedule) - circ_pulse_defs.append(CircuitPulseDef(schedule=schedule, qubits=inst_qubits)) - except PulseError as ex: - raise QiskitError( - f"Operation '{instruction.operation.name}' on qubit(s) {inst_qubits} " - "not supported by the backend command definition. Did you remember to " - "transpile your input circuit for the same backend?" - ) from ex - - if qubit_mem_slots: - circ_pulse_defs.append(get_measure_schedule(qubit_mem_slots)) - - return circ_pulse_defs diff --git a/qiskit/scheduler/methods/__init__.py b/qiskit/scheduler/methods/__init__.py deleted file mode 100644 index 6df887d54995..000000000000 --- a/qiskit/scheduler/methods/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2019. -# -# 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. - -"""Scheduling methods.""" - -from qiskit.scheduler.methods.basic import as_soon_as_possible, as_late_as_possible diff --git a/qiskit/scheduler/methods/basic.py b/qiskit/scheduler/methods/basic.py deleted file mode 100644 index b08f0f866ab0..000000000000 --- a/qiskit/scheduler/methods/basic.py +++ /dev/null @@ -1,140 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2019. -# -# 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 most straightforward scheduling methods: scheduling **as early** or **as late** as possible. -""" -from collections import defaultdict -from typing import List, Optional, Union - -from qiskit.circuit.quantumcircuit import QuantumCircuit -from qiskit.circuit.barrier import Barrier -from qiskit.pulse.schedule import Schedule - -from qiskit.scheduler.config import ScheduleConfig -from qiskit.scheduler.lowering import lower_gates -from qiskit.providers import BackendV1, BackendV2 -from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency - - -@deprecate_pulse_dependency(moving_to_dynamics=True) -def as_soon_as_possible( - circuit: QuantumCircuit, - schedule_config: ScheduleConfig, - backend: Optional[Union[BackendV1, BackendV2]] = None, -) -> Schedule: - """ - Return the pulse Schedule which implements the input circuit using an "as soon as possible" - (asap) scheduling policy. - - Circuit instructions are first each mapped to equivalent pulse - Schedules according to the command definition given by the schedule_config. Then, this circuit - instruction-equivalent Schedule is appended at the earliest time at which all qubits involved - in the instruction are available. - - Args: - circuit: The quantum circuit to translate. - schedule_config: Backend specific parameters used for building the Schedule. - backend: A backend used to build the Schedule, the backend could be BackendV1 - or BackendV2. - - Returns: - A schedule corresponding to the input ``circuit`` with pulses occurring as early as - possible. - """ - qubit_time_available = defaultdict(int) - - def update_times(inst_qubits: List[int], time: int = 0) -> None: - """Update the time tracker for all inst_qubits to the given time.""" - for q in inst_qubits: - qubit_time_available[q] = time - - start_times = [] - circ_pulse_defs = lower_gates(circuit, schedule_config, backend) - for circ_pulse_def in circ_pulse_defs: - start_time = max(qubit_time_available[q] for q in circ_pulse_def.qubits) - stop_time = start_time - if not isinstance(circ_pulse_def.schedule, Barrier): - stop_time += circ_pulse_def.schedule.duration - - start_times.append(start_time) - update_times(circ_pulse_def.qubits, stop_time) - - timed_schedules = [ - (time, cpd.schedule) - for time, cpd in zip(start_times, circ_pulse_defs) - if not isinstance(cpd.schedule, Barrier) - ] - schedule = Schedule.initialize_from(circuit) - for time, inst in timed_schedules: - schedule.insert(time, inst, inplace=True) - return schedule - - -@deprecate_pulse_dependency(moving_to_dynamics=True) -def as_late_as_possible( - circuit: QuantumCircuit, - schedule_config: ScheduleConfig, - backend: Optional[Union[BackendV1, BackendV2]] = None, -) -> Schedule: - """ - Return the pulse Schedule which implements the input circuit using an "as late as possible" - (alap) scheduling policy. - - Circuit instructions are first each mapped to equivalent pulse - Schedules according to the command definition given by the schedule_config. Then, this circuit - instruction-equivalent Schedule is appended at the latest time that it can be without allowing - unnecessary time between instructions or allowing instructions with common qubits to overlap. - - This method should improves the outcome fidelity over ASAP scheduling, because we may - maximize the time that the qubit remains in the ground state. - - Args: - circuit: The quantum circuit to translate. - schedule_config: Backend specific parameters used for building the Schedule. - backend: A backend used to build the Schedule, the backend could be BackendV1 - or BackendV2. - - Returns: - A schedule corresponding to the input ``circuit`` with pulses occurring as late as - possible. - """ - qubit_time_available = defaultdict(int) - - def update_times(inst_qubits: List[int], time: int = 0) -> None: - """Update the time tracker for all inst_qubits to the given time.""" - for q in inst_qubits: - qubit_time_available[q] = time - - rev_stop_times = [] - circ_pulse_defs = lower_gates(circuit, schedule_config, backend) - for circ_pulse_def in reversed(circ_pulse_defs): - start_time = max(qubit_time_available[q] for q in circ_pulse_def.qubits) - stop_time = start_time - if not isinstance(circ_pulse_def.schedule, Barrier): - stop_time += circ_pulse_def.schedule.duration - - rev_stop_times.append(stop_time) - update_times(circ_pulse_def.qubits, stop_time) - - last_stop = max(t for t in qubit_time_available.values()) if qubit_time_available else 0 - start_times = [last_stop - t for t in reversed(rev_stop_times)] - - timed_schedules = [ - (time, cpd.schedule) - for time, cpd in zip(start_times, circ_pulse_defs) - if not isinstance(cpd.schedule, Barrier) - ] - schedule = Schedule.initialize_from(circuit) - for time, inst in timed_schedules: - schedule.insert(time, inst, inplace=True) - return schedule diff --git a/qiskit/scheduler/schedule_circuit.py b/qiskit/scheduler/schedule_circuit.py deleted file mode 100644 index 2cc32a8a7b3c..000000000000 --- a/qiskit/scheduler/schedule_circuit.py +++ /dev/null @@ -1,69 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2019. -# -# 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. - -"""QuantumCircuit to Pulse scheduler.""" -from typing import Optional, Union - -from qiskit.circuit.quantumcircuit import QuantumCircuit -from qiskit.exceptions import QiskitError - -from qiskit.pulse.schedule import Schedule -from qiskit.scheduler.config import ScheduleConfig -from qiskit.scheduler.methods import as_soon_as_possible, as_late_as_possible -from qiskit.providers import BackendV1, BackendV2 -from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency - - -@deprecate_pulse_dependency(moving_to_dynamics=True) -def schedule_circuit( - circuit: QuantumCircuit, - schedule_config: ScheduleConfig, - method: Optional[str] = None, - backend: Optional[Union[BackendV1, BackendV2]] = None, -) -> Schedule: - """ - Basic scheduling pass from a circuit to a pulse Schedule, using the backend. If no method is - specified, then a basic, as late as possible scheduling pass is performed, i.e. pulses are - scheduled to occur as late as possible. - - Supported methods: - - * ``'as_soon_as_possible'``: Schedule pulses greedily, as early as possible on a - qubit resource. (alias: ``'asap'``) - * ``'as_late_as_possible'``: Schedule pulses late-- keep qubits in the ground state when - possible. (alias: ``'alap'``) - - Args: - circuit: The quantum circuit to translate. - schedule_config: Backend specific parameters used for building the Schedule. - method: The scheduling pass method to use. - backend: A backend used to build the Schedule, the backend could be BackendV1 - or BackendV2. - - Returns: - Schedule corresponding to the input circuit. - - Raises: - QiskitError: If method isn't recognized. - """ - methods = { - "as_soon_as_possible": as_soon_as_possible, - "asap": as_soon_as_possible, - "as_late_as_possible": as_late_as_possible, - "alap": as_late_as_possible, - } - if method is None: - method = "as_late_as_possible" - try: - return methods[method](circuit, schedule_config, backend) - except KeyError as ex: - raise QiskitError(f"Scheduling method {method} isn't recognized.") from ex diff --git a/qiskit/scheduler/sequence.py b/qiskit/scheduler/sequence.py deleted file mode 100644 index 7f69f5f65a6a..000000000000 --- a/qiskit/scheduler/sequence.py +++ /dev/null @@ -1,104 +0,0 @@ -# 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. - -""" -Mapping a scheduled QuantumCircuit to a pulse Schedule. -""" -from collections import defaultdict - -from typing import Optional, Union -from qiskit.circuit.barrier import Barrier -from qiskit.circuit.measure import Measure -from qiskit.circuit.quantumcircuit import QuantumCircuit -from qiskit.exceptions import QiskitError -from qiskit.pulse.schedule import Schedule -from qiskit.pulse.transforms import pad -from qiskit.scheduler.config import ScheduleConfig -from qiskit.scheduler.lowering import lower_gates -from qiskit.providers import BackendV1, BackendV2 -from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency - - -@deprecate_pulse_dependency(moving_to_dynamics=True) -def sequence( - scheduled_circuit: QuantumCircuit, - schedule_config: ScheduleConfig, - backend: Optional[Union[BackendV1, BackendV2]] = None, -) -> Schedule: - """ - Return the pulse Schedule which implements the input scheduled circuit. - - Assume all measurements are done at once at the last of the circuit. - Schedules according to the command definition given by the schedule_config. - - Args: - scheduled_circuit: The scheduled quantum circuit to translate. - schedule_config: Backend specific parameters used for building the Schedule. - backend: A backend used to build the Schedule, the backend could be BackendV1 - or BackendV2 - - Returns: - A schedule corresponding to the input ``circuit``. - - Raises: - QiskitError: If invalid scheduled circuit is supplied. - """ - circ_pulse_defs = lower_gates(scheduled_circuit, schedule_config, backend) - - # find the measurement start time (assume measurement once) - def _meas_start_time(): - _qubit_time_available = defaultdict(int) - for instruction in scheduled_circuit.data: - if isinstance(instruction.operation, Measure): - return _qubit_time_available[instruction.qubits[0]] - for q in instruction.qubits: - _qubit_time_available[q] += instruction.operation.duration - return None - - meas_time = _meas_start_time() - - # restore start times - qubit_time_available = {} - start_times = [] - out_circ_pulse_defs = [] - for circ_pulse_def in circ_pulse_defs: - active_qubits = [q for q in circ_pulse_def.qubits if q in qubit_time_available] - - start_time = max((qubit_time_available[q] for q in active_qubits), default=0) - - for q in active_qubits: - if qubit_time_available[q] != start_time: - # print(q, ":", qubit_time_available[q], "!=", start_time) - raise QiskitError("Invalid scheduled circuit.") - - stop_time = start_time - if not isinstance(circ_pulse_def.schedule, Barrier): - stop_time += circ_pulse_def.schedule.duration - - delay_overlaps_meas = False - for q in circ_pulse_def.qubits: - qubit_time_available[q] = stop_time - if ( - meas_time is not None - and circ_pulse_def.schedule.name == "delay" - and stop_time > meas_time - ): - qubit_time_available[q] = meas_time - delay_overlaps_meas = True - # skip to delays overlapping measures and barriers - if not delay_overlaps_meas and not isinstance(circ_pulse_def.schedule, Barrier): - start_times.append(start_time) - out_circ_pulse_defs.append(circ_pulse_def) - - timed_schedules = [(time, cpd.schedule) for time, cpd in zip(start_times, out_circ_pulse_defs)] - sched = Schedule(*timed_schedules, name=scheduled_circuit.name) - return pad(sched) diff --git a/qiskit/transpiler/basepasses.py b/qiskit/transpiler/basepasses.py index b4993915c1cc..1e51e4165457 100644 --- a/qiskit/transpiler/basepasses.py +++ b/qiskit/transpiler/basepasses.py @@ -199,10 +199,7 @@ def execute( ) if state.workflow_status.previous_run == RunState.SUCCESS: - if isinstance(new_dag, DAGCircuit): - # Copy calibration data from the original program - new_dag._calibrations_prop = passmanager_ir._calibrations_prop - else: + if not isinstance(new_dag, DAGCircuit): raise TranspilerError( "Transformation passes should return a transformed dag." f"The pass {self.__class__.__name__} is returning a {type(new_dag)}" diff --git a/qiskit/transpiler/passes/basis/unroll_3q_or_more.py b/qiskit/transpiler/passes/basis/unroll_3q_or_more.py index 885009a23e03..65f4015e8565 100644 --- a/qiskit/transpiler/passes/basis/unroll_3q_or_more.py +++ b/qiskit/transpiler/passes/basis/unroll_3q_or_more.py @@ -54,8 +54,6 @@ def run(self, dag): QiskitError: if a 3q+ gate is not decomposable """ for node in dag.multi_qubit_ops(): - if dag._has_calibration_for(node): - continue if isinstance(node.op, ControlFlowOp): dag.substitute_node( diff --git a/qiskit/transpiler/passes/basis/unroll_custom_definitions.py b/qiskit/transpiler/passes/basis/unroll_custom_definitions.py index 11ba6afcd1b3..eac6df17b33d 100644 --- a/qiskit/transpiler/passes/basis/unroll_custom_definitions.py +++ b/qiskit/transpiler/passes/basis/unroll_custom_definitions.py @@ -74,7 +74,7 @@ def run(self, dag): if getattr(node.op, "_directive", False): continue - if dag._has_calibration_for(node) or len(node.qargs) < self._min_qubits: + if len(node.qargs) < self._min_qubits: continue controlled_gate_open_ctrl = isinstance(node.op, ControlledGate) and node.op._open_ctrl diff --git a/qiskit/transpiler/passes/calibration/base_builder.py b/qiskit/transpiler/passes/calibration/base_builder.py deleted file mode 100644 index d69dcb171871..000000000000 --- a/qiskit/transpiler/passes/calibration/base_builder.py +++ /dev/null @@ -1,79 +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. - -"""Calibration builder base class.""" - -from abc import abstractmethod -from typing import List, Union - -from qiskit.circuit import Instruction as CircuitInst -from qiskit.dagcircuit import DAGCircuit -from qiskit.pulse import Schedule, ScheduleBlock -from qiskit.pulse.calibration_entries import CalibrationPublisher -from qiskit.transpiler.basepasses import TransformationPass - -from .exceptions import CalibrationNotAvailable - - -class CalibrationBuilder(TransformationPass): - """Abstract base class to inject calibrations into circuits.""" - - @abstractmethod - def supported(self, node_op: CircuitInst, qubits: List) -> bool: - """Determine if a given node supports the calibration. - - Args: - node_op: Target instruction object. - qubits: Integer qubit indices to check. - - Returns: - Return ``True`` is calibration can be provided. - """ - - @abstractmethod - def get_calibration(self, node_op: CircuitInst, qubits: List) -> Union[Schedule, ScheduleBlock]: - """Gets the calibrated schedule for the given instruction and qubits. - - Args: - node_op: Target instruction object. - qubits: Integer qubit indices to check. - - Returns: - Return Schedule of target gate instruction. - """ - - def run(self, dag: DAGCircuit) -> DAGCircuit: - """Run the calibration adder pass on `dag`. - - Args: - dag: DAG to schedule. - - Returns: - A DAG with calibrations added to it. - """ - for node in dag.gate_nodes(): - qubits = [dag.find_bit(q).index for q in node.qargs] - - if self.supported(node.op, qubits) and not dag.has_calibration_for(node): - # calibration can be provided and no user-defined calibration is already provided - try: - schedule = self.get_calibration(node.op, qubits) - except CalibrationNotAvailable: - # Fail in schedule generation. Just ignore. - continue - publisher = schedule.metadata.get("publisher", CalibrationPublisher.QISKIT) - - # add calibration if it is not backend default - if publisher != CalibrationPublisher.BACKEND_PROVIDER: - dag.add_calibration(gate=node.op, qubits=qubits, schedule=schedule) - - return dag diff --git a/qiskit/transpiler/passes/calibration/exceptions.py b/qiskit/transpiler/passes/calibration/exceptions.py deleted file mode 100644 index 7785f49d1d30..000000000000 --- a/qiskit/transpiler/passes/calibration/exceptions.py +++ /dev/null @@ -1,22 +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. - -"""Exception for errors raised by the calibration pass module.""" -from qiskit.exceptions import QiskitError - - -class CalibrationNotAvailable(QiskitError): - """Raised when calibration generation fails. - - .. note:: - This error is meant to caught by CalibrationBuilder and ignored. - """ diff --git a/qiskit/transpiler/passes/optimization/normalize_rx_angle.py b/qiskit/transpiler/passes/optimization/normalize_rx_angle.py index b6f36e07de36..9272c1e5dea6 100644 --- a/qiskit/transpiler/passes/optimization/normalize_rx_angle.py +++ b/qiskit/transpiler/passes/optimization/normalize_rx_angle.py @@ -25,6 +25,7 @@ from qiskit.circuit.library.standard_gates import RXGate, RZGate, SXGate, XGate +# TODO: do we still need this pass?? class NormalizeRXAngle(TransformationPass): """Normalize theta parameter of RXGate instruction. diff --git a/qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py b/qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py index 55232ac1be20..8e75ce1e7a74 100644 --- a/qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +++ b/qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py @@ -169,24 +169,20 @@ def _substitution_checks( if new_circ is None: return False - # do we even have calibrations? - has_cals_p = dag._calibrations_prop is not None and len(dag._calibrations_prop) > 0 - # does this run have uncalibrated gates? - uncalibrated_p = not has_cals_p or any(not dag._has_calibration_for(g) for g in old_run) - # does this run have gates not in the image of ._decomposers _and_ uncalibrated? + # does this run have gates not in the image of ._decomposers? if basis is not None: - uncalibrated_and_not_basis_p = any( - g.name not in basis and (not has_cals_p or not dag._has_calibration_for(g)) + not_basis_p = any( + g.name not in basis for g in old_run ) else: # If no basis is specified then we're always in the basis - uncalibrated_and_not_basis_p = False + not_basis_p = False # if we're outside of the basis set, we're obligated to logically decompose. # if we're outside of the set of gates for which we have physical definitions, # then we _try_ to decompose, using the results if we see improvement. - if not uncalibrated_and_not_basis_p: + if not not_basis_p: if new_error is None: new_error = self._error(new_circ, qubit) if old_error is None: @@ -196,8 +192,8 @@ def _substitution_checks( old_error = 0.0 return ( - uncalibrated_and_not_basis_p - or (uncalibrated_p and new_error < old_error) + not_basis_p + or (True and new_error < old_error) or (math.isclose(new_error[0], 0) and not math.isclose(old_error[0], 0)) ) diff --git a/qiskit/transpiler/passes/scheduling/alap.py b/qiskit/transpiler/passes/scheduling/alap.py index cdbdd4654f3c..b998590319a1 100644 --- a/qiskit/transpiler/passes/scheduling/alap.py +++ b/qiskit/transpiler/passes/scheduling/alap.py @@ -144,7 +144,6 @@ def run(self, dag): new_dag.name = dag.name new_dag.metadata = dag.metadata - new_dag._calibrations_prop = dag._calibrations_prop # set circuit duration and unit to indicate it is scheduled new_dag.duration = circuit_duration diff --git a/qiskit/transpiler/passes/scheduling/alignments/check_durations.py b/qiskit/transpiler/passes/scheduling/alignments/check_durations.py index 3edfdf7ec741..6d0d1db4b8bc 100644 --- a/qiskit/transpiler/passes/scheduling/alignments/check_durations.py +++ b/qiskit/transpiler/passes/scheduling/alignments/check_durations.py @@ -69,10 +69,3 @@ def run(self, dag: DAGCircuit): self.property_set["reschedule_required"] = True return - # Check custom gate durations - for inst_defs in dag._calibrations_prop.values(): - for caldef in inst_defs.values(): - dur = caldef.duration - if not (dur % self.acquire_align == 0 and dur % self.pulse_align == 0): - self.property_set["reschedule_required"] = True - return diff --git a/qiskit/transpiler/passes/scheduling/asap.py b/qiskit/transpiler/passes/scheduling/asap.py index 13ff58b1b0f0..5a2a7352fce1 100644 --- a/qiskit/transpiler/passes/scheduling/asap.py +++ b/qiskit/transpiler/passes/scheduling/asap.py @@ -167,7 +167,6 @@ def run(self, dag): new_dag.name = dag.name new_dag.metadata = dag.metadata - new_dag._calibrations_prop = dag._calibrations_prop # set circuit duration and unit to indicate it is scheduled new_dag.duration = circuit_duration diff --git a/qiskit/transpiler/passes/scheduling/base_scheduler.py b/qiskit/transpiler/passes/scheduling/base_scheduler.py index c380c9f8c199..6a97329083c2 100644 --- a/qiskit/transpiler/passes/scheduling/base_scheduler.py +++ b/qiskit/transpiler/passes/scheduling/base_scheduler.py @@ -263,15 +263,10 @@ def _get_node_duration( node: DAGOpNode, dag: DAGCircuit, ) -> int: - """A helper method to get duration from node or calibration.""" + """A helper method to get duration from node.""" indices = [dag.find_bit(qarg).index for qarg in node.qargs] - if dag._has_calibration_for(node): - # If node has calibration, this value should be the highest priority - cal_key = tuple(indices), tuple(float(p) for p in node.op.params) - duration = dag._calibrations_prop[node.op.name][cal_key].duration - else: - duration = node.op.duration + duration = node.op.duration if isinstance(node.op, Reset): warnings.warn( diff --git a/qiskit/transpiler/passes/scheduling/dynamical_decoupling.py b/qiskit/transpiler/passes/scheduling/dynamical_decoupling.py index 08371c488422..c06a34983e7f 100644 --- a/qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +++ b/qiskit/transpiler/passes/scheduling/dynamical_decoupling.py @@ -145,6 +145,7 @@ def __init__( self._skip_reset_qubits = skip_reset_qubits self._target = target if target is not None: + # The priority order for instruction durations is: target > standalone. self._durations = target.durations() for gate in dd_sequence: if gate.name not in target.operation_names: @@ -171,7 +172,9 @@ def run(self, dag): if dag.duration is None: raise TranspilerError("DD runs after circuit is scheduled.") - durations = self._update_inst_durations(dag) + durations = InstructionDurations() + if self._durations is not None: + durations.update(self._durations, getattr(self._durations, "dt", None)) num_pulses = len(self._dd_sequence) sequence_gphase = 0 @@ -282,30 +285,6 @@ def run(self, dag): return new_dag - def _update_inst_durations(self, dag): - """Update instruction durations with circuit information. If the dag contains gate - calibrations and no instruction durations were provided through the target or as a - standalone input, the circuit calibration durations will be used. - The priority order for instruction durations is: target > standalone > circuit. - """ - circ_durations = InstructionDurations() - - if dag._calibrations_prop: - cal_durations = [] - with warnings.catch_warnings(): - warnings.simplefilter(action="ignore", category=DeprecationWarning) - # `schedule.duration` emits pulse deprecation warnings which we don't want - # to see here - for gate, gate_cals in dag._calibrations_prop.items(): - for (qubits, parameters), schedule in gate_cals.items(): - cal_durations.append((gate, qubits, parameters, schedule.duration)) - circ_durations.update(cal_durations, circ_durations.dt) - - if self._durations is not None: - circ_durations.update(self._durations, getattr(self._durations, "dt", None)) - - return circ_durations - def __gate_supported(self, gate: Gate, qarg: int) -> bool: """A gate is supported on the qubit (qarg) or not.""" if self._target is None or self._target.instruction_supported(gate.name, qargs=(qarg,)): diff --git a/qiskit/transpiler/passes/scheduling/padding/base_padding.py b/qiskit/transpiler/passes/scheduling/padding/base_padding.py index e8876920aa03..3f316f13dbf1 100644 --- a/qiskit/transpiler/passes/scheduling/padding/base_padding.py +++ b/qiskit/transpiler/passes/scheduling/padding/base_padding.py @@ -99,7 +99,6 @@ def run(self, dag: DAGCircuit): new_dag.name = dag.name new_dag.metadata = dag.metadata new_dag.unit = self.property_set["time_unit"] - new_dag._calibrations_prop = dag._calibrations_prop new_dag.global_phase = dag.global_phase idle_after = {bit: 0 for bit in dag.qubits} diff --git a/qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py b/qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py index 6159253e93e7..3d25e17792c1 100644 --- a/qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +++ b/qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py @@ -173,6 +173,7 @@ def __init__( self._dd_sequence_lengths: dict[Qubit, list[int]] = {} self._sequence_phase = 0 if target is not None: + # The priority order for instruction durations is: target > standalone. self._durations = target.durations() self._alignment = target.pulse_alignment for gate in dd_sequence: @@ -181,35 +182,12 @@ def __init__( f"{gate.name} in dd_sequence is not supported in the target" ) - def _update_inst_durations(self, dag): - """Update instruction durations with circuit information. If the dag contains gate - calibrations and no instruction durations were provided through the target or as a - standalone input, the circuit calibration durations will be used. - The priority order for instruction durations is: target > standalone > circuit. - """ - circ_durations = InstructionDurations() - - if dag._calibrations_prop: - cal_durations = [] - with warnings.catch_warnings(): - warnings.simplefilter(action="ignore", category=DeprecationWarning) - # `schedule.duration` emits pulse deprecation warnings which we don't want - # to see here - for gate, gate_cals in dag._calibrations_prop.items(): - for (qubits, parameters), schedule in gate_cals.items(): - cal_durations.append((gate, qubits, parameters, schedule.duration)) - circ_durations.update(cal_durations, circ_durations.dt) - - if self._durations is not None: - circ_durations.update(self._durations, getattr(self._durations, "dt", None)) - - return circ_durations - def _pre_runhook(self, dag: DAGCircuit): super()._pre_runhook(dag) - durations = self._update_inst_durations(dag) - + durations = InstructionDurations() + if self._durations is not None: + durations.update(self._durations, getattr(self._durations, "dt", None)) num_pulses = len(self._dd_sequence) # Check if physical circuit is given @@ -255,31 +233,7 @@ def _pre_runhook(self, dag: DAGCircuit): sequence_lengths = [] for index, gate in enumerate(self._dd_sequence): - try: - # Check calibration. - params = self._resolve_params(gate) - with warnings.catch_warnings(): - warnings.simplefilter(action="ignore", category=DeprecationWarning) - # `schedule.duration` emits pulse deprecation warnings which we don't want - # to see here - gate_length = dag._calibrations_prop[gate.name][ - ((physical_index,), params) - ].duration - if gate_length % self._alignment != 0: - # This is necessary to implement lightweight scheduling logic for this pass. - # Usually the pulse alignment constraint and pulse data chunk size take - # the same value, however, we can intentionally violate this pattern - # at the gate level. For example, we can create a schedule consisting of - # a pi-pulse of 32 dt followed by a post buffer, i.e. delay, of 4 dt - # on the device with 16 dt constraint. Note that the pi-pulse length - # is multiple of 16 dt but the gate length of 36 is not multiple of it. - # Such pulse gate should be excluded. - raise TranspilerError( - f"Pulse gate {gate.name} with length non-multiple of {self._alignment} " - f"is not acceptable in {self.__class__.__name__} pass." - ) - except KeyError: - gate_length = durations.get(gate, physical_index) + gate_length = durations.get(gate, physical_index) sequence_lengths.append(gate_length) # Update gate duration. This is necessary for current timeline drawer, i.e. scheduled. gate = gate.to_mutable() diff --git a/qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py b/qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py index 4c21a210c1c0..b0affa320fcd 100644 --- a/qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py +++ b/qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py @@ -61,24 +61,10 @@ def _get_node_duration( node: DAGOpNode, dag: DAGCircuit, ) -> int: - """A helper method to get duration from node or calibration.""" + """A helper method to get duration from node""" indices = [dag.find_bit(qarg).index for qarg in node.qargs] - if dag._has_calibration_for(node): - # If node has calibration, this value should be the highest priority - cal_key = tuple(indices), tuple(float(p) for p in node.op.params) - with warnings.catch_warnings(): - warnings.simplefilter(action="ignore", category=DeprecationWarning) - # `schedule.duration` emits pulse deprecation warnings which we don't want - # to see here - duration = dag._calibrations_prop[node.op.name][cal_key].duration - - # Note that node duration is updated (but this is analysis pass) - op = node.op.to_mutable() - op.duration = duration - dag.substitute_node(node, op, propagate_condition=False) - else: - duration = node.duration + duration = node.duration if isinstance(duration, ParameterExpression): raise TranspilerError( diff --git a/qiskit/transpiler/passes/scheduling/time_unit_conversion.py b/qiskit/transpiler/passes/scheduling/time_unit_conversion.py index 8bb743ce6b3e..bf23f226a315 100644 --- a/qiskit/transpiler/passes/scheduling/time_unit_conversion.py +++ b/qiskit/transpiler/passes/scheduling/time_unit_conversion.py @@ -51,6 +51,7 @@ def __init__(self, inst_durations: InstructionDurations = None, target: Target = super().__init__() self.inst_durations = inst_durations or InstructionDurations() if target is not None: + # The priority order for instruction durations is: target > standalone. self.inst_durations = target.durations() self._durations_provided = inst_durations is not None or target is not None @@ -67,7 +68,9 @@ def run(self, dag: DAGCircuit): TranspilerError: if the units are not unifiable """ - inst_durations = self._update_inst_durations(dag) + inst_durations = InstructionDurations() + if self._durations_provided: + inst_durations.update(self.inst_durations, getattr(self.inst_durations, "dt", None)) # Choose unit if inst_durations.dt is not None: @@ -114,30 +117,6 @@ def run(self, dag: DAGCircuit): self.property_set["time_unit"] = time_unit return dag - def _update_inst_durations(self, dag): - """Update instruction durations with circuit information. If the dag contains gate - calibrations and no instruction durations were provided through the target or as a - standalone input, the circuit calibration durations will be used. - The priority order for instruction durations is: target > standalone > circuit. - """ - circ_durations = InstructionDurations() - - if dag._calibrations_prop: - cal_durations = [] - with warnings.catch_warnings(): - warnings.simplefilter(action="ignore", category=DeprecationWarning) - # `schedule.duration` emits pulse deprecation warnings which we don't want - # to see here - for gate, gate_cals in dag._calibrations_prop.items(): - for (qubits, parameters), schedule in gate_cals.items(): - cal_durations.append((gate, qubits, parameters, schedule.duration)) - circ_durations.update(cal_durations, circ_durations.dt) - - if self._durations_provided: - circ_durations.update(self.inst_durations, getattr(self.inst_durations, "dt", None)) - - return circ_durations - @staticmethod def _units_used_in_delays(dag: DAGCircuit) -> Set[str]: units_used = set() diff --git a/qiskit/transpiler/passes/synthesis/high_level_synthesis.py b/qiskit/transpiler/passes/synthesis/high_level_synthesis.py index 95adee1d05c7..cb025ea7896a 100644 --- a/qiskit/transpiler/passes/synthesis/high_level_synthesis.py +++ b/qiskit/transpiler/passes/synthesis/high_level_synthesis.py @@ -811,8 +811,7 @@ def _definitely_skip_node( node (which is _most_ nodes).""" if ( - dag._has_calibration_for(node) - or len(node.qargs) < self._min_qubits + len(node.qargs) < self._min_qubits or node.is_directive() or (self._instruction_supported(node.name, qubits) and not node.is_control_flow()) ): diff --git a/qiskit/transpiler/passmanager_config.py b/qiskit/transpiler/passmanager_config.py index 52f3d65449e5..d704b095b212 100644 --- a/qiskit/transpiler/passmanager_config.py +++ b/qiskit/transpiler/passmanager_config.py @@ -17,18 +17,15 @@ from qiskit.transpiler.coupling import CouplingMap from qiskit.transpiler.instruction_durations import InstructionDurations -from qiskit.utils.deprecate_pulse import deprecate_pulse_arg class PassManagerConfig: """Pass Manager Configuration.""" - @deprecate_pulse_arg("inst_map", predicate=lambda inst_map: inst_map is not None) def __init__( self, initial_layout=None, basis_gates=None, - inst_map=None, coupling_map=None, layout_method=None, routing_method=None, @@ -53,7 +50,6 @@ def __init__( initial_layout (Layout): Initial position of virtual qubits on physical qubits. basis_gates (list): List of basis gate names to unroll to. - inst_map (InstructionScheduleMap): Mapping object that maps gate to schedule. coupling_map (CouplingMap): Directed graph represented a coupling map. layout_method (str): the pass to use for choosing initial qubit @@ -93,7 +89,6 @@ def __init__( """ self.initial_layout = initial_layout self.basis_gates = basis_gates - self.inst_map = inst_map self.coupling_map = coupling_map self.init_method = init_method self.layout_method = layout_method @@ -155,14 +150,6 @@ def from_backend(cls, backend, _skip_target=False, **pass_manager_options): res.basis_gates = getattr(config, "basis_gates", None) else: res.basis_gates = backend.operation_names - if res.inst_map is None: - if backend_version < 2: - if hasattr(backend, "defaults"): - defaults = backend.defaults() - if defaults is not None: - res.inst_map = defaults.instruction_schedule_map - else: - res.inst_map = backend._instruction_schedule_map if res.coupling_map is None: if backend_version < 2: cmap_edge_list = getattr(config, "coupling_map", None) @@ -198,7 +185,6 @@ def __str__(self): "Pass Manager Config:\n" f"\tinitial_layout: {self.initial_layout}\n" f"\tbasis_gates: {self.basis_gates}\n" - f"\tinst_map: {str(self.inst_map).replace(newline, newline_tab)}\n" f"\tcoupling_map: {self.coupling_map}\n" f"\tlayout_method: {self.layout_method}\n" f"\trouting_method: {self.routing_method}\n" diff --git a/qiskit/transpiler/preset_passmanagers/builtin_plugins.py b/qiskit/transpiler/preset_passmanagers/builtin_plugins.py index d1ffa8d3d1b0..2fb02f6dbfd3 100644 --- a/qiskit/transpiler/preset_passmanagers/builtin_plugins.py +++ b/qiskit/transpiler/preset_passmanagers/builtin_plugins.py @@ -690,16 +690,11 @@ def pass_manager(self, pass_manager_config, optimization_level=None) -> PassMana instruction_durations = pass_manager_config.instruction_durations scheduling_method = pass_manager_config.scheduling_method timing_constraints = pass_manager_config.timing_constraints - inst_map = pass_manager_config.inst_map target = pass_manager_config.target - with warnings.catch_warnings(): - warnings.simplefilter(action="ignore", category=DeprecationWarning) - # Passing `inst_map` to `generate_scheduling` is deprecated in Qiskit 1.3 - # so filtering these warning when building pass managers - return common.generate_scheduling( - instruction_durations, scheduling_method, timing_constraints, inst_map, target - ) + return common.generate_scheduling( + instruction_durations, scheduling_method, timing_constraints, target + ) class AsapSchedulingPassManager(PassManagerStagePlugin): @@ -711,16 +706,11 @@ def pass_manager(self, pass_manager_config, optimization_level=None) -> PassMana instruction_durations = pass_manager_config.instruction_durations scheduling_method = pass_manager_config.scheduling_method timing_constraints = pass_manager_config.timing_constraints - inst_map = pass_manager_config.inst_map target = pass_manager_config.target - with warnings.catch_warnings(): - warnings.simplefilter(action="ignore", category=DeprecationWarning) - # Passing `inst_map` to `generate_scheduling` is deprecated in Qiskit 1.3 - # so filtering these warning when building pass managers - return common.generate_scheduling( - instruction_durations, scheduling_method, timing_constraints, inst_map, target - ) + return common.generate_scheduling( + instruction_durations, scheduling_method, timing_constraints, target + ) class DefaultSchedulingPassManager(PassManagerStagePlugin): @@ -732,16 +722,12 @@ def pass_manager(self, pass_manager_config, optimization_level=None) -> PassMana instruction_durations = pass_manager_config.instruction_durations scheduling_method = None timing_constraints = pass_manager_config.timing_constraints or TimingConstraints() - inst_map = pass_manager_config.inst_map target = pass_manager_config.target - with warnings.catch_warnings(): - warnings.simplefilter(action="ignore", category=DeprecationWarning) - # Passing `inst_map` to `generate_scheduling` is deprecated in Qiskit 1.3 - # so filtering these warning when building pass managers - return common.generate_scheduling( - instruction_durations, scheduling_method, timing_constraints, inst_map, target - ) + + return common.generate_scheduling( + instruction_durations, scheduling_method, timing_constraints, target + ) class DefaultLayoutPassManager(PassManagerStagePlugin): diff --git a/qiskit/transpiler/preset_passmanagers/common.py b/qiskit/transpiler/preset_passmanagers/common.py index 0f0a6b7ea0a7..b919027fbe73 100644 --- a/qiskit/transpiler/preset_passmanagers/common.py +++ b/qiskit/transpiler/preset_passmanagers/common.py @@ -569,7 +569,7 @@ def _direction_condition(property_set): def generate_scheduling( - instruction_durations, scheduling_method, timing_constraints, _, target=None + instruction_durations, scheduling_method, timing_constraints, target=None ): """Generate a post optimization scheduling :class:`~qiskit.transpiler.PassManager` diff --git a/qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py b/qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py index 62f991990d4e..71a91cfda967 100644 --- a/qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +++ b/qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py @@ -30,7 +30,6 @@ from qiskit.transpiler.target import Target, target_to_backend_properties from qiskit.transpiler.timing_constraints import TimingConstraints from qiskit.utils import deprecate_arg -from qiskit.utils.deprecate_pulse import deprecate_pulse_arg from .level0 import level_0_pass_manager from .level1 import level_1_pass_manager @@ -64,13 +63,11 @@ additional_msg="The `target` parameter should be used instead. You can build a `Target` instance " "with defined properties with Target.from_configuration(..., backend_properties=...)", ) -@deprecate_pulse_arg("inst_map", predicate=lambda inst_map: inst_map is not None) def generate_preset_pass_manager( optimization_level=2, backend=None, target=None, basis_gates=None, - inst_map=None, coupling_map=None, instruction_durations=None, backend_properties=None, @@ -102,7 +99,7 @@ def generate_preset_pass_manager( The target constraints for the pass manager construction can be specified through a :class:`.Target` instance, a :class:`.BackendV1` or :class:`.BackendV2` instance, or via loose constraints - (``basis_gates``, ``inst_map``, ``coupling_map``, ``backend_properties``, ``instruction_durations``, + (``basis_gates``, ``coupling_map``, ``backend_properties``, ``instruction_durations``, ``dt`` or ``timing_constraints``). The order of priorities for target constraints works as follows: if a ``target`` input is provided, it will take priority over any ``backend`` input or loose constraints. @@ -120,7 +117,6 @@ def generate_preset_pass_manager( **basis_gates** target basis_gates basis_gates **coupling_map** target coupling_map coupling_map **instruction_durations** target instruction_durations instruction_durations - **inst_map** target inst_map inst_map **dt** target dt dt **timing_constraints** target timing_constraints timing_constraints **backend_properties** target backend_properties backend_properties @@ -139,7 +135,7 @@ def generate_preset_pass_manager( * 3: even heavier optimization backend (Backend): An optional backend object which can be used as the - source of the default values for the ``basis_gates``, ``inst_map``, + source of the default values for the ``basis_gates``, ``coupling_map``, ``backend_properties``, ``instruction_durations``, ``timing_constraints``, and ``target``. If any of those other arguments are specified in addition to ``backend`` they will take precedence @@ -147,15 +143,10 @@ def generate_preset_pass_manager( target (Target): The :class:`~.Target` representing a backend compilation target. The following attributes will be inferred from this argument if they are not set: ``coupling_map``, ``basis_gates``, - ``instruction_durations``, ``inst_map``, ``timing_constraints`` + ``instruction_durations``, ``timing_constraints`` and ``backend_properties``. basis_gates (list): List of basis gate names to unroll to (e.g: ``['u1', 'u2', 'u3', 'cx']``). - inst_map (InstructionScheduleMap): DEPRECATED. Mapping object that maps gates to schedules. - If any user defined calibration is found in the map and this is used in a - circuit, transpiler attaches the custom gate definition to the circuit. - This enables one to flexibly override the low-level instruction - implementation. coupling_map (CouplingMap or list): Directed graph represented a coupling map. Multiple formats are supported: @@ -297,8 +288,6 @@ def generate_preset_pass_manager( ) backend = BackendV2Converter(backend) - # Check if a custom inst_map was specified before overwriting inst_map - _given_inst_map = bool(inst_map) # If there are no loose constraints => use backend target if available _no_loose_constraints = ( basis_gates is None @@ -321,11 +310,10 @@ def generate_preset_pass_manager( dt = _parse_dt(dt, backend) instruction_durations = _parse_instruction_durations(backend, instruction_durations, dt) timing_constraints = _parse_timing_constraints(backend, timing_constraints) - inst_map = _parse_inst_map(inst_map, backend) # The basis gates parser will set _skip_target to True if a custom basis gate is found # (known edge case). basis_gates, name_mapping, _skip_target = _parse_basis_gates( - basis_gates, backend, inst_map, _skip_target + basis_gates, backend, _skip_target ) coupling_map = _parse_coupling_map(coupling_map, backend) @@ -337,37 +325,22 @@ def generate_preset_pass_manager( # Only parse backend properties when the target isn't skipped to # preserve the former behavior of transpile. backend_properties = _parse_backend_properties(backend_properties, backend) - with warnings.catch_warnings(): - # TODO: inst_map will be removed in 2.0 - warnings.filterwarnings( - "ignore", - category=DeprecationWarning, - message=".*``inst_map`` is deprecated as of Qiskit 1.3.*", - module="qiskit", - ) - # Build target from constraints. - target = Target.from_configuration( - basis_gates=basis_gates, - num_qubits=backend.num_qubits if backend is not None else None, - coupling_map=coupling_map, - # If the instruction map has custom gates, do not give as config, the information - # will be added to the target with update_from_instruction_schedule_map - inst_map=inst_map if inst_map and not inst_map.has_custom_gate() else None, - backend_properties=backend_properties, - instruction_durations=instruction_durations, - concurrent_measurements=( - backend.target.concurrent_measurements if backend is not None else None - ), - dt=dt, - timing_constraints=timing_constraints, - custom_name_mapping=name_mapping, - ) - - # Update target with custom gate information. Note that this is an exception to the priority - # order (target > loose constraints), added to handle custom gates for scheduling passes. - if target is not None and _given_inst_map and inst_map.has_custom_gate(): - target = copy.deepcopy(target) - target.update_from_instruction_schedule_map(inst_map) + # Build target from constraints. + target = Target.from_configuration( + basis_gates=basis_gates, + num_qubits=backend.num_qubits if backend is not None else None, + coupling_map=coupling_map, + # If the instruction map has custom gates, do not give as config, the information + # will be added to the target with update_from_instruction_schedule_map + backend_properties=backend_properties, + instruction_durations=instruction_durations, + concurrent_measurements=( + backend.target.concurrent_measurements if backend is not None else None + ), + dt=dt, + timing_constraints=timing_constraints, + custom_name_mapping=name_mapping, + ) if target is not None: if coupling_map is None: @@ -376,8 +349,6 @@ def generate_preset_pass_manager( basis_gates = target.operation_names if instruction_durations is None: instruction_durations = target.durations() - if inst_map is None: - inst_map = target._get_instruction_schedule_map() if timing_constraints is None: timing_constraints = target.timing_constraints() if backend_properties is None: @@ -401,7 +372,6 @@ def generate_preset_pass_manager( pm_options = { "target": target, "basis_gates": basis_gates, - "inst_map": inst_map, "coupling_map": coupling_map, "instruction_durations": instruction_durations, "backend_properties": backend_properties, @@ -421,32 +391,25 @@ def generate_preset_pass_manager( "qubits_initially_zero": qubits_initially_zero, } - with warnings.catch_warnings(): - # inst_map is deprecated in the PassManagerConfig initializer - warnings.filterwarnings( - "ignore", - category=DeprecationWarning, - message=".*argument ``inst_map`` is deprecated as of Qiskit 1.3", - ) - if backend is not None: - pm_options["_skip_target"] = _skip_target - pm_config = PassManagerConfig.from_backend(backend, **pm_options) - else: - pm_config = PassManagerConfig(**pm_options) - if optimization_level == 0: - pm = level_0_pass_manager(pm_config) - elif optimization_level == 1: - pm = level_1_pass_manager(pm_config) - elif optimization_level == 2: - pm = level_2_pass_manager(pm_config) - elif optimization_level == 3: - pm = level_3_pass_manager(pm_config) - else: - raise ValueError(f"Invalid optimization level {optimization_level}") + if backend is not None: + pm_options["_skip_target"] = _skip_target + pm_config = PassManagerConfig.from_backend(backend, **pm_options) + else: + pm_config = PassManagerConfig(**pm_options) + if optimization_level == 0: + pm = level_0_pass_manager(pm_config) + elif optimization_level == 1: + pm = level_1_pass_manager(pm_config) + elif optimization_level == 2: + pm = level_2_pass_manager(pm_config) + elif optimization_level == 3: + pm = level_3_pass_manager(pm_config) + else: + raise ValueError(f"Invalid optimization level {optimization_level}") return pm -def _parse_basis_gates(basis_gates, backend, inst_map, skip_target): +def _parse_basis_gates(basis_gates, backend, skip_target): standard_gates = get_standard_gate_name_mapping() # Add control flow gates by default to basis set and name mapping default_gates = {"measure", "delay", "reset"}.union(CONTROL_FLOW_OP_NAMES) @@ -485,7 +448,7 @@ def _parse_basis_gates(basis_gates, backend, inst_map, skip_target): {name: backend.target.operation_from_name(name) for name in backend.operation_names} ) - # Check for custom instructions before removing calibrations + # Check for custom instructions for inst in instructions: if inst not in standard_gates and inst not in default_gates: if inst not in backend.operation_names: @@ -502,24 +465,9 @@ def _parse_basis_gates(basis_gates, backend, inst_map, skip_target): skip_target = True break - # Remove calibrated instructions, as they will be added later from the instruction schedule map - if inst_map is not None and not skip_target: - for inst in inst_map.instructions: - for qubit in inst_map.qubits_with_instruction(inst): - entry = inst_map._get_calibration_entry(inst, qubit) - if entry.user_provided and inst in instructions: - instructions.remove(inst) - return list(instructions) if instructions else None, name_mapping, skip_target -def _parse_inst_map(inst_map, backend): - # try getting inst_map from user, else backend - if inst_map is None and backend is not None: - inst_map = backend.target._get_instruction_schedule_map() - return inst_map - - def _parse_backend_properties(backend_properties, backend): # try getting backend_props from user, else backend if backend_properties is None and backend is not None: diff --git a/qiskit/transpiler/target.py b/qiskit/transpiler/target.py index 51e1967473f3..2a7e46b4ff6d 100644 --- a/qiskit/transpiler/target.py +++ b/qiskit/transpiler/target.py @@ -37,27 +37,18 @@ BaseInstructionProperties, ) -from qiskit.circuit.parameter import Parameter -from qiskit.circuit.parameterexpression import ParameterValueType -from qiskit.circuit.gate import Gate from qiskit.circuit.library.standard_gates import get_standard_gate_name_mapping -from qiskit.pulse.instruction_schedule_map import InstructionScheduleMap -from qiskit.pulse.calibration_entries import CalibrationEntry, ScheduleDef -from qiskit.pulse.schedule import Schedule, ScheduleBlock from qiskit.transpiler.coupling import CouplingMap from qiskit.transpiler.exceptions import TranspilerError from qiskit.transpiler.instruction_durations import InstructionDurations from qiskit.transpiler.timing_constraints import TimingConstraints from qiskit.providers.exceptions import BackendPropertyError -from qiskit.pulse.exceptions import PulseError, UnassignedDurationError -from qiskit.exceptions import QiskitError # import QubitProperties here to provide convenience alias for building a # full target from qiskit.providers.backend import QubitProperties # pylint: disable=unused-import from qiskit.providers.models.backendproperties import BackendProperties from qiskit.utils import deprecate_func -from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency, deprecate_pulse_arg logger = logging.getLogger(__name__) @@ -72,10 +63,6 @@ class InstructionProperties(BaseInstructionProperties): custom attributes for those custom/additional properties by the backend. """ - __slots__ = [ - "_calibration", - ] - def __new__( # pylint: disable=keyword-arg-before-vararg cls, duration=None, # pylint: disable=keyword-arg-before-vararg @@ -87,12 +74,10 @@ def __new__( # pylint: disable=keyword-arg-before-vararg cls, duration, error ) - @deprecate_pulse_arg("calibration", predicate=lambda cals: cals is not None) def __init__( self, duration: float | None = None, # pylint: disable=unused-argument error: float | None = None, # pylint: disable=unused-argument - calibration: Schedule | ScheduleBlock | CalibrationEntry | None = None, ): """Create a new ``InstructionProperties`` object @@ -101,79 +86,19 @@ def __init__( specified set of qubits error: The average error rate for the instruction on the specified set of qubits. - calibration: DEPRECATED. The pulse representation of the instruction. """ super().__init__() - self._calibration: CalibrationEntry | None = None - self._calibration_prop = calibration - - @property - @deprecate_pulse_dependency(is_property=True) - def calibration(self): - """The pulse representation of the instruction. - - .. note:: - - This attribute always returns a Qiskit pulse program, but it is internally - wrapped by the :class:`.CalibrationEntry` to manage unbound parameters - and to uniformly handle different data representation, - for example, un-parsed Pulse Qobj JSON that a backend provider may provide. - - This value can be overridden through the property setter in following manner. - When you set either :class:`.Schedule` or :class:`.ScheduleBlock` this is - always treated as a user-defined (custom) calibration and - the transpiler may automatically attach the calibration data to the output circuit. - This calibration data may appear in the wire format as an inline calibration, - which may further update the backend standard instruction set architecture. - - If you are a backend provider who provides a default calibration data - that is not needed to be attached to the transpiled quantum circuit, - you can directly set :class:`.CalibrationEntry` instance to this attribute, - in which you should set :code:`user_provided=False` when you define - calibration data for the entry. End users can still intentionally utilize - the calibration data, for example, to run pulse-level simulation of the circuit. - However, such entry doesn't appear in the wire format, and backend must - use own definition to compile the circuit down to the execution format. - - """ - return self._calibration_prop - - @calibration.setter - @deprecate_pulse_dependency(is_property=True) - def calibration(self, calibration: Schedule | ScheduleBlock | CalibrationEntry): - self._calibration_prop = calibration - - @property - def _calibration_prop(self): - if self._calibration is None: - return None - with warnings.catch_warnings(): - warnings.simplefilter(action="ignore", category=DeprecationWarning) - # Clean this alternative path from deprecation warning emitted by `get_schedule` - return self._calibration.get_schedule() - - @_calibration_prop.setter - def _calibration_prop(self, calibration: Schedule | ScheduleBlock | CalibrationEntry): - if isinstance(calibration, (Schedule, ScheduleBlock)): - new_entry = ScheduleDef() - new_entry.define(calibration, user_provided=True) - else: - new_entry = calibration - self._calibration = new_entry def __repr__(self): return ( - f"InstructionProperties(duration={self.duration}, error={self.error}" - f", calibration={self._calibration})" + f"InstructionProperties(duration={self.duration}, error={self.error})" ) def __getstate__(self) -> tuple: - return (super().__getstate__(), self._calibration_prop, self._calibration) + return (super().__getstate__()) def __setstate__(self, state: tuple): super().__setstate__(state[0]) - self._calibration_prop = state[1] - self._calibration = state[2] class Target(BaseTarget): @@ -462,125 +387,6 @@ def update_instruction_properties(self, instruction, qargs, properties): self._instruction_durations = None self._instruction_schedule_map = None - @deprecate_pulse_dependency - def update_from_instruction_schedule_map(self, inst_map, inst_name_map=None, error_dict=None): - """Update the target from an instruction schedule map. - - If the input instruction schedule map contains new instructions not in - the target they will be added. However, if it contains additional qargs - for an existing instruction in the target it will error. - - Args: - inst_map (InstructionScheduleMap): The instruction - inst_name_map (dict): An optional dictionary that maps any - instruction name in ``inst_map`` to an instruction object. - If not provided, instruction is pulled from the standard Qiskit gates, - and finally custom gate instance is created with schedule name. - error_dict (dict): A dictionary of errors of the form:: - - {gate_name: {qarg: error}} - - for example:: - - {'rx': {(0, ): 1.4e-4, (1, ): 1.2e-4}} - - For each entry in the ``inst_map`` if ``error_dict`` is defined - a when updating the ``Target`` the error value will be pulled from - this dictionary. If one is not found in ``error_dict`` then - ``None`` will be used. - """ - get_calibration = getattr(inst_map, "_get_calibration_entry") - - # Expand name mapping with custom gate name provided by user. - qiskit_inst_name_map = get_standard_gate_name_mapping() - if inst_name_map is not None: - qiskit_inst_name_map.update(inst_name_map) - - for inst_name in inst_map.instructions: - # Prepare dictionary of instruction properties - out_props = {} - for qargs in inst_map.qubits_with_instruction(inst_name): - try: - qargs = tuple(qargs) - except TypeError: - qargs = (qargs,) - try: - props = self._gate_map[inst_name][qargs] - except (KeyError, TypeError): - props = None - - entry = get_calibration(inst_name, qargs) - if entry.user_provided and getattr(props, "_calibration", None) != entry: - # It only copies user-provided calibration from the inst map. - # Backend defined entry must already exist in Target. - if self.dt is not None: - try: - duration = entry.get_schedule().duration * self.dt - except UnassignedDurationError: - # duration of schedule is parameterized - duration = None - else: - duration = None - props = InstructionProperties( - duration=duration, - calibration=entry, - ) - else: - if props is None: - # Edge case. Calibration is backend defined, but this is not - # registered in the backend target. Ignore this entry. - continue - try: - # Update gate error if provided. - props.error = error_dict[inst_name][qargs] - except (KeyError, TypeError): - pass - out_props[qargs] = props - if not out_props: - continue - # Prepare Qiskit Gate object assigned to the entries - if inst_name not in self._gate_map: - # Entry not found: Add new instruction - if inst_name in qiskit_inst_name_map: - # Remove qargs with length that doesn't match with instruction qubit number - inst_obj = qiskit_inst_name_map[inst_name] - normalized_props = {} - for qargs, prop in out_props.items(): - if len(qargs) != inst_obj.num_qubits: - continue - normalized_props[qargs] = prop - self.add_instruction(inst_obj, normalized_props, name=inst_name) - else: - # Check qubit length parameter name uniformity. - qlen = set() - param_names = set() - for qargs in inst_map.qubits_with_instruction(inst_name): - if isinstance(qargs, int): - qargs = (qargs,) - qlen.add(len(qargs)) - cal = getattr(out_props[tuple(qargs)], "_calibration") - param_names.add(tuple(cal.get_signature().parameters.keys())) - if len(qlen) > 1 or len(param_names) > 1: - raise QiskitError( - f"Schedules for {inst_name} are defined non-uniformly for " - f"multiple qubit lengths {qlen}, " - f"or different parameter names {param_names}. " - "Provide these schedules with inst_name_map or define them with " - "different names for different gate parameters." - ) - inst_obj = Gate( - name=inst_name, - num_qubits=next(iter(qlen)), - params=list(map(Parameter, next(iter(param_names)))), - ) - self.add_instruction(inst_obj, out_props, name=inst_name) - else: - # Entry found: Update "existing" instructions. - for qargs, prop in out_props.items(): - if qargs not in self._gate_map[inst_name]: - continue - self.update_instruction_properties(inst_name, qargs, prop) - def qargs_for_operation_name(self, operation): """Get the qargs for a given operation name @@ -620,104 +426,6 @@ def timing_constraints(self): self.granularity, self.min_length, self.pulse_alignment, self.acquire_alignment ) - @deprecate_pulse_dependency - def instruction_schedule_map(self): - """Return an :class:`~qiskit.pulse.InstructionScheduleMap` for the - instructions in the target with a pulse schedule defined. - - Returns: - InstructionScheduleMap: The instruction schedule map for the - instructions in this target with a pulse schedule defined. - """ - return self._get_instruction_schedule_map() - - def _get_instruction_schedule_map(self): - if self._instruction_schedule_map is not None: - return self._instruction_schedule_map - with warnings.catch_warnings(): - warnings.simplefilter(action="ignore", category=DeprecationWarning) - # `InstructionScheduleMap` is deprecated in Qiskit 1.3 but we want this alternative - # path to be clean of deprecation warnings - out_inst_schedule_map = InstructionScheduleMap() - - for instruction, qargs in self._gate_map.items(): - for qarg, properties in qargs.items(): - # Directly getting CalibrationEntry not to invoke .get_schedule(). - # This keeps PulseQobjDef un-parsed. - cal_entry = getattr(properties, "_calibration", None) - if cal_entry is not None: - # Use fast-path to add entries to the inst map. - out_inst_schedule_map._add(instruction, qarg, cal_entry) - self._instruction_schedule_map = out_inst_schedule_map - return out_inst_schedule_map - - @deprecate_pulse_dependency - def has_calibration( - self, - operation_name: str, - qargs: tuple[int, ...], - ) -> bool: - """Return whether the instruction (operation + qubits) defines a calibration. - - Args: - operation_name: The name of the operation for the instruction. - qargs: The tuple of qubit indices for the instruction. - - Returns: - Returns ``True`` if the calibration is supported and ``False`` if it isn't. - """ - return self._has_calibration(operation_name, qargs) - - def _has_calibration( - self, - operation_name: str, - qargs: tuple[int, ...], - ) -> bool: - qargs = tuple(qargs) - if operation_name not in self._gate_map: - return False - if qargs not in self._gate_map[operation_name]: - return False - return getattr(self._gate_map[operation_name][qargs], "_calibration", None) is not None - - @deprecate_pulse_dependency - def get_calibration( - self, - operation_name: str, - qargs: tuple[int, ...], - *args: ParameterValueType, - **kwargs: ParameterValueType, - ) -> Schedule | ScheduleBlock: - """Get calibrated pulse schedule for the instruction. - - If calibration is templated with parameters, one can also provide those values - to build a schedule with assigned parameters. - - Args: - operation_name: The name of the operation for the instruction. - qargs: The tuple of qubit indices for the instruction. - args: Parameter values to build schedule if any. - kwargs: Parameter values with name to build schedule if any. - - Returns: - Calibrated pulse schedule of corresponding instruction. - """ - return self._get_calibration(operation_name, qargs, *args, *kwargs) - - def _get_calibration( - self, - operation_name: str, - qargs: tuple[int, ...], - *args: ParameterValueType, - **kwargs: ParameterValueType, - ) -> Schedule | ScheduleBlock: - if not self._has_calibration(operation_name, qargs): - raise KeyError( - f"Calibration of instruction {operation_name} for qubit {qargs} is not defined." - ) - cal_entry = getattr(self._gate_map[operation_name][qargs], "_calibration") - return cal_entry.get_schedule(*args, **kwargs) - @property def operation_names(self): """Get the operation names in the target.""" @@ -940,9 +648,6 @@ def __str__(self): error = getattr(props, "error", None) if error is not None: prop_str_pieces.append(f"\t\t\tError Rate: {error:g}\n") - schedule = getattr(props, "_calibration", None) - if schedule is not None: - prop_str_pieces.append("\t\t\tWith pulse schedule calibration\n") extra_props = getattr(props, "properties", None) if extra_props is not None: extra_props_pieces = [ @@ -970,13 +675,11 @@ def __setstate__(self, state: tuple): super().__setstate__(state["base"]) @classmethod - @deprecate_pulse_arg("inst_map") def from_configuration( cls, basis_gates: list[str], num_qubits: int | None = None, coupling_map: CouplingMap | None = None, - inst_map: InstructionScheduleMap | None = None, backend_properties: BackendProperties | None = None, instruction_durations: InstructionDurations | None = None, concurrent_measurements: Optional[List[List[int]]] = None, @@ -1009,14 +712,6 @@ def from_configuration( coupling_map: The coupling map representing connectivity constraints on the backend. If specified all gates from ``basis_gates`` will be supported on all qubits (or pairs of qubits). - inst_map: DEPRECATED. The instruction schedule map representing the pulse - :class:`~.Schedule` definitions for each instruction. If this - is specified ``coupling_map`` must be specified. The - ``coupling_map`` is used as the source of truth for connectivity - and if ``inst_map`` is used the schedule is looked up based - on the instructions from the pair of ``basis_gates`` and - ``coupling_map``. If you want to define a custom gate for - a particular qubit or qubit pair, you can manually build :class:`.Target`. backend_properties: The :class:`~.BackendProperties` object which is used for instruction properties and qubit properties. If specified and instruction properties are intended to be used @@ -1124,7 +819,6 @@ def from_configuration( for qubit in range(num_qubits): error = None duration = None - calibration = None if backend_properties is not None: if duration is None: try: @@ -1135,17 +829,6 @@ def from_configuration( error = backend_properties.gate_error(gate, qubit) except BackendPropertyError: error = None - if inst_map is not None: - try: - calibration = inst_map._get_calibration_entry(gate, qubit) - # If we have dt defined and there is a custom calibration which is user - # generate use that custom pulse schedule for the duration. If it is - # not user generated than we assume it's the same duration as what is - # defined in the backend properties - if dt and calibration.user_provided: - duration = calibration.get_schedule().duration * dt - except PulseError: - calibration = None # Durations if specified manually should override model objects if instruction_durations is not None: try: @@ -1153,19 +836,12 @@ def from_configuration( except TranspilerError: duration = None - if error is None and duration is None and calibration is None: + if error is None and duration is None: gate_properties[(qubit,)] = None else: - with warnings.catch_warnings(): - warnings.filterwarnings( - "ignore", - category=DeprecationWarning, - message=".*``calibration`` is deprecated as of Qiskit 1.3.*", - module="qiskit", - ) - gate_properties[(qubit,)] = InstructionProperties( - duration=duration, error=error, calibration=calibration - ) + gate_properties[(qubit,)] = InstructionProperties( + duration=duration, error=error + ) target.add_instruction(name_mapping[gate], properties=gate_properties, name=gate) edges = list(coupling_map.get_edges()) for gate in two_qubit_gates: @@ -1173,7 +849,6 @@ def from_configuration( for edge in edges: error = None duration = None - calibration = None if backend_properties is not None: if duration is None: try: @@ -1184,17 +859,6 @@ def from_configuration( error = backend_properties.gate_error(gate, edge) except BackendPropertyError: error = None - if inst_map is not None: - try: - calibration = inst_map._get_calibration_entry(gate, edge) - # If we have dt defined and there is a custom calibration which is user - # generate use that custom pulse schedule for the duration. If it is - # not user generated than we assume it's the same duration as what is - # defined in the backend properties - if dt and calibration.user_provided: - duration = calibration.get_schedule().duration * dt - except PulseError: - calibration = None # Durations if specified manually should override model objects if instruction_durations is not None: try: @@ -1202,19 +866,12 @@ def from_configuration( except TranspilerError: duration = None - if error is None and duration is None and calibration is None: + if error is None and duration is None: gate_properties[edge] = None else: - with warnings.catch_warnings(): - warnings.filterwarnings( - "ignore", - category=DeprecationWarning, - message=".*``calibration`` is deprecated as of Qiskit 1.3.*", - module="qiskit", - ) - gate_properties[edge] = InstructionProperties( - duration=duration, error=error, calibration=calibration - ) + gate_properties[edge] = InstructionProperties( + duration=duration, error=error + ) target.add_instruction(name_mapping[gate], properties=gate_properties, name=gate) for gate in global_ideal_variable_width_gates: target.add_instruction(name_mapping[gate], name=gate) diff --git a/qiskit/visualization/circuit/matplotlib.py b/qiskit/visualization/circuit/matplotlib.py index 6f7359021839..cc79b61e1e79 100644 --- a/qiskit/visualization/circuit/matplotlib.py +++ b/qiskit/visualization/circuit/matplotlib.py @@ -135,7 +135,6 @@ def __init__( self._initial_state = initial_state self._global_phase = self._circuit.global_phase - self._calibrations = self._circuit._calibrations_prop self._expr_len = expr_len self._cregbundle = cregbundle @@ -420,7 +419,7 @@ def _get_layer_widths(self, node_data, wire_map, outer_circuit, glob_data): base_type = getattr(op, "base_gate", None) gate_text, ctrl_text, raw_gate_text = get_gate_ctrl_text( - op, "mpl", style=self._style, calibrations=self._calibrations + op, "mpl", style=self._style ) node_data[node].gate_text = gate_text node_data[node].ctrl_text = ctrl_text @@ -1888,22 +1887,6 @@ def _swap(self, xy, node, node_data, color=None): self._swap_cross(xy[1], color=color) self._line(xy[0], xy[1], lc=color) - # add calibration text - gate_text = node_data[node].gate_text.split("\n")[-1] - if node_data[node].raw_gate_text in self._calibrations: - xpos, ypos = xy[0] - self._ax.text( - xpos, - ypos + 0.7 * HIG, - gate_text, - ha="center", - va="top", - fontsize=self._style["sfs"], - color=self._style["tc"], - clip_on=True, - zorder=PORDER_TEXT, - ) - def _swap_cross(self, xy, color=None): """Draw the Swap cross symbol""" xpos, ypos = xy diff --git a/test/python/circuit/test_calibrations.py b/test/python/circuit/test_calibrations.py deleted file mode 100644 index 6df7302ee50e..000000000000 --- a/test/python/circuit/test_calibrations.py +++ /dev/null @@ -1,61 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021. -# -# 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 calibrations in quantum circuits.""" - -import unittest - -from qiskit.pulse import Schedule -from qiskit.circuit import QuantumCircuit -from qiskit.circuit.library import RZXGate -from test import QiskitTestCase # pylint: disable=wrong-import-order - - -class TestCalibrations(QiskitTestCase): - """Test composition of two circuits.""" - - def test_iadd(self): - """Test that __iadd__ keeps the calibrations.""" - qc_cal = QuantumCircuit(2) - qc_cal.rzx(0.5, 0, 1) - with self.assertWarns(DeprecationWarning): - qc_cal.add_calibration(RZXGate, (0, 1), params=[0.5], schedule=Schedule()) - - qc = QuantumCircuit(2) - qc &= qc_cal - - with self.assertWarns(DeprecationWarning): - self.assertEqual(qc.calibrations[RZXGate], {((0, 1), (0.5,)): Schedule(name="test")}) - self.assertEqual(qc_cal.calibrations, qc.calibrations) - - def test_add(self): - """Test that __add__ keeps the calibrations.""" - qc_cal = QuantumCircuit(2) - qc_cal.rzx(0.5, 0, 1) - with self.assertWarns(DeprecationWarning): - qc_cal.add_calibration(RZXGate, (0, 1), params=[0.5], schedule=Schedule()) - - qc = QuantumCircuit(2) & qc_cal - - with self.assertWarns(DeprecationWarning): - self.assertEqual(qc.calibrations[RZXGate], {((0, 1), (0.5,)): Schedule(name="test")}) - self.assertEqual(qc_cal.calibrations, qc.calibrations) - - qc = qc_cal & QuantumCircuit(2) - - with self.assertWarns(DeprecationWarning): - self.assertEqual(qc.calibrations[RZXGate], {((0, 1), (0.5,)): Schedule(name="test")}) - self.assertEqual(qc_cal.calibrations, qc.calibrations) - - -if __name__ == "__main__": - unittest.main() diff --git a/test/python/circuit/test_circuit_operations.py b/test/python/circuit/test_circuit_operations.py index bd35c8d920a5..f8667cf8afac 100644 --- a/test/python/circuit/test_circuit_operations.py +++ b/test/python/circuit/test_circuit_operations.py @@ -401,9 +401,6 @@ def test_copy_empty_like_circuit(self): qc.measure(qr[0], cr[0]) qc.measure(qr[1], cr[1]) - with self.assertWarns(DeprecationWarning): - sched = Schedule(Play(Gaussian(160, 0.1, 40), DriveChannel(0))) - qc.add_calibration("h", [0, 1], sched) copied = qc.copy_empty_like() qc.clear() @@ -411,8 +408,6 @@ def test_copy_empty_like_circuit(self): self.assertEqual(qc.global_phase, copied.global_phase) self.assertEqual(qc.name, copied.name) self.assertEqual(qc.metadata, copied.metadata) - with self.assertWarns(DeprecationWarning): - self.assertEqual(qc.calibrations, copied.calibrations) copied = qc.copy_empty_like("copy") self.assertEqual(copied.name, "copy") diff --git a/test/python/circuit/test_circuit_properties.py b/test/python/circuit/test_circuit_properties.py index 14b5364b2168..038b60c59c03 100644 --- a/test/python/circuit/test_circuit_properties.py +++ b/test/python/circuit/test_circuit_properties.py @@ -1230,103 +1230,6 @@ def test_num_qubits_multiple_register_circuit(self): circ = QuantumCircuit(q_reg1, q_reg2, q_reg3) self.assertEqual(circ.num_qubits, 18) - def test_calibrations_basis_gates(self): - """Check if the calibrations for basis gates provided are added correctly.""" - circ = QuantumCircuit(2) - - with self.assertWarns(DeprecationWarning): - with pulse.build() as q0_x180: - pulse.play(pulse.library.Gaussian(20, 1.0, 3.0), pulse.DriveChannel(0)) - with pulse.build() as q1_y90: - pulse.play(pulse.library.Gaussian(20, -1.0, 3.0), pulse.DriveChannel(1)) - - # Add calibration - circ.add_calibration(RXGate(3.14), [0], q0_x180) - circ.add_calibration(RYGate(1.57), [1], q1_y90) - - self.assertEqual(set(circ.calibrations.keys()), {"rx", "ry"}) - self.assertEqual(set(circ.calibrations["rx"].keys()), {((0,), (3.14,))}) - self.assertEqual(set(circ.calibrations["ry"].keys()), {((1,), (1.57,))}) - self.assertEqual( - circ.calibrations["rx"][((0,), (3.14,))].instructions, q0_x180.instructions - ) - self.assertEqual( - circ.calibrations["ry"][((1,), (1.57,))].instructions, q1_y90.instructions - ) - - def test_calibrations_custom_gates(self): - """Check if the calibrations for custom gates with params provided are added correctly.""" - circ = QuantumCircuit(3) - - with self.assertWarns(DeprecationWarning): - with pulse.build() as q0_x180: - pulse.play(pulse.library.Gaussian(20, 1.0, 3.0), pulse.DriveChannel(0)) - - # Add calibrations with a custom gate 'rxt' - circ.add_calibration("rxt", [0], q0_x180, params=[1.57, 3.14, 4.71]) - - self.assertEqual(set(circ.calibrations.keys()), {"rxt"}) - self.assertEqual(set(circ.calibrations["rxt"].keys()), {((0,), (1.57, 3.14, 4.71))}) - self.assertEqual( - circ.calibrations["rxt"][((0,), (1.57, 3.14, 4.71))].instructions, - q0_x180.instructions, - ) - - def test_calibrations_no_params(self): - """Check calibrations if the no params is provided with just gate name.""" - circ = QuantumCircuit(3) - - with self.assertWarns(DeprecationWarning): - with pulse.build() as q0_x180: - pulse.play(pulse.library.Gaussian(20, 1.0, 3.0), pulse.DriveChannel(0)) - - circ.add_calibration("h", [0], q0_x180) - - self.assertEqual(set(circ.calibrations.keys()), {"h"}) - self.assertEqual(set(circ.calibrations["h"].keys()), {((0,), ())}) - self.assertEqual(circ.calibrations["h"][((0,), ())].instructions, q0_x180.instructions) - - def test_has_calibration_for(self): - """Test that `has_calibration_for` returns a correct answer.""" - qc = QuantumCircuit(3) - - with self.assertWarns(DeprecationWarning): - with pulse.build() as q0_x180: - pulse.play(pulse.library.Gaussian(20, 1.0, 3.0), pulse.DriveChannel(0)) - qc.add_calibration("h", [0], q0_x180) - - qc.h(0) - qc.h(1) - - with self.assertWarns(DeprecationWarning): - self.assertTrue(qc.has_calibration_for(qc.data[0])) - self.assertFalse(qc.has_calibration_for(qc.data[1])) - - def test_has_calibration_for_legacy(self): - """Test that `has_calibration_for` returns a correct answer when presented with a legacy 3 - tuple.""" - qc = QuantumCircuit(3) - - with self.assertWarns(DeprecationWarning): - with pulse.build() as q0_x180: - pulse.play(pulse.library.Gaussian(20, 1.0, 3.0), pulse.DriveChannel(0)) - qc.add_calibration("h", [0], q0_x180) - - qc.h(0) - qc.h(1) - - with self.assertWarns(DeprecationWarning): - self.assertTrue( - qc.has_calibration_for( - (qc.data[0].operation, list(qc.data[0].qubits), list(qc.data[0].clbits)) - ) - ) - self.assertFalse( - qc.has_calibration_for( - (qc.data[1].operation, list(qc.data[1].qubits), list(qc.data[1].clbits)) - ) - ) - def test_metadata_copy_does_not_share_state(self): """Verify mutating the metadata of a circuit copy does not impact original.""" # ref: https://github.com/Qiskit/qiskit-terra/issues/6057 diff --git a/test/python/circuit/test_compose.py b/test/python/circuit/test_compose.py index 8221f81ad15e..d9d3cf79e8fa 100644 --- a/test/python/circuit/test_compose.py +++ b/test/python/circuit/test_compose.py @@ -591,38 +591,6 @@ def test_compose_gate(self): self.assertEqual(circuit_composed, circuit_expected) - def test_compose_calibrations(self): - """Test that composing two circuits updates calibrations.""" - circ_left = QuantumCircuit(1) - circ_right = QuantumCircuit(1) - with self.assertWarns(DeprecationWarning): - circ_left.add_calibration("h", [0], None) - circ_right.add_calibration("rx", [0], None) - circ = circ_left.compose(circ_right) - with self.assertWarns(DeprecationWarning): - self.assertEqual(len(circ.calibrations), 2) - self.assertEqual(len(circ_left.calibrations), 1) - - circ_left = QuantumCircuit(1) - circ_right = QuantumCircuit(1) - with self.assertWarns(DeprecationWarning): - circ_left.add_calibration("h", [0], None) - circ_right.add_calibration("h", [1], None) - circ = circ_left.compose(circ_right) - with self.assertWarns(DeprecationWarning): - self.assertEqual(len(circ.calibrations), 1) - self.assertEqual(len(circ.calibrations["h"]), 2) - self.assertEqual(len(circ_left.calibrations), 1) - - # Ensure that transpiled _calibration is defaultdict - qc = QuantumCircuit(2, 2) - qc.h(0) - qc.cx(0, 1) - qc.measure(0, 0) - qc = transpile(qc, None, basis_gates=["h", "cx"], coupling_map=[[0, 1], [1, 0]]) - with self.assertWarns(DeprecationWarning): - qc.add_calibration("cx", [0, 1], Schedule()) - def test_compose_one_liner(self): """Test building a circuit in one line, for fun.""" circ = QuantumCircuit(3) diff --git a/test/python/circuit/test_parameters.py b/test/python/circuit/test_parameters.py index bcd0316aee36..3480fb3221ec 100644 --- a/test/python/circuit/test_parameters.py +++ b/test/python/circuit/test_parameters.py @@ -723,165 +723,6 @@ def test_gate_multiplicity_binding(self): for instruction in qc2.data: self.assertEqual(float(instruction.operation.params[0]), 1.0) - def test_calibration_assignment(self): - """That that calibration mapping and the schedules they map are assigned together.""" - theta = Parameter("theta") - circ = QuantumCircuit(3, 3) - circ.append(Gate("rxt", 1, [theta]), [0]) - circ.measure(0, 0) - - with self.assertWarns(DeprecationWarning): - rxt_q0 = pulse.Schedule( - pulse.Play( - pulse.library.Gaussian(duration=128, sigma=16, amp=0.2 * theta / 3.14), - pulse.DriveChannel(0), - ) - ) - - circ.add_calibration("rxt", [0], rxt_q0, [theta]) - circ = circ.assign_parameters({theta: 3.14}) - - instruction = circ.data[0] - cal_key = ( - tuple(circ.find_bit(q).index for q in instruction.qubits), - tuple(instruction.operation.params), - ) - self.assertEqual(cal_key, ((0,), (3.14,))) - - with self.assertWarns(DeprecationWarning): - # Make sure that key from instruction data matches the calibrations dictionary - self.assertIn(cal_key, circ.calibrations["rxt"]) - sched = circ.calibrations["rxt"][cal_key] - self.assertEqual(sched.instructions[0][1].pulse.amp, 0.2) - - def test_calibration_assignment_doesnt_mutate(self): - """That that assignment doesn't mutate the original circuit.""" - theta = Parameter("theta") - circ = QuantumCircuit(3, 3) - circ.append(Gate("rxt", 1, [theta]), [0]) - circ.measure(0, 0) - - with self.assertWarns(DeprecationWarning): - rxt_q0 = pulse.Schedule( - pulse.Play( - pulse.library.Gaussian(duration=128, sigma=16, amp=0.2 * theta / 3.14), - pulse.DriveChannel(0), - ) - ) - - circ.add_calibration("rxt", [0], rxt_q0, [theta]) - circ_copy = copy.deepcopy(circ) - assigned_circ = circ.assign_parameters({theta: 3.14}) - - with self.assertWarns(DeprecationWarning): - self.assertEqual(circ.calibrations, circ_copy.calibrations) - self.assertNotEqual(assigned_circ.calibrations, circ.calibrations) - - def test_calibration_assignment_w_expressions(self): - """That calibrations with multiple parameters are assigned correctly""" - theta = Parameter("theta") - sigma = Parameter("sigma") - circ = QuantumCircuit(3, 3) - circ.append(Gate("rxt", 1, [theta / 2, sigma]), [0]) - circ.measure(0, 0) - - with self.assertWarns(DeprecationWarning): - rxt_q0 = pulse.Schedule( - pulse.Play( - pulse.library.Gaussian(duration=128, sigma=4 * sigma, amp=0.2 * theta / 3.14), - pulse.DriveChannel(0), - ) - ) - - circ.add_calibration("rxt", [0], rxt_q0, [theta / 2, sigma]) - circ = circ.assign_parameters({theta: 3.14, sigma: 4}) - - instruction = circ.data[0] - cal_key = ( - tuple(circ.find_bit(q).index for q in instruction.qubits), - tuple(instruction.operation.params), - ) - self.assertEqual(cal_key, ((0,), (3.14 / 2, 4))) - with self.assertWarns(DeprecationWarning): - # Make sure that key from instruction data matches the calibrations dictionary - self.assertIn(cal_key, circ.calibrations["rxt"]) - sched = circ.calibrations["rxt"][cal_key] - self.assertEqual(sched.instructions[0][1].pulse.amp, 0.2) - self.assertEqual(sched.instructions[0][1].pulse.sigma, 16) - - def test_substitution(self): - """Test Parameter substitution (vs bind).""" - alpha = Parameter("⍺") - beta = Parameter("beta") - with self.assertWarns(DeprecationWarning): - schedule = pulse.Schedule(pulse.ShiftPhase(alpha, pulse.DriveChannel(0))) - - circ = QuantumCircuit(3, 3) - circ.append(Gate("my_rz", 1, [alpha]), [0]) - with self.assertWarns(DeprecationWarning): - circ.add_calibration("my_rz", [0], schedule, [alpha]) - - circ = circ.assign_parameters({alpha: 2 * beta}) - - circ = circ.assign_parameters({beta: 1.57}) - with self.assertWarns(DeprecationWarning): - cal_sched = circ.calibrations["my_rz"][((0,), (3.14,))] - self.assertEqual(float(cal_sched.instructions[0][1].phase), 3.14) - - def test_partial_assignment(self): - """Expressions of parameters with partial assignment.""" - alpha = Parameter("⍺") - beta = Parameter("beta") - gamma = Parameter("γ") - phi = Parameter("ϕ") - - with self.assertWarns(DeprecationWarning): - with pulse.build() as my_cal: - pulse.set_frequency(alpha + beta, pulse.DriveChannel(0)) - pulse.shift_frequency(gamma + beta, pulse.DriveChannel(0)) - pulse.set_phase(phi, pulse.DriveChannel(1)) - - circ = QuantumCircuit(2, 2) - circ.append(Gate("custom", 2, [alpha, beta, gamma, phi]), [0, 1]) - with self.assertWarns(DeprecationWarning): - circ.add_calibration("custom", [0, 1], my_cal, [alpha, beta, gamma, phi]) - - # Partial bind - delta = 1e9 - freq = 4.5e9 - shift = 0.5e9 - phase = 3.14 / 4 - - circ = circ.assign_parameters({alpha: freq - delta}) - with self.assertWarns(DeprecationWarning): - cal_sched = list(circ.calibrations["custom"].values())[0] - with self.assertWarns(DeprecationWarning): - # instructions triggers conversion to Schedule - self.assertEqual(cal_sched.instructions[0][1].frequency, freq - delta + beta) - - circ = circ.assign_parameters({beta: delta}) - with self.assertWarns(DeprecationWarning): - cal_sched = list(circ.calibrations["custom"].values())[0] - with self.assertWarns(DeprecationWarning): - # instructions triggers conversion to Schedule - self.assertEqual(float(cal_sched.instructions[0][1].frequency), freq) - self.assertEqual(cal_sched.instructions[1][1].frequency, gamma + delta) - - circ = circ.assign_parameters({gamma: shift - delta}) - with self.assertWarns(DeprecationWarning): - cal_sched = list(circ.calibrations["custom"].values())[0] - with self.assertWarns(DeprecationWarning): - # instructions triggers conversion to Schedule - self.assertEqual(float(cal_sched.instructions[1][1].frequency), shift) - self.assertEqual(cal_sched.instructions[2][1].phase, phi) - - circ = circ.assign_parameters({phi: phase}) - with self.assertWarns(DeprecationWarning): - cal_sched = list(circ.calibrations["custom"].values())[0] - with self.assertWarns(DeprecationWarning): - # instructions triggers conversion to Schedule - self.assertEqual(float(cal_sched.instructions[2][1].phase), phase) - def test_circuit_generation(self): """Test creating a series of circuits parametrically""" theta = Parameter("θ") diff --git a/test/python/circuit/test_scheduled_circuit.py b/test/python/circuit/test_scheduled_circuit.py index f72b6d2adb23..83d59f7e8e9d 100644 --- a/test/python/circuit/test_scheduled_circuit.py +++ b/test/python/circuit/test_scheduled_circuit.py @@ -21,7 +21,6 @@ from qiskit.circuit.duration import convert_durations_to_dt from qiskit.providers.fake_provider import Fake27QPulseV1, GenericBackendV2 from qiskit.providers.basic_provider import BasicSimulator -from qiskit.scheduler import ScheduleConfig from qiskit.transpiler import InstructionProperties from qiskit.transpiler.exceptions import TranspilerError from qiskit.transpiler.instruction_durations import InstructionDurations diff --git a/test/python/compiler/test_transpiler.py b/test/python/compiler/test_transpiler.py index f1f691da5a89..acac023e6fce 100644 --- a/test/python/compiler/test_transpiler.py +++ b/test/python/compiler/test_transpiler.py @@ -1295,154 +1295,6 @@ def test_translation_method_synthesis(self, optimization_level, basis_gates): self.assertTrue(Operator(out).equiv(qc)) self.assertTrue(set(out.count_ops()).issubset(basis_gates)) - def test_transpiled_custom_gates_calibration(self): - """Test if transpiled calibrations is equal to custom gates circuit calibrations.""" - custom_180 = Gate("mycustom", 1, [3.14]) - custom_90 = Gate("mycustom", 1, [1.57]) - - circ = QuantumCircuit(2) - circ.append(custom_180, [0]) - circ.append(custom_90, [1]) - - with self.assertWarns(DeprecationWarning): - with pulse.build() as q0_x180: - pulse.play(pulse.library.Gaussian(20, 1.0, 3.0), pulse.DriveChannel(0)) - with pulse.build() as q1_y90: - pulse.play(pulse.library.Gaussian(20, -1.0, 3.0), pulse.DriveChannel(1)) - - # Add calibration - circ.add_calibration(custom_180, [0], q0_x180) - circ.add_calibration(custom_90, [1], q1_y90) - - transpiled_circuit = transpile( - circ, - backend=GenericBackendV2(num_qubits=4, seed=42), - layout_method="trivial", - seed_transpiler=42, - ) - with self.assertWarns(DeprecationWarning): - self.assertEqual(transpiled_circuit.calibrations, circ.calibrations) - self.assertEqual(list(transpiled_circuit.count_ops().keys()), ["mycustom"]) - self.assertEqual(list(transpiled_circuit.count_ops().values()), [2]) - - def test_transpiled_basis_gates_calibrations(self): - """Test if the transpiled calibrations is equal to basis gates circuit calibrations.""" - circ = QuantumCircuit(2) - circ.h(0) - - with self.assertWarns(DeprecationWarning): - with pulse.build() as q0_x180: - pulse.play(pulse.library.Gaussian(20, 1.0, 3.0), pulse.DriveChannel(0)) - - # Add calibration - circ.add_calibration("h", [0], q0_x180) - - transpiled_circuit = transpile( - circ, backend=GenericBackendV2(num_qubits=4, seed=42), seed_transpiler=42 - ) - with self.assertWarns(DeprecationWarning): - self.assertEqual(transpiled_circuit.calibrations, circ.calibrations) - - def test_transpile_calibrated_custom_gate_on_diff_qubit(self): - """Test if the custom, non calibrated gate raises QiskitError.""" - custom_180 = Gate("mycustom", 1, [3.14]) - - circ = QuantumCircuit(2) - circ.append(custom_180, [0]) - - with self.assertWarns(DeprecationWarning): - with pulse.build() as q0_x180: - pulse.play(pulse.library.Gaussian(20, 1.0, 3.0), pulse.DriveChannel(0)) - - # Add calibration - circ.add_calibration(custom_180, [1], q0_x180) - - with self.assertRaises(QiskitError): - transpile( - circ, - backend=GenericBackendV2(num_qubits=4, seed=42), - layout_method="trivial", - seed_transpiler=42, - optimization_level=1, - ) - - def test_transpile_calibrated_nonbasis_gate_on_diff_qubit(self): - """Test if the non-basis gates are transpiled if they are on different qubit that - is not calibrated.""" - circ = QuantumCircuit(2) - circ.h(0) - circ.h(1) - - with self.assertWarns(DeprecationWarning): - with pulse.build() as q0_x180: - pulse.play(pulse.library.Gaussian(20, 1.0, 3.0), pulse.DriveChannel(0)) - - # Add calibration - circ.add_calibration("h", [1], q0_x180) - - transpiled_circuit = transpile( - circ, backend=GenericBackendV2(num_qubits=4), seed_transpiler=42, optimization_level=1 - ) - with self.assertWarns(DeprecationWarning): - self.assertEqual(transpiled_circuit.calibrations, circ.calibrations) - self.assertEqual(set(transpiled_circuit.count_ops().keys()), {"rz", "sx", "h"}) - - def test_transpile_subset_of_calibrated_gates(self): - """Test transpiling a circuit with both basis gate (not-calibrated) and - a calibrated gate on different qubits.""" - x_180 = Gate("mycustom", 1, [3.14]) - - circ = QuantumCircuit(2) - circ.h(0) - circ.append(x_180, [0]) - circ.h(1) - - with self.assertWarns(DeprecationWarning): - with pulse.build() as q0_x180: - pulse.play(pulse.library.Gaussian(20, 1.0, 3.0), pulse.DriveChannel(0)) - - circ.add_calibration(x_180, [0], q0_x180) - circ.add_calibration("h", [1], q0_x180) # 'h' is calibrated on qubit 1 - - transpiled_circ = transpile( - circ, - backend=GenericBackendV2(num_qubits=4, seed=42), - layout_method="trivial", - seed_transpiler=42, - ) - self.assertEqual(set(transpiled_circ.count_ops().keys()), {"rz", "sx", "mycustom", "h"}) - - def test_parameterized_calibrations_transpile(self): - """Check that gates can be matched to their calibrations before and after parameter - assignment.""" - tau = Parameter("tau") - circ = QuantumCircuit(3, 3) - circ.append(Gate("rxt", 1, [2 * 3.14 * tau]), [0]) - - def q0_rxt(tau): - with self.assertWarns(DeprecationWarning): - with pulse.build() as q0_rxt: - pulse.play(pulse.library.Gaussian(20, 0.4 * tau, 3.0), pulse.DriveChannel(0)) - return q0_rxt - - with self.assertWarns(DeprecationWarning): - circ.add_calibration("rxt", [0], q0_rxt(tau), [2 * 3.14 * tau]) - - transpiled_circ = transpile( - circ, - backend=GenericBackendV2(num_qubits=4, seed=42), - layout_method="trivial", - seed_transpiler=42, - ) - self.assertEqual(set(transpiled_circ.count_ops().keys()), {"rxt"}) - circ = circ.assign_parameters({tau: 1}) - transpiled_circ = transpile( - circ, - backend=GenericBackendV2(num_qubits=4), - layout_method="trivial", - seed_transpiler=42, - ) - self.assertEqual(set(transpiled_circ.count_ops().keys()), {"rxt"}) def test_inst_durations_from_calibrations(self): """Test that circuit calibrations can be used instead of explicitly diff --git a/test/python/converters/test_circuit_to_dag.py b/test/python/converters/test_circuit_to_dag.py index 06d3dec654e4..644ccc28fd58 100644 --- a/test/python/converters/test_circuit_to_dag.py +++ b/test/python/converters/test_circuit_to_dag.py @@ -43,21 +43,6 @@ def test_circuit_and_dag(self): circuit_out = dag_to_circuit(dag) self.assertEqual(circuit_out, circuit_in) - def test_calibrations(self): - """Test that calibrations are properly copied over.""" - circuit_in = QuantumCircuit(1) - with self.assertWarns(DeprecationWarning): - circuit_in.add_calibration("h", [0], None) - self.assertEqual(len(circuit_in.calibrations), 1) - - dag = circuit_to_dag(circuit_in) - with self.assertWarns(DeprecationWarning): - self.assertEqual(len(dag.calibrations), 1) - - circuit_out = dag_to_circuit(dag) - with self.assertWarns(DeprecationWarning): - self.assertEqual(len(circuit_out.calibrations), 1) - def test_wires_from_expr_nodes_condition(self): """Test that the classical wires implied by an `Expr` node in a control-flow op's `condition` are correctly transferred.""" diff --git a/test/python/converters/test_circuit_to_dagdependency.py b/test/python/converters/test_circuit_to_dagdependency.py index 7d3bbfd2c49c..e1586fe69e99 100644 --- a/test/python/converters/test_circuit_to_dagdependency.py +++ b/test/python/converters/test_circuit_to_dagdependency.py @@ -61,21 +61,6 @@ def test_circuit_and_dag_canonical2(self): 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) - with self.assertWarns(DeprecationWarning): - circuit_in.add_calibration("h", [0], None) - self.assertEqual(len(circuit_in.calibrations), 1) - - dag_dependency = circuit_to_dagdependency(circuit_in) - with self.assertWarns(DeprecationWarning): - self.assertEqual(len(dag_dependency.calibrations), 1) - - circuit_out = dagdependency_to_circuit(dag_dependency) - with self.assertWarns(DeprecationWarning): - self.assertEqual(len(circuit_out.calibrations), 1) - def test_metadata(self): """Test circuit metadata is preservered through conversion.""" meta_dict = {"experiment_id": "1234", "execution_number": 4} diff --git a/test/python/converters/test_circuit_to_dagdependency_v2.py b/test/python/converters/test_circuit_to_dagdependency_v2.py index c7a31dc5767c..3067e4f34227 100644 --- a/test/python/converters/test_circuit_to_dagdependency_v2.py +++ b/test/python/converters/test_circuit_to_dagdependency_v2.py @@ -42,20 +42,6 @@ def test_circuit_and_dag_canonical(self): 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) - with self.assertWarns(DeprecationWarning): - circuit_in.add_calibration("h", [0], None) - self.assertEqual(len(circuit_in.calibrations), 1) - - dag_dependency = _circuit_to_dagdependency_v2(circuit_in) - self.assertEqual(len(dag_dependency.calibrations), 1) - - circuit_out = dagdependency_to_circuit(dag_dependency) - with self.assertWarns(DeprecationWarning): - self.assertEqual(len(circuit_out.calibrations), 1) - def test_metadata(self): """Test circuit metadata is preservered through conversion.""" meta_dict = {"experiment_id": "1234", "execution_number": 4} diff --git a/test/python/dagcircuit/test_compose.py b/test/python/dagcircuit/test_compose.py index 1bbd3031d310..52c7907e6ab7 100644 --- a/test/python/dagcircuit/test_compose.py +++ b/test/python/dagcircuit/test_compose.py @@ -632,23 +632,6 @@ def test_reject_inline_to_nonexistent_var(self): ): dest.compose(source, inline_captures=True) - def test_compose_calibrations(self): - """Test that compose carries over the calibrations.""" - dag_cal = QuantumCircuit(1) - dag_cal.append(Gate("", 1, []), qargs=[0]) - with self.assertWarns(DeprecationWarning): - dag_cal.add_calibration(Gate("", 1, []), [0], Schedule()) - - empty_dag = circuit_to_dag(QuantumCircuit(1)) - calibrated_dag = circuit_to_dag(dag_cal) - composed_dag = empty_dag.compose(calibrated_dag, inplace=False) - - with self.assertWarns(DeprecationWarning): - cal = {"": {((0,), ()): Schedule(name="sched0")}} - with self.assertWarns(DeprecationWarning): - self.assertEqual(composed_dag.calibrations, cal) - self.assertEqual(calibrated_dag.calibrations, cal) - if __name__ == "__main__": unittest.main() diff --git a/test/python/primitives/test_primitive.py b/test/python/primitives/test_primitive.py index 78bcff5ff405..55ef9c3f73f9 100644 --- a/test/python/primitives/test_primitive.py +++ b/test/python/primitives/test_primitive.py @@ -122,38 +122,13 @@ class TestCircuitKey(QiskitTestCase): 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): - with self.assertWarns(DeprecationWarning): - 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) - with self.assertWarns(DeprecationWarning): - qc.add_calibration("x", qubits=(0,), schedule=custom_gate) - - backend = GenericBackendV2( - num_qubits=2, basis_gates=["id", "u1", "u2", "u3", "cx"], seed=42 - ) - return transpile(qc, backend, scheduling_method="alap", optimization_level=1) - - keys = [_circuit_key(test_with_scheduling(i)) for i in range(1, 5)] - self.assertEqual(len(keys), len(set(keys))) + 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))) def test_circuit_key_controlflow(self): """Test for a circuit with control flow.""" diff --git a/test/python/pulse/test_block.py b/test/python/pulse/test_block.py index 652eba3ccf18..138584c278cf 100644 --- a/test/python/pulse/test_block.py +++ b/test/python/pulse/test_block.py @@ -760,24 +760,7 @@ def test_filter_channels(self): self.assertTrue(ch in filtered_blk.channels) self.assertEqual(filtered_blk, blk) - def test_filter_channels_nested_block(self): - """Test filtering over channels in a nested block.""" - with pulse.build() as blk: - with pulse.align_sequential(): - pulse.play(self.test_waveform0, self.d0) - pulse.delay(5, self.d0) - pulse.call( - self.backend.defaults() - .instruction_schedule_map._get_calibration_entry("cx", (0, 1)) - .get_schedule() - ) - - for ch in [self.d0, self.d1, pulse.ControlChannel(0)]: - filtered_blk = self._filter_and_test_consistency(blk, channels=[ch]) - self.assertEqual(len(filtered_blk.channels), 1) - self.assertTrue(ch in filtered_blk.channels) - - def test_filter_inst_types(self): + def test_filter_inst_types(self): """Test filtering on instruction types.""" with pulse.build() as blk: pulse.acquire(5, pulse.AcquireChannel(0), pulse.MemorySlot(0)) diff --git a/test/python/transpiler/test_dynamical_decoupling.py b/test/python/transpiler/test_dynamical_decoupling.py index d56595cd639a..9d875deb9065 100644 --- a/test/python/transpiler/test_dynamical_decoupling.py +++ b/test/python/transpiler/test_dynamical_decoupling.py @@ -338,162 +338,6 @@ def test_insert_dd_ghz_everywhere(self): self.assertEqual(ghz4_dd, expected) - def test_insert_dd_with_pulse_gate_calibrations(self): - """Test DD gates are inserted without error when circuit calibrations are used - - ┌───┐ ┌───────────────┐ ┌───┐ » - q_0: ──────┤ H ├─────────■──┤ Delay(75[dt]) ├──────┤ X ├───────» - ┌─────┴───┴─────┐ ┌─┴─┐└───────────────┘┌─────┴───┴──────┐» - q_1: ┤ Delay(50[dt]) ├─┤ X ├────────■────────┤ Delay(300[dt]) ├» - ├───────────────┴┐└───┘ ┌─┴─┐ └────────────────┘» - q_2: ┤ Delay(750[dt]) ├───────────┤ X ├──────────────■─────────» - ├────────────────┤ └───┘ ┌─┴─┐ » - q_3: ┤ Delay(950[dt]) ├────────────────────────────┤ X ├───────» - └────────────────┘ └───┘ » - meas: 4/══════════════════════════════════════════════════════════» - » - « ┌────────────────┐┌───┐┌───────────────┐ ░ ┌─┐ - « q_0: ┤ Delay(150[dt]) ├┤ X ├┤ Delay(75[dt]) ├─░─┤M├───────── - « └────────────────┘└───┘└───────────────┘ ░ └╥┘┌─┐ - « q_1: ─────────────────────────────────────────░──╫─┤M├────── - « ░ ║ └╥┘┌─┐ - « q_2: ─────────────────────────────────────────░──╫──╫─┤M├─── - « ░ ║ ║ └╥┘┌─┐ - « q_3: ─────────────────────────────────────────░──╫──╫──╫─┤M├ - « ░ ║ ║ ║ └╥┘ - «meas: 4/════════════════════════════════════════════╩══╩══╩══╩═ - « 0 1 2 3 - """ - dd_sequence = [XGate(), XGate()] - pm = PassManager( - [ - ALAPScheduleAnalysis(self.durations), - PadDynamicalDecoupling(self.durations, dd_sequence, qubits=[0]), - ] - ) - - # Change duration to 100 from the 50 in self.durations to make sure - # gate duration is used correctly. - with self.assertWarns(DeprecationWarning): - with pulse.builder.build() as x_sched: - pulse.builder.delay(100, pulse.DriveChannel(0)) - - circ_in = self.ghz4.measure_all(inplace=False) - with self.assertWarns(DeprecationWarning): - circ_in.add_calibration(XGate(), (0,), x_sched) - - ghz4_dd = pm.run(circ_in) - - expected = self.ghz4.copy() - expected = expected.compose(Delay(50), [1], front=True) - expected = expected.compose(Delay(750), [2], front=True) - expected = expected.compose(Delay(950), [3], front=True) - - # Delays different from those of the default case using self.durations - expected = expected.compose(Delay(75), [0]) - expected = expected.compose(XGate(), [0]) - expected = expected.compose(Delay(150), [0]) - expected = expected.compose(XGate(), [0]) - expected = expected.compose(Delay(75), [0]) - - expected = expected.compose(Delay(300), [1]) - - expected.measure_all() - with self.assertWarns(DeprecationWarning): - expected.add_calibration(XGate(), (0,), x_sched) - - self.assertEqual(ghz4_dd, expected) - - def test_insert_dd_with_pulse_gate_calibrations_with_parmas(self): - """Test DD gates are inserted without error when parameterized circuit calibrations are used - - ┌───┐ ┌───────────────┐ ┌───┐ » - q_0: ──────┤ H ├─────────■──┤ Delay(75[dt]) ├──────┤ X ├───────» - ┌─────┴───┴─────┐ ┌─┴─┐└───────────────┘┌─────┴───┴──────┐» - q_1: ┤ Delay(50[dt]) ├─┤ X ├────────■────────┤ Delay(300[dt]) ├» - ├───────────────┴┐└───┘ ┌─┴─┐ └────────────────┘» - q_2: ┤ Delay(750[dt]) ├───────────┤ X ├──────────────■─────────» - ├────────────────┤ └───┘ ┌─┴─┐ » - q_3: ┤ Delay(950[dt]) ├────────────────────────────┤ X ├───────» - └────────────────┘ └───┘ » - meas: 4/══════════════════════════════════════════════════════════» - » - « ┌────────────────┐┌───┐┌───────────────┐ ░ ┌─┐ - « q_0: ┤ Delay(150[dt]) ├┤ X ├┤ Delay(75[dt]) ├─░─┤M├───────── - « └────────────────┘└───┘└───────────────┘ ░ └╥┘┌─┐ - « q_1: ─────────────────────────────────────────░──╫─┤M├────── - « ░ ║ └╥┘┌─┐ - « q_2: ─────────────────────────────────────────░──╫──╫─┤M├─── - « ░ ║ ║ └╥┘┌─┐ - « q_3: ─────────────────────────────────────────░──╫──╫──╫─┤M├ - « ░ ║ ║ ║ └╥┘ - «meas: 4/════════════════════════════════════════════╩══╩══╩══╩═ - « 0 1 2 3 - """ - # Change duration to 100 from the 50 in self.durations to make sure - # gate duration is used correctly. - amp = Parameter("amp") - with self.assertWarns(DeprecationWarning): - with pulse.builder.build() as sched: - pulse.builder.play( - pulse.Gaussian(100, amp=amp, sigma=10.0), - pulse.DriveChannel(0), - ) - - class Echo(Gate): - """Dummy Gate subclass for testing - - In this test, we use a non-standard gate so we can add parameters - to it, in order to test the handling of parameters by - PadDynamicalDecoupling. PadDynamicalDecoupling checks that the DD - sequence is equivalent to the identity, so we can not use Gate - directly. Here we subclass Gate and add the identity as its matrix - representation to satisfy PadDynamicalDecoupling's check. - """ - - def __array__(self, dtype=None, copy=None): - if copy is False: - raise ValueError("cannot produce matrix without calculation") - return np.eye(2, dtype=dtype) - - # A gate with one unbound and one bound parameter to leave in the final - # circuit. - echo = Echo("echo", 1, [amp, 10.0]) - - circ_in = self.ghz4.measure_all(inplace=False) - with self.assertWarns(DeprecationWarning): - circ_in.add_calibration(echo, (0,), sched) - - dd_sequence = [echo, echo] - pm = PassManager( - [ - ALAPScheduleAnalysis(self.durations), - PadDynamicalDecoupling(self.durations, dd_sequence, qubits=[0]), - ] - ) - - ghz4_dd = pm.run(circ_in) - - expected = self.ghz4.copy() - expected = expected.compose(Delay(50), [1], front=True) - expected = expected.compose(Delay(750), [2], front=True) - expected = expected.compose(Delay(950), [3], front=True) - - # Delays different from those of the default case using self.durations - expected = expected.compose(Delay(75), [0]) - expected = expected.compose(echo, [0]) - expected = expected.compose(Delay(150), [0]) - expected = expected.compose(echo, [0]) - expected = expected.compose(Delay(75), [0]) - - expected = expected.compose(Delay(300), [1]) - - expected.measure_all() - with self.assertWarns(DeprecationWarning): - expected.add_calibration(echo, (0,), sched) - - self.assertEqual(ghz4_dd, expected) - def test_insert_dd_ghz_xy4(self): """Test XY4 sequence of DD gates. @@ -852,35 +696,6 @@ def test_insert_dd_bad_sequence(self): with self.assertRaises(TranspilerError): pm.run(self.ghz4) - @data(0.5, 1.5) - def test_dd_with_calibrations_with_parameters(self, param_value): - """Check that calibrations in a circuit with parameters work fine.""" - - circ = QuantumCircuit(2) - circ.x(0) - circ.cx(0, 1) - circ.rx(param_value, 1) - - rx_duration = int(param_value * 1000) - - with self.assertWarns(DeprecationWarning): - with pulse.build() as rx: - pulse.play( - pulse.Gaussian(rx_duration, 0.1, rx_duration // 4), pulse.DriveChannel(1) - ) - - with self.assertWarns(DeprecationWarning): - circ.add_calibration("rx", (1,), rx, params=[param_value]) - - durations = InstructionDurations([("x", None, 100), ("cx", None, 300)]) - - dd_sequence = [XGate(), XGate()] - pm = PassManager( - [ALAPScheduleAnalysis(durations), PadDynamicalDecoupling(durations, dd_sequence)] - ) - - self.assertEqual(pm.run(circ).duration, rx_duration + 100 + 300) - def test_insert_dd_ghz_xy4_with_alignment(self): """Test DD with pulse alignment constraints. diff --git a/test/python/transpiler/test_gate_direction.py b/test/python/transpiler/test_gate_direction.py index 41734d1ca8ee..bd6e8e91add9 100644 --- a/test/python/transpiler/test_gate_direction.py +++ b/test/python/transpiler/test_gate_direction.py @@ -495,21 +495,6 @@ def test_target_cannot_flip_message(self): with self.assertRaisesRegex(TranspilerError, "my_2q_gate would be supported.*"): pass_(circuit) - def test_target_cannot_flip_message_calibrated(self): - """A suitable error message should be emitted if the gate would be supported if it were - flipped.""" - target = Target(num_qubits=2) - target.add_instruction(CXGate(), properties={(0, 1): None}) - - gate = Gate("my_2q_gate", 2, []) - circuit = QuantumCircuit(2) - circuit.append(gate, (1, 0)) - with self.assertWarns(DeprecationWarning): - circuit.add_calibration(gate, (0, 1), pulse.ScheduleBlock()) - - pass_ = GateDirection(None, target) - with self.assertRaisesRegex(TranspilerError, "my_2q_gate would be supported.*"): - pass_(circuit) def test_target_unknown_gate_message(self): """A suitable error message should be emitted if the gate isn't valid in either direction on @@ -525,35 +510,6 @@ def test_target_unknown_gate_message(self): with self.assertRaisesRegex(TranspilerError, "my_2q_gate.*not supported on qubits .*"): pass_(circuit) - def test_allows_calibrated_gates_coupling_map(self): - """Test that the gate direction pass allows a gate that's got a calibration to pass through - without error.""" - cm = CouplingMap([(1, 0)]) - - gate = Gate("my_2q_gate", 2, []) - circuit = QuantumCircuit(2) - circuit.append(gate, (0, 1)) - with self.assertWarns(DeprecationWarning): - circuit.add_calibration(gate, (0, 1), pulse.ScheduleBlock()) - - pass_ = GateDirection(cm) - self.assertEqual(pass_(circuit), circuit) - - def test_allows_calibrated_gates_target(self): - """Test that the gate direction pass allows a gate that's got a calibration to pass through - without error.""" - target = Target(num_qubits=2) - target.add_instruction(CXGate(), properties={(0, 1): None}) - - gate = Gate("my_2q_gate", 2, []) - circuit = QuantumCircuit(2) - circuit.append(gate, (0, 1)) - with self.assertWarns(DeprecationWarning): - circuit.add_calibration(gate, (0, 1), pulse.ScheduleBlock()) - - pass_ = GateDirection(None, target) - self.assertEqual(pass_(circuit), circuit) - if __name__ == "__main__": unittest.main() diff --git a/test/python/transpiler/test_normalize_rx_angle.py b/test/python/transpiler/test_normalize_rx_angle.py index 6f1c7f22ea76..8c75891738e1 100644 --- a/test/python/transpiler/test_normalize_rx_angle.py +++ b/test/python/transpiler/test_normalize_rx_angle.py @@ -26,6 +26,7 @@ from test import QiskitTestCase # pylint: disable=wrong-import-order +# Should we move this test entirely? (after we remove the pass???) @ddt class TestNormalizeRXAngle(QiskitTestCase): """Tests the NormalizeRXAngle pass.""" diff --git a/test/python/transpiler/test_passmanager_config.py b/test/python/transpiler/test_passmanager_config.py index fccd68f0a261..6c589d7b86e9 100644 --- a/test/python/transpiler/test_passmanager_config.py +++ b/test/python/transpiler/test_passmanager_config.py @@ -35,7 +35,6 @@ def test_config_from_backend(self): backend = Fake27QPulseV1() config = PassManagerConfig.from_backend(backend) self.assertEqual(config.basis_gates, backend.configuration().basis_gates) - self.assertEqual(config.inst_map, backend.defaults().instruction_schedule_map) self.assertEqual( str(config.coupling_map), str(CouplingMap(backend.configuration().coupling_map)) ) @@ -45,8 +44,6 @@ def test_config_from_backend_v2(self): backend = GenericBackendV2(num_qubits=27, seed=42) config = PassManagerConfig.from_backend(backend) self.assertEqual(config.basis_gates, backend.operation_names) - with self.assertWarns(DeprecationWarning): - self.assertEqual(config.inst_map, backend.instruction_schedule_map) self.assertEqual(config.coupling_map.get_edges(), backend.coupling_map.get_edges()) def test_invalid_backend(self): @@ -72,7 +69,6 @@ def test_from_backend_and_user_v1(self): ) self.assertEqual(config.basis_gates, ["user_gate"]) self.assertNotEqual(config.basis_gates, backend.configuration().basis_gates) - self.assertIsNone(config.inst_map) self.assertEqual( str(config.coupling_map), str(CouplingMap(backend.configuration().coupling_map)) ) @@ -98,20 +94,9 @@ def test_from_backend_and_user(self): ) self.assertEqual(config.basis_gates, ["user_gate"]) self.assertNotEqual(config.basis_gates, backend.operation_names) - self.assertEqual(config.inst_map.instructions, []) self.assertEqual(str(config.coupling_map), str(CouplingMap(backend.coupling_map))) self.assertEqual(config.initial_layout, initial_layout) - def test_from_backendv1_inst_map_is_none(self): - """Test that from_backend() works with backend that has defaults defined as None.""" - with self.assertWarns(DeprecationWarning): - backend = Fake27QPulseV1() - backend.defaults = lambda: None - with self.assertWarns(DeprecationWarning): - config = PassManagerConfig.from_backend(backend) - self.assertIsInstance(config, PassManagerConfig) - self.assertIsNone(config.inst_map) - def test_invalid_user_option(self): """Test from_backend() with an invalid user option.""" backend = GenericBackendV2(num_qubits=20, seed=42) @@ -123,12 +108,10 @@ def test_str(self): pm_config = PassManagerConfig.from_backend(BasicSimulator()) # For testing remove instruction schedule map, its str output is non-deterministic # based on hash seed - pm_config.inst_map = None str_out = str(pm_config) expected = """Pass Manager Config: \tinitial_layout: None \tbasis_gates: ['ccx', 'ccz', 'ch', 'cp', 'crx', 'cry', 'crz', 'cs', 'csdg', 'cswap', 'csx', 'cu', 'cu1', 'cu3', 'cx', 'cy', 'cz', 'dcx', 'delay', 'ecr', 'global_phase', 'h', 'id', 'iswap', 'measure', 'p', 'r', 'rccx', 'reset', 'rx', 'rxx', 'ry', 'ryy', 'rz', 'rzx', 'rzz', 's', 'sdg', 'swap', 'sx', 'sxdg', 't', 'tdg', 'u', 'u1', 'u2', 'u3', 'unitary', 'x', 'xx_minus_yy', 'xx_plus_yy', 'y', 'z'] -\tinst_map: None \tcoupling_map: None \tlayout_method: None \trouting_method: None diff --git a/test/python/transpiler/test_preset_passmanagers.py b/test/python/transpiler/test_preset_passmanagers.py index 5b23e777fac4..f6e25914d39b 100644 --- a/test/python/transpiler/test_preset_passmanagers.py +++ b/test/python/transpiler/test_preset_passmanagers.py @@ -1362,7 +1362,6 @@ def test_with_no_backend(self, optimization_level): optimization_level, coupling_map=target.coupling_map, basis_gates=target.operation_names, - inst_map=target.instruction_schedule_map, instruction_durations=target.instruction_durations, timing_constraints=target.target.timing_constraints(), target=target.target, diff --git a/test/python/transpiler/test_scheduling_padding_pass.py b/test/python/transpiler/test_scheduling_padding_pass.py index f5ebc349d814..8bedca4f01b6 100644 --- a/test/python/transpiler/test_scheduling_padding_pass.py +++ b/test/python/transpiler/test_scheduling_padding_pass.py @@ -819,34 +819,6 @@ def test_dag_introduces_extra_dependency_between_conditionals(self): self.assertEqual(expected, scheduled) - def test_scheduling_with_calibration(self): - """Test if calibrated instruction can update node duration.""" - qc = QuantumCircuit(2) - qc.x(0) - qc.cx(0, 1) - qc.x(1) - qc.cx(0, 1) - - with self.assertWarns(DeprecationWarning): - xsched = Schedule(Play(Constant(300, 0.1), DriveChannel(0))) - qc.add_calibration("x", (0,), xsched) - - durations = InstructionDurations([("x", None, 160), ("cx", None, 600)]) - pm = PassManager([ASAPScheduleAnalysis(durations), PadDelay()]) - scheduled = pm.run(qc) - - expected = QuantumCircuit(2) - expected.x(0) - expected.delay(300, 1) - expected.cx(0, 1) - expected.x(1) - expected.delay(160, 0) - expected.cx(0, 1) - with self.assertWarns(DeprecationWarning): - expected.add_calibration("x", (0,), xsched) - - self.assertEqual(expected, scheduled) - def test_padding_not_working_without_scheduling(self): """Test padding fails when un-scheduled DAG is input.""" qc = QuantumCircuit(1, 1) diff --git a/test/python/transpiler/test_target.py b/test/python/transpiler/test_target.py index 694ef38dc4fa..dfb9e771a4af 100644 --- a/test/python/transpiler/test_target.py +++ b/test/python/transpiler/test_target.py @@ -1019,11 +1019,10 @@ def __init__( self, duration=None, error=None, - calibration=None, tuned=None, diamond_norm_error=None, ): - super().__init__(duration=duration, error=error, calibration=calibration) + super().__init__(duration=duration, error=error) self.tuned = tuned self.diamond_norm_error = diamond_norm_error @@ -1698,7 +1697,7 @@ def test_empty_repr(self): properties = InstructionProperties() self.assertEqual( repr(properties), - "InstructionProperties(duration=None, error=None, calibration=None)", + "InstructionProperties(duration=None, error=None)", ) @@ -1760,17 +1759,14 @@ def test_inst_map(self): properties = fake_backend.properties() defaults = fake_backend.defaults() constraints = TimingConstraints(**config.timing_constraints) - with self.assertWarns(DeprecationWarning): - target = Target.from_configuration( - basis_gates=config.basis_gates, - num_qubits=config.num_qubits, - coupling_map=CouplingMap(config.coupling_map), - backend_properties=properties, - dt=config.dt, - inst_map=defaults.instruction_schedule_map, - timing_constraints=constraints, - ) - self.assertIsNotNone(target["sx"][(0,)].calibration) + target = Target.from_configuration( + basis_gates=config.basis_gates, + num_qubits=config.num_qubits, + coupling_map=CouplingMap(config.coupling_map), + backend_properties=properties, + dt=config.dt, + timing_constraints=constraints, + ) self.assertEqual(target.granularity, constraints.granularity) self.assertEqual(target.min_length, constraints.min_length) self.assertEqual(target.pulse_alignment, constraints.pulse_alignment) diff --git a/test/python/transpiler/test_vf2_layout.py b/test/python/transpiler/test_vf2_layout.py index 9fbc9ac45480..23396e7cc6c7 100644 --- a/test/python/transpiler/test_vf2_layout.py +++ b/test/python/transpiler/test_vf2_layout.py @@ -53,9 +53,8 @@ def assertLayout(self, dag, coupling_map, property_set, strict_direction=False): def run(dag, wire_map): for gate in dag.two_qubit_ops(): - with self.assertWarns(DeprecationWarning): - if dag.has_calibration_for(gate) or isinstance(gate.op, ControlFlowOp): - continue + if isinstance(gate.op, ControlFlowOp): + continue physical_q0 = wire_map[gate.qargs[0]] physical_q1 = wire_map[gate.qargs[1]] diff --git a/test/python/transpiler/test_vf2_post_layout.py b/test/python/transpiler/test_vf2_post_layout.py index 9aaab695197a..7a4535e4cb6b 100644 --- a/test/python/transpiler/test_vf2_post_layout.py +++ b/test/python/transpiler/test_vf2_post_layout.py @@ -46,9 +46,8 @@ def assertLayout(self, dag, coupling_map, property_set): def run(dag, wire_map): for gate in dag.two_qubit_ops(): - with self.assertWarns(DeprecationWarning): - if dag.has_calibration_for(gate) or isinstance(gate.op, ControlFlowOp): - continue + if isinstance(gate.op, ControlFlowOp): + continue physical_q0 = wire_map[gate.qargs[0]] physical_q1 = wire_map[gate.qargs[1]] self.assertTrue((physical_q0, physical_q1) in edges) @@ -72,9 +71,8 @@ def assertLayoutV2(self, dag, target, property_set): def run(dag, wire_map): for gate in dag.two_qubit_ops(): - with self.assertWarns(DeprecationWarning): - if dag.has_calibration_for(gate) or isinstance(gate.op, ControlFlowOp): - continue + if isinstance(gate.op, ControlFlowOp): + continue physical_q0 = wire_map[gate.qargs[0]] physical_q1 = wire_map[gate.qargs[1]] qargs = (physical_q0, physical_q1) @@ -556,9 +554,6 @@ def assertLayout(self, dag, coupling_map, property_set): layout = property_set["post_layout"] for gate in dag.two_qubit_ops(): - with self.assertWarns(DeprecationWarning): - if dag.has_calibration_for(gate): - continue physical_q0 = layout[gate.qargs[0]] physical_q1 = layout[gate.qargs[1]] self.assertTrue(coupling_map.graph.has_edge(physical_q0, physical_q1)) @@ -572,9 +567,6 @@ def assertLayoutV2(self, dag, target, property_set): layout = property_set["post_layout"] for gate in dag.two_qubit_ops(): - with self.assertWarns(DeprecationWarning): - if dag.has_calibration_for(gate): - continue physical_q0 = layout[gate.qargs[0]] physical_q1 = layout[gate.qargs[1]] qargs = (physical_q0, physical_q1) diff --git a/test/visual/mpl/circuit/references/calibrations.png b/test/visual/mpl/circuit/references/calibrations.png deleted file mode 100644 index c8f4d8fb08382ce9d95fcbb01342b4ba8c64dee5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7213 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 diff --git a/test/visual/mpl/circuit/references/calibrations_with_control_gates.png b/test/visual/mpl/circuit/references/calibrations_with_control_gates.png deleted file mode 100644 index 49db6bbbdf258d0e9ae4d62fc791a375fa8ed4f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8984 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 diff --git a/test/visual/mpl/circuit/references/calibrations_with_rzz_and_rxx.png b/test/visual/mpl/circuit/references/calibrations_with_rzz_and_rxx.png deleted file mode 100644 index 8c57d9d50352f3635fe933fe328d48e5afd3dde6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12305 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 BiH!gN diff --git a/test/visual/mpl/circuit/references/calibrations_with_swap_and_reset.png b/test/visual/mpl/circuit/references/calibrations_with_swap_and_reset.png deleted file mode 100644 index 2aa31394d7287ee4a0dbebaa35214d1415286945..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10213 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 diff --git a/test/visual/mpl/circuit/test_circuit_matplotlib_drawer.py b/test/visual/mpl/circuit/test_circuit_matplotlib_drawer.py index 0a2aaad0e718..0f179d7d7a60 100644 --- a/test/visual/mpl/circuit/test_circuit_matplotlib_drawer.py +++ b/test/visual/mpl/circuit/test_circuit_matplotlib_drawer.py @@ -114,149 +114,6 @@ def test_empty_circuit(self): ) self.assertGreaterEqual(ratio, self.threshold) - def test_calibrations(self): - """Test calibrations annotations - See https://github.com/Qiskit/qiskit-terra/issues/5920 - """ - - circuit = QuantumCircuit(2, 2) - circuit.h(0) - - from qiskit import pulse - - with self.assertWarns(DeprecationWarning): - with pulse.build(name="hadamard") as h_q0: - pulse.play( - pulse.library.Gaussian(duration=128, amp=0.1, sigma=16), pulse.DriveChannel(0) - ) - - circuit.add_calibration("h", [0], h_q0) - - fname = "calibrations.png" - self.circuit_drawer(circuit, output="mpl", filename=fname) - - ratio = VisualTestUtilities._save_diff( - self._image_path(fname), - self._reference_path(fname), - fname, - FAILURE_DIFF_DIR, - FAILURE_PREFIX, - ) - self.assertGreaterEqual(ratio, self.threshold) - - def test_calibrations_with_control_gates(self): - """Test calibrations annotations - See https://github.com/Qiskit/qiskit-terra/issues/5920 - """ - - circuit = QuantumCircuit(2, 2) - circuit.cx(0, 1) - circuit.ch(0, 1) - - from qiskit import pulse - - with self.assertWarns(DeprecationWarning): - with pulse.build(name="cnot") as cx_q01: - pulse.play( - pulse.library.Gaussian(duration=128, amp=0.1, sigma=16), pulse.DriveChannel(1) - ) - - circuit.add_calibration("cx", [0, 1], cx_q01) - - with pulse.build(name="ch") as ch_q01: - pulse.play( - pulse.library.Gaussian(duration=128, amp=0.1, sigma=16), pulse.DriveChannel(1) - ) - - circuit.add_calibration("ch", [0, 1], ch_q01) - - fname = "calibrations_with_control_gates.png" - self.circuit_drawer(circuit, output="mpl", filename=fname) - - ratio = VisualTestUtilities._save_diff( - self._image_path(fname), - self._reference_path(fname), - fname, - FAILURE_DIFF_DIR, - FAILURE_PREFIX, - ) - self.assertGreaterEqual(ratio, self.threshold) - - def test_calibrations_with_swap_and_reset(self): - """Test calibrations annotations - See https://github.com/Qiskit/qiskit-terra/issues/5920 - """ - - circuit = QuantumCircuit(2, 2) - circuit.swap(0, 1) - circuit.reset(0) - - from qiskit import pulse - - with self.assertWarns(DeprecationWarning): - with pulse.build(name="swap") as swap_q01: - pulse.play( - pulse.library.Gaussian(duration=128, amp=0.1, sigma=16), pulse.DriveChannel(1) - ) - - circuit.add_calibration("swap", [0, 1], swap_q01) - - with pulse.build(name="reset") as reset_q0: - pulse.play( - pulse.library.Gaussian(duration=128, amp=0.1, sigma=16), pulse.DriveChannel(1) - ) - - circuit.add_calibration("reset", [0], reset_q0) - - fname = "calibrations_with_swap_and_reset.png" - self.circuit_drawer(circuit, output="mpl", filename=fname) - - ratio = VisualTestUtilities._save_diff( - self._image_path(fname), - self._reference_path(fname), - fname, - FAILURE_DIFF_DIR, - FAILURE_PREFIX, - ) - self.assertGreaterEqual(ratio, self.threshold) - - def test_calibrations_with_rzz_and_rxx(self): - """Test calibrations annotations - See https://github.com/Qiskit/qiskit-terra/issues/5920 - """ - circuit = QuantumCircuit(2, 2) - circuit.rzz(pi, 0, 1) - circuit.rxx(pi, 0, 1) - - from qiskit import pulse - - with self.assertWarns(DeprecationWarning): - with pulse.build(name="rzz") as rzz_q01: - pulse.play( - pulse.library.Gaussian(duration=128, amp=0.1, sigma=16), pulse.DriveChannel(1) - ) - - circuit.add_calibration("rzz", [0, 1], rzz_q01) - - with pulse.build(name="rxx") as rxx_q01: - pulse.play( - pulse.library.Gaussian(duration=128, amp=0.1, sigma=16), pulse.DriveChannel(1) - ) - - circuit.add_calibration("rxx", [0, 1], rxx_q01) - - fname = "calibrations_with_rzz_and_rxx.png" - self.circuit_drawer(circuit, output="mpl", filename=fname) - - ratio = VisualTestUtilities._save_diff( - self._image_path(fname), - self._reference_path(fname), - fname, - FAILURE_DIFF_DIR, - FAILURE_PREFIX, - ) - self.assertGreaterEqual(ratio, self.threshold) - def test_no_ops(self): """Test circuit with no ops. See https://github.com/Qiskit/qiskit-terra/issues/5393""" From 17ffa6ff2f5584cc09660f186176deb3cb153f5e Mon Sep 17 00:00:00 2001 From: Eli Arbel Date: Sun, 16 Feb 2025 14:17:12 +0200 Subject: [PATCH 13/29] Avoid generating pulse circuits in load_qpy & version >= 2.0 --- test/qpy_compat/test_qpy.py | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/test/qpy_compat/test_qpy.py b/test/qpy_compat/test_qpy.py index 0ba8e22d7690..628eff9984b5 100755 --- a/test/qpy_compat/test_qpy.py +++ b/test/qpy_compat/test_qpy.py @@ -426,6 +426,7 @@ def generate_control_flow_switch_circuits(): def generate_schedule_blocks(): """Standard QPY testcase for schedule blocks.""" + # pylint: disable=no-name-in-module from qiskit.pulse import builder, channels, library current_version = current_version_str.split(".") @@ -493,6 +494,7 @@ def generate_schedule_blocks(): def generate_referenced_schedule(): """Test for QPY serialization of unassigned reference schedules.""" + # pylint: disable=no-name-in-module from qiskit.pulse import builder, channels, library schedule_blocks = [] @@ -518,6 +520,7 @@ def generate_referenced_schedule(): def generate_calibrated_circuits(): """Test for QPY serialization with calibrations.""" + # pylint: disable=no-name-in-module from qiskit.pulse import builder, Constant, DriveChannel circuits = [] @@ -588,6 +591,7 @@ def generate_open_controlled_gates(): def generate_acquire_instruction_with_kernel_and_discriminator(): """Test QPY serialization with Acquire instruction with kernel and discriminator.""" + # pylint: disable=no-name-in-module from qiskit.pulse import builder, AcquireChannel, MemorySlot, Discriminator, Kernel schedule_blocks = [] @@ -820,8 +824,13 @@ def generate_v12_expr(): return [index, shift] -def generate_circuits(version_parts): - """Generate reference circuits.""" +def generate_circuits(version_parts, load_context=False): + """Generate reference circuits. + + If load_context is True, avoid generating Pulse-based reference + circuits. For those circuits, load_qpy only checks that the cached + circuits can be loaded without erroring.""" + output_circuits = { "full.qpy": [generate_full_circuit()], "unitary.qpy": [generate_unitary_gate_circuit()], @@ -849,10 +858,16 @@ def generate_circuits(version_parts): if version_parts >= (0, 19, 2): output_circuits["control_flow.qpy"] = generate_control_flow_circuits() if version_parts >= (0, 21, 0) and version_parts < (2, 0): - output_circuits["schedule_blocks.qpy"] = generate_schedule_blocks() - output_circuits["pulse_gates.qpy"] = generate_calibrated_circuits() + output_circuits["schedule_blocks.qpy"] = ( + None if load_context else generate_schedule_blocks() + ) + output_circuits["pulse_gates.qpy"] = ( + None if load_context else generate_calibrated_circuits() + ) if version_parts >= (0, 24, 0) and version_parts < (2, 0): - output_circuits["referenced_schedule_blocks.qpy"] = generate_referenced_schedule() + output_circuits["referenced_schedule_blocks.qpy"] = ( + None if load_context else generate_referenced_schedule() + ) if version_parts >= (0, 24, 0): output_circuits["control_flow_switch.qpy"] = generate_control_flow_switch_circuits() if version_parts >= (0, 24, 1): @@ -862,7 +877,7 @@ def generate_circuits(version_parts): output_circuits["layout.qpy"] = generate_layout_circuits() if version_parts >= (0, 25, 0) and version_parts < (2, 0): output_circuits["acquire_inst_with_kernel_and_disc.qpy"] = ( - generate_acquire_instruction_with_kernel_and_discriminator() + None if load_context else generate_acquire_instruction_with_kernel_and_discriminator() ) output_circuits["control_flow_expr.qpy"] = generate_control_flow_expr() if version_parts >= (0, 45, 2): @@ -1007,10 +1022,11 @@ def _main(): version_match = re.search(VERSION_PATTERN, args.version, re.VERBOSE | re.IGNORECASE) version_parts = tuple(int(x) for x in version_match.group("release").split(".")) - qpy_files = generate_circuits(version_parts) if args.command == "generate": + qpy_files = generate_circuits(version_parts) generate_qpy(qpy_files) else: + qpy_files = generate_circuits(version_parts, load_context=True) load_qpy(qpy_files, version_parts) From c2fabe40bda3766a338047a013426b549304b9da Mon Sep 17 00:00:00 2001 From: Eli Arbel Date: Sun, 16 Feb 2025 18:18:49 +0200 Subject: [PATCH 14/29] Remove more stuff --- .../src/basis/basis_translator/mod.rs | 24 +++---- crates/accelerate/src/check_map.rs | 3 +- crates/accelerate/src/gate_direction.rs | 5 +- crates/circuit/src/converters.rs | 6 +- crates/circuit/src/dag_circuit.rs | 19 +----- qiskit/circuit/quantumcircuit.py | 4 +- qiskit/compiler/transpiler.py | 3 +- qiskit/converters/dagdependency_to_dag.py | 1 - qiskit/dagcircuit/dagdependency.py | 4 +- qiskit/dagcircuit/dagdependency_v2.py | 4 +- qiskit/providers/backend_compat.py | 6 +- .../fake_provider/utils/backend_converter.py | 2 +- qiskit/scheduler/__init__.py | 40 ------------ qiskit/transpiler/passes/__init__.py | 2 +- .../optimization/optimize_1q_commutation.py | 1 - .../optimization/optimize_1q_decomposition.py | 9 +-- .../passes/scheduling/alignments/__init__.py | 5 +- .../scheduling/alignments/check_durations.py | 1 - .../passes/scheduling/dynamical_decoupling.py | 1 - .../padding/dynamical_decoupling.py | 1 - .../passes/scheduling/time_unit_conversion.py | 1 - .../passes/synthesis/high_level_synthesis.py | 8 +-- .../preset_passmanagers/builtin_plugins.py | 2 - .../transpiler/preset_passmanagers/common.py | 4 +- .../generate_preset_pass_manager.py | 6 +- .../transpiler/preset_passmanagers/level3.py | 1 + qiskit/transpiler/target.py | 10 +-- qiskit/visualization/circuit/_utils.py | 9 +-- qiskit/visualization/circuit/matplotlib.py | 6 +- .../python/circuit/test_circuit_operations.py | 1 - .../python/circuit/test_circuit_properties.py | 4 +- test/python/circuit/test_compose.py | 2 - test/python/circuit/test_parameters.py | 2 - test/python/circuit/test_scheduled_circuit.py | 8 +-- test/python/compiler/test_transpiler.py | 48 -------------- test/python/dagcircuit/test_compose.py | 2 - test/python/primitives/test_primitive.py | 3 +- test/python/providers/test_fake_backends.py | 62 +------------------ test/python/pulse/test_block.py | 2 +- .../transpiler/test_dynamical_decoupling.py | 5 +- test/python/transpiler/test_gate_direction.py | 3 +- .../test_scheduling_padding_pass.py | 1 - test/python/transpiler/test_target.py | 1 - test/utils/providers/__init__.py | 15 ----- 44 files changed, 46 insertions(+), 301 deletions(-) delete mode 100644 qiskit/scheduler/__init__.py delete mode 100644 test/utils/providers/__init__.py diff --git a/crates/accelerate/src/basis/basis_translator/mod.rs b/crates/accelerate/src/basis/basis_translator/mod.rs index ee9471505d3c..8c9d6449d934 100644 --- a/crates/accelerate/src/basis/basis_translator/mod.rs +++ b/crates/accelerate/src/basis/basis_translator/mod.rs @@ -198,7 +198,7 @@ fn run( Ok(out_dag) } -/// Method that extracts all non-calibrated gate instances identifiers from a DAGCircuit. +/// Method that extracts all gate instances identifiers from a DAGCircuit. fn extract_basis( py: Python, circuit: &DAGCircuit, @@ -212,9 +212,8 @@ fn extract_basis( basis: &mut HashSet, min_qubits: usize, ) -> PyResult<()> { - for (node, operation) in circuit.op_nodes(true) { - if circuit.get_qargs(operation.qubits).len() >= min_qubits - { + for (_node, operation) in circuit.op_nodes(true) { + if circuit.get_qargs(operation.qubits).len() >= min_qubits { basis.insert((operation.op.name().to_string(), operation.op.num_qubits())); } if operation.op.control_flow() { @@ -243,8 +242,7 @@ fn extract_basis( .borrow(); for (index, inst) in circuit_data.iter().enumerate() { let instruction_object = circuit.get_item(index)?; - if circuit_data.get_qargs(inst.qubits).len() >= min_qubits - { + if circuit_data.get_qargs(inst.qubits).len() >= min_qubits { basis.insert((inst.op.name().to_string(), inst.op.num_qubits())); } if inst.op.control_flow() { @@ -263,7 +261,7 @@ fn extract_basis( } /// Method that extracts a mapping of all the qargs in the local_source basis -/// obtained from the [Target], to all non-calibrated gate instances identifiers from a DAGCircuit. +/// obtained from the [Target], to all gate instances identifiers from a DAGCircuit. /// When dealing with `ControlFlowOp` instances the function will perform a recursion call /// to a variant design to handle instances of `QuantumCircuit`. fn extract_basis_target( @@ -274,7 +272,7 @@ fn extract_basis_target( min_qubits: usize, qargs_with_non_global_operation: &HashMap, HashSet>, ) -> PyResult<()> { - for (node, node_obj) in dag.op_nodes(true) { + for (_node, node_obj) in dag.op_nodes(true) { let qargs: &[Qubit] = dag.get_qargs(node_obj.qubits); if qargs.len() < min_qubits { continue; @@ -318,8 +316,8 @@ fn extract_basis_target( unreachable!("Control flow op is not a control flow op. But control_flow is `true`") }; let bound_inst = op.instruction.bind(py); - // Use python side extraction instead of the Rust method `op.blocks` due to - // required usage of a python-space method `QuantumCircuit.has_calibration_for`. + // TODO: Use Rust method `op.blocks` instead of Python side extraction now that + // the usage of a python-space method `QuantumCircuit.has_calibration_for` is not needed anymore let blocks = bound_inst.getattr("blocks")?.try_iter()?; for block in blocks { extract_basis_target_circ( @@ -339,7 +337,6 @@ fn extract_basis_target( /// This needs to use a Python instance of `QuantumCircuit` due to it needing /// to access `has_calibration_for()` which is unavailable through rust. However, /// this API will be removed with the deprecation of `Pulse`. -// TODO: remove this fn extract_basis_target_circ( circuit: &Bound, source_basis: &mut HashSet, @@ -350,10 +347,9 @@ fn extract_basis_target_circ( let py = circuit.py(); let circ_data_bound = circuit.getattr("_data")?.downcast_into::()?; let circ_data = circ_data_bound.borrow(); - for (index, node_obj) in circ_data.iter().enumerate() { + for node_obj in circ_data.iter() { let qargs = circ_data.get_qargs(node_obj.qubits); - if qargs.len() < min_qubits - { + if qargs.len() < min_qubits { continue; } // Treat the instruction as on an incomplete basis if the qargs are in the diff --git a/crates/accelerate/src/check_map.rs b/crates/accelerate/src/check_map.rs index 5f8240fbb213..d439cdc48c5d 100644 --- a/crates/accelerate/src/check_map.rs +++ b/crates/accelerate/src/check_map.rs @@ -65,8 +65,7 @@ fn recurse<'py>( } } } - } else if qubits.len() == 2 && !check_qubits(qubits) - { + } else if qubits.len() == 2 && !check_qubits(qubits) { return Ok(Some(( inst.op.name().to_string(), [qubits[0].0, qubits[1].0], diff --git a/crates/accelerate/src/gate_direction.rs b/crates/accelerate/src/gate_direction.rs index 5a1871189b17..a345fde6fbe0 100755 --- a/crates/accelerate/src/gate_direction.rs +++ b/crates/accelerate/src/gate_direction.rs @@ -20,11 +20,9 @@ use pyo3::types::PyTuple; use qiskit_circuit::operations::OperationRef; use qiskit_circuit::packed_instruction::PackedOperation; use qiskit_circuit::{ - circuit_instruction::CircuitInstruction, circuit_instruction::ExtraInstructionAttributes, converters::{circuit_to_dag, QuantumCircuitData}, dag_circuit::DAGCircuit, - dag_node::{DAGNode, DAGOpNode}, imports, imports::get_std_gate_class, operations::Operation, @@ -335,8 +333,7 @@ where } } // No matching replacement found - if gate_complies(packed_inst, &[op_args1, op_args0]) - { + if gate_complies(packed_inst, &[op_args1, op_args0]) { return Err(TranspilerError::new_err(format!("{} would be supported on {:?} if the direction was swapped, but no rules are known to do that. {:?} can be automatically flipped.", packed_inst.op.name(), op_args, vec!["cx", "cz", "ecr", "swap", "rzx", "rxx", "ryy", "rzz"]))); // NOTE: Make sure to update the list of the supported gates if adding more replacements } else { diff --git a/crates/circuit/src/converters.rs b/crates/circuit/src/converters.rs index b49cfb1ed6cd..8ffe2e9c7a45 100644 --- a/crates/circuit/src/converters.rs +++ b/crates/circuit/src/converters.rs @@ -13,12 +13,8 @@ #[cfg(feature = "cache_pygates")] use std::sync::OnceLock; -use hashbrown::HashMap; use pyo3::prelude::*; -use pyo3::{ - intern, - types::{PyDict, PyList}, -}; +use pyo3::{intern, types::PyList}; use crate::circuit_data::CircuitData; use crate::dag_circuit::{DAGCircuit, NodeType}; diff --git a/crates/circuit/src/dag_circuit.rs b/crates/circuit/src/dag_circuit.rs index 31b31beff86f..ea0a56a81f0c 100644 --- a/crates/circuit/src/dag_circuit.rs +++ b/crates/circuit/src/dag_circuit.rs @@ -44,7 +44,7 @@ use pyo3::prelude::*; use pyo3::IntoPyObjectExt; use pyo3::types::{ - IntoPyDict, PyDict, PyInt, PyIterator, PyList, PySequence, PySet, PyString, PyTuple, PyType, + IntoPyDict, PyDict, PyInt, PyIterator, PyList, PySet, PyString, PyTuple, PyType, }; use rustworkx_core::dag_algo::layers; @@ -6942,23 +6942,6 @@ pub(crate) fn add_global_phase(py: Python, phase: &Param, other: &Param) -> PyRe type SortKeyType<'a> = (&'a [Qubit], &'a [Clbit]); -/// Emit a Python `DeprecationWarning` for pulse-related dependencies. -fn emit_pulse_dependency_deprecation(py: Python, msg: &str) { - let _ = imports::WARNINGS_WARN.get_bound(py).call1(( - PyString::new( - py, - &format!( - "The {} is deprecated as of Qiskit 1.3.0. It will be removed in Qiskit 2.0.0. \ - The entire Qiskit Pulse package is being deprecated \ - and this is a dependency on the package.", - msg - ), - ), - py.get_type::(), - 1, - )); -} - #[cfg(all(test, not(miri)))] mod test { use crate::circuit_instruction::ExtraInstructionAttributes; diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py index 39f4fa255673..5bf0f1f1fa5d 100644 --- a/qiskit/circuit/quantumcircuit.py +++ b/qiskit/circuit/quantumcircuit.py @@ -21,7 +21,7 @@ import itertools import multiprocessing as mp import typing -from collections import OrderedDict, defaultdict, namedtuple +from collections import OrderedDict, namedtuple from typing import ( Union, Optional, @@ -33,7 +33,6 @@ Mapping, Iterable, Any, - DefaultDict, Literal, overload, ) @@ -48,7 +47,6 @@ from qiskit.circuit.parameter import Parameter from qiskit.circuit.exceptions import CircuitError from qiskit.utils import deprecate_func -from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency from . import _classical_resource_map from .controlflow import ControlFlowOp, _builder_utils from .controlflow.builder import CircuitScopeInterface, ControlFlowBuilderBlock diff --git a/qiskit/compiler/transpiler.py b/qiskit/compiler/transpiler.py index 16e1da4a851b..a7cab7945fc2 100644 --- a/qiskit/compiler/transpiler.py +++ b/qiskit/compiler/transpiler.py @@ -24,7 +24,7 @@ from qiskit.providers.backend import Backend from qiskit.providers.backend_compat import BackendV2Converter from qiskit.providers.models.backendproperties import BackendProperties -from qiskit.pulse import Schedule, InstructionScheduleMap +from qiskit.pulse import Schedule from qiskit.transpiler import Layout, CouplingMap, PropertySet from qiskit.transpiler.basepasses import BasePass from qiskit.transpiler.exceptions import TranspilerError, CircuitTooWideForTarget @@ -33,7 +33,6 @@ from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager from qiskit.transpiler.target import Target from qiskit.utils import deprecate_arg -from qiskit.utils.deprecate_pulse import deprecate_pulse_arg logger = logging.getLogger(__name__) diff --git a/qiskit/converters/dagdependency_to_dag.py b/qiskit/converters/dagdependency_to_dag.py index 932d926ca10a..d1f0e80836ca 100644 --- a/qiskit/converters/dagdependency_to_dag.py +++ b/qiskit/converters/dagdependency_to_dag.py @@ -12,7 +12,6 @@ """Helper function for converting a dag dependency to a dag circuit""" from qiskit.dagcircuit.dagcircuit import DAGCircuit -from qiskit.dagcircuit.dagdependency import DAGDependency def dagdependency_to_dag(dagdependency): diff --git a/qiskit/dagcircuit/dagdependency.py b/qiskit/dagcircuit/dagdependency.py index 1ca633b0e9b4..1393bd0335b1 100644 --- a/qiskit/dagcircuit/dagdependency.py +++ b/qiskit/dagcircuit/dagdependency.py @@ -17,7 +17,7 @@ import math import heapq import typing -from collections import OrderedDict, defaultdict +from collections import OrderedDict from collections.abc import Iterator import rustworkx as rx @@ -28,8 +28,6 @@ from qiskit.circuit.classicalregister import ClassicalRegister, Clbit from qiskit.dagcircuit.exceptions import DAGDependencyError from qiskit.dagcircuit.dagdepnode import DAGDepNode -from qiskit.pulse import Schedule -from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency if typing.TYPE_CHECKING: from qiskit.circuit.parameterexpression import ParameterExpression diff --git a/qiskit/dagcircuit/dagdependency_v2.py b/qiskit/dagcircuit/dagdependency_v2.py index 5e174e5e12d3..246692189d70 100644 --- a/qiskit/dagcircuit/dagdependency_v2.py +++ b/qiskit/dagcircuit/dagdependency_v2.py @@ -15,10 +15,9 @@ import itertools import math -from collections import OrderedDict, defaultdict, namedtuple +from collections import OrderedDict, namedtuple from typing import Dict, List, Generator, Any -import numpy as np import rustworkx as rx from qiskit.circuit import ( @@ -26,7 +25,6 @@ ClassicalRegister, Qubit, Clbit, - Gate, ParameterExpression, ) from qiskit.circuit.controlflow import condition_resources diff --git a/qiskit/providers/backend_compat.py b/qiskit/providers/backend_compat.py index df6fa3e2d145..ed1b5bb1e175 100644 --- a/qiskit/providers/backend_compat.py +++ b/qiskit/providers/backend_compat.py @@ -15,7 +15,7 @@ from __future__ import annotations import logging import warnings -from typing import List, Iterable, Any, Dict, Optional +from typing import List, Any, Dict, Optional from qiskit.providers.backend import BackendV1, BackendV2 from qiskit.providers.backend import QubitProperties @@ -323,15 +323,12 @@ def __init__( ) self._options = self._backend._options self._properties = None - self._defaults = None with warnings.catch_warnings(): # The class QobjExperimentHeader is deprecated warnings.filterwarnings("ignore", category=DeprecationWarning, module="qiskit") if hasattr(self._backend, "properties"): self._properties = self._backend.properties() - if hasattr(self._backend, "defaults"): - self._defaults = self._backend.defaults() self._target = None self._name_mapping = name_mapping @@ -348,7 +345,6 @@ def target(self): self._target = convert_to_target( configuration=self._config, properties=self._properties, - defaults=self._defaults, custom_name_mapping=self._name_mapping, add_delay=self._add_delay, filter_faulty=self._filter_faulty, diff --git a/qiskit/providers/fake_provider/utils/backend_converter.py b/qiskit/providers/fake_provider/utils/backend_converter.py index bd0ccd3aae58..c5268dc2f414 100644 --- a/qiskit/providers/fake_provider/utils/backend_converter.py +++ b/qiskit/providers/fake_provider/utils/backend_converter.py @@ -26,7 +26,7 @@ from qiskit.circuit.reset import Reset from qiskit.providers.models.pulsedefaults import PulseDefaults -# TODO: do we need this function? + def convert_to_target(conf_dict: dict, props_dict: dict = None, defs_dict: dict = None) -> Target: """Uses configuration, properties and pulse defaults dicts to construct and return Target class. diff --git a/qiskit/scheduler/__init__.py b/qiskit/scheduler/__init__.py deleted file mode 100644 index 7062e01a941e..000000000000 --- a/qiskit/scheduler/__init__.py +++ /dev/null @@ -1,40 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2019. -# -# 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. - -""" -=========================================== -Circuit Scheduler (:mod:`qiskit.scheduler`) -=========================================== - -.. currentmodule:: qiskit.scheduler - -A circuit scheduler compiles a circuit program to a pulse program. - -Core API -======== - -.. autoclass:: ScheduleConfig - -.. currentmodule:: qiskit.scheduler.schedule_circuit -.. autofunction:: schedule_circuit -.. currentmodule:: qiskit.scheduler - -Pulse scheduling methods -======================== - -.. currentmodule:: qiskit.scheduler.methods -.. autofunction:: as_soon_as_possible -.. autofunction:: as_late_as_possible -.. currentmodule:: qiskit.scheduler -""" -from qiskit.scheduler import schedule_circuit -from qiskit.scheduler.config import ScheduleConfig diff --git a/qiskit/transpiler/passes/__init__.py b/qiskit/transpiler/passes/__init__.py index 1fd8454159a3..d675827ff582 100644 --- a/qiskit/transpiler/passes/__init__.py +++ b/qiskit/transpiler/passes/__init__.py @@ -262,7 +262,7 @@ from .synthesis import AQCSynthesisPlugin # calibration -from .calibration.rzx_templates import rzx_templates +from .calibration.rzx_templates import rzx_templates # TODO: remove this # circuit scheduling from .scheduling import TimeUnitConversion diff --git a/qiskit/transpiler/passes/optimization/optimize_1q_commutation.py b/qiskit/transpiler/passes/optimization/optimize_1q_commutation.py index 450490734e46..7c4acb1b59e1 100644 --- a/qiskit/transpiler/passes/optimization/optimize_1q_commutation.py +++ b/qiskit/transpiler/passes/optimization/optimize_1q_commutation.py @@ -224,7 +224,6 @@ def _step(self, dag): # perform the replacement if it was indeed a good idea if self._optimize1q._substitution_checks( - dag, (preceding_run or []) + run + (succeeding_run or []), new_preceding_run.op_nodes() + new_run.op_nodes() + new_succeeding_run.op_nodes(), self._optimize1q._basis_gates, diff --git a/qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py b/qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py index 8e75ce1e7a74..b00e4c9e5112 100644 --- a/qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +++ b/qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py @@ -160,9 +160,7 @@ def _gate_sequence_to_dag(self, best_synth_circuit): out_dag.apply_operation_back(op.operation, qubits, check=False) return out_dag - def _substitution_checks( - self, dag, old_run, new_circ, basis, qubit, old_error=None, new_error=None - ): + def _substitution_checks(self, old_run, new_circ, basis, qubit, old_error=None, new_error=None): """ Returns `True` when it is recommended to replace `old_run` with `new_circ` over `basis`. """ @@ -171,10 +169,7 @@ def _substitution_checks( # does this run have gates not in the image of ._decomposers? if basis is not None: - not_basis_p = any( - g.name not in basis - for g in old_run - ) + not_basis_p = any(g.name not in basis for g in old_run) else: # If no basis is specified then we're always in the basis not_basis_p = False diff --git a/qiskit/transpiler/passes/scheduling/alignments/__init__.py b/qiskit/transpiler/passes/scheduling/alignments/__init__.py index 8ecd68eacdbb..ca8658fff21a 100644 --- a/qiskit/transpiler/passes/scheduling/alignments/__init__.py +++ b/qiskit/transpiler/passes/scheduling/alignments/__init__.py @@ -33,6 +33,7 @@ value in units of dt, thus circuits involving delays may violate the constraints, which may result in failure in the circuit execution on the backend. +TODO: mentions pulse gates below. Do we want to keep these passes? There are two alignment constraint values reported by your quantum backend. In addition, if you want to define a custom instruction as a pulse gate, i.e. calibration, the underlying pulse instruction should satisfy other two waveform constraints. @@ -63,7 +64,7 @@ configuration in units of dt. This is the constraint for a single pulse :class:`Play` instruction that may constitute your pulse gate. The length of waveform samples should be multiple of this constraint value. - Violation of this constraint may result in failue in backend execution. + Violation of this constraint may result in failure in backend execution. Minimum pulse length constraint @@ -71,7 +72,7 @@ configuration in units of dt. This is the constraint for a single pulse :class:`Play` instruction that may constitute your pulse gate. The length of waveform samples should be greater than this constraint value. - Violation of this constraint may result in failue in backend execution. + Violation of this constraint may result in failure in backend execution. """ diff --git a/qiskit/transpiler/passes/scheduling/alignments/check_durations.py b/qiskit/transpiler/passes/scheduling/alignments/check_durations.py index 6d0d1db4b8bc..134f1c116a08 100644 --- a/qiskit/transpiler/passes/scheduling/alignments/check_durations.py +++ b/qiskit/transpiler/passes/scheduling/alignments/check_durations.py @@ -68,4 +68,3 @@ def run(self, dag: DAGCircuit): if not (dur % self.acquire_align == 0 and dur % self.pulse_align == 0): self.property_set["reschedule_required"] = True return - diff --git a/qiskit/transpiler/passes/scheduling/dynamical_decoupling.py b/qiskit/transpiler/passes/scheduling/dynamical_decoupling.py index c06a34983e7f..0fa1fa6dc975 100644 --- a/qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +++ b/qiskit/transpiler/passes/scheduling/dynamical_decoupling.py @@ -13,7 +13,6 @@ """Dynamical Decoupling insertion pass.""" import itertools -import warnings import numpy as np from qiskit.circuit import Gate, Delay, Reset diff --git a/qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py b/qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py index 3d25e17792c1..97b8df2aeac6 100644 --- a/qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +++ b/qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py @@ -14,7 +14,6 @@ from __future__ import annotations import logging -import warnings import numpy as np from qiskit.circuit import Gate, ParameterExpression, Qubit diff --git a/qiskit/transpiler/passes/scheduling/time_unit_conversion.py b/qiskit/transpiler/passes/scheduling/time_unit_conversion.py index bf23f226a315..2fb72f905622 100644 --- a/qiskit/transpiler/passes/scheduling/time_unit_conversion.py +++ b/qiskit/transpiler/passes/scheduling/time_unit_conversion.py @@ -12,7 +12,6 @@ """Unify time unit in circuit for scheduling and following passes.""" from typing import Set -import warnings from qiskit.circuit import Delay from qiskit.dagcircuit import DAGCircuit diff --git a/qiskit/transpiler/passes/synthesis/high_level_synthesis.py b/qiskit/transpiler/passes/synthesis/high_level_synthesis.py index cb025ea7896a..de0679387594 100644 --- a/qiskit/transpiler/passes/synthesis/high_level_synthesis.py +++ b/qiskit/transpiler/passes/synthesis/high_level_synthesis.py @@ -313,7 +313,7 @@ def _run( if top_level: for node in dag.op_nodes(): qubits = tuple(dag.find_bit(q).index for q in node.qargs) - if not self._definitely_skip_node(node, qubits, dag): + if not self._definitely_skip_node(node, qubits): break else: # The for-loop terminates without reaching the break statement @@ -353,7 +353,7 @@ def _run( processed = True # check if synthesis for the operation can be skipped - elif self._definitely_skip_node(node, qubits, dag): + elif self._definitely_skip_node(node, qubits): tracker.set_dirty(context.to_globals(qubits)) # next check control flow @@ -800,9 +800,7 @@ def _apply_annotations( return synthesized - def _definitely_skip_node( - self, node: DAGOpNode, qubits: tuple[int] | None, dag: DAGCircuit - ) -> bool: + def _definitely_skip_node(self, node: DAGOpNode, qubits: tuple[int] | None) -> bool: """Fast-path determination of whether a node can certainly be skipped (i.e. nothing will attempt to synthesise it) without accessing its Python-space `Operation`. diff --git a/qiskit/transpiler/preset_passmanagers/builtin_plugins.py b/qiskit/transpiler/preset_passmanagers/builtin_plugins.py index c799552979e1..7fd66a353978 100644 --- a/qiskit/transpiler/preset_passmanagers/builtin_plugins.py +++ b/qiskit/transpiler/preset_passmanagers/builtin_plugins.py @@ -13,7 +13,6 @@ """Built-in transpiler stage plugins for preset pass managers.""" import os -import warnings from qiskit.transpiler.passes.optimization.split_2q_unitaries import Split2QUnitaries from qiskit.transpiler.passmanager import PassManager @@ -731,7 +730,6 @@ def pass_manager(self, pass_manager_config, optimization_level=None) -> PassMana timing_constraints = pass_manager_config.timing_constraints or TimingConstraints() target = pass_manager_config.target - return common.generate_scheduling( instruction_durations, scheduling_method, timing_constraints, target ) diff --git a/qiskit/transpiler/preset_passmanagers/common.py b/qiskit/transpiler/preset_passmanagers/common.py index b919027fbe73..bf8ce1354744 100644 --- a/qiskit/transpiler/preset_passmanagers/common.py +++ b/qiskit/transpiler/preset_passmanagers/common.py @@ -568,9 +568,7 @@ def _direction_condition(property_set): return PassManager(unroll) -def generate_scheduling( - instruction_durations, scheduling_method, timing_constraints, target=None -): +def generate_scheduling(instruction_durations, scheduling_method, timing_constraints, target=None): """Generate a post optimization scheduling :class:`~qiskit.transpiler.PassManager` Args: diff --git a/qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py b/qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py index 71a91cfda967..9adbbd3e9277 100644 --- a/qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +++ b/qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py @@ -3,7 +3,6 @@ # (C) Copyright IBM 2024. # # 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 @@ -14,7 +13,6 @@ Preset pass manager generation function """ -import copy import warnings from qiskit.circuit.controlflow import CONTROL_FLOW_OP_NAMES, get_control_flow_name_mapping @@ -312,9 +310,7 @@ def generate_preset_pass_manager( timing_constraints = _parse_timing_constraints(backend, timing_constraints) # The basis gates parser will set _skip_target to True if a custom basis gate is found # (known edge case). - basis_gates, name_mapping, _skip_target = _parse_basis_gates( - basis_gates, backend, _skip_target - ) + basis_gates, name_mapping, _skip_target = _parse_basis_gates(basis_gates, backend, _skip_target) coupling_map = _parse_coupling_map(coupling_map, backend) if target is None: diff --git a/qiskit/transpiler/preset_passmanagers/level3.py b/qiskit/transpiler/preset_passmanagers/level3.py index ab01cc95bbf0..89b8b73c1415 100644 --- a/qiskit/transpiler/preset_passmanagers/level3.py +++ b/qiskit/transpiler/preset_passmanagers/level3.py @@ -31,6 +31,7 @@ def level_3_pass_manager(pass_manager_config: PassManagerConfig) -> StagedPassMa This pass manager applies the user-given initial layout. If none is given, a search for a perfect layout (i.e. one that satisfies all 2-qubit interactions) is conducted. If no such layout is found, and device calibration information is available, the + # TODO: what does device calibration mean in this context? circuit is mapped to the qubits with best readouts and to CX gates with highest fidelity. The pass manager then transforms the circuit to match the coupling constraints. diff --git a/qiskit/transpiler/target.py b/qiskit/transpiler/target.py index 2a7e46b4ff6d..d6700a63aa72 100644 --- a/qiskit/transpiler/target.py +++ b/qiskit/transpiler/target.py @@ -90,15 +90,7 @@ def __init__( super().__init__() def __repr__(self): - return ( - f"InstructionProperties(duration={self.duration}, error={self.error})" - ) - - def __getstate__(self) -> tuple: - return (super().__getstate__()) - - def __setstate__(self, state: tuple): - super().__setstate__(state[0]) + return f"InstructionProperties(duration={self.duration}, error={self.error})" class Target(BaseTarget): diff --git a/qiskit/visualization/circuit/_utils.py b/qiskit/visualization/circuit/_utils.py index 0aa6e7c10188..9ea7774abb8f 100644 --- a/qiskit/visualization/circuit/_utils.py +++ b/qiskit/visualization/circuit/_utils.py @@ -48,7 +48,7 @@ def _is_boolean_expression(gate_text, op): return isinstance(op, BooleanExpression) and gate_text == op.name -def get_gate_ctrl_text(op, drawer, style=None, calibrations=None): +def get_gate_ctrl_text(op, drawer, style=None): """Load the gate_text and ctrl_text strings based on names and labels""" anno_list = [] anno_text = "" @@ -123,13 +123,6 @@ def get_gate_ctrl_text(op, drawer, style=None, calibrations=None): ) and (op_type is not PauliEvolutionGate): gate_text = gate_text.capitalize() - if drawer == "mpl" and op.name in calibrations: - if isinstance(op, ControlledGate): - ctrl_text = "" if ctrl_text is None else ctrl_text - ctrl_text = "(cal)\n" + ctrl_text - else: - gate_text = gate_text + "\n(cal)" - if anno_text: gate_text += " - " + anno_text diff --git a/qiskit/visualization/circuit/matplotlib.py b/qiskit/visualization/circuit/matplotlib.py index cc79b61e1e79..73160f0a1b51 100644 --- a/qiskit/visualization/circuit/matplotlib.py +++ b/qiskit/visualization/circuit/matplotlib.py @@ -1454,7 +1454,7 @@ def _multiqubit_gate(self, node, node_data, glob_data, xy=None): # Swap gate if isinstance(op, SwapGate): - self._swap(xy, node, node_data, node_data[node].lc) + self._swap(xy, node_data[node].lc) return # RZZ Gate @@ -1746,7 +1746,7 @@ def _control_gate(self, node, node_data, glob_data, mod_control): self._gate(node, node_data, glob_data, xy[num_ctrl_qubits:][0]) elif isinstance(base_type, SwapGate): - self._swap(xy[num_ctrl_qubits:], node, node_data, node_data[node].lc) + self._swap(xy[num_ctrl_qubits:], node_data[node].lc) else: self._multiqubit_gate(node, node_data, glob_data, xy[num_ctrl_qubits:]) @@ -1881,7 +1881,7 @@ def _symmetric_gate(self, node, node_data, base_type, glob_data): ) self._line(qubit_b, qubit_t, lc=lc) - def _swap(self, xy, node, node_data, color=None): + def _swap(self, xy, color=None): """Draw a Swap gate""" self._swap_cross(xy[0], color=color) self._swap_cross(xy[1], color=color) diff --git a/test/python/circuit/test_circuit_operations.py b/test/python/circuit/test_circuit_operations.py index f8667cf8afac..b3f5a75fbf85 100644 --- a/test/python/circuit/test_circuit_operations.py +++ b/test/python/circuit/test_circuit_operations.py @@ -31,7 +31,6 @@ from qiskit.circuit.quantumcircuitdata import CircuitInstruction from qiskit.circuit.quantumregister import AncillaQubit, AncillaRegister, Qubit from qiskit.providers.basic_provider import BasicSimulator -from qiskit.pulse import DriveChannel, Gaussian, Play, Schedule from qiskit.quantum_info import Operator from test import QiskitTestCase # pylint: disable=wrong-import-order diff --git a/test/python/circuit/test_circuit_properties.py b/test/python/circuit/test_circuit_properties.py index 038b60c59c03..9d06f6546cec 100644 --- a/test/python/circuit/test_circuit_properties.py +++ b/test/python/circuit/test_circuit_properties.py @@ -15,10 +15,10 @@ import unittest import numpy as np -from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, pulse +from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit from qiskit.circuit import Clbit from qiskit.circuit.classical import expr, types -from qiskit.circuit.library import RXGate, RYGate, GlobalPhaseGate +from qiskit.circuit.library import GlobalPhaseGate from qiskit.circuit.exceptions import CircuitError from test import QiskitTestCase # pylint: disable=wrong-import-order diff --git a/test/python/circuit/test_compose.py b/test/python/circuit/test_compose.py index d9d3cf79e8fa..a9c47318a315 100644 --- a/test/python/circuit/test_compose.py +++ b/test/python/circuit/test_compose.py @@ -18,8 +18,6 @@ import numpy as np -from qiskit import transpile -from qiskit.pulse import Schedule from qiskit.circuit import ( QuantumRegister, ClassicalRegister, diff --git a/test/python/circuit/test_parameters.py b/test/python/circuit/test_parameters.py index 3480fb3221ec..2373fa7477f5 100644 --- a/test/python/circuit/test_parameters.py +++ b/test/python/circuit/test_parameters.py @@ -15,7 +15,6 @@ import unittest import cmath import math -import copy import pickle from operator import add, mul, sub, truediv import numpy @@ -29,7 +28,6 @@ from qiskit.circuit.parametertable import ParameterView from qiskit.circuit.exceptions import CircuitError from qiskit.compiler import transpile -from qiskit import pulse from qiskit.quantum_info import Operator from qiskit.providers.fake_provider import Fake5QV1, GenericBackendV2 from qiskit.providers.basic_provider import BasicSimulator diff --git a/test/python/circuit/test_scheduled_circuit.py b/test/python/circuit/test_scheduled_circuit.py index 7808f6018596..8911060dd83f 100644 --- a/test/python/circuit/test_scheduled_circuit.py +++ b/test/python/circuit/test_scheduled_circuit.py @@ -430,12 +430,6 @@ def test_convert_duration_to_dt(self): Tests fix for bug reported in PR #11782.""" backend = GenericBackendV2(num_qubits=3, seed=42) - with self.assertWarns(DeprecationWarning): - schedule_config = ScheduleConfig( - inst_map=backend.target.instruction_schedule_map(), - meas_map=backend.meas_map, - dt=backend.dt, - ) circ = QuantumCircuit(2) circ.cx(0, 1) @@ -457,7 +451,7 @@ def test_convert_duration_to_dt(self): for circuit in [circuit_dt, circuit_s, circuit_ms]: with self.subTest(circuit=circuit): converted_circ = convert_durations_to_dt( - circuit, dt_in_sec=schedule_config.dt, inplace=False + circuit, dt_in_sec=2.22e-10, inplace=False ) self.assertEqual( converted_circ.duration, diff --git a/test/python/compiler/test_transpiler.py b/test/python/compiler/test_transpiler.py index f2a3c41fa6b6..79f90272246c 100644 --- a/test/python/compiler/test_transpiler.py +++ b/test/python/compiler/test_transpiler.py @@ -27,7 +27,6 @@ ClassicalRegister, QuantumCircuit, QuantumRegister, - pulse, qasm3, qpy, ) @@ -78,7 +77,6 @@ from qiskit.providers.fake_provider import Fake20QV1, Fake27QPulseV1, GenericBackendV2 from qiskit.providers.basic_provider import BasicSimulator from qiskit.providers.options import Options -from qiskit.pulse import InstructionScheduleMap from qiskit.quantum_info import Operator, random_unitary from qiskit.utils import parallel from qiskit.transpiler import CouplingMap, Layout, PassManager @@ -1295,23 +1293,6 @@ def test_translation_method_synthesis(self, optimization_level, basis_gates): self.assertTrue(Operator(out).equiv(qc)) self.assertTrue(set(out.count_ops()).issubset(basis_gates)) - - def test_inst_durations_from_calibrations(self): - """Test that circuit calibrations can be used instead of explicitly - supplying inst_durations. - """ - qc = QuantumCircuit(2) - qc.append(Gate("custom", 1, []), [0]) - - with self.assertWarns(DeprecationWarning): - with pulse.build() as cal: - pulse.play(pulse.library.Gaussian(20, 1.0, 3.0), pulse.DriveChannel(0)) - qc.add_calibration("custom", [0], cal) - - out = transpile(qc, scheduling_method="alap", seed_transpiler=42) - with self.assertWarns(DeprecationWarning): - self.assertEqual(out.duration, cal.duration) - @data(0, 1, 2, 3) def test_circuit_with_delay(self, optimization_level): """Verify a circuit with delay can transpile to a scheduled circuit.""" @@ -2677,35 +2658,6 @@ def test_transpile_with_multiple_coupling_maps(self): seed_transpiler=42, ) - @data(0, 1, 2, 3) - def test_backend_and_custom_gate(self, opt_level): - """Test transpile() with BackendV2, custom basis pulse gate.""" - backend = GenericBackendV2( - num_qubits=5, - coupling_map=[[0, 1], [1, 0], [1, 2], [1, 3], [2, 1], [3, 1], [3, 4], [4, 3]], - seed=42, - ) - with self.assertWarns(DeprecationWarning): - inst_map = InstructionScheduleMap() - inst_map.add("newgate", [0, 1], pulse.ScheduleBlock()) - newgate = Gate("newgate", 2, []) - circ = QuantumCircuit(2) - circ.append(newgate, [0, 1]) - - with self.assertWarns(DeprecationWarning): - tqc = transpile( - circ, - backend, - inst_map=inst_map, - basis_gates=["newgate"], - optimization_level=opt_level, - seed_transpiler=42, - ) - self.assertEqual(len(tqc.data), 1) - self.assertEqual(tqc.data[0].operation, newgate) - for x in tqc.data[0].qubits: - self.assertIn((tqc.find_bit(x).index,), backend.target.qargs) - @ddt class TestTranspileMultiChipTarget(QiskitTestCase): diff --git a/test/python/dagcircuit/test_compose.py b/test/python/dagcircuit/test_compose.py index 52c7907e6ab7..9230fdc0b0de 100644 --- a/test/python/dagcircuit/test_compose.py +++ b/test/python/dagcircuit/test_compose.py @@ -27,8 +27,6 @@ from qiskit.circuit.classical import expr, types from qiskit.dagcircuit import DAGCircuit, DAGCircuitError from qiskit.converters import circuit_to_dag, dag_to_circuit -from qiskit.pulse import Schedule -from qiskit.circuit.gate import Gate from test import QiskitTestCase # pylint: disable=wrong-import-order diff --git a/test/python/primitives/test_primitive.py b/test/python/primitives/test_primitive.py index 55ef9c3f73f9..17d1459aec0c 100644 --- a/test/python/primitives/test_primitive.py +++ b/test/python/primitives/test_primitive.py @@ -17,11 +17,10 @@ from ddt import data, ddt, unpack from numpy import array, float32, float64, int32, int64 -from qiskit import QuantumCircuit, pulse, transpile +from qiskit import QuantumCircuit from qiskit.circuit.random import random_circuit from qiskit.primitives.base import validation from qiskit.primitives.utils import _circuit_key -from qiskit.providers.fake_provider import GenericBackendV2 from test import QiskitTestCase # pylint: disable=wrong-import-order diff --git a/test/python/providers/test_fake_backends.py b/test/python/providers/test_fake_backends.py index 2a272b91daef..56c084ff7fbe 100644 --- a/test/python/providers/test_fake_backends.py +++ b/test/python/providers/test_fake_backends.py @@ -33,7 +33,7 @@ FakeOpenPulse2Q, GenericBackendV2, ) -from qiskit.providers.backend_compat import BackendV2Converter, convert_to_target +from qiskit.providers.backend_compat import BackendV2Converter from qiskit.providers.models.backendproperties import BackendProperties from qiskit.providers.models.backendconfiguration import GateConfig from qiskit.providers.backend import BackendV2 @@ -734,63 +734,3 @@ def test_faulty_full_path_transpile_connected_cmap(self, opt_level): tqc = transpile(qc, v2_backend, seed_transpiler=433, optimization_level=opt_level) connections = [tuple(sorted(tqc.find_bit(q).index for q in x.qubits)) for x in tqc.data] self.assertNotIn((0, 1), connections) - - def test_convert_to_target_control_flow(self): - with self.assertWarns(DeprecationWarning): - backend = Fake27QPulseV1() - properties = backend.properties() - configuration = backend.configuration() - configuration.supported_instructions = [ - "cx", - "id", - "delay", - "measure", - "reset", - "rz", - "sx", - "x", - "if_else", - "for_loop", - "switch_case", - ] - defaults = backend.defaults() - with self.assertWarns(DeprecationWarning): - target = convert_to_target(configuration, properties, defaults) - self.assertTrue(target.instruction_supported("if_else", ())) - self.assertFalse(target.instruction_supported("while_loop", ())) - self.assertTrue(target.instruction_supported("for_loop", ())) - self.assertTrue(target.instruction_supported("switch_case", ())) - - def test_convert_unrelated_supported_instructions(self): - with self.assertWarns(DeprecationWarning): - backend = Fake27QPulseV1() - properties = backend.properties() - configuration = backend.configuration() - configuration.supported_instructions = [ - "cx", - "id", - "delay", - "measure", - "reset", - "rz", - "sx", - "x", - "play", - "u2", - "u3", - "u1", - "shiftf", - "acquire", - "setf", - "if_else", - "for_loop", - "switch_case", - ] - defaults = backend.defaults() - with self.assertWarns(DeprecationWarning): - target = convert_to_target(configuration, properties, defaults) - self.assertTrue(target.instruction_supported("if_else", ())) - self.assertFalse(target.instruction_supported("while_loop", ())) - self.assertTrue(target.instruction_supported("for_loop", ())) - self.assertTrue(target.instruction_supported("switch_case", ())) - self.assertFalse(target.instruction_supported("u3", (0,))) diff --git a/test/python/pulse/test_block.py b/test/python/pulse/test_block.py index 138584c278cf..b80f6df43f51 100644 --- a/test/python/pulse/test_block.py +++ b/test/python/pulse/test_block.py @@ -760,7 +760,7 @@ def test_filter_channels(self): self.assertTrue(ch in filtered_blk.channels) self.assertEqual(filtered_blk, blk) - def test_filter_inst_types(self): + def test_filter_inst_types(self): """Test filtering on instruction types.""" with pulse.build() as blk: pulse.acquire(5, pulse.AcquireChannel(0), pulse.MemorySlot(0)) diff --git a/test/python/transpiler/test_dynamical_decoupling.py b/test/python/transpiler/test_dynamical_decoupling.py index 9d875deb9065..767b1b577c0c 100644 --- a/test/python/transpiler/test_dynamical_decoupling.py +++ b/test/python/transpiler/test_dynamical_decoupling.py @@ -15,10 +15,9 @@ import unittest import numpy as np from numpy import pi -from ddt import ddt, data +from ddt import ddt -from qiskit import pulse -from qiskit.circuit import Gate, QuantumCircuit, Delay, Measure, Reset, Parameter +from qiskit.circuit import QuantumCircuit, Delay, Measure, Reset, Parameter from qiskit.circuit.library import XGate, YGate, RXGate, UGate, CXGate, HGate from qiskit.quantum_info import Operator from qiskit.transpiler.instruction_durations import InstructionDurations diff --git a/test/python/transpiler/test_gate_direction.py b/test/python/transpiler/test_gate_direction.py index bd6e8e91add9..223c144fa12f 100644 --- a/test/python/transpiler/test_gate_direction.py +++ b/test/python/transpiler/test_gate_direction.py @@ -17,7 +17,7 @@ import ddt -from qiskit import ClassicalRegister, QuantumRegister, QuantumCircuit, pulse +from qiskit import ClassicalRegister, QuantumRegister, QuantumCircuit from qiskit.circuit import Parameter, Gate from qiskit.circuit.library import ( CXGate, @@ -495,7 +495,6 @@ def test_target_cannot_flip_message(self): with self.assertRaisesRegex(TranspilerError, "my_2q_gate would be supported.*"): pass_(circuit) - def test_target_unknown_gate_message(self): """A suitable error message should be emitted if the gate isn't valid in either direction on the target.""" diff --git a/test/python/transpiler/test_scheduling_padding_pass.py b/test/python/transpiler/test_scheduling_padding_pass.py index 8bedca4f01b6..41c9bea956e2 100644 --- a/test/python/transpiler/test_scheduling_padding_pass.py +++ b/test/python/transpiler/test_scheduling_padding_pass.py @@ -18,7 +18,6 @@ from qiskit import QuantumCircuit from qiskit.circuit import Measure from qiskit.circuit.library import CXGate, HGate -from qiskit.pulse import Schedule, Play, Constant, DriveChannel from qiskit.transpiler.instruction_durations import InstructionDurations from qiskit.transpiler.passes import ( ASAPScheduleAnalysis, diff --git a/test/python/transpiler/test_target.py b/test/python/transpiler/test_target.py index dfb9e771a4af..30fc6b2f0a07 100644 --- a/test/python/transpiler/test_target.py +++ b/test/python/transpiler/test_target.py @@ -1757,7 +1757,6 @@ def test_inst_map(self): fake_backend = Fake7QPulseV1() config = fake_backend.configuration() properties = fake_backend.properties() - defaults = fake_backend.defaults() constraints = TimingConstraints(**config.timing_constraints) target = Target.from_configuration( basis_gates=config.basis_gates, diff --git a/test/utils/providers/__init__.py b/test/utils/providers/__init__.py deleted file mode 100644 index 46829845c9db..000000000000 --- a/test/utils/providers/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2023. -# -# 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. - -"""Module containing one qubit unitary synthesis methods.""" - -from .one_qubit_decompose import OneQubitEulerDecomposer From 81c316b887c2784cb9c02e444b59574fa36ef5ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elena=20Pe=C3=B1a=20Tapia?= Date: Mon, 17 Feb 2025 13:50:12 +0100 Subject: [PATCH 15/29] Add renos --- ...ove-fake-v1-backends-b66bc47886702904.yaml | 24 +++++++++++++++++++ ...ve-result-mitigators-e9b97fb2f9349b1c.yaml | 9 +++++++ 2 files changed, 33 insertions(+) create mode 100644 releasenotes/notes/remove-fake-v1-backends-b66bc47886702904.yaml create mode 100644 releasenotes/notes/remove-result-mitigators-e9b97fb2f9349b1c.yaml diff --git a/releasenotes/notes/remove-fake-v1-backends-b66bc47886702904.yaml b/releasenotes/notes/remove-fake-v1-backends-b66bc47886702904.yaml new file mode 100644 index 000000000000..b3e7d64be49a --- /dev/null +++ b/releasenotes/notes/remove-fake-v1-backends-b66bc47886702904.yaml @@ -0,0 +1,24 @@ +--- +upgrade_providers: + - | + All fake backend classes based on the deprecated ``BackendV1`` have been removed from the :mod:`.providers.fake_provider` module. + These clases have been deprecated since Qiskit 1.2 and were part of the deprecated ``BackendV1`` workflow. Their use in tests + has been replaced with the :class:`.GanericBackendV2` class, which allows to create custom instances of :class:`.BackendV2` that + implement a simulated :meth:`.BackendV2.run`. The removal affects: + + * Base classes: + * ``FakeBackend`` + * ``FakePulseBackend`` + * ``FakeQasmBackend`` + + * Fake backends for special testing purposes: + * ``Fake1Q`` + * ``FakeOpenPulse2Q`` + * ``FakeOpenPulse3Q`` + + * Legacy fake backends: + * ``Fake5QV1`` + * ``Fake20QV1`` + * ``Fake7QPulseV1`` + * ``Fake27QPulseV1`` + * ``Fake127QPulseV1`` \ No newline at end of file diff --git a/releasenotes/notes/remove-result-mitigators-e9b97fb2f9349b1c.yaml b/releasenotes/notes/remove-result-mitigators-e9b97fb2f9349b1c.yaml new file mode 100644 index 000000000000..aa10942e51e2 --- /dev/null +++ b/releasenotes/notes/remove-result-mitigators-e9b97fb2f9349b1c.yaml @@ -0,0 +1,9 @@ +--- +upgrade_misc: + - | + The ``qiskit.result.mitigation`` module has been removed following its deprecation in Qiskit 1.3. + The removal includes the ``LocalReadoutMitigator`` and ``CorrelatedReadoutMitigator`` classes + as well as the associated utils. + + There is no alternative path in Qiskit, as their functionality had been superseded by the mthree package, + found in https://github.com/Qiskit/qiskit-addon-mthree. From c46924ae6ad6fe1b8173d112859a0cd90d1263b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elena=20Pe=C3=B1a=20Tapia?= Date: Mon, 17 Feb 2025 13:53:52 +0100 Subject: [PATCH 16/29] Fix scheduling tests --- test/python/compiler/test_transpiler.py | 44 ++++++++++--------------- 1 file changed, 17 insertions(+), 27 deletions(-) diff --git a/test/python/compiler/test_transpiler.py b/test/python/compiler/test_transpiler.py index 6bf081be6482..cf0eb4c24a98 100644 --- a/test/python/compiler/test_transpiler.py +++ b/test/python/compiler/test_transpiler.py @@ -1516,37 +1516,27 @@ def test_scheduling_instruction_constraints_backend(self): """Test that scheduling-related loose transpile constraints work with BackendV2.""" - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="argument ``calibrate_instructions`` is deprecated", - ): - backend_v2 = GenericBackendV2( - 2, - calibrate_instructions=True, - coupling_map=[[0, 1]], - basis_gates=["cx", "h"], - seed=0, - ) + backend = GenericBackendV2( + 2, + coupling_map=[[0, 1]], + basis_gates=["cx", "h"], + seed=42, + ) qc = QuantumCircuit(2) qc.h(0) - qc.delay(500, 1, "dt") + qc.delay(0.000001, 1, "s") qc.cx(0, 1) - # update durations - durations = InstructionDurations.from_backend(backend_v2) - durations.update([("cx", [0, 1], 1000, "dt")]) - with self.assertWarnsRegex( - DeprecationWarning, - expected_regex="The `target` parameter should be used instead", - ): - scheduled = transpile( - qc, - backend=backend_v2, - scheduling_method="alap", - instruction_durations=durations, - layout_method="trivial", - ) - self.assertEqual(scheduled.duration, 1500) + # update cx to 2 seconds + backend.target.update_instruction_properties("cx", (0, 1), InstructionProperties(0.000001)) + + scheduled = transpile( + qc, + backend=backend, + scheduling_method="alap", + layout_method="trivial", + ) + self.assertEqual(scheduled.duration, 9010) def test_scheduling_instruction_constraints(self): """Test that scheduling-related loose transpile constraints work with target.""" From fb53bab6c402bd3c3e0e508a97c03369c2eddab7 Mon Sep 17 00:00:00 2001 From: Eli Arbel Date: Mon, 17 Feb 2025 11:22:34 +0200 Subject: [PATCH 17/29] Add reno and some misc fixes --- docs/apidoc/index.rst | 1 - docs/apidoc/scheduler.rst | 6 ----- qiskit/circuit/quantumcircuit.py | 2 +- qiskit/providers/backend_compat.py | 3 +++ .../generate_preset_pass_manager.py | 1 + ...e-pulse-calibrations-4486dc101b76ec51.yaml | 22 +++++++++++++++++++ test/python/circuit/test_scheduled_circuit.py | 4 +--- .../transpiler/test_normalize_rx_angle.py | 1 - 8 files changed, 28 insertions(+), 12 deletions(-) delete mode 100644 docs/apidoc/scheduler.rst create mode 100644 releasenotes/notes/remove-pulse-calibrations-4486dc101b76ec51.yaml diff --git a/docs/apidoc/index.rst b/docs/apidoc/index.rst index d0ec14a416e4..0fa886d83659 100644 --- a/docs/apidoc/index.rst +++ b/docs/apidoc/index.rst @@ -76,7 +76,6 @@ Pulse-level programming: :maxdepth: 1 pulse - scheduler Other: diff --git a/docs/apidoc/scheduler.rst b/docs/apidoc/scheduler.rst deleted file mode 100644 index 53328863ebee..000000000000 --- a/docs/apidoc/scheduler.rst +++ /dev/null @@ -1,6 +0,0 @@ -.. _qiskit-scheduler: - -.. automodule:: qiskit.scheduler - :no-members: - :no-inherited-members: - :no-special-members: diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py index 5bf0f1f1fa5d..3e5bfeed2751 100644 --- a/qiskit/circuit/quantumcircuit.py +++ b/qiskit/circuit/quantumcircuit.py @@ -805,7 +805,7 @@ class QuantumCircuit: .. automethod:: remove_final_measurements - Circuit properties + Circuit properties ================== Simple circuit metrics diff --git a/qiskit/providers/backend_compat.py b/qiskit/providers/backend_compat.py index ed1b5bb1e175..b4c34ee5b55c 100644 --- a/qiskit/providers/backend_compat.py +++ b/qiskit/providers/backend_compat.py @@ -45,6 +45,9 @@ def convert_to_target( Args: configuration: Backend configuration as ``BackendConfiguration`` properties: Backend property dictionary or ``BackendProperties`` + custom_name_mapping: A name mapping must be supplied for the operation + not included in Qiskit Standard Gate name mapping, otherwise the operation + will be dropped in the resulting ``Target`` object. add_delay: If True, adds delay to the instruction set. filter_faulty: If True, this filters the non-operational qubits. diff --git a/qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py b/qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py index 9adbbd3e9277..0106e53fccea 100644 --- a/qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +++ b/qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py @@ -3,6 +3,7 @@ # (C) Copyright IBM 2024. # # 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 diff --git a/releasenotes/notes/remove-pulse-calibrations-4486dc101b76ec51.yaml b/releasenotes/notes/remove-pulse-calibrations-4486dc101b76ec51.yaml new file mode 100644 index 000000000000..afe661448a61 --- /dev/null +++ b/releasenotes/notes/remove-pulse-calibrations-4486dc101b76ec51.yaml @@ -0,0 +1,22 @@ +--- +upgrade_circuits: + - | + As part of Pulse removal in Qiskit 2.0, the ``calibrations`` property has been removed + from the :class:`.QuantumCircuit`, :class:`.DAGCircuit` and :class:`.DAGDependency` classes. + In addition, the method ``has_calibration_for`` has been removed from the :class:`.QuantumCircuit` and + :class:`.DAGCircuit` classes and ``add_calibration`` has been removed from :class:`.QuantumCircuit`. +upgrade_transpiler: + - | + As part of Pulse removal in Qiskit 2.0, the ``inst_map`` argument has been removed from + the :func:`.generate_preset_pass_manager` and :func:`.transpile` functions, from the + :meth:`.Target.from_configuration` method and from the constructor of :class:`.PassManagerConfig`. + In addition, ``calibration`` has been removed from the :class:`.InstructionProperties` 's constructor and + is no longer a property of that class. + - | + As part of Pulse removal in Qiskit 2.0, the ``has_calibration``, ``get_calibration``, + ``instruction_schedule_map`` and ``update_from_instruction_schedule_map`` methods have been + removed from the :class:`.Target` class. +upgrade_misc: + - | + As part of Pulse removal in Qiskit 2.0, the ``sequence`` and ``schedule_circuit`` functions + together with the ``ScheduleConfig`` class have been removed. diff --git a/test/python/circuit/test_scheduled_circuit.py b/test/python/circuit/test_scheduled_circuit.py index 8911060dd83f..f3f3464b3f2c 100644 --- a/test/python/circuit/test_scheduled_circuit.py +++ b/test/python/circuit/test_scheduled_circuit.py @@ -450,9 +450,7 @@ def test_convert_duration_to_dt(self): for circuit in [circuit_dt, circuit_s, circuit_ms]: with self.subTest(circuit=circuit): - converted_circ = convert_durations_to_dt( - circuit, dt_in_sec=2.22e-10, inplace=False - ) + converted_circ = convert_durations_to_dt(circuit, dt_in_sec=2.22e-10, inplace=False) self.assertEqual( converted_circ.duration, ref_duration, diff --git a/test/python/transpiler/test_normalize_rx_angle.py b/test/python/transpiler/test_normalize_rx_angle.py index 8c75891738e1..6f1c7f22ea76 100644 --- a/test/python/transpiler/test_normalize_rx_angle.py +++ b/test/python/transpiler/test_normalize_rx_angle.py @@ -26,7 +26,6 @@ from test import QiskitTestCase # pylint: disable=wrong-import-order -# Should we move this test entirely? (after we remove the pass???) @ddt class TestNormalizeRXAngle(QiskitTestCase): """Tests the NormalizeRXAngle pass.""" From 935892be2183d7b9287c117eecfe3ca1034052ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elena=20Pe=C3=B1a=20Tapia?= Date: Mon, 17 Feb 2025 16:18:26 +0100 Subject: [PATCH 18/29] Remove BackendV1, converters, models, qobj and update tests. --- debug_qsd.py | 19 + docs/apidoc/providers_models.rst | 6 - docs/apidoc/qobj.rst | 6 - qiskit/compiler/transpiler.py | 52 +- qiskit/primitives/backend_estimator.py | 18 +- qiskit/primitives/backend_estimator_v2.py | 8 +- qiskit/primitives/backend_sampler.py | 6 +- qiskit/primitives/backend_sampler_v2.py | 8 +- qiskit/providers/__init__.py | 117 +- qiskit/providers/backend.py | 216 ---- qiskit/providers/backend_compat.py | 466 -------- qiskit/providers/exceptions.py | 12 - .../fake_provider/utils/backend_converter.py | 150 --- qiskit/providers/models/__init__.py | 89 -- .../providers/models/backendconfiguration.py | 1040 ----------------- qiskit/providers/models/backendproperties.py | 517 -------- qiskit/providers/models/backendstatus.py | 94 -- qiskit/providers/models/jobstatus.py | 66 -- qiskit/providers/models/pulsedefaults.py | 305 ----- qiskit/pulse/calibration_entries.py | 98 -- qiskit/pulse/instruction_schedule_map.py | 3 - qiskit/pulse/macros.py | 2 - qiskit/qobj/__init__.py | 75 -- qiskit/qobj/common.py | 81 -- qiskit/qobj/converters/__init__.py | 18 - qiskit/qobj/converters/lo_config.py | 177 --- qiskit/qobj/converters/pulse_instruction.py | 901 -------------- qiskit/qobj/pulse_qobj.py | 709 ----------- qiskit/qobj/qasm_qobj.py | 708 ----------- qiskit/qobj/utils.py | 46 - qiskit/result/models.py | 28 +- qiskit/result/result.py | 23 +- qiskit/result/utils.py | 7 +- qiskit/scheduler/lowering.py | 7 +- qiskit/scheduler/methods/basic.py | 12 +- qiskit/scheduler/schedule_circuit.py | 9 +- qiskit/scheduler/sequence.py | 7 +- .../passes/layout/vf2_post_layout.py | 23 - qiskit/transpiler/passmanager_config.py | 54 +- .../generate_preset_pass_manager.py | 40 +- qiskit/transpiler/target.py | 135 +-- qiskit/visualization/gate_map.py | 143 +-- qiskit/visualization/pulse_v2/device_info.py | 38 +- test/python/compiler/test_transpiler.py | 3 +- .../primitives/test_backend_sampler_v2.py | 2 +- test/python/providers/test_options.py | 2 +- test/python/pulse/test_calibration_entries.py | 234 ---- test/python/qobj/__init__.py | 13 - test/python/qobj/test_pulse_converter.py | 523 --------- test/python/qobj/test_qobj.py | 435 ------- test/python/result/test_result.py | 163 +-- 51 files changed, 215 insertions(+), 7699 deletions(-) create mode 100644 debug_qsd.py delete mode 100644 docs/apidoc/providers_models.rst delete mode 100644 docs/apidoc/qobj.rst delete mode 100644 qiskit/providers/backend_compat.py delete mode 100644 qiskit/providers/fake_provider/utils/backend_converter.py delete mode 100644 qiskit/providers/models/__init__.py delete mode 100644 qiskit/providers/models/backendconfiguration.py delete mode 100644 qiskit/providers/models/backendproperties.py delete mode 100644 qiskit/providers/models/backendstatus.py delete mode 100644 qiskit/providers/models/jobstatus.py delete mode 100644 qiskit/providers/models/pulsedefaults.py delete mode 100644 qiskit/qobj/__init__.py delete mode 100644 qiskit/qobj/common.py delete mode 100644 qiskit/qobj/converters/__init__.py delete mode 100644 qiskit/qobj/converters/lo_config.py delete mode 100644 qiskit/qobj/converters/pulse_instruction.py delete mode 100644 qiskit/qobj/pulse_qobj.py delete mode 100644 qiskit/qobj/qasm_qobj.py delete mode 100644 qiskit/qobj/utils.py delete mode 100644 test/python/qobj/__init__.py delete mode 100644 test/python/qobj/test_pulse_converter.py delete mode 100644 test/python/qobj/test_qobj.py diff --git a/debug_qsd.py b/debug_qsd.py new file mode 100644 index 000000000000..6faeb38d53fe --- /dev/null +++ b/debug_qsd.py @@ -0,0 +1,19 @@ +import scipy +from qiskit.synthesis.unitary import qsd +from qiskit import transpile + +nqubits = 3 + +dim = 2**nqubits +umat = scipy.stats.unitary_group.rvs(dim, random_state=1224) +circ = qsd.qs_decomposition(umat, opt_a1=True, opt_a2=True) + +passes = [] +def callback_func(**kwargs): + t_pass = kwargs['pass_'].name() + passes.append(t_pass) +ccirc = transpile( + circ, basis_gates=["u", "cx", "qsd2q"], optimization_level=0, qubits_initially_zero=False, callback=callback_func +) +print("qsd passes", passes) + diff --git a/docs/apidoc/providers_models.rst b/docs/apidoc/providers_models.rst deleted file mode 100644 index cd0857a58e3e..000000000000 --- a/docs/apidoc/providers_models.rst +++ /dev/null @@ -1,6 +0,0 @@ -.. _qiskit-providers-models: - -.. automodule:: qiskit.providers.models - :no-members: - :no-inherited-members: - :no-special-members: diff --git a/docs/apidoc/qobj.rst b/docs/apidoc/qobj.rst deleted file mode 100644 index 1c03706e4d42..000000000000 --- a/docs/apidoc/qobj.rst +++ /dev/null @@ -1,6 +0,0 @@ -.. _qiskit-qobj: - -.. automodule:: qiskit.qobj - :no-members: - :no-inherited-members: - :no-special-members: diff --git a/qiskit/compiler/transpiler.py b/qiskit/compiler/transpiler.py index 1e7b6157042c..8315fea091a6 100644 --- a/qiskit/compiler/transpiler.py +++ b/qiskit/compiler/transpiler.py @@ -22,7 +22,6 @@ from qiskit.circuit.quantumcircuit import QuantumCircuit from qiskit.dagcircuit import DAGCircuit from qiskit.providers.backend import Backend -from qiskit.providers.backend_compat import BackendV2Converter from qiskit.pulse import Schedule, InstructionScheduleMap from qiskit.transpiler import Layout, CouplingMap, PropertySet from qiskit.transpiler.basepasses import BasePass @@ -98,22 +97,21 @@ def transpile( # pylint: disable=too-many-return-statements (``basis_gates``, ``inst_map``, ``coupling_map``, ``instruction_durations``, ``dt`` or ``timing_constraints``). If a ``backend`` is provided together with any loose constraint from the list above, the loose constraint will take priority over the corresponding backend - constraint. This behavior is independent of whether the ``backend`` instance is of type - :class:`.BackendV1` or :class:`.BackendV2`, as summarized in the table below. The first column + constraint. This behavior is summarized in the table below. The first column in the table summarizes the potential user-provided constraints, and each cell shows whether the priority is assigned to that specific constraint input or another input - (`target`/`backend(V1)`/`backend(V2)`). - - ============================ ========= ======================== ======================= - User Provided target backend(V1) backend(V2) - ============================ ========= ======================== ======================= - **basis_gates** target basis_gates basis_gates - **coupling_map** target coupling_map coupling_map - **instruction_durations** target instruction_durations instruction_durations - **inst_map** target inst_map inst_map - **dt** target dt dt - **timing_constraints** target timing_constraints timing_constraints - ============================ ========= ======================== ======================= + (`target`/`backend(V2)`). + + ============================ ========= ======================== + User Provided target backend(V2) + ============================ ========= ======================== + **basis_gates** target basis_gates + **coupling_map** target coupling_map + **instruction_durations** target instruction_durations + **inst_map** target inst_map + **dt** target dt + **timing_constraints** target timing_constraints + ============================ ========= ======================= Args: circuits: Circuit(s) to transpile @@ -330,30 +328,6 @@ def callback_func(**kwargs): config = user_config.get_config() optimization_level = config.get("transpile_optimization_level", 2) - if backend is not None and getattr(backend, "version", 0) <= 1: - warnings.warn( - "The `transpile` function will stop supporting inputs of " - f"type `BackendV1` ( {backend} ) in the `backend` parameter in a future " - "release no earlier than 2.0. `BackendV1` is deprecated and implementations " - "should move to `BackendV2`.", - category=DeprecationWarning, - stacklevel=2, - ) - with warnings.catch_warnings(): - # This is a temporary conversion step to allow for a smoother transition - # to a fully target-based transpiler pipeline while maintaining the behavior - # of `transpile` with BackendV1 inputs. - # TODO BackendV1 is deprecated and this path can be - # removed once it gets removed: - # https://github.com/Qiskit/qiskit/pull/12850 - warnings.filterwarnings( - "ignore", - category=DeprecationWarning, - message=r".+qiskit\.providers\.backend_compat\.BackendV2Converter.+", - module="qiskit", - ) - backend = BackendV2Converter(backend) - if ( scheduling_method is not None and backend is None diff --git a/qiskit/primitives/backend_estimator.py b/qiskit/primitives/backend_estimator.py index 5f9f8d20c75e..8ebf2a8d70be 100644 --- a/qiskit/primitives/backend_estimator.py +++ b/qiskit/primitives/backend_estimator.py @@ -22,7 +22,7 @@ from qiskit.circuit import ClassicalRegister, QuantumCircuit, QuantumRegister from qiskit.compiler import transpile from qiskit.exceptions import QiskitError -from qiskit.providers import BackendV1, BackendV2, Options +from qiskit.providers import BackendV2, Options from qiskit.quantum_info import Pauli, PauliList from qiskit.quantum_info.operators.base_operator import BaseOperator from qiskit.result import Counts, Result @@ -43,7 +43,7 @@ def _run_circuits( circuits: QuantumCircuit | list[QuantumCircuit], - backend: BackendV1 | BackendV2, + backend: BackendV2, clear_metadata: bool = True, **run_options, ) -> tuple[list[Result], list[dict]]: @@ -64,9 +64,7 @@ def _run_circuits( metadata.append(circ.metadata) if clear_metadata: circ.metadata = {} - if isinstance(backend, BackendV1): - max_circuits = getattr(backend.configuration(), "max_experiments", None) - elif isinstance(backend, BackendV2): + if isinstance(backend, BackendV2): max_circuits = backend.max_circuits else: raise RuntimeError("Backend version not supported") @@ -96,7 +94,7 @@ class BackendEstimator(BaseEstimator[PrimitiveJob[EstimatorResult]]): The :class:`~.BackendEstimator` class is a generic implementation of the :class:`~.BaseEstimator` (V1) interface that is used to wrap a :class:`~.BackendV2` - (or :class:`~.BackendV1`) object in the :class:`~.BaseEstimator` V1 API. It + object in the :class:`~.BaseEstimator` V1 API. It facilitates using backends that do not provide a native :class:`~.BaseEstimator` V1 implementation in places that work with :class:`~.BaseEstimator` V1. @@ -117,7 +115,7 @@ class BackendEstimator(BaseEstimator[PrimitiveJob[EstimatorResult]]): ) def __init__( self, - backend: BackendV1 | BackendV2, + backend: BackendV2, options: dict | None = None, abelian_grouping: bool = True, bound_pass_manager: PassManager | None = None, @@ -195,7 +193,7 @@ def transpiled_circuits(self) -> list[QuantumCircuit]: return self._transpiled_circuits @property - def backend(self) -> BackendV1 | BackendV2: + def backend(self) -> BackendV2: """ Returns: The backend which this estimator object based on @@ -478,9 +476,5 @@ def _passmanager_for_measurement_circuits(layout, backend) -> PassManager: coupling_map = backend.coupling_map passmanager.append(FullAncillaAllocation(coupling_map)) passmanager.append(EnlargeWithAncilla()) - elif isinstance(backend, BackendV1) and backend.configuration().coupling_map is not None: - coupling_map = CouplingMap(backend.configuration().coupling_map) - passmanager.append(FullAncillaAllocation(coupling_map)) - passmanager.append(EnlargeWithAncilla()) passmanager.append(ApplyLayout()) return passmanager diff --git a/qiskit/primitives/backend_estimator_v2.py b/qiskit/primitives/backend_estimator_v2.py index 47352dd3de22..120552e0c2d6 100644 --- a/qiskit/primitives/backend_estimator_v2.py +++ b/qiskit/primitives/backend_estimator_v2.py @@ -23,7 +23,7 @@ from qiskit.circuit import ClassicalRegister, QuantumCircuit, QuantumRegister from qiskit.exceptions import QiskitError -from qiskit.providers import BackendV1, BackendV2 +from qiskit.providers import BackendV2 from qiskit.quantum_info import Pauli, PauliList from qiskit.result import Counts from qiskit.transpiler import PassManager, PassManagerConfig @@ -76,7 +76,7 @@ class BackendEstimatorV2(BaseEstimatorV2): The :class:`~.BackendEstimatorV2` class is a generic implementation of the :class:`~.BaseEstimatorV2` interface that is used to wrap a :class:`~.BackendV2` - (or :class:`~.BackendV1`) object in the :class:`~.BaseEstimatorV2` API. It + object in the :class:`~.BaseEstimatorV2` API. It facilitates using backends that do not provide a native :class:`~.BaseEstimatorV2` implementation in places that work with :class:`~.BaseEstimatorV2`. However, @@ -127,7 +127,7 @@ class BackendEstimatorV2(BaseEstimatorV2): def __init__( self, *, - backend: BackendV1 | BackendV2, + backend: BackendV2, options: dict | None = None, ): """ @@ -153,7 +153,7 @@ def options(self) -> Options: return self._options @property - def backend(self) -> BackendV1 | BackendV2: + def backend(self) -> BackendV2: """Returns the backend which this sampler object based on.""" return self._backend diff --git a/qiskit/primitives/backend_sampler.py b/qiskit/primitives/backend_sampler.py index 905fa2371542..9a0149d1bcea 100644 --- a/qiskit/primitives/backend_sampler.py +++ b/qiskit/primitives/backend_sampler.py @@ -19,7 +19,7 @@ from typing import Any from qiskit.circuit.quantumcircuit import QuantumCircuit -from qiskit.providers.backend import BackendV1, BackendV2 +from qiskit.providers.backend import BackendV2 from qiskit.providers.options import Options from qiskit.result import QuasiDistribution, Result from qiskit.transpiler.passmanager import PassManager @@ -57,7 +57,7 @@ class BackendSampler(BaseSampler[PrimitiveJob[SamplerResult]]): ) def __init__( self, - backend: BackendV1 | BackendV2, + backend: BackendV2, options: dict | None = None, bound_pass_manager: PassManager | None = None, skip_transpilation: bool = False, @@ -115,7 +115,7 @@ def transpiled_circuits(self) -> list[QuantumCircuit]: return self._transpiled_circuits @property - def backend(self) -> BackendV1 | BackendV2: + def backend(self) -> BackendV2: """ Returns: The backend which this sampler object based on diff --git a/qiskit/primitives/backend_sampler_v2.py b/qiskit/primitives/backend_sampler_v2.py index 40a6d8560e07..758bce96a9cb 100644 --- a/qiskit/primitives/backend_sampler_v2.py +++ b/qiskit/primitives/backend_sampler_v2.py @@ -36,7 +36,7 @@ from qiskit.primitives.containers.bit_array import _min_num_bytes from qiskit.primitives.containers.sampler_pub import SamplerPub from qiskit.primitives.primitive_job import PrimitiveJob -from qiskit.providers.backend import BackendV1, BackendV2 +from qiskit.providers.backend import BackendV2 from qiskit.result import Result @@ -83,7 +83,7 @@ class BackendSamplerV2(BaseSamplerV2): The :class:`~.BackendSamplerV2` class is a generic implementation of the :class:`~.BaseSamplerV2` interface that is used to wrap a :class:`~.BackendV2` - (or :class:`~.BackendV1`) object in the class :class:`~.BaseSamplerV2` API. It + object in the class :class:`~.BaseSamplerV2` API. It facilitates using backends that do not provide a native :class:`~.BaseSamplerV2` implementation in places that work with :class:`~.BaseSamplerV2`. However, @@ -119,7 +119,7 @@ class BackendSamplerV2(BaseSamplerV2): def __init__( self, *, - backend: BackendV1 | BackendV2, + backend: BackendV2, options: dict | None = None, ): """ @@ -132,7 +132,7 @@ def __init__( self._options = Options(**options) if options else Options() @property - def backend(self) -> BackendV1 | BackendV2: + def backend(self) -> BackendV2: """Returns the backend which this sampler object based on.""" return self._backend diff --git a/qiskit/providers/__init__.py b/qiskit/providers/__init__.py index 2bfcd9ee009b..0a413e11c570 100644 --- a/qiskit/providers/__init__.py +++ b/qiskit/providers/__init__.py @@ -21,7 +21,7 @@ provider is anything that provides an external service to Qiskit. The typical example of this is a Backend provider which provides :class:`~qiskit.providers.Backend` objects which can be used for executing -:class:`~qiskit.circuit.QuantumCircuit` and/or :class:`~qiskit.pulse.Schedule` +:class:`~qiskit.circuit.QuantumCircuit` objects. This module contains the abstract classes which are used to define the interface between a provider and Qiskit. @@ -91,11 +91,8 @@ :toctree: ../stubs/ Backend - BackendV1 BackendV2 QubitProperties - BackendV2Converter - convert_to_target Options ------- @@ -126,10 +123,8 @@ ---------- .. autoexception:: QiskitBackendNotFoundError -.. autoexception:: BackendPropertyError .. autoexception:: JobError .. autoexception:: JobTimeoutError -.. autoexception:: BackendConfigurationError Writing a New Backend ===================== @@ -568,7 +563,7 @@ def _default_options(cls): For some backends (mainly local simulators) the execution of circuits is a synchronous operation and there is no need to return a handle to a running job elsewhere. For sync jobs its expected that the -:obj:`~qiskit.providers.BackendV1.run` method on the backend will block until a +:obj:`~qiskit.providers.BackendV2.run` method on the backend will block until a :class:`~qiskit.result.Result` object is generated and the sync job will return with that inner :class:`~qiskit.result.Result` object. @@ -675,120 +670,14 @@ def status(self): implementations. Also the built-in implementations: :class:`~.Sampler`, :class:`~.Estimator`, :class:`~.BackendSampler`, and :class:`~.BackendEstimator` can serve as references/models on how to implement these as well. - -Migrating from BackendV1 to BackendV2 -===================================== - -The :obj:`~BackendV2` class re-defined user access for most properties of a -backend to make them work with native Qiskit data structures and have flatter -access patterns. However this means when using a provider that upgrades -from :obj:`~BackendV1` to :obj:`~BackendV2` existing access patterns will need -to be adjusted. It is expected for existing providers to deprecate the old -access where possible to provide a graceful migration, but eventually users -will need to adjust code. The biggest change to adapt to in :obj:`~BackendV2` is -that most of the information accessible about a backend is contained in its -:class:`~qiskit.transpiler.Target` object and the backend's attributes often query -its :attr:`~qiskit.providers.BackendV2.target` -attribute to return information, however in many cases the attributes only provide -a subset of information the target can contain. For example, ``backend.coupling_map`` -returns a :class:`~qiskit.transpiler.CouplingMap` constructed from the -:class:`~qiskit.transpiler.Target` accessible in the -:attr:`~qiskit.providers.BackendV2.target` attribute, however the target may contain -instructions that operate on more than two qubits (which can't be represented in a -:class:`~qiskit.transpiler.CouplingMap`) or has instructions that only operate on -a subset of qubits (or two qubit links for a two qubit instruction) which won't be -detailed in the full coupling map returned by -:attr:`~qiskit.providers.BackendV2.coupling_map`. So depending on your use case -it might be necessary to look deeper than just the equivalent access with -:obj:`~BackendV2`. - -Below is a table of example access patterns in :obj:`~BackendV1` and the new form -with :obj:`~BackendV2`: - -.. list-table:: Migrate from :obj:`~BackendV1` to :obj:`~BackendV2` - :header-rows: 1 - - * - :obj:`~BackendV1` - - :obj:`~BackendV2` - - Notes - * - ``backend.configuration().n_qubits`` - - ``backend.num_qubits`` - - - * - ``backend.configuration().coupling_map`` - - ``backend.coupling_map`` - - The return from :obj:`~BackendV2` is a :class:`~qiskit.transpiler.CouplingMap` object. - while in :obj:`~BackendV1` it is an edge list. Also this is just a view of - the information contained in ``backend.target`` which may only be a subset of the - information contained in :class:`~qiskit.transpiler.Target` object. - * - ``backend.configuration().backend_name`` - - ``backend.name`` - - - * - ``backend.configuration().backend_version`` - - ``backend.backend_version`` - - The :attr:`~qiskit.providers.BackendV2.version` attribute represents - the version of the abstract :class:`~qiskit.providers.Backend` interface - the object implements while :attr:`~qiskit.providers.BackendV2.backend_version` - is metadata about the version of the backend itself. - * - ``backend.configuration().basis_gates`` - - ``backend.operation_names`` - - The :obj:`~BackendV2` return is a list of operation names contained in the - ``backend.target`` attribute. The :class:`~qiskit.transpiler.Target` may contain more - information that can be expressed by this list of names. For example, that some - operations only work on a subset of qubits or that some names implement the same gate - with different parameters. - * - ``backend.configuration().dt`` - - ``backend.dt`` - - - * - ``backend.configuration().dtm`` - - ``backend.dtm`` - - - * - ``backend.configuration().max_experiments`` - - ``backend.max_circuits`` - - - * - ``backend.configuration().online_date`` - - ``backend.online_date`` - - - * - ``InstructionDurations.from_backend(backend)`` - - ``backend.instruction_durations`` - - - * - ``backend.defaults().instruction_schedule_map`` - - ``backend.instruction_schedule_map`` - - - * - ``backend.properties().t1(0)`` - - ``backend.qubit_properties(0).t1`` - - - * - ``backend.properties().t2(0)`` - - ``backend.qubit_properties(0).t2`` - - - * - ``backend.properties().frequency(0)`` - - ``backend.qubit_properties(0).frequency`` - - - * - ``backend.properties().readout_error(0)`` - - ``backend.target["measure"][(0,)].error`` - - In :obj:`~BackendV2` the error rate for the :class:`~qiskit.circuit.library.Measure` - operation on a given qubit is used to model the readout error. However a - :obj:`~BackendV2` can implement multiple measurement types and list them - separately in a :class:`~qiskit.transpiler.Target`. - * - ``backend.properties().readout_length(0)`` - - ``backend.target["measure"][(0,)].duration`` - - In :obj:`~BackendV2` the duration for the :class:`~qiskit.circuit.library.Measure` - 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. """ # Providers interface from qiskit.providers.provider import Provider from qiskit.providers.provider import ProviderV1 from qiskit.providers.backend import Backend -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 @@ -797,7 +686,5 @@ def status(self): JobError, JobTimeoutError, QiskitBackendNotFoundError, - BackendPropertyError, - BackendConfigurationError, ) from qiskit.providers.jobstatus import JobStatus diff --git a/qiskit/providers/backend.py b/qiskit/providers/backend.py index 7b41332db87f..9bfec114ae6d 100644 --- a/qiskit/providers/backend.py +++ b/qiskit/providers/backend.py @@ -21,9 +21,7 @@ from typing import List, Union, Iterable, Tuple from qiskit.providers.provider import Provider -from qiskit.providers.models.backendstatus import BackendStatus from qiskit.circuit.gate import Instruction -from qiskit.utils import deprecate_func from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency @@ -39,213 +37,6 @@ class Backend: version = 0 -class BackendV1(Backend, ABC): - """Abstract class for Backends - - This abstract class is to be used for Backend objects. - There are several classes of information contained in a Backend. - The first are the attributes of the class itself. These should be used to - define the immutable characteristics of the backend. The ``options`` - attribute of the backend is used to contain the dynamic user configurable - options of the backend. It should be used more for runtime options - that configure how the backend is used. For example, something like a - ``shots`` field for a backend that runs experiments which would contain an - int for how many shots to execute. The ``properties`` attribute is - optionally defined :class:`~qiskit.providers.models.BackendProperties` - object and is used to return measured properties, or properties - of a backend that may change over time. The simplest example of this would - be a version string, which will change as a backend is updated, but also - could be something like noise parameters for backends that run experiments. - - This first version of the Backend abstract class is written to be mostly - backwards compatible with the legacy providers interface. This includes reusing - the model objects :class:`~qiskit.providers.models.BackendProperties` and - :class:`~qiskit.providers.models.BackendConfiguration`. This was done to - ease the transition for users and provider maintainers to the new versioned providers. - Expect, future versions of this abstract class to change the data model and - interface. - - Subclasses of this should override the public method :meth:`run` and the internal - :meth:`_default_options`: - - .. automethod:: _default_options - """ - - version = 1 - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="If the backend only encapsulates a hardware description, " - "consider constructing a Target directly. If it is part of a provider " - "that gives access to execution, consider using Primitives instead. " - "Alternatively, consider moving to BackendV2 (see https://qisk.it/backendV1-to-V2).", - ) - def __init__(self, configuration, provider=None, **fields): - """Initialize a backend class - - Args: - configuration (BackendConfiguration): A backend configuration - object for the backend object. - provider (qiskit.providers.Provider): Optionally, the provider - object that this Backend comes from. - fields: kwargs for the values to use to override the default - options. - Raises: - AttributeError: if input field not a valid options - - .. - This next bit is necessary just because autosummary generally won't summarise private - methods; changing that behavior would have annoying knock-on effects through all the - rest of the documentation, so instead we just hard-code the automethod directive. - """ - self._configuration = configuration - self._options = self._default_options() - self._provider = provider - if fields: - for field in fields: - if field not in self._options.data: - raise AttributeError(f"Options field {field} is not valid for this backend") - self._options.update_config(**fields) - - @classmethod - @abstractmethod - def _default_options(cls): - """Return the default options - - This method will return a :class:`qiskit.providers.Options` - subclass object that will be used for the default options. These - should be the default parameters to use for the options of the - backend. - - Returns: - qiskit.providers.Options: A options object with - default values set - """ - - def set_options(self, **fields): - """Set the options fields for the backend - - This method is used to update the options of a backend. If - you need to change any of the options prior to running just - pass in the kwarg with the new value for the options. - - Args: - fields: The fields to update the options - - Raises: - AttributeError: If the field passed in is not part of the - options - """ - for field in fields: - if not hasattr(self._options, field): - raise AttributeError(f"Options field {field} is not valid for this backend") - self._options.update_options(**fields) - - def configuration(self): - """Return the backend configuration. - - Returns: - BackendConfiguration: the configuration for the backend. - """ - return self._configuration - - def properties(self): - """Return the backend properties. - - Returns: - BackendProperties: the configuration for the backend. If the backend - does not support properties, it returns ``None``. - """ - return None - - def provider(self): - """Return the backend Provider. - - Returns: - Provider: the Provider responsible for the backend. - """ - return self._provider - - def status(self): - """Return the backend status. - - Returns: - BackendStatus: the status of the backend. - """ - return BackendStatus( - backend_name=self.name(), - backend_version="1", - operational=True, - pending_jobs=0, - status_msg="", - ) - - def name(self): - """Return the backend name. - - Returns: - str: the name of the backend. - """ - return self._configuration.backend_name - - def __str__(self): - return self.name() - - def __repr__(self): - """Official string representation of a Backend. - - Note that, by Qiskit convention, it is consciously *not* a fully valid - Python expression. Subclasses should provide 'a string of the form - <...some useful description...>'. [0] - - [0] https://docs.python.org/3/reference/datamodel.html#object.__repr__ - """ - return f"<{self.__class__.__name__}('{self.name()}')>" - - @property - def options(self): - """Return the options for the backend - - The options of a backend are the dynamic parameters defining - how the backend is used. These are used to control the :meth:`run` - method. - """ - return self._options - - @abstractmethod - def run(self, run_input, **options): - """Run on the backend. - - This method returns a :class:`~qiskit.providers.Job` object - that runs circuits. Depending on the backend this may be either an async - or sync call. It is at the discretion of the provider to decide whether - running should block until the execution is finished or not: the Job - class can handle either situation. - - Args: - run_input (QuantumCircuit or Schedule or list): An individual or a - list of :class:`~qiskit.circuit.QuantumCircuit` or - :class:`~qiskit.pulse.Schedule` objects to run on the backend. - For legacy providers migrating to the new versioned providers, - provider interface a :class:`~qiskit.qobj.QasmQobj` or - :class:`~qiskit.qobj.PulseQobj` objects should probably be - supported too (but deprecated) for backwards compatibility. Be - sure to update the docstrings of subclasses implementing this - method to document that. New provider implementations should not - do this though as :mod:`qiskit.qobj` will be deprecated and - removed along with the legacy providers interface. - options: Any kwarg options to pass to the backend for running the - config. If a key is also present in the options - attribute/object then the expectation is that the value - specified will be used instead of what's set in the options - object. - Returns: - Job: The job object for the run - """ - pass - - class QubitProperties: """A representation of the properties of a qubit on a backend. @@ -290,13 +81,6 @@ class BackendV2(Backend, ABC): something like a ``shots`` field for a backend that runs experiments which would contain an int for how many shots to execute. - If migrating a provider from :class:`~qiskit.providers.BackendV1` - one thing to keep in mind is for - backwards compatibility you might need to add a configuration method that - will build a :class:`~qiskit.providers.models.BackendConfiguration` object - and :class:`~qiskit.providers.models.BackendProperties` from the attributes - defined in this class for backwards compatibility. - A backend object can optionally contain methods named ``get_translation_stage_plugin`` and ``get_scheduling_stage_plugin``. If these methods are present on a backend object and this object is used for diff --git a/qiskit/providers/backend_compat.py b/qiskit/providers/backend_compat.py deleted file mode 100644 index 571500fa35e9..000000000000 --- a/qiskit/providers/backend_compat.py +++ /dev/null @@ -1,466 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2020, 2024. -# -# 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 -import logging -import warnings -from typing import List, Iterable, Any, Dict, Optional - -from qiskit.providers.backend import BackendV1, BackendV2 -from qiskit.providers.backend import QubitProperties -from qiskit.providers.models.backendconfiguration import BackendConfiguration -from qiskit.providers.models.backendproperties import BackendProperties -from qiskit.circuit.controlflow import CONTROL_FLOW_OP_NAMES, get_control_flow_name_mapping -from qiskit.providers.models.pulsedefaults import PulseDefaults -from qiskit.providers.options import Options -from qiskit.providers.exceptions import BackendPropertyError -from qiskit.utils.deprecate_pulse import deprecate_pulse_arg, deprecate_pulse_dependency - - -logger = logging.getLogger(__name__) - - -@deprecate_pulse_arg("defaults") -def convert_to_target( - configuration: BackendConfiguration, - properties: BackendProperties = None, - defaults: PulseDefaults = None, - custom_name_mapping: Optional[Dict[str, Any]] = None, - add_delay: bool = True, - filter_faulty: bool = True, -): - """Decode transpiler target from backend data set. - - This function generates :class:`.Target`` instance from intermediate - legacy objects such as :class:`.BackendProperties` and :class:`.PulseDefaults`. - These objects are usually components of the legacy :class:`.BackendV1` model. - - Args: - configuration: Backend configuration as ``BackendConfiguration`` - properties: Backend property dictionary or ``BackendProperties`` - defaults: DEPRECATED. Backend pulse defaults dictionary or ``PulseDefaults`` - custom_name_mapping: A name mapping must be supplied for the operation - not included in Qiskit Standard Gate name mapping, otherwise the operation - will be dropped in the resulting ``Target`` object. - add_delay: If True, adds delay to the instruction set. - filter_faulty: If True, this filters the non-operational qubits. - - Returns: - A ``Target`` instance. - """ - return _convert_to_target( - configuration, properties, defaults, custom_name_mapping, add_delay, filter_faulty - ) - - -def _convert_to_target( - configuration: BackendConfiguration, - properties: BackendProperties = None, - defaults: PulseDefaults = None, - custom_name_mapping: Optional[Dict[str, Any]] = None, - add_delay: bool = True, - filter_faulty: bool = True, -): - """An alternative private path to avoid pulse deprecations""" - # importing packages where they are needed, to avoid cyclic-import. - # pylint: disable=cyclic-import - from qiskit.transpiler.target import ( - Target, - InstructionProperties, - ) - from qiskit.circuit.library.standard_gates import get_standard_gate_name_mapping - from qiskit.circuit.parameter import Parameter - from qiskit.circuit.gate import Gate - - required = ["measure", "delay"] - - # Load Qiskit object representation - qiskit_inst_mapping = get_standard_gate_name_mapping() - if custom_name_mapping: - qiskit_inst_mapping.update(custom_name_mapping) - - qiskit_control_flow_mapping = get_control_flow_name_mapping() - - in_data = {"num_qubits": configuration.num_qubits} - - # Parse global configuration properties - if hasattr(configuration, "dt"): - in_data["dt"] = configuration.dt - if hasattr(configuration, "timing_constraints"): - in_data.update(configuration.timing_constraints) - - # Create instruction property placeholder from backend configuration - basis_gates = set(getattr(configuration, "basis_gates", [])) - supported_instructions = set(getattr(configuration, "supported_instructions", [])) - gate_configs = {gate.name: gate for gate in configuration.gates} - all_instructions = set.union( - basis_gates, set(required), supported_instructions.intersection(CONTROL_FLOW_OP_NAMES) - ) - inst_name_map = {} # type: Dict[str, Instruction] - - faulty_ops = set() - faulty_qubits = set() - unsupported_instructions = [] - - # Create name to Qiskit instruction object repr mapping - for name in all_instructions: - if name in qiskit_control_flow_mapping: - continue - if name in qiskit_inst_mapping: - inst_name_map[name] = qiskit_inst_mapping[name] - elif name in gate_configs: - # GateConfig model is a translator of QASM opcode. - # This doesn't have quantum definition, so Qiskit transpiler doesn't perform - # any optimization in quantum domain. - # Usually GateConfig counterpart should exist in Qiskit namespace so this is rarely called. - this_config = gate_configs[name] - params = list(map(Parameter, getattr(this_config, "parameters", []))) - coupling_map = getattr(this_config, "coupling_map", []) - inst_name_map[name] = Gate( - name=name, - num_qubits=len(coupling_map[0]) if coupling_map else 0, - params=params, - ) - else: - warnings.warn( - f"No gate definition for {name} can be found and is being excluded " - "from the generated target. You can use `custom_name_mapping` to provide " - "a definition for this operation.", - RuntimeWarning, - ) - unsupported_instructions.append(name) - - for name in unsupported_instructions: - all_instructions.remove(name) - - # Create inst properties placeholder - # Without any assignment, properties value is None, - # which defines a global instruction that can be applied to any qubit(s). - # The None value behaves differently from an empty dictionary. - # See API doc of Target.add_instruction for details. - prop_name_map = dict.fromkeys(all_instructions) - for name in all_instructions: - if name in gate_configs: - if coupling_map := getattr(gate_configs[name], "coupling_map", None): - # Respect operational qubits that gate configuration defines - # This ties instruction to particular qubits even without properties information. - # Note that each instruction is considered to be ideal unless - # its spec (e.g. error, duration) is bound by the properties object. - prop_name_map[name] = dict.fromkeys(map(tuple, coupling_map)) - - # Populate instruction properties - if properties: - - def _get_value(prop_dict, prop_name): - if ndval := prop_dict.get(prop_name, None): - return ndval[0] - return None - - # is_qubit_operational is a bit of expensive operation so precache the value - faulty_qubits = { - q for q in range(configuration.num_qubits) if not properties.is_qubit_operational(q) - } - - qubit_properties = [] - for qi in range(0, configuration.num_qubits): - # TODO faulty qubit handling might be needed since - # faulty qubit reporting qubit properties doesn't make sense. - try: - prop_dict = properties.qubit_property(qubit=qi) - except KeyError: - continue - qubit_properties.append( - QubitProperties( - t1=prop_dict.get("T1", (None, None))[0], - t2=prop_dict.get("T2", (None, None))[0], - frequency=prop_dict.get("frequency", (None, None))[0], - ) - ) - in_data["qubit_properties"] = qubit_properties - - for name in all_instructions: - try: - for qubits, params in properties.gate_property(name).items(): - if filter_faulty and ( - set.intersection(faulty_qubits, qubits) - or not properties.is_gate_operational(name, qubits) - ): - try: - # Qubits might be pre-defined by the gate config - # However properties objects says the qubits is non-operational - del prop_name_map[name][qubits] - except KeyError: - pass - faulty_ops.add((name, qubits)) - continue - if prop_name_map[name] is None: - # This instruction is tied to particular qubits - # i.e. gate config is not provided, and instruction has been globally defined. - prop_name_map[name] = {} - prop_name_map[name][qubits] = InstructionProperties( - error=_get_value(params, "gate_error"), - duration=_get_value(params, "gate_length"), - ) - if isinstance(prop_name_map[name], dict) and any( - v is None for v in prop_name_map[name].values() - ): - # Properties provides gate properties only for subset of qubits - # Associated qubit set might be defined by the gate config here - logger.info( - "Gate properties of instruction %s are not provided for every qubits. " - "This gate is ideal for some qubits and the rest is with finite error. " - "Created backend target may confuse error-aware circuit optimization.", - name, - ) - except BackendPropertyError: - # This gate doesn't report any property - continue - - # Measure instruction property is stored in qubit property - prop_name_map["measure"] = {} - - for qubit_idx in range(configuration.num_qubits): - if filter_faulty and (qubit_idx in faulty_qubits): - continue - qubit_prop = properties.qubit_property(qubit_idx) - prop_name_map["measure"][(qubit_idx,)] = InstructionProperties( - error=_get_value(qubit_prop, "readout_error"), - duration=_get_value(qubit_prop, "readout_length"), - ) - - for op in required: - # Map required ops to each operational qubit - if prop_name_map[op] is None: - prop_name_map[op] = { - (q,): None - for q in range(configuration.num_qubits) - if not filter_faulty or (q not in faulty_qubits) - } - - if defaults: - inst_sched_map = defaults.instruction_schedule_map - - for name in inst_sched_map.instructions: - for qubits in inst_sched_map.qubits_with_instruction(name): - if not isinstance(qubits, tuple): - qubits = (qubits,) - if ( - name not in all_instructions - or name not in prop_name_map - or prop_name_map[name] is None - or qubits not in prop_name_map[name] - ): - logger.info( - "Gate calibration for instruction %s on qubits %s is found " - "in the PulseDefaults payload. However, this entry is not defined in " - "the gate mapping of Target. This calibration is ignored.", - name, - qubits, - ) - continue - - if (name, qubits) in faulty_ops: - continue - - entry = inst_sched_map._get_calibration_entry(name, qubits) - try: - prop_name_map[name][qubits]._calibration_prop = entry - except AttributeError: - # if instruction properties are "None", add entry - prop_name_map[name].update({qubits: InstructionProperties(None, None, entry)}) - logger.info( - "The PulseDefaults payload received contains an instruction %s on " - "qubits %s which is not present in the configuration or properties payload." - "A new properties entry will be added to include the new calibration data.", - name, - qubits, - ) - # Add parsed properties to target - target = Target(**in_data) - for inst_name in all_instructions: - if inst_name == "delay" and not add_delay: - continue - if inst_name in qiskit_control_flow_mapping: - # Control flow operator doesn't have gate property. - target.add_instruction( - instruction=qiskit_control_flow_mapping[inst_name], - name=inst_name, - ) - else: - target.add_instruction( - instruction=inst_name_map[inst_name], - properties=prop_name_map.get(inst_name, None), - name=inst_name, - ) - - 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`. - - When using custom calibrations (or other custom workflows) it is **not** recommended - to mutate the ``BackendV1`` object before applying this converter. For example, in order to - convert a ``BackendV1`` object with a customized ``defaults().instruction_schedule_map``, - which has a custom calibration for an operation, the operation name must be in - ``configuration().basis_gates`` and ``name_mapping`` must be supplied for the operation. - Otherwise, the operation will be dropped in the resulting ``BackendV2`` object. - - Instead it is typically better to add custom calibrations **after** applying this converter - instead of updating ``BackendV1.defaults()`` in advance. For example:: - - backend_v2 = BackendV2Converter(backend_v1) - backend_v2.target.add_instruction( - custom_gate, {(0, 1): InstructionProperties(calibration=custom_sched)} - ) - """ - - def __init__( - self, - backend: BackendV1, - name_mapping: Optional[Dict[str, Any]] = None, - add_delay: bool = True, - filter_faulty: bool = True, - ): - """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 - filter_faulty: If the :class:`~.BackendProperties` object (if present) for - ``backend`` has any qubits or gates flagged as non-operational filter - those from the output target. - """ - self._backend = backend - self._config = self._backend.configuration() - super().__init__( - provider=backend.provider, - name=backend.name(), - description=getattr(self._config, "description", None), - online_date=getattr(self._config, "online_date", None), - backend_version=self._config.backend_version, - ) - self._options = self._backend._options - self._properties = None - self._defaults = None - - with warnings.catch_warnings(): - # The class QobjExperimentHeader is deprecated - warnings.filterwarnings("ignore", category=DeprecationWarning, module="qiskit") - if hasattr(self._backend, "properties"): - self._properties = self._backend.properties() - if hasattr(self._backend, "defaults"): - self._defaults = self._backend.defaults() - - self._target = None - self._name_mapping = name_mapping - self._add_delay = add_delay - self._filter_faulty = filter_faulty - - @property - def target(self): - """A :class:`qiskit.transpiler.Target` object for the backend. - - :rtype: Target - """ - if self._target is None: - self._target = _convert_to_target( - configuration=self._config, - properties=self._properties, - defaults=self._defaults, - custom_name_mapping=self._name_mapping, - add_delay=self._add_delay, - filter_faulty=self._filter_faulty, - ) - 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.meas_map - - @deprecate_pulse_dependency - def drive_channel(self, qubit: int): - return self._config.drive(qubit) - - @deprecate_pulse_dependency - def measure_channel(self, qubit: int): - return self._config.measure(qubit) - - @deprecate_pulse_dependency - def acquire_channel(self, qubit: int): - return self._config.acquire(qubit) - - @deprecate_pulse_dependency - def control_channel(self, qubits: Iterable[int]): - return self._config.control(qubits) - - def run(self, run_input, **options): - return self._backend.run(run_input, **options) diff --git a/qiskit/providers/exceptions.py b/qiskit/providers/exceptions.py index 3fddacb92fec..45d0b7973411 100644 --- a/qiskit/providers/exceptions.py +++ b/qiskit/providers/exceptions.py @@ -31,15 +31,3 @@ class QiskitBackendNotFoundError(QiskitError): """Base class for errors raised while looking for a backend.""" pass - - -class BackendPropertyError(QiskitError): - """Base class for errors raised while looking for a backend property.""" - - pass - - -class BackendConfigurationError(QiskitError): - """Base class for errors raised by the BackendConfiguration.""" - - pass diff --git a/qiskit/providers/fake_provider/utils/backend_converter.py b/qiskit/providers/fake_provider/utils/backend_converter.py deleted file mode 100644 index 9e038c39df38..000000000000 --- a/qiskit/providers/fake_provider/utils/backend_converter.py +++ /dev/null @@ -1,150 +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. - -""" -Utilities for constructing Target object from configuration, properties and -pulse defaults json files -""" - -from qiskit.transpiler.target import Target, InstructionProperties -from qiskit.providers.backend import QubitProperties -from qiskit.utils.units import apply_prefix -from qiskit.circuit.library.standard_gates import IGate, SXGate, XGate, CXGate, RZGate -from qiskit.circuit.parameter import Parameter -from qiskit.circuit.gate import Gate -from qiskit.circuit.delay import Delay -from qiskit.circuit.measure import Measure -from qiskit.circuit.reset import Reset -from qiskit.providers.models.pulsedefaults import PulseDefaults - - -def convert_to_target(conf_dict: dict, props_dict: dict = None, defs_dict: dict = None) -> Target: - """Uses configuration, properties and pulse defaults dicts - to construct and return Target class. - """ - name_mapping = { - "id": IGate(), - "sx": SXGate(), - "x": XGate(), - "cx": CXGate(), - "rz": RZGate(Parameter("λ")), - "reset": Reset(), - } - custom_gates = {} - qubit_props = None - if props_dict: - qubit_props = qubit_props_from_props(props_dict) - target = Target(qubit_properties=qubit_props, concurrent_measurements=conf_dict.get("meas_map")) - # Parse from properties if it exsits - if props_dict is not None: - # Parse instructions - gates = {} - for gate in props_dict["gates"]: - name = gate["gate"] - if name in name_mapping: - if name not in gates: - gates[name] = {} - elif name not in custom_gates: - custom_gate = Gate(name, len(gate["qubits"]), []) - custom_gates[name] = custom_gate - gates[name] = {} - - 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(): - if gate in name_mapping: - inst = name_mapping.get(gate) - else: - inst = custom_gates[gate] - target.add_instruction(inst, props) - # Create measurement instructions: - measure_props = {} - count = 0 - for qubit in props_dict["qubits"]: - qubit_prop = {} - for prop in qubit: - if prop["name"] == "readout_length": - qubit_prop["duration"] = apply_prefix(prop["value"], prop["unit"]) - if prop["name"] == "readout_error": - qubit_prop["error"] = prop["value"] - measure_props[(count,)] = InstructionProperties(**qubit_prop) - count += 1 - target.add_instruction(Measure(), measure_props) - # Parse from configuration because properties doesn't exist - else: - for gate in conf_dict["gates"]: - name = gate["name"] - gate_props = {tuple(x): None for x in gate["coupling_map"]} - if name in name_mapping: - target.add_instruction(name_mapping[name], gate_props) - else: - custom_gate = Gate(name, len(gate["coupling_map"][0]), []) - target.add_instruction(custom_gate, gate_props) - measure_props = {(n,): None for n in range(conf_dict["n_qubits"])} - target.add_instruction(Measure(), measure_props) - # parse global configuration properties - dt = conf_dict.get("dt") - if dt: - target.dt = dt * 1e-9 - if "timing_constraints" in conf_dict: - target.granularity = conf_dict["timing_constraints"].get("granularity") - target.min_length = conf_dict["timing_constraints"].get("min_length") - target.pulse_alignment = conf_dict["timing_constraints"].get("pulse_alignment") - target.acquire_alignment = conf_dict["timing_constraints"].get("acquire_alignment") - # If pulse defaults exists use that as the source of truth - if defs_dict is not None: - # TODO remove the usage of PulseDefaults as it will be deprecated in the future - pulse_defs = PulseDefaults.from_dict(defs_dict) - inst_map = pulse_defs.instruction_schedule_map - for inst in inst_map.instructions: - for qarg in inst_map.qubits_with_instruction(inst): - try: - qargs = tuple(qarg) - except TypeError: - qargs = (qarg,) - # Do NOT call .get method. This parses Qpbj immediately. - # This operation is computationally expensive and should be bypassed. - calibration_entry = inst_map._get_calibration_entry(inst, qargs) - if inst in target: - if inst == "measure": - for qubit in qargs: - target[inst][(qubit,)].calibration = calibration_entry - elif qargs in target[inst]: - target[inst][qargs].calibration = calibration_entry - target.add_instruction( - Delay(Parameter("t")), {(bit,): None for bit in range(target.num_qubits)} - ) - return target - - -def qubit_props_from_props(properties: dict) -> list: - """Returns a dictionary of `qiskit.providers.backend.QubitProperties` using - a backend properties dictionary created by loading props.json payload. - """ - qubit_props = [] - for qubit in properties["qubits"]: - qubit_properties = {} - for prop_dict in qubit: - if prop_dict["name"] == "T1": - qubit_properties["t1"] = apply_prefix(prop_dict["value"], prop_dict["unit"]) - elif prop_dict["name"] == "T2": - qubit_properties["t2"] = apply_prefix(prop_dict["value"], prop_dict["unit"]) - elif prop_dict["name"] == "frequency": - qubit_properties["frequency"] = apply_prefix(prop_dict["value"], prop_dict["unit"]) - qubit_props.append(QubitProperties(**qubit_properties)) - return qubit_props diff --git a/qiskit/providers/models/__init__.py b/qiskit/providers/models/__init__.py deleted file mode 100644 index d7f8307abb04..000000000000 --- a/qiskit/providers/models/__init__.py +++ /dev/null @@ -1,89 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2018. -# -# 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 Objects (:mod:`qiskit.providers.models`) -================================================ - -.. currentmodule:: qiskit.providers.models - -Qiskit schema-conformant objects used by the backends and providers. - -Classes -======= - -.. autosummary:: - :toctree: ../stubs/ - - BackendConfiguration - BackendProperties - BackendStatus - QasmBackendConfiguration - PulseBackendConfiguration - UchannelLO - GateConfig - PulseDefaults - Command - JobStatus - GateProperties - Nduv -""" -# pylint: disable=undefined-all-variable -__all__ = [ - "BackendConfiguration", - "PulseBackendConfiguration", - "QasmBackendConfiguration", - "UchannelLO", - "GateConfig", - "BackendProperties", - "GateProperties", - "Nduv", - "BackendStatus", - "JobStatus", - "PulseDefaults", - "Command", -] - -import importlib -import warnings - - -_NAME_MAP = { - # public object name mapped to containing module - "BackendConfiguration": "qiskit.providers.models.backendconfiguration", - "PulseBackendConfiguration": "qiskit.providers.models.backendconfiguration", - "QasmBackendConfiguration": "qiskit.providers.models.backendconfiguration", - "UchannelLO": "qiskit.providers.models.backendconfiguration", - "GateConfig": "qiskit.providers.models.backendconfiguration", - "BackendProperties": "qiskit.providers.models.backendproperties", - "GateProperties": "qiskit.providers.models.backendproperties", - "Nduv": "qiskit.providers.models.backendproperties", - "BackendStatus": "qiskit.providers.models.backendstatus", - "JobStatus": "qiskit.providers.models.jobstatus", - "PulseDefaults": "qiskit.providers.models.pulsedefaults", - "Command": "qiskit.providers.models.pulsedefaults", -} - - -def __getattr__(name): - if (module_name := _NAME_MAP.get(name)) is not None: - warnings.warn( - "qiskit.providers.models is deprecated since Qiskit 1.2 and will be " - "removed in Qiskit 2.0. With the removal of Qobj, there is no need for these " - "schema-conformant objects. If you still need to use them, it could be because " - "you are using a BackendV1, which is also deprecated in favor of BackendV2.", - DeprecationWarning, - stacklevel=2, - ) - return getattr(importlib.import_module(module_name), name) - raise AttributeError(f"module 'qiskit.providers.models' has no attribute '{name}'") diff --git a/qiskit/providers/models/backendconfiguration.py b/qiskit/providers/models/backendconfiguration.py deleted file mode 100644 index a50745c9572c..000000000000 --- a/qiskit/providers/models/backendconfiguration.py +++ /dev/null @@ -1,1040 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2018. -# -# 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 Configuration Classes.""" -import re -import copy -import numbers -from typing import Dict, List, Any, Iterable, Tuple, Union -from collections import defaultdict - -from qiskit.exceptions import QiskitError -from qiskit.providers.exceptions import BackendConfigurationError -from qiskit.pulse.channels import ( - AcquireChannel, - Channel, - ControlChannel, - DriveChannel, - MeasureChannel, -) -from qiskit.utils import deprecate_func - - -class GateConfig: - """Class representing a Gate Configuration - - Attributes: - name: the gate name as it will be referred to in OpenQASM. - parameters: variable names for the gate parameters (if any). - qasm_def: definition of this gate in terms of OpenQASM 2 primitives U - and CX. - """ - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="The models in ``qiskit.providers.models`` are part " - "of the deprecated `BackendV1` workflow and no longer necessary for `BackendV2`. If a user " - "workflow requires these representations it likely relies on deprecated functionality and " - "should be updated to use `BackendV2`.", - stacklevel=3, - ) - def __init__( - self, - name, - parameters, - qasm_def, - coupling_map=None, - latency_map=None, - conditional=None, - description=None, - ): - """Initialize a GateConfig object - - Args: - name (str): the gate name as it will be referred to in OpenQASM. - parameters (list): variable names for the gate parameters (if any) - as a list of strings. - qasm_def (str): definition of this gate in terms of OpenQASM 2 primitives U and CX. - coupling_map (list): An optional coupling map for the gate. In - the form of a list of lists of integers representing the qubit - groupings which are coupled by this gate. - latency_map (list): An optional map of latency for the gate. In the - the form of a list of lists of integers of either 0 or 1 - representing an array of dimension - len(coupling_map) X n_registers that specifies the register - latency (1: fast, 0: slow) conditional operations on the gate - conditional (bool): Optionally specify whether this gate supports - conditional operations (true/false). If this is not specified, - then the gate inherits the conditional property of the backend. - description (str): Description of the gate operation - """ - - self.name = name - self.parameters = parameters - self.qasm_def = qasm_def - # coupling_map with length 0 is invalid - if coupling_map: - self.coupling_map = coupling_map - # latency_map with length 0 is invalid - if latency_map: - self.latency_map = latency_map - if conditional is not None: - self.conditional = conditional - if description is not None: - self.description = description - - @classmethod - def from_dict(cls, data): - """Create a new GateConfig object from a dictionary. - - Args: - data (dict): A dictionary representing the GateConfig to create. - It will be in the same format as output by - :func:`to_dict`. - - Returns: - GateConfig: The GateConfig from the input dictionary. - """ - return cls(**data) - - def to_dict(self): - """Return a dictionary format representation of the GateConfig. - - Returns: - dict: The dictionary form of the GateConfig. - """ - out_dict = { - "name": self.name, - "parameters": self.parameters, - "qasm_def": self.qasm_def, - } - if hasattr(self, "coupling_map"): - out_dict["coupling_map"] = self.coupling_map - if hasattr(self, "latency_map"): - out_dict["latency_map"] = self.latency_map - if hasattr(self, "conditional"): - out_dict["conditional"] = self.conditional - if hasattr(self, "description"): - out_dict["description"] = self.description - return out_dict - - def __eq__(self, other): - if isinstance(other, GateConfig): - if self.to_dict() == other.to_dict(): - return True - return False - - def __repr__(self): - out_str = f"GateConfig({self.name}, {self.parameters}, {self.qasm_def}" - for i in ["coupling_map", "latency_map", "conditional", "description"]: - if hasattr(self, i): - out_str += ", " + repr(getattr(self, i)) - out_str += ")" - return out_str - - -class UchannelLO: - """Class representing a U Channel LO - - Attributes: - q: Qubit that scale corresponds too. - scale: Scale factor for qubit frequency. - """ - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="The models in ``qiskit.providers.models`` are part " - "of the deprecated `BackendV1` workflow and no longer necessary for `BackendV2`. If a user " - "workflow requires these representations it likely relies on deprecated functionality and " - "should be updated to use `BackendV2`.", - ) - def __init__(self, q, scale): - """Initialize a UchannelLOSchema object - - Args: - q (int): Qubit that scale corresponds too. Must be >= 0. - scale (complex): Scale factor for qubit frequency. - - Raises: - QiskitError: If q is < 0 - """ - if q < 0: - raise QiskitError("q must be >=0") - self.q = q - self.scale = scale - - @classmethod - def from_dict(cls, data): - """Create a new UchannelLO object from a dictionary. - - Args: - data (dict): A dictionary representing the UChannelLO to - create. It will be in the same format as output by - :func:`to_dict`. - - Returns: - UchannelLO: The UchannelLO from the input dictionary. - """ - return cls(**data) - - def to_dict(self): - """Return a dictionary format representation of the UChannelLO. - - Returns: - dict: The dictionary form of the UChannelLO. - """ - out_dict = { - "q": self.q, - "scale": self.scale, - } - return out_dict - - def __eq__(self, other): - if isinstance(other, UchannelLO): - if self.to_dict() == other.to_dict(): - return True - return False - - def __repr__(self): - return f"UchannelLO({self.q}, {self.scale})" - - -class QasmBackendConfiguration: - """Class representing an OpenQASM 2.0 Backend Configuration. - - Attributes: - backend_name: backend name. - backend_version: backend version in the form X.Y.Z. - n_qubits: number of qubits. - basis_gates: list of basis gates names on the backend. - gates: list of basis gates on the backend. - local: backend is local or remote. - simulator: backend is a simulator. - conditional: backend supports conditional operations. - open_pulse: backend supports open pulse. - memory: backend supports memory. - max_shots: maximum number of shots supported. - """ - - _data = {} - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="The models in ``qiskit.providers.models`` are part " - "of the deprecated `BackendV1` workflow and no longer necessary for `BackendV2`. If a user " - "workflow requires these representations it likely relies on deprecated functionality and " - "should be updated to use `BackendV2`.", - stacklevel=3, - ) - def __init__( - self, - backend_name, - backend_version, - n_qubits, - basis_gates, - gates, - local, - simulator, - conditional, - open_pulse, - memory, - max_shots, - coupling_map, - supported_instructions=None, - dynamic_reprate_enabled=False, - rep_delay_range=None, - default_rep_delay=None, - max_experiments=None, - sample_name=None, - n_registers=None, - register_map=None, - configurable=None, - credits_required=None, - online_date=None, - display_name=None, - description=None, - tags=None, - dt=None, - dtm=None, - processor_type=None, - parametric_pulses=None, - **kwargs, - ): - """Initialize a QasmBackendConfiguration Object - - Args: - backend_name (str): The backend name - backend_version (str): The backend version in the form X.Y.Z - n_qubits (int): the number of qubits for the backend - basis_gates (list): The list of strings for the basis gates of the - backends - gates (list): The list of GateConfig objects for the basis gates of - the backend - local (bool): True if the backend is local or False if remote - simulator (bool): True if the backend is a simulator - conditional (bool): True if the backend supports conditional - operations - open_pulse (bool): True if the backend supports OpenPulse - memory (bool): True if the backend supports memory - max_shots (int): The maximum number of shots allowed on the backend - coupling_map (list): The coupling map for the device - supported_instructions (List[str]): Instructions supported by the backend. - dynamic_reprate_enabled (bool): whether delay between programs can be set dynamically - (ie via ``rep_delay``). Defaults to False. - rep_delay_range (List[float]): 2d list defining supported range of repetition - delays for backend in μs. First entry is lower end of the range, second entry is - higher end of the range. Optional, but will be specified when - ``dynamic_reprate_enabled=True``. - default_rep_delay (float): Value of ``rep_delay`` if not specified by user and - ``dynamic_reprate_enabled=True``. - max_experiments (int): The maximum number of experiments per job - sample_name (str): Sample name for the backend - n_registers (int): Number of register slots available for feedback - (if conditional is True) - register_map (list): An array of dimension n_qubits X - n_registers that specifies whether a qubit can store a - measurement in a certain register slot. - configurable (bool): True if the backend is configurable, if the - backend is a simulator - credits_required (bool): True if backend requires credits to run a - job. - online_date (datetime.datetime): The date that the device went online - display_name (str): Alternate name field for the backend - description (str): A description for the backend - tags (list): A list of string tags to describe the backend - dt (float): Qubit drive channel timestep in nanoseconds. - dtm (float): Measurement drive channel timestep in nanoseconds. - processor_type (dict): Processor type for this backend. A dictionary of the - form ``{"family": , "revision": , segment: }`` such as - ``{"family": "Canary", "revision": "1.0", segment: "A"}``. - - - family: Processor family of this backend. - - revision: Revision version of this processor. - - segment: Segment this processor belongs to within a larger chip. - parametric_pulses (list): A list of pulse shapes which are supported on the backend. - For example: ``['gaussian', 'constant']`` - - **kwargs: optional fields - """ - self._data = {} - - self.backend_name = backend_name - self.backend_version = backend_version - self.n_qubits = n_qubits - self.basis_gates = basis_gates - self.gates = gates - self.local = local - self.simulator = simulator - self.conditional = conditional - self.open_pulse = open_pulse - self.memory = memory - self.max_shots = max_shots - self.coupling_map = coupling_map - if supported_instructions: - self.supported_instructions = supported_instructions - - self.dynamic_reprate_enabled = dynamic_reprate_enabled - if rep_delay_range: - self.rep_delay_range = [_rd * 1e-6 for _rd in rep_delay_range] # convert to sec - if default_rep_delay is not None: - self.default_rep_delay = default_rep_delay * 1e-6 # convert to sec - - # max_experiments must be >=1 - if max_experiments: - self.max_experiments = max_experiments - if sample_name is not None: - self.sample_name = sample_name - # n_registers must be >=1 - if n_registers: - self.n_registers = 1 - # register_map must have at least 1 entry - if register_map: - self.register_map = register_map - if configurable is not None: - self.configurable = configurable - if credits_required is not None: - self.credits_required = credits_required - if online_date is not None: - self.online_date = online_date - if display_name is not None: - self.display_name = display_name - if description is not None: - self.description = description - if tags is not None: - self.tags = tags - # Add pulse properties here because some backends do not - # fit within the Qasm / Pulse backend partitioning in Qiskit - if dt is not None: - self.dt = dt * 1e-9 - if dtm is not None: - self.dtm = dtm * 1e-9 - if processor_type is not None: - self.processor_type = processor_type - if parametric_pulses is not None: - self.parametric_pulses = parametric_pulses - - # convert lo range from GHz to Hz - if "qubit_lo_range" in kwargs: - kwargs["qubit_lo_range"] = [ - [min_range * 1e9, max_range * 1e9] - for (min_range, max_range) in kwargs["qubit_lo_range"] - ] - - if "meas_lo_range" in kwargs: - kwargs["meas_lo_range"] = [ - [min_range * 1e9, max_range * 1e9] - for (min_range, max_range) in kwargs["meas_lo_range"] - ] - - # convert rep_times from μs to sec - if "rep_times" in kwargs: - kwargs["rep_times"] = [_rt * 1e-6 for _rt in kwargs["rep_times"]] - - self._data.update(kwargs) - - def __getattr__(self, name): - try: - return self._data[name] - except KeyError as ex: - raise AttributeError(f"Attribute {name} is not defined") from ex - - @classmethod - def from_dict(cls, data): - """Create a new GateConfig object from a dictionary. - - Args: - data (dict): A dictionary representing the GateConfig to create. - It will be in the same format as output by - :func:`to_dict`. - Returns: - GateConfig: The GateConfig from the input dictionary. - """ - in_data = copy.copy(data) - gates = [GateConfig.from_dict(x) for x in in_data.pop("gates")] - in_data["gates"] = gates - return cls(**in_data) - - def to_dict(self): - """Return a dictionary format representation of the GateConfig. - - Returns: - dict: The dictionary form of the GateConfig. - """ - out_dict = { - "backend_name": self.backend_name, - "backend_version": self.backend_version, - "n_qubits": self.n_qubits, - "basis_gates": self.basis_gates, - "gates": [x.to_dict() for x in self.gates], - "local": self.local, - "simulator": self.simulator, - "conditional": self.conditional, - "open_pulse": self.open_pulse, - "memory": self.memory, - "max_shots": self.max_shots, - "coupling_map": self.coupling_map, - "dynamic_reprate_enabled": self.dynamic_reprate_enabled, - } - - if hasattr(self, "supported_instructions"): - out_dict["supported_instructions"] = self.supported_instructions - - if hasattr(self, "rep_delay_range"): - out_dict["rep_delay_range"] = [_rd * 1e6 for _rd in self.rep_delay_range] - if hasattr(self, "default_rep_delay"): - out_dict["default_rep_delay"] = self.default_rep_delay * 1e6 - - for kwarg in [ - "max_experiments", - "sample_name", - "n_registers", - "register_map", - "configurable", - "credits_required", - "online_date", - "display_name", - "description", - "tags", - "dt", - "dtm", - "processor_type", - "parametric_pulses", - ]: - if hasattr(self, kwarg): - out_dict[kwarg] = getattr(self, kwarg) - - out_dict.update(self._data) - - if "dt" in out_dict: - out_dict["dt"] *= 1e9 - if "dtm" in out_dict: - out_dict["dtm"] *= 1e9 - - # Use GHz in dict - if "qubit_lo_range" in out_dict: - out_dict["qubit_lo_range"] = [ - [min_range * 1e-9, max_range * 1e-9] - for (min_range, max_range) in out_dict["qubit_lo_range"] - ] - - if "meas_lo_range" in out_dict: - out_dict["meas_lo_range"] = [ - [min_range * 1e-9, max_range * 1e-9] - for (min_range, max_range) in out_dict["meas_lo_range"] - ] - - return out_dict - - @property - def num_qubits(self): - """Returns the number of qubits. - - In future, `n_qubits` should be replaced in favor of `num_qubits` for consistent use - throughout Qiskit. Until this is properly refactored, this property serves as intermediate - solution. - """ - return self.n_qubits - - def __eq__(self, other): - if isinstance(other, QasmBackendConfiguration): - if self.to_dict() == other.to_dict(): - return True - return False - - def __contains__(self, item): - return item in self.__dict__ - - -class BackendConfiguration(QasmBackendConfiguration): - """Backwards compatibility shim representing an abstract backend configuration.""" - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="The models in ``qiskit.providers.models`` are part " - "of the deprecated `BackendV1` workflow and no longer necessary for `BackendV2`. If a user " - "workflow requires these representations it likely relies on deprecated functionality and " - "should be updated to use `BackendV2`.", - stacklevel=3, - ) - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - -class PulseBackendConfiguration(QasmBackendConfiguration): - """Static configuration state for an OpenPulse enabled backend. This contains information - about the set up of the device which can be useful for building Pulse programs. - """ - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="The models in ``qiskit.providers.models`` are part " - "of the deprecated `BackendV1` workflow and no longer necessary for `BackendV2`. If a user " - "workflow requires these representations it likely relies on deprecated functionality and " - "should be updated to use `BackendV2`.", - stacklevel=3, - ) - def __init__( - self, - backend_name: str, - backend_version: str, - n_qubits: int, - basis_gates: List[str], - gates: GateConfig, - local: bool, - simulator: bool, - conditional: bool, - open_pulse: bool, - memory: bool, - max_shots: int, - coupling_map, - n_uchannels: int, - u_channel_lo: List[List[UchannelLO]], - meas_levels: List[int], - qubit_lo_range: List[List[float]], - meas_lo_range: List[List[float]], - dt: float, - dtm: float, - rep_times: List[float], - meas_kernels: List[str], - discriminators: List[str], - hamiltonian: Dict[str, Any] = None, - channel_bandwidth=None, - acquisition_latency=None, - conditional_latency=None, - meas_map=None, - max_experiments=None, - sample_name=None, - n_registers=None, - register_map=None, - configurable=None, - credits_required=None, - online_date=None, - display_name=None, - description=None, - tags=None, - channels: Dict[str, Any] = None, - **kwargs, - ): - """ - Initialize a backend configuration that contains all the extra configuration that is made - available for OpenPulse backends. - - Args: - backend_name: backend name. - backend_version: backend version in the form X.Y.Z. - n_qubits: number of qubits. - basis_gates: list of basis gates names on the backend. - gates: list of basis gates on the backend. - local: backend is local or remote. - simulator: backend is a simulator. - conditional: backend supports conditional operations. - open_pulse: backend supports open pulse. - memory: backend supports memory. - max_shots: maximum number of shots supported. - coupling_map (list): The coupling map for the device - n_uchannels: Number of u-channels. - u_channel_lo: U-channel relationship on device los. - meas_levels: Supported measurement levels. - qubit_lo_range: Qubit lo ranges for each qubit with form (min, max) in GHz. - meas_lo_range: Measurement lo ranges for each qubit with form (min, max) in GHz. - dt: Qubit drive channel timestep in nanoseconds. - dtm: Measurement drive channel timestep in nanoseconds. - rep_times: Supported repetition times (program execution time) for backend in μs. - meas_kernels: Supported measurement kernels. - discriminators: Supported discriminators. - hamiltonian: An optional dictionary with fields characterizing the system hamiltonian. - channel_bandwidth (list): Bandwidth of all channels - (qubit, measurement, and U) - acquisition_latency (list): Array of dimension - n_qubits x n_registers. Latency (in units of dt) to write a - measurement result from qubit n into register slot m. - conditional_latency (list): Array of dimension n_channels - [d->u->m] x n_registers. Latency (in units of dt) to do a - conditional operation on channel n from register slot m - meas_map (list): Grouping of measurement which are multiplexed - max_experiments (int): The maximum number of experiments per job - sample_name (str): Sample name for the backend - n_registers (int): Number of register slots available for feedback - (if conditional is True) - register_map (list): An array of dimension n_qubits X - n_registers that specifies whether a qubit can store a - measurement in a certain register slot. - configurable (bool): True if the backend is configurable, if the - backend is a simulator - credits_required (bool): True if backend requires credits to run a - job. - online_date (datetime.datetime): The date that the device went online - display_name (str): Alternate name field for the backend - description (str): A description for the backend - tags (list): A list of string tags to describe the backend - channels: An optional dictionary containing information of each channel -- their - purpose, type, and qubits operated on. - **kwargs: Optional fields. - """ - self.n_uchannels = n_uchannels - self.u_channel_lo = u_channel_lo - self.meas_levels = meas_levels - - # convert from GHz to Hz - self.qubit_lo_range = [ - [min_range * 1e9, max_range * 1e9] for (min_range, max_range) in qubit_lo_range - ] - self.meas_lo_range = [ - [min_range * 1e9, max_range * 1e9] for (min_range, max_range) in meas_lo_range - ] - - self.meas_kernels = meas_kernels - self.discriminators = discriminators - self.hamiltonian = hamiltonian - if hamiltonian is not None: - self.hamiltonian = dict(hamiltonian) - self.hamiltonian["vars"] = { - k: v * 1e9 if isinstance(v, numbers.Number) else v - for k, v in self.hamiltonian["vars"].items() - } - - self.rep_times = [_rt * 1e-6 for _rt in rep_times] # convert to sec - - self.dt = dt * 1e-9 - self.dtm = dtm * 1e-9 - - if channels is not None: - self.channels = channels - - ( - self._qubit_channel_map, - self._channel_qubit_map, - self._control_channels, - ) = self._parse_channels(channels=channels) - else: - self._control_channels = defaultdict(list) - - if channel_bandwidth is not None: - self.channel_bandwidth = [ - [min_range * 1e9, max_range * 1e9] for (min_range, max_range) in channel_bandwidth - ] - if acquisition_latency is not None: - self.acquisition_latency = acquisition_latency - if conditional_latency is not None: - self.conditional_latency = conditional_latency - if meas_map is not None: - self.meas_map = meas_map - super().__init__( - backend_name=backend_name, - backend_version=backend_version, - n_qubits=n_qubits, - basis_gates=basis_gates, - gates=gates, - local=local, - simulator=simulator, - conditional=conditional, - open_pulse=open_pulse, - memory=memory, - max_shots=max_shots, - coupling_map=coupling_map, - max_experiments=max_experiments, - sample_name=sample_name, - n_registers=n_registers, - register_map=register_map, - configurable=configurable, - credits_required=credits_required, - online_date=online_date, - display_name=display_name, - description=description, - tags=tags, - **kwargs, - ) - - @classmethod - def from_dict(cls, data): - """Create a new GateConfig object from a dictionary. - - Args: - data (dict): A dictionary representing the GateConfig to create. - It will be in the same format as output by :func:`to_dict`. - - Returns: - GateConfig: The GateConfig from the input dictionary. - """ - in_data = copy.copy(data) - gates = [GateConfig.from_dict(x) for x in in_data.pop("gates")] - in_data["gates"] = gates - input_uchannels = in_data.pop("u_channel_lo") - u_channels = [] - for channel in input_uchannels: - u_channels.append([UchannelLO.from_dict(x) for x in channel]) - in_data["u_channel_lo"] = u_channels - return cls(**in_data) - - def to_dict(self): - """Return a dictionary format representation of the GateConfig. - - Returns: - dict: The dictionary form of the GateConfig. - """ - out_dict = super().to_dict() - u_channel_lo = [] - for x in self.u_channel_lo: - channel = [] - for y in x: - channel.append(y.to_dict()) - u_channel_lo.append(channel) - out_dict.update( - { - "n_uchannels": self.n_uchannels, - "u_channel_lo": u_channel_lo, - "meas_levels": self.meas_levels, - "qubit_lo_range": self.qubit_lo_range, - "meas_lo_range": self.meas_lo_range, - "meas_kernels": self.meas_kernels, - "discriminators": self.discriminators, - "rep_times": self.rep_times, - "dt": self.dt, - "dtm": self.dtm, - } - ) - - if hasattr(self, "channel_bandwidth"): - out_dict["channel_bandwidth"] = self.channel_bandwidth - if hasattr(self, "meas_map"): - out_dict["meas_map"] = self.meas_map - if hasattr(self, "acquisition_latency"): - out_dict["acquisition_latency"] = self.acquisition_latency - if hasattr(self, "conditional_latency"): - out_dict["conditional_latency"] = self.conditional_latency - if "channels" in out_dict: - out_dict.pop("_qubit_channel_map") - out_dict.pop("_channel_qubit_map") - out_dict.pop("_control_channels") - - # Use GHz in dict - if self.qubit_lo_range: - out_dict["qubit_lo_range"] = [ - [min_range * 1e-9, max_range * 1e-9] - for (min_range, max_range) in self.qubit_lo_range - ] - - if self.meas_lo_range: - out_dict["meas_lo_range"] = [ - [min_range * 1e-9, max_range * 1e-9] - for (min_range, max_range) in self.meas_lo_range - ] - - if self.rep_times: - out_dict["rep_times"] = [_rt * 1e6 for _rt in self.rep_times] - - out_dict["dt"] *= 1e9 - out_dict["dtm"] *= 1e9 - - if hasattr(self, "channel_bandwidth"): - out_dict["channel_bandwidth"] = [ - [min_range * 1e-9, max_range * 1e-9] - for (min_range, max_range) in self.channel_bandwidth - ] - - if self.hamiltonian: - hamiltonian = copy.deepcopy(self.hamiltonian) - hamiltonian["vars"] = { - k: v * 1e-9 if isinstance(v, numbers.Number) else v - for k, v in hamiltonian["vars"].items() - } - out_dict["hamiltonian"] = hamiltonian - - if hasattr(self, "channels"): - out_dict["channels"] = self.channels - - return out_dict - - def __eq__(self, other): - if isinstance(other, QasmBackendConfiguration): - if self.to_dict() == other.to_dict(): - return True - return False - - @property - def sample_rate(self) -> float: - """Sample rate of the signal channels in Hz (1/dt).""" - return 1.0 / self.dt - - @property - def control_channels(self) -> Dict[Tuple[int, ...], List]: - """Return the control channels""" - return self._control_channels - - def drive(self, qubit: int) -> DriveChannel: - """ - Return the drive channel for the given qubit. - - Raises: - BackendConfigurationError: If the qubit is not a part of the system. - - Returns: - Qubit drive channel. - """ - if not 0 <= qubit < self.n_qubits: - raise BackendConfigurationError(f"Invalid index for {qubit}-qubit system.") - return DriveChannel(qubit) - - def measure(self, qubit: int) -> MeasureChannel: - """ - Return the measure stimulus channel for the given qubit. - - Raises: - BackendConfigurationError: If the qubit is not a part of the system. - Returns: - Qubit measurement stimulus line. - """ - if not 0 <= qubit < self.n_qubits: - raise BackendConfigurationError(f"Invalid index for {qubit}-qubit system.") - return MeasureChannel(qubit) - - def acquire(self, qubit: int) -> AcquireChannel: - """ - Return the acquisition channel for the given qubit. - - Raises: - BackendConfigurationError: If the qubit is not a part of the system. - Returns: - Qubit measurement acquisition line. - """ - if not 0 <= qubit < self.n_qubits: - raise BackendConfigurationError(f"Invalid index for {qubit}-qubit systems.") - return AcquireChannel(qubit) - - def control(self, qubits: Iterable[int] = None) -> List[ControlChannel]: - """ - Return the secondary drive channel for the given qubit -- typically utilized for - controlling multiqubit interactions. This channel is derived from other channels. - - Args: - qubits: Tuple or list of qubits of the form `(control_qubit, target_qubit)`. - - Raises: - BackendConfigurationError: If the ``qubits`` is not a part of the system or if - the backend does not provide `channels` information in its configuration. - - Returns: - List of control channels. - """ - try: - if isinstance(qubits, list): - qubits = tuple(qubits) - return self._control_channels[qubits] - except KeyError as ex: - raise BackendConfigurationError( - f"Couldn't find the ControlChannel operating on qubits {qubits} on " - f"{self.n_qubits}-qubit system. The ControlChannel information is retrieved " - "from the backend." - ) from ex - except AttributeError as ex: - raise BackendConfigurationError( - f"This backend - '{self.backend_name}' does not provide channel information." - ) from ex - - def get_channel_qubits(self, channel: Channel) -> List[int]: - """ - Return a list of indices for qubits which are operated on directly by the given ``channel``. - - Raises: - BackendConfigurationError: If ``channel`` is not a found or if - the backend does not provide `channels` information in its configuration. - - Returns: - List of qubits operated on my the given ``channel``. - """ - try: - return self._channel_qubit_map[channel] - except KeyError as ex: - raise BackendConfigurationError(f"Couldn't find the Channel - {channel}") from ex - except AttributeError as ex: - raise BackendConfigurationError( - f"This backend - '{self.backend_name}' does not provide channel information." - ) from ex - - def get_qubit_channels(self, qubit: Union[int, Iterable[int]]) -> List[Channel]: - r"""Return a list of channels which operate on the given ``qubit``. - - Raises: - BackendConfigurationError: If ``qubit`` is not a found or if - the backend does not provide `channels` information in its configuration. - - Returns: - List of ``Channel``\s operated on my the given ``qubit``. - """ - channels = set() - try: - if isinstance(qubit, int): - for key, value in self._qubit_channel_map.items(): - if qubit in key: - channels.update(value) - if len(channels) == 0: - raise KeyError - elif isinstance(qubit, list): - qubit = tuple(qubit) - channels.update(self._qubit_channel_map[qubit]) - elif isinstance(qubit, tuple): - channels.update(self._qubit_channel_map[qubit]) - return list(channels) - except KeyError as ex: - raise BackendConfigurationError(f"Couldn't find the qubit - {qubit}") from ex - except AttributeError as ex: - raise BackendConfigurationError( - f"This backend - '{self.backend_name}' does not provide channel information." - ) from ex - - def describe(self, channel: ControlChannel) -> Dict[DriveChannel, complex]: - """ - Return a basic description of the channel dependency. Derived channels are given weights - which describe how their frames are linked to other frames. - For instance, the backend could be configured with this setting:: - - u_channel_lo = [ - [UchannelLO(q=0, scale=1. + 0.j)], - [UchannelLO(q=0, scale=-1. + 0.j), UchannelLO(q=1, scale=1. + 0.j)] - ] - - Then, this method can be used as follows:: - - backend.configuration().describe(ControlChannel(1)) - >>> {DriveChannel(0): -1, DriveChannel(1): 1} - - Args: - channel: The derived channel to describe. - Raises: - BackendConfigurationError: If channel is not a ControlChannel. - Returns: - Control channel derivations. - """ - if not isinstance(channel, ControlChannel): - raise BackendConfigurationError("Can only describe ControlChannels.") - result = {} - for u_chan_lo in self.u_channel_lo[channel.index]: - result[DriveChannel(u_chan_lo.q)] = u_chan_lo.scale - return result - - def _parse_channels(self, channels: Dict[set, Any]) -> Dict[Any, Any]: - r""" - Generates a dictionaries of ``Channel``\s, and tuple of qubit(s) they operate on. - - Args: - channels: An optional dictionary containing information of each channel -- their - purpose, type, and qubits operated on. - - Returns: - qubit_channel_map: Dictionary mapping tuple of qubit(s) to list of ``Channel``\s. - channel_qubit_map: Dictionary mapping ``Channel`` to list of qubit(s). - control_channels: Dictionary mapping tuple of qubit(s), to list of - ``ControlChannel``\s. - """ - qubit_channel_map = defaultdict(list) - channel_qubit_map = defaultdict(list) - control_channels = defaultdict(list) - channels_dict = { - DriveChannel.prefix: DriveChannel, - ControlChannel.prefix: ControlChannel, - MeasureChannel.prefix: MeasureChannel, - "acquire": AcquireChannel, - } - for channel, config in channels.items(): - channel_prefix, index = self._get_channel_prefix_index(channel) - channel_type = channels_dict[channel_prefix] - qubits = tuple(config["operates"]["qubits"]) - if channel_prefix in channels_dict: - qubit_channel_map[qubits].append(channel_type(index)) - channel_qubit_map[(channel_type(index))].extend(list(qubits)) - if channel_prefix == ControlChannel.prefix: - control_channels[qubits].append(channel_type(index)) - return dict(qubit_channel_map), dict(channel_qubit_map), dict(control_channels) - - def _get_channel_prefix_index(self, channel: str) -> str: - """Return channel prefix and index from the given ``channel``. - - Args: - channel: Name of channel. - - Raises: - BackendConfigurationError: If invalid channel name is found. - - Return: - Channel name and index. For example, if ``channel=acquire0``, this method - returns ``acquire`` and ``0``. - """ - channel_prefix = re.match(r"(?P[a-z]+)(?P[0-9]+)", channel) - try: - return channel_prefix.group("channel"), int(channel_prefix.group("index")) - except AttributeError as ex: - raise BackendConfigurationError(f"Invalid channel name - '{channel}' found.") from ex diff --git a/qiskit/providers/models/backendproperties.py b/qiskit/providers/models/backendproperties.py deleted file mode 100644 index 75e7cd18d03a..000000000000 --- a/qiskit/providers/models/backendproperties.py +++ /dev/null @@ -1,517 +0,0 @@ -# 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 Properties classes.""" - -import copy -import datetime -from typing import Any, Iterable, Tuple, Union, Dict -import dateutil.parser - -from qiskit.providers.exceptions import BackendPropertyError -from qiskit.utils import deprecate_func -from qiskit.utils.units import apply_prefix - -PropertyT = Tuple[Any, datetime.datetime] - - -class Nduv: - """Class representing name-date-unit-value - - Attributes: - date: date. - name: name. - unit: unit. - value: value. - """ - - def __init__(self, date, name, unit, value): - """Initialize a new name-date-unit-value object - - Args: - date (datetime.datetime): Date field - name (str): Name field - unit (str): Nduv unit - value (float): The value of the Nduv - """ - self.date = date - self.name = name - self.unit = unit - self.value = value - - @classmethod - def from_dict(cls, data): - """Create a new Nduv object from a dictionary. - - Args: - data (dict): A dictionary representing the Nduv to create. - It will be in the same format as output by - :func:`to_dict`. - - Returns: - Nduv: The Nduv from the input dictionary. - """ - return cls(**data) - - def to_dict(self): - """Return a dictionary format representation of the object. - - Returns: - dict: The dictionary form of the Nduv. - """ - out_dict = { - "date": self.date, - "name": self.name, - "unit": self.unit, - "value": self.value, - } - return out_dict - - def __eq__(self, other): - if isinstance(other, Nduv): - if self.to_dict() == other.to_dict(): - return True - return False - - def __repr__(self): - return f"Nduv({repr(self.date)}, {self.name}, {self.unit}, {self.value})" - - -class GateProperties: - """Class representing a gate's properties - - Attributes: - qubits: qubits. - gate: gate. - parameters: parameters. - """ - - _data = {} - - def __init__(self, qubits, gate, parameters, **kwargs): - """Initialize a new :class:`GateProperties` object - - Args: - qubits (list): A list of integers representing qubits - gate (str): The gates name - parameters (list): List of :class:`Nduv` objects for the - name-date-unit-value for the gate - kwargs: Optional additional fields - """ - self._data = {} - self.qubits = qubits - self.gate = gate - self.parameters = parameters - self._data.update(kwargs) - - def __getattr__(self, name): - try: - return self._data[name] - except KeyError as ex: - raise AttributeError(f"Attribute {name} is not defined") from ex - - @classmethod - def from_dict(cls, data): - """Create a new Gate object from a dictionary. - - Args: - data (dict): A dictionary representing the Gate to create. - It will be in the same format as output by - :func:`to_dict`. - - Returns: - GateProperties: The Nduv from the input dictionary. - """ - in_data = {} - for key, value in data.items(): - if key == "parameters": - in_data[key] = list(map(Nduv.from_dict, value)) - else: - in_data[key] = value - return cls(**in_data) - - def to_dict(self): - """Return a dictionary format representation of the BackendStatus. - - Returns: - dict: The dictionary form of the Gate. - """ - out_dict = {} - out_dict["qubits"] = self.qubits - out_dict["gate"] = self.gate - out_dict["parameters"] = [x.to_dict() for x in self.parameters] - out_dict.update(self._data) - return out_dict - - def __eq__(self, other): - if isinstance(other, GateProperties): - if self.to_dict() == other.to_dict(): - return True - return False - - -# Backwards compatibility. -Gate = GateProperties - - -class BackendProperties: - """Class representing backend properties - - This holds backend properties measured by the provider. All properties - which are provided optionally. These properties may describe qubits, gates, - or other general properties of the backend. - """ - - _data = {} - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="The models in ``qiskit.providers.models`` and related objects are part " - "of the deprecated `BackendV1` workflow, and no longer necessary for `BackendV2`. If a user " - "workflow requires these representations it likely relies on deprecated functionality and " - "should be updated to use `BackendV2`.", - stacklevel=3, - ) - def __init__( - self, backend_name, backend_version, last_update_date, qubits, gates, general, **kwargs - ): - """Initialize a BackendProperties instance. - - Args: - backend_name (str): Backend name. - backend_version (str): Backend version in the form X.Y.Z. - last_update_date (datetime.datetime or str): Last date/time that a property was - updated. If specified as a ``str``, it must be in ISO format. - qubits (list): System qubit parameters as a list of lists of - :class:`Nduv` objects - gates (list): System gate parameters as a list of :class:`GateProperties` - objects - general (list): General parameters as a list of :class:`Nduv` - objects - kwargs: optional additional fields - """ - self._data = {} - self.backend_name = backend_name - self.backend_version = backend_version - if isinstance(last_update_date, str): - last_update_date = dateutil.parser.isoparse(last_update_date) - self.last_update_date = last_update_date - self.general = general - self.qubits = qubits - self.gates = gates - - self._qubits = {} - for qubit, props in enumerate(qubits): - formatted_props = {} - for prop in props: - value = self._apply_prefix(prop.value, prop.unit) - formatted_props[prop.name] = (value, prop.date) - self._qubits[qubit] = formatted_props - - self._gates = {} - for gate in gates: - if gate.gate not in self._gates: - self._gates[gate.gate] = {} - formatted_props = {} - for param in gate.parameters: - value = self._apply_prefix(param.value, param.unit) - formatted_props[param.name] = (value, param.date) - self._gates[gate.gate][tuple(gate.qubits)] = formatted_props - self._data.update(kwargs) - - def __getattr__(self, name): - try: - return self._data[name] - except KeyError as ex: - raise AttributeError(f"Attribute {name} is not defined") from ex - - @classmethod - def from_dict(cls, data): - """Create a new BackendProperties object from a dictionary. - - Args: - data (dict): A dictionary representing the BackendProperties to create. It will be in - the same format as output by :meth:`to_dict`. - - Returns: - BackendProperties: The BackendProperties from the input dictionary. - """ - in_data = copy.copy(data) - backend_name = in_data.pop("backend_name") - backend_version = in_data.pop("backend_version") - last_update_date = in_data.pop("last_update_date") - qubits = [] - for qubit in in_data.pop("qubits"): - nduvs = [] - for nduv in qubit: - nduvs.append(Nduv.from_dict(nduv)) - qubits.append(nduvs) - gates = [GateProperties.from_dict(x) for x in in_data.pop("gates")] - general = [Nduv.from_dict(x) for x in in_data.pop("general")] - - return cls( - backend_name, backend_version, last_update_date, qubits, gates, general, **in_data - ) - - def to_dict(self): - """Return a dictionary format representation of the BackendProperties. - - Returns: - dict: The dictionary form of the BackendProperties. - """ - out_dict = { - "backend_name": self.backend_name, - "backend_version": self.backend_version, - "last_update_date": self.last_update_date, - } - out_dict["qubits"] = [] - for qubit in self.qubits: - qubit_props = [] - for item in qubit: - qubit_props.append(item.to_dict()) - out_dict["qubits"].append(qubit_props) - out_dict["gates"] = [x.to_dict() for x in self.gates] - out_dict["general"] = [x.to_dict() for x in self.general] - out_dict.update(self._data) - return out_dict - - def __eq__(self, other): - if isinstance(other, BackendProperties): - if self.to_dict() == other.to_dict(): - return True - return False - - def gate_property( - self, - gate: str, - qubits: Union[int, Iterable[int]] = None, - name: str = None, - ) -> Union[ - Dict[Tuple[int, ...], Dict[str, PropertyT]], - Dict[str, PropertyT], - PropertyT, - ]: - """ - Return the property of the given gate. - - Args: - gate: Name of the gate. - qubits: The qubit to find the property for. - name: Optionally used to specify which gate property to return. - - Returns: - Gate property as a tuple of the value and the time it was measured. - - Raises: - BackendPropertyError: If the property is not found or name is - specified but qubit is not. - """ - try: - result = self._gates[gate] - if qubits is not None: - if isinstance(qubits, int): - qubits = (qubits,) - result = result[tuple(qubits)] - if name: - result = result[name] - elif name: - raise BackendPropertyError(f"Provide qubits to get {name} of {gate}") - except KeyError as ex: - raise BackendPropertyError(f"Could not find the desired property for {gate}") from ex - return result - - def faulty_qubits(self): - """Return a list of faulty qubits.""" - faulty = [] - for qubit in self._qubits: - if not self.is_qubit_operational(qubit): - faulty.append(qubit) - return faulty - - def faulty_gates(self): - """Return a list of faulty gates.""" - faulty = [] - for gate in self.gates: - if not self.is_gate_operational(gate.gate, gate.qubits): - faulty.append(gate) - return faulty - - def is_gate_operational(self, gate: str, qubits: Union[int, Iterable[int]] = None) -> bool: - """ - Return the operational status of the given gate. - - Args: - gate: Name of the gate. - qubits: The qubit to find the operational status for. - - Returns: - bool: Operational status of the given gate. True if the gate is operational, - False otherwise. - """ - properties = self.gate_property(gate, qubits) - if "operational" in properties: - return bool(properties["operational"][0]) - return True # if property operational not existent, then True. - - def gate_error(self, gate: str, qubits: Union[int, Iterable[int]]) -> float: - """ - Return gate error estimates from backend properties. - - Args: - gate: The gate for which to get the error. - qubits: The specific qubits for the gate. - - Returns: - Gate error of the given gate and qubit(s). - """ - return self.gate_property(gate, qubits, "gate_error")[0] # Throw away datetime at index 1 - - def gate_length(self, gate: str, qubits: Union[int, Iterable[int]]) -> float: - """ - Return the duration of the gate in units of seconds. - - Args: - gate: The gate for which to get the duration. - qubits: The specific qubits for the gate. - - Returns: - Gate length of the given gate and qubit(s). - """ - return self.gate_property(gate, qubits, "gate_length")[0] # Throw away datetime at index 1 - - def qubit_property( - self, - qubit: int, - name: str = None, - ) -> Union[ - Dict[str, PropertyT], - PropertyT, - ]: - """ - Return the property of the given qubit. - - Args: - qubit: The property to look for. - name: Optionally used to specify within the hierarchy which property to return. - - Returns: - Qubit property as a tuple of the value and the time it was measured. - - Raises: - BackendPropertyError: If the property is not found. - """ - try: - result = self._qubits[qubit] - if name is not None: - result = result[name] - except KeyError as ex: - formatted_name = "y '" + name + "'" if name else "ies" - raise BackendPropertyError( - f"Couldn't find the propert{formatted_name} for qubit {qubit}." - ) from ex - return result - - def t1(self, qubit: int) -> float: # pylint: disable=invalid-name - """ - Return the T1 time of the given qubit. - - Args: - qubit: Qubit for which to return the T1 time of. - - Returns: - T1 time of the given qubit. - """ - return self.qubit_property(qubit, "T1")[0] # Throw away datetime at index 1 - - def t2(self, qubit: int) -> float: # pylint: disable=invalid-name - """ - Return the T2 time of the given qubit. - - Args: - qubit: Qubit for which to return the T2 time of. - - Returns: - T2 time of the given qubit. - """ - return self.qubit_property(qubit, "T2")[0] # Throw away datetime at index 1 - - def frequency(self, qubit: int) -> float: - """ - Return the frequency of the given qubit. - - Args: - qubit: Qubit for which to return frequency of. - - Returns: - Frequency of the given qubit. - """ - return self.qubit_property(qubit, "frequency")[0] # Throw away datetime at index 1 - - def readout_error(self, qubit: int) -> float: - """ - Return the readout error of the given qubit. - - Args: - qubit: Qubit for which to return the readout error of. - - Return: - Readout error of the given qubit. - """ - return self.qubit_property(qubit, "readout_error")[0] # Throw away datetime at index 1 - - def readout_length(self, qubit: int) -> float: - """ - Return the readout length [sec] of the given qubit. - - Args: - qubit: Qubit for which to return the readout length of. - - Return: - Readout length of the given qubit. - """ - return self.qubit_property(qubit, "readout_length")[0] # Throw away datetime at index 1 - - def is_qubit_operational(self, qubit: int) -> bool: - """ - Return the operational status of the given qubit. - - Args: - qubit: Qubit for which to return operational status of. - - Returns: - Operational status of the given qubit. - """ - properties = self.qubit_property(qubit) - if "operational" in properties: - return bool(properties["operational"][0]) - return True # if property operational not existent, then True. - - def _apply_prefix(self, value: float, unit: str) -> float: - """ - Given a SI unit prefix and value, apply the prefix to convert to - standard SI unit. - - Args: - value: The number to apply prefix to. - unit: String prefix. - - Returns: - Converted value. - - Raises: - BackendPropertyError: If the units aren't recognized. - """ - try: - return apply_prefix(value, unit) - except Exception as ex: - raise BackendPropertyError(f"Could not understand units: {unit}") from ex diff --git a/qiskit/providers/models/backendstatus.py b/qiskit/providers/models/backendstatus.py deleted file mode 100644 index 5001bffce5ed..000000000000 --- a/qiskit/providers/models/backendstatus.py +++ /dev/null @@ -1,94 +0,0 @@ -# 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. - -"""Class for backend status.""" - -import html -from qiskit.exceptions import QiskitError - - -class BackendStatus: - """Class representing Backend Status.""" - - def __init__( - self, - backend_name: str, - backend_version: str, - operational: bool, - pending_jobs: int, - status_msg: str, - ): - """Initialize a BackendStatus object - - Args: - backend_name: The backend's name - backend_version: The backend's version of the form X.Y.Z - operational: True if the backend is operational - pending_jobs: The number of pending jobs on the backend - status_msg: The status msg for the backend - - Raises: - QiskitError: If the backend version is in an invalid format - """ - self.backend_name = backend_name - self.backend_version = backend_version - self.operational = operational - if pending_jobs < 0: - raise QiskitError("Pending jobs must be >=0") - self.pending_jobs = pending_jobs - self.status_msg = status_msg - - @classmethod - def from_dict(cls, data): - """Create a new BackendStatus object from a dictionary. - - Args: - data (dict): A dictionary representing the BaseBakend to create. - It will be in the same format as output by - :func:`to_dict`. - - Returns: - BackendStatus: The BackendStatus from the input dictionary. - """ - return cls(**data) - - def to_dict(self): - """Return a dictionary format representation of the BackendStatus. - - Returns: - dict: The dictionary form of the QobjHeader. - """ - return self.__dict__ - - def __eq__(self, other): - if isinstance(other, BackendStatus): - if self.__dict__ == other.__dict__: - return True - return False - - def _repr_html_(self) -> str: - """Return html representation of the object - - Returns: - Representation used in Jupyter notebook and other IDE's that call the method - - """ - rpr = self.__repr__() - html_code = ( - f"

{html.escape(rpr)}
" - f"name: {self.backend_name}
" - f"version: {self.backend_version}," - f" pending jobs: {self.pending_jobs}
" - f"status: {self.status_msg}
" - ) - - return html_code diff --git a/qiskit/providers/models/jobstatus.py b/qiskit/providers/models/jobstatus.py deleted file mode 100644 index 2fc58e437ab9..000000000000 --- a/qiskit/providers/models/jobstatus.py +++ /dev/null @@ -1,66 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2018. -# -# 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 job status.""" - - -class JobStatus: - """Model for JobStatus. - - Attributes: - job_id (str): backend job_id. - status (str): status of the job. - status_msg (str): status message. - """ - - _data = {} - - def __init__(self, job_id, status, status_msg, **kwargs): - self._data = {} - self.job_id = job_id - self.status = status - self.status_msg = status_msg - self._data.update(kwargs) - - @classmethod - def from_dict(cls, data): - """Create a new JobStatus object from a dictionary. - - Args: - data (dict): A dictionary representing the JobStatus to create. - It will be in the same format as output by - :meth:`to_dict`. - - Returns: - JobStatus: The ``JobStatus`` from the input dictionary. - """ - return cls(**data) - - def to_dict(self): - """Return a dictionary format representation of the JobStatus. - - Returns: - dict: The dictionary form of the JobStatus. - """ - out_dict = { - "job_id": self.job_id, - "status": self.status, - "status_msg": self.status_msg, - } - out_dict.update(self._data) - return out_dict - - def __getattr__(self, name): - try: - return self._data[name] - except KeyError as ex: - raise AttributeError(f"Attribute {name} is not defined") from ex diff --git a/qiskit/providers/models/pulsedefaults.py b/qiskit/providers/models/pulsedefaults.py deleted file mode 100644 index 8f4101ffc510..000000000000 --- a/qiskit/providers/models/pulsedefaults.py +++ /dev/null @@ -1,305 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2019. -# -# 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. - - -"""Model and schema for pulse defaults.""" -import warnings -from typing import Any, Dict, List - -from qiskit.pulse.instruction_schedule_map import InstructionScheduleMap, PulseQobjDef -from qiskit.qobj import PulseLibraryItem, PulseQobjInstruction -from qiskit.qobj.converters import QobjToInstructionConverter -from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency - - -class MeasurementKernel: - """Class representing a Measurement Kernel.""" - - def __init__(self, name, params): - """Initialize a MeasurementKernel object - - Args: - name (str): The name of the measurement kernel - params: The parameters of the measurement kernel - """ - self.name = name - self.params = params - - def to_dict(self): - """Return a dictionary format representation of the MeasurementKernel. - - Returns: - dict: The dictionary form of the MeasurementKernel. - """ - return {"name": self.name, "params": self.params} - - @classmethod - def from_dict(cls, data): - """Create a new MeasurementKernel object from a dictionary. - - Args: - data (dict): A dictionary representing the MeasurementKernel - to create. It will be in the same format as output by - :meth:`to_dict`. - - Returns: - MeasurementKernel: The MeasurementKernel from the input dictionary. - """ - return cls(**data) - - -class Discriminator: - """Class representing a Discriminator.""" - - def __init__(self, name, params): - """Initialize a Discriminator object - - Args: - name (str): The name of the discriminator - params: The parameters of the discriminator - """ - self.name = name - self.params = params - - def to_dict(self): - """Return a dictionary format representation of the Discriminator. - - Returns: - dict: The dictionary form of the Discriminator. - """ - return {"name": self.name, "params": self.params} - - @classmethod - def from_dict(cls, data): - """Create a new Discriminator object from a dictionary. - - Args: - data (dict): A dictionary representing the Discriminator - to create. It will be in the same format as output by - :meth:`to_dict`. - - Returns: - Discriminator: The Discriminator from the input dictionary. - """ - return cls(**data) - - -class Command: - """Class representing a Command. - - Attributes: - name: Pulse command name. - """ - - _data = {} - - def __init__(self, name: str, qubits=None, sequence=None, **kwargs): - """Initialize a Command object - - Args: - name (str): The name of the command - qubits: The qubits for the command - sequence (PulseQobjInstruction): The sequence for the Command - kwargs: Optional additional fields - """ - self._data = {} - self.name = name - if qubits is not None: - self.qubits = qubits - if sequence is not None: - self.sequence = sequence - self._data.update(kwargs) - - def __getattr__(self, name): - try: - return self._data[name] - except KeyError as ex: - raise AttributeError(f"Attribute {name} is not defined") from ex - - def to_dict(self): - """Return a dictionary format representation of the Command. - - Returns: - dict: The dictionary form of the Command. - """ - out_dict = {"name": self.name} - if hasattr(self, "qubits"): - out_dict["qubits"] = self.qubits - if hasattr(self, "sequence"): - out_dict["sequence"] = [x.to_dict() for x in self.sequence] - out_dict.update(self._data) - return out_dict - - @classmethod - def from_dict(cls, data): - """Create a new Command object from a dictionary. - - Args: - data (dict): A dictionary representing the ``Command`` - to create. It will be in the same format as output by - :meth:`to_dict`. - - Returns: - Command: The ``Command`` from the input dictionary. - """ - # Pulse command data is nested dictionary. - # To avoid deepcopy and avoid mutating the source object, create new dict here. - in_data = {} - for key, value in data.items(): - if key == "sequence": - in_data[key] = list(map(PulseQobjInstruction.from_dict, value)) - else: - in_data[key] = value - return cls(**in_data) - - -class PulseDefaults: - """Description of default settings for Pulse systems. These are instructions or settings that - may be good starting points for the Pulse user. The user may modify these defaults for custom - scheduling. - """ - - _data = {} - - @deprecate_pulse_dependency - def __init__( - self, - qubit_freq_est: List[float], - meas_freq_est: List[float], - buffer: int, - pulse_library: List[PulseLibraryItem], - cmd_def: List[Command], - meas_kernel: MeasurementKernel = None, - discriminator: Discriminator = None, - **kwargs: Dict[str, Any], - ): - """ - Validate and reformat transport layer inputs to initialize. - Args: - qubit_freq_est: Estimated qubit frequencies in GHz. - meas_freq_est: Estimated measurement cavity frequencies in GHz. - buffer: Default buffer time (in units of dt) between pulses. - pulse_library: Pulse name and sample definitions. - cmd_def: Operation name and definition in terms of Commands. - meas_kernel: The measurement kernels - discriminator: The discriminators - **kwargs: Other attributes for the super class. - """ - self._data = {} - self.buffer = buffer - self.qubit_freq_est = [freq * 1e9 for freq in qubit_freq_est] - """Qubit frequencies in Hertz.""" - self.meas_freq_est = [freq * 1e9 for freq in meas_freq_est] - """Measurement frequencies in Hertz.""" - self.pulse_library = pulse_library - self.cmd_def = cmd_def - self.instruction_schedule_map = InstructionScheduleMap() - self.converter = QobjToInstructionConverter(pulse_library) - - for inst in cmd_def: - entry = PulseQobjDef(converter=self.converter, name=inst.name) - entry.define(inst.sequence, user_provided=False) - self.instruction_schedule_map._add( - instruction_name=inst.name, - qubits=tuple(inst.qubits), - entry=entry, - ) - - if meas_kernel is not None: - self.meas_kernel = meas_kernel - if discriminator is not None: - self.discriminator = discriminator - - self._data.update(kwargs) - - def __getattr__(self, name): - try: - return self._data[name] - except KeyError as ex: - raise AttributeError(f"Attribute {name} is not defined") from ex - - def to_dict(self): - """Return a dictionary format representation of the PulseDefaults. - Returns: - dict: The dictionary form of the PulseDefaults. - """ - out_dict = { - "qubit_freq_est": self.qubit_freq_est, - "meas_freq_est": self.qubit_freq_est, - "buffer": self.buffer, - "pulse_library": [x.to_dict() for x in self.pulse_library], - "cmd_def": [x.to_dict() for x in self.cmd_def], - } - if hasattr(self, "meas_kernel"): - out_dict["meas_kernel"] = self.meas_kernel.to_dict() - if hasattr(self, "discriminator"): - out_dict["discriminator"] = self.discriminator.to_dict() - for key, value in self.__dict__.items(): - if key not in [ - "qubit_freq_est", - "meas_freq_est", - "buffer", - "pulse_library", - "cmd_def", - "meas_kernel", - "discriminator", - "converter", - "instruction_schedule_map", - ]: - out_dict[key] = value - out_dict.update(self._data) - - out_dict["qubit_freq_est"] = [freq * 1e-9 for freq in self.qubit_freq_est] - out_dict["meas_freq_est"] = [freq * 1e-9 for freq in self.meas_freq_est] - return out_dict - - @classmethod - def from_dict(cls, data): - """Create a new PulseDefaults object from a dictionary. - - Args: - data (dict): A dictionary representing the PulseDefaults - to create. It will be in the same format as output by - :meth:`to_dict`. - Returns: - PulseDefaults: The PulseDefaults from the input dictionary. - """ - schema = { - "pulse_library": PulseLibraryItem, # The class PulseLibraryItem is deprecated - "cmd_def": Command, - "meas_kernel": MeasurementKernel, - "discriminator": Discriminator, - } - - # Pulse defaults data is nested dictionary. - # To avoid deepcopy and avoid mutating the source object, create new dict here. - in_data = {} - for key, value in data.items(): - if key in schema: - with warnings.catch_warnings(): - # The class PulseLibraryItem is deprecated - warnings.filterwarnings("ignore", category=DeprecationWarning, module="qiskit") - if isinstance(value, list): - in_data[key] = list(map(schema[key].from_dict, value)) - else: - in_data[key] = schema[key].from_dict(value) - else: - in_data[key] = value - - return cls(**in_data) - - def __str__(self): - qubit_freqs = [freq / 1e9 for freq in self.qubit_freq_est] - meas_freqs = [freq / 1e9 for freq in self.meas_freq_est] - qfreq = f"Qubit Frequencies [GHz]\n{qubit_freqs}" - mfreq = f"Measurement Frequencies [GHz]\n{meas_freqs} " - return f"<{self.__class__.__name__}({str(self.instruction_schedule_map)}{qfreq}\n{mfreq})>" diff --git a/qiskit/pulse/calibration_entries.py b/qiskit/pulse/calibration_entries.py index f0c0e4497fa1..0055e48f0682 100644 --- a/qiskit/pulse/calibration_entries.py +++ b/qiskit/pulse/calibration_entries.py @@ -13,7 +13,6 @@ """Internal format of calibration data in target.""" from __future__ import annotations import inspect -import warnings from abc import ABCMeta, abstractmethod from collections.abc import Sequence, Callable from enum import IntEnum @@ -21,9 +20,6 @@ from qiskit.pulse.exceptions import PulseError from qiskit.pulse.schedule import Schedule, ScheduleBlock -from qiskit.qobj.converters import QobjToInstructionConverter -from qiskit.qobj.pulse_qobj import PulseQobjInstruction -from qiskit.exceptions import QiskitError IncompletePulseQobj = object() @@ -285,97 +281,3 @@ def __eq__(self, other): def __str__(self): params_str = ", ".join(self.get_signature().parameters.keys()) return f"Callable {self._definition.__name__}({params_str})" - - -class PulseQobjDef(ScheduleDef): - """Qobj JSON serialized format instruction sequence. - - A JSON serialized program can be converted into Qiskit Pulse program with - the provided qobj converter. Because the Qobj JSON doesn't provide signature, - conversion process occurs when the signature is requested for the first time - and the generated pulse program is cached for performance. - - .. see_also:: - :class:`.CalibrationEntry` for the purpose of this class. - - """ - - def __init__( - self, - arguments: Sequence[str] | None = None, - converter: QobjToInstructionConverter | None = None, - name: str | None = None, - ): - """Define an empty entry. - - Args: - arguments: User provided argument names for this entry, if parameterized. - converter: Optional. Qobj to Qiskit converter. - name: Name of schedule. - """ - super().__init__(arguments=arguments) - - self._converter = converter or QobjToInstructionConverter(pulse_library=[]) - self._name = name - self._source: list[PulseQobjInstruction] | None = None - - def _build_schedule(self): - """Build pulse schedule from cmd-def sequence.""" - with warnings.catch_warnings(): - warnings.simplefilter(action="ignore", category=DeprecationWarning) - # `Schedule` is being deprecated in Qiskit 1.3 - schedule = Schedule(name=self._name) - try: - for qobj_inst in self._source: - for qiskit_inst in self._converter._get_sequences(qobj_inst): - schedule.insert(qobj_inst.t0, qiskit_inst, inplace=True) - self._definition = schedule - self._parse_argument() - except QiskitError as ex: - # When the play waveform data is missing in pulse_lib we cannot build schedule. - # Instead of raising an error, get_schedule should return None. - warnings.warn( - f"Pulse calibration cannot be built and the entry is ignored: {ex.message}.", - UserWarning, - ) - self._definition = IncompletePulseQobj - - def define( - self, - definition: list[PulseQobjInstruction], - user_provided: bool = False, - ): - # This doesn't generate signature immediately, because of lazy schedule build. - self._source = definition - self._user_provided = user_provided - - def get_signature(self) -> inspect.Signature: - if self._definition is None: - self._build_schedule() - return super().get_signature() - - def get_schedule(self, *args, **kwargs) -> Schedule | ScheduleBlock | None: - if self._definition is None: - self._build_schedule() - if self._definition is IncompletePulseQobj: - return None - return super().get_schedule(*args, **kwargs) - - def __eq__(self, other): - if isinstance(other, PulseQobjDef): - # If both objects are Qobj just check Qobj equality. - return self._source == other._source - if isinstance(other, ScheduleDef) and self._definition is None: - # To compare with other schedule def, this also generates schedule object from qobj. - self._build_schedule() - if hasattr(other, "_definition"): - return self._definition == other._definition - return False - - def __str__(self): - if self._definition is None: - # Avoid parsing schedule for pretty print. - return "PulseQobj" - if self._definition is IncompletePulseQobj: - return "None" - return super().__str__() diff --git a/qiskit/pulse/instruction_schedule_map.py b/qiskit/pulse/instruction_schedule_map.py index 75ce3b8ef755..96e8ad0a48a6 100644 --- a/qiskit/pulse/instruction_schedule_map.py +++ b/qiskit/pulse/instruction_schedule_map.py @@ -40,9 +40,6 @@ CalibrationEntry, ScheduleDef, CallableDef, - # for backward compatibility - PulseQobjDef, - CalibrationPublisher, ) from qiskit.pulse.exceptions import PulseError from qiskit.pulse.schedule import Schedule, ScheduleBlock diff --git a/qiskit/pulse/macros.py b/qiskit/pulse/macros.py index a01441dfc2f2..2d73c27e54b7 100644 --- a/qiskit/pulse/macros.py +++ b/qiskit/pulse/macros.py @@ -39,8 +39,6 @@ def measure( .. note:: This function internally dispatches schedule generation logic depending on input backend model. - For the :class:`.BackendV1`, it considers conventional :class:`.InstructionScheduleMap` - and utilizes the backend calibration defined for a group of qubits in the `meas_map`. For the :class:`.BackendV2`, it assembles calibrations of single qubit measurement defined in the backend target to build a composite measurement schedule for `qubits`. diff --git a/qiskit/qobj/__init__.py b/qiskit/qobj/__init__.py deleted file mode 100644 index 5922fdf5dd8b..000000000000 --- a/qiskit/qobj/__init__.py +++ /dev/null @@ -1,75 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2018. -# -# 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. - -""" -========================= -Qobj (:mod:`qiskit.qobj`) -========================= - -.. currentmodule:: qiskit.qobj - -Base -==== - -.. autosummary:: - :toctree: ../stubs/ - - QobjExperimentHeader - QobjHeader - -Qasm -==== - -.. autosummary:: - :toctree: ../stubs/ - - QasmQobj - QasmQobjInstruction - QasmQobjExperimentConfig - QasmQobjExperiment - QasmQobjConfig - QasmExperimentCalibrations - GateCalibration - -Pulse -===== - -.. autosummary:: - :toctree: ../stubs/ - - PulseQobj - PulseQobjInstruction - PulseQobjExperimentConfig - PulseQobjExperiment - PulseQobjConfig - QobjMeasurementOption - PulseLibraryItem -""" - -from qiskit.qobj.common import QobjExperimentHeader -from qiskit.qobj.common import QobjHeader - -from qiskit.qobj.pulse_qobj import PulseQobj -from qiskit.qobj.pulse_qobj import PulseQobjInstruction -from qiskit.qobj.pulse_qobj import PulseQobjExperimentConfig -from qiskit.qobj.pulse_qobj import PulseQobjExperiment -from qiskit.qobj.pulse_qobj import PulseQobjConfig -from qiskit.qobj.pulse_qobj import QobjMeasurementOption -from qiskit.qobj.pulse_qobj import PulseLibraryItem - -from qiskit.qobj.qasm_qobj import GateCalibration -from qiskit.qobj.qasm_qobj import QasmExperimentCalibrations -from qiskit.qobj.qasm_qobj import QasmQobj -from qiskit.qobj.qasm_qobj import QasmQobjInstruction -from qiskit.qobj.qasm_qobj import QasmQobjExperiment -from qiskit.qobj.qasm_qobj import QasmQobjConfig -from qiskit.qobj.qasm_qobj import QasmQobjExperimentConfig diff --git a/qiskit/qobj/common.py b/qiskit/qobj/common.py deleted file mode 100644 index 0f1e2372fd9a..000000000000 --- a/qiskit/qobj/common.py +++ /dev/null @@ -1,81 +0,0 @@ -# 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. - -"""Module providing definitions of common Qobj classes.""" -from types import SimpleNamespace - -from qiskit.utils import deprecate_func - - -class QobjDictField(SimpleNamespace): - """A class used to represent a dictionary field in Qobj - - Exists as a backwards compatibility shim around a dictionary for Qobjs - previously constructed using marshmallow. - """ - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="The `Qobj` class and related functionality are part of the deprecated " - "`BackendV1` workflow, and no longer necessary for `BackendV2`. If a user " - "workflow requires `Qobj` it likely relies on deprecated functionality and " - "should be updated to use `BackendV2`.", - ) - def __init__(self, **kwargs): - """Instantiate a new Qobj dict field object. - - Args: - kwargs: arbitrary keyword arguments that can be accessed as - attributes of the object. - """ - self.__dict__.update(kwargs) - - def to_dict(self): - """Return a dictionary format representation of the OpenQASM 2 Qobj. - - Returns: - dict: The dictionary form of the QobjHeader. - """ - return self.__dict__ - - @classmethod - def from_dict(cls, data): - """Create a new QobjHeader object from a dictionary. - - Args: - data (dict): A dictionary representing the QobjHeader to create. It - will be in the same format as output by :func:`to_dict`. - - Returns: - QobjDictFieldr: The QobjDictField from the input dictionary. - """ - - return cls(**data) - - def __eq__(self, other): - if isinstance(other, self.__class__): - if self.__dict__ == other.__dict__: - return True - return False - - -class QobjHeader(QobjDictField): - """A class used to represent a dictionary header in Qobj objects.""" - - pass - - -class QobjExperimentHeader(QobjHeader): - """A class representing a header dictionary for a Qobj Experiment.""" - - pass diff --git a/qiskit/qobj/converters/__init__.py b/qiskit/qobj/converters/__init__.py deleted file mode 100644 index 1eed0a90de89..000000000000 --- a/qiskit/qobj/converters/__init__.py +++ /dev/null @@ -1,18 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2019. -# -# 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. - -""" -Helper modules to convert qiskit frontend object to proper qobj model. -""" - -from .pulse_instruction import InstructionToQobjConverter, QobjToInstructionConverter -from .lo_config import LoConfigConverter diff --git a/qiskit/qobj/converters/lo_config.py b/qiskit/qobj/converters/lo_config.py deleted file mode 100644 index a5b5beb80df2..000000000000 --- a/qiskit/qobj/converters/lo_config.py +++ /dev/null @@ -1,177 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2019. -# -# 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. - -"""Helper class used to convert a user LO configuration into a list of frequencies.""" - -from qiskit.pulse.channels import DriveChannel, MeasureChannel -from qiskit.pulse.configuration import LoConfig -from qiskit.exceptions import QiskitError -from qiskit.utils import deprecate_func - - -class LoConfigConverter: - """This class supports to convert LoConfig into ~`lo_freq` attribute of configs. - The format of LO frequency setup can be easily modified by replacing - ``get_qubit_los`` and ``get_meas_los`` to align with your backend. - """ - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="The `Qobj` class and related functionality are part of the deprecated " - "`BackendV1` workflow, and no longer necessary for `BackendV2`. If a user " - "workflow requires `Qobj` it likely relies on deprecated functionality and " - "should be updated to use `BackendV2`.", - ) - def __init__( - self, - qobj_model, - qubit_lo_freq=None, - meas_lo_freq=None, - qubit_lo_range=None, - meas_lo_range=None, - **run_config, - ): - """Create new converter. - - Args: - qobj_model (Union[PulseQobjExperimentConfig, QasmQobjExperimentConfig): qobj model for - experiment config. - qubit_lo_freq (Optional[List[float]]): List of default qubit LO frequencies in Hz. - meas_lo_freq (Optional[List[float]]): List of default meas LO frequencies in Hz. - qubit_lo_range (Optional[List[List[float]]]): List of qubit LO ranges, - each of form ``[range_min, range_max]`` in Hz. - meas_lo_range (Optional[List[List[float]]]): List of measurement LO ranges, - each of form ``[range_min, range_max]`` in Hz. - n_qubits (int): Number of qubits in the system. - run_config (dict): experimental configuration. - """ - self.qobj_model = qobj_model - self.qubit_lo_freq = qubit_lo_freq - self.meas_lo_freq = meas_lo_freq - self.run_config = run_config - self.n_qubits = self.run_config.get("n_qubits", None) - - self.default_lo_config = LoConfig() - - if qubit_lo_range: - for i, lo_range in enumerate(qubit_lo_range): - self.default_lo_config.add_lo_range(DriveChannel(i), lo_range) - - if meas_lo_range: - for i, lo_range in enumerate(meas_lo_range): - self.default_lo_config.add_lo_range(MeasureChannel(i), lo_range) - - def __call__(self, user_lo_config): - """Return experiment config w/ LO values property configured. - - Args: - user_lo_config (LoConfig): A dictionary of LOs to format. - - Returns: - Union[PulseQobjExperimentConfig, QasmQobjExperimentConfig]: Qobj experiment config. - """ - lo_config = {} - - q_los = self.get_qubit_los(user_lo_config) - if q_los: - lo_config["qubit_lo_freq"] = [freq / 1e9 for freq in q_los] - - m_los = self.get_meas_los(user_lo_config) - if m_los: - lo_config["meas_lo_freq"] = [freq / 1e9 for freq in m_los] - - return self.qobj_model(**lo_config) - - def get_qubit_los(self, user_lo_config): - """Set experiment level qubit LO frequencies. Use default values from job level if - experiment level values not supplied. If experiment level and job level values not supplied, - raise an error. If configured LO frequency is the same as default, this method returns - ``None``. - - Args: - user_lo_config (LoConfig): A dictionary of LOs to format. - - Returns: - List[float]: A list of qubit LOs. - - Raises: - QiskitError: When LO frequencies are missing and no default is set at job level. - """ - _q_los = None - - # try to use job level default values - if self.qubit_lo_freq: - _q_los = self.qubit_lo_freq.copy() - # otherwise initialize list with ``None`` entries - elif self.n_qubits: - _q_los = [None] * self.n_qubits - - # fill experiment level LO's - if _q_los: - for channel, lo_freq in user_lo_config.qubit_los.items(): - self.default_lo_config.check_lo(channel, lo_freq) - _q_los[channel.index] = lo_freq - - if _q_los == self.qubit_lo_freq: - return None - - # if ``None`` remains in LO's, indicates default not provided and user value is missing - # raise error - if None in _q_los: - raise QiskitError( - "Invalid experiment level qubit LO's. Must either pass values " - "for all drive channels or pass 'default_qubit_los'." - ) - - return _q_los - - def get_meas_los(self, user_lo_config): - """Set experiment level meas LO frequencies. Use default values from job level if experiment - level values not supplied. If experiment level and job level values not supplied, raise an - error. If configured LO frequency is the same as default, this method returns ``None``. - - Args: - user_lo_config (LoConfig): A dictionary of LOs to format. - - Returns: - List[float]: A list of measurement LOs. - - Raises: - QiskitError: When LO frequencies are missing and no default is set at job level. - """ - _m_los = None - # try to use job level default values - if self.meas_lo_freq: - _m_los = self.meas_lo_freq.copy() - # otherwise initialize list with ``None`` entries - elif self.n_qubits: - _m_los = [None] * self.n_qubits - - # fill experiment level LO's - if _m_los: - for channel, lo_freq in user_lo_config.meas_los.items(): - self.default_lo_config.check_lo(channel, lo_freq) - _m_los[channel.index] = lo_freq - - if _m_los == self.meas_lo_freq: - return None - - # if ``None`` remains in LO's, indicates default not provided and user value is missing - # raise error - if None in _m_los: - raise QiskitError( - "Invalid experiment level measurement LO's. Must either pass " - "values for all measurement channels or pass 'default_meas_los'." - ) - - return _m_los diff --git a/qiskit/qobj/converters/pulse_instruction.py b/qiskit/qobj/converters/pulse_instruction.py deleted file mode 100644 index 1c7b740d92f6..000000000000 --- a/qiskit/qobj/converters/pulse_instruction.py +++ /dev/null @@ -1,901 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2019. -# -# 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. - -# pylint: disable=invalid-name, missing-function-docstring - -"""Helper class used to convert a pulse instruction into PulseQobjInstruction.""" - -import hashlib -import re -import warnings -from enum import Enum -from functools import singledispatchmethod -from typing import Union, List, Iterator, Optional -import numpy as np - -from qiskit.circuit import Parameter, ParameterExpression -from qiskit.pulse import channels, instructions, library -from qiskit.pulse.configuration import Kernel, Discriminator -from qiskit.pulse.exceptions import QiskitError -from qiskit.pulse.parser import parse_string_expr -from qiskit.pulse.schedule import Schedule -from qiskit.qobj import QobjMeasurementOption, PulseLibraryItem, PulseQobjInstruction -from qiskit.qobj.utils import MeasLevel -from qiskit.utils import deprecate_func -from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency - - -class ParametricPulseShapes(Enum): - """Map the assembled pulse names to the pulse module waveforms. - - The enum name is the transport layer name for pulse shapes, the - value is its mapping to the OpenPulse Command in Qiskit. - """ - - gaussian = "Gaussian" - gaussian_square = "GaussianSquare" - gaussian_square_drag = "GaussianSquareDrag" - gaussian_square_echo = "gaussian_square_echo" - drag = "Drag" - constant = "Constant" - - @classmethod - def from_instance( - cls, - instance: library.SymbolicPulse, - ) -> "ParametricPulseShapes": - """Get Qobj name from the pulse class instance. - - Args: - instance: SymbolicPulse class. - - Returns: - Qobj name. - - Raises: - QiskitError: When pulse instance is not recognizable type. - """ - if isinstance(instance, library.SymbolicPulse): - return cls(instance.pulse_type) - - 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 InstructionToQobjConverter: - """Converts Qiskit Pulse in-memory representation into Qobj data. - - This converter converts the Qiskit Pulse in-memory representation into - the transfer layer format to submit the data from client to the server. - - The transfer layer format must be the text representation that conforms to - the `OpenPulse specification`__. - Extension to the OpenPulse can be achieved by subclassing this this with - extra methods corresponding to each augmented instruction. For example, - - .. plot:: - :include-source: - :nofigs: - - class MyConverter(InstructionToQobjConverter): - - def _convert_NewInstruction(self, instruction, time_offset): - command_dict = { - 'name': 'new_inst', - 't0': time_offset + instruction.start_time, - 'param1': instruction.param1, - 'param2': instruction.param2 - } - return self._qobj_model(**command_dict) - - where ``NewInstruction`` must be a class name of Qiskit Pulse instruction. - """ - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="The `Qobj` class and related functionality are part of the deprecated " - "`BackendV1` workflow, and no longer necessary for `BackendV2`. If a user " - "workflow requires `Qobj` it likely relies on deprecated functionality and " - "should be updated to use `BackendV2`.", - ) - def __init__( - self, - qobj_model: PulseQobjInstruction, - **run_config, - ): - """Create new converter. - - Args: - qobj_model: Transfer layer data schema. - run_config: Run configuration. - """ - self._qobj_model = qobj_model - self._run_config = run_config - - def __call__( - self, - shift: int, - instruction: Union[instructions.Instruction, List[instructions.Acquire]], - ) -> PulseQobjInstruction: - """Convert Qiskit in-memory representation to Qobj instruction. - - Args: - instruction: Instruction data in Qiskit Pulse. - - Returns: - Qobj instruction data. - - Raises: - QiskitError: When list of instruction is provided except for Acquire. - """ - if isinstance(instruction, list): - if all(isinstance(inst, instructions.Acquire) for inst in instruction): - return self._convert_bundled_acquire( - instruction_bundle=instruction, - time_offset=shift, - ) - raise QiskitError("Bundle of instruction is not supported except for Acquire.") - - return self._convert_instruction(instruction, shift) - - @singledispatchmethod - def _convert_instruction( - self, - instruction, - time_offset: int, - ) -> PulseQobjInstruction: - raise QiskitError( - f"Pulse Qobj doesn't support {instruction.__class__.__name__}. " - "This instruction cannot be submitted with Qobj." - ) - - @_convert_instruction.register(instructions.Acquire) - def _convert_acquire( - self, - instruction, - time_offset: int, - ) -> PulseQobjInstruction: - """Return converted `Acquire`. - - Args: - instruction: Qiskit Pulse acquire instruction. - time_offset: Offset time. - - Returns: - Qobj instruction data. - """ - meas_level = self._run_config.get("meas_level", 2) - mem_slot = [] - if instruction.mem_slot: - mem_slot = [instruction.mem_slot.index] - - command_dict = { - "name": "acquire", - "t0": time_offset + instruction.start_time, - "duration": instruction.duration, - "qubits": [instruction.channel.index], - "memory_slot": mem_slot, - } - if meas_level == MeasLevel.CLASSIFIED: - # setup discriminators - if instruction.discriminator: - command_dict.update( - { - "discriminators": [ - QobjMeasurementOption( - name=instruction.discriminator.name, - params=instruction.discriminator.params, - ) - ] - } - ) - # setup register_slots - if instruction.reg_slot: - command_dict.update({"register_slot": [instruction.reg_slot.index]}) - if meas_level in [MeasLevel.KERNELED, MeasLevel.CLASSIFIED]: - # setup kernels - if instruction.kernel: - command_dict.update( - { - "kernels": [ - QobjMeasurementOption( - name=instruction.kernel.name, params=instruction.kernel.params - ) - ] - } - ) - return self._qobj_model(**command_dict) - - @_convert_instruction.register(instructions.SetFrequency) - def _convert_set_frequency( - self, - instruction, - time_offset: int, - ) -> PulseQobjInstruction: - """Return converted `SetFrequency`. - - Args: - instruction: Qiskit Pulse set frequency instruction. - time_offset: Offset time. - - Returns: - Qobj instruction data. - """ - command_dict = { - "name": "setf", - "t0": time_offset + instruction.start_time, - "ch": instruction.channel.name, - "frequency": instruction.frequency / 10**9, - } - return self._qobj_model(**command_dict) - - @_convert_instruction.register(instructions.ShiftFrequency) - def _convert_shift_frequency( - self, - instruction, - time_offset: int, - ) -> PulseQobjInstruction: - """Return converted `ShiftFrequency`. - - Args: - instruction: Qiskit Pulse shift frequency instruction. - time_offset: Offset time. - - Returns: - Qobj instruction data. - """ - command_dict = { - "name": "shiftf", - "t0": time_offset + instruction.start_time, - "ch": instruction.channel.name, - "frequency": instruction.frequency / 10**9, - } - return self._qobj_model(**command_dict) - - @_convert_instruction.register(instructions.SetPhase) - def _convert_set_phase( - self, - instruction, - time_offset: int, - ) -> PulseQobjInstruction: - """Return converted `SetPhase`. - - Args: - instruction: Qiskit Pulse set phase instruction. - time_offset: Offset time. - - Returns: - Qobj instruction data. - """ - command_dict = { - "name": "setp", - "t0": time_offset + instruction.start_time, - "ch": instruction.channel.name, - "phase": instruction.phase, - } - return self._qobj_model(**command_dict) - - @_convert_instruction.register(instructions.ShiftPhase) - def _convert_shift_phase( - self, - instruction, - time_offset: int, - ) -> PulseQobjInstruction: - """Return converted `ShiftPhase`. - - Args: - instruction: Qiskit Pulse shift phase instruction. - time_offset: Offset time. - - Returns: - Qobj instruction data. - """ - command_dict = { - "name": "fc", - "t0": time_offset + instruction.start_time, - "ch": instruction.channel.name, - "phase": instruction.phase, - } - return self._qobj_model(**command_dict) - - @_convert_instruction.register(instructions.Delay) - def _convert_delay( - self, - instruction, - time_offset: int, - ) -> PulseQobjInstruction: - """Return converted `Delay`. - - Args: - instruction: Qiskit Pulse delay instruction. - time_offset: Offset time. - - Returns: - Qobj instruction data. - """ - command_dict = { - "name": "delay", - "t0": time_offset + instruction.start_time, - "ch": instruction.channel.name, - "duration": instruction.duration, - } - return self._qobj_model(**command_dict) - - @_convert_instruction.register(instructions.Play) - def _convert_play( - self, - instruction, - time_offset: int, - ) -> PulseQobjInstruction: - """Return converted `Play`. - - Args: - instruction: Qiskit Pulse play instruction. - time_offset: Offset time. - - Returns: - Qobj instruction data. - """ - if isinstance(instruction.pulse, library.SymbolicPulse): - params = dict(instruction.pulse.parameters) - # IBM backends expect "amp" to be the complex amplitude - if "amp" in params and "angle" in params: - params["amp"] = complex(params["amp"] * np.exp(1j * params["angle"])) - del params["angle"] - - command_dict = { - "name": "parametric_pulse", - "pulse_shape": ParametricPulseShapes.from_instance(instruction.pulse).name, - "t0": time_offset + instruction.start_time, - "ch": instruction.channel.name, - "parameters": params, - } - else: - command_dict = { - "name": instruction.name, - "t0": time_offset + instruction.start_time, - "ch": instruction.channel.name, - } - - return self._qobj_model(**command_dict) - - @_convert_instruction.register(instructions.Snapshot) - def _convert_snapshot( - self, - instruction, - time_offset: int, - ) -> PulseQobjInstruction: - """Return converted `Snapshot`. - - Args: - time_offset: Offset time. - instruction: Qiskit Pulse snapshot instruction. - - Returns: - Qobj instruction data. - """ - command_dict = { - "name": "snapshot", - "t0": time_offset + instruction.start_time, - "label": instruction.label, - "type": instruction.type, - } - return self._qobj_model(**command_dict) - - def _convert_bundled_acquire( - self, - instruction_bundle: List[instructions.Acquire], - time_offset: int, - ) -> PulseQobjInstruction: - """Return converted list of parallel `Acquire` instructions. - - Args: - instruction_bundle: List of Qiskit Pulse acquire instruction. - time_offset: Offset time. - - Returns: - Qobj instruction data. - - Raises: - QiskitError: When instructions are not aligned. - QiskitError: When instructions have different duration. - QiskitError: When discriminator or kernel is missing in a part of instructions. - """ - meas_level = self._run_config.get("meas_level", 2) - - t0 = instruction_bundle[0].start_time - duration = instruction_bundle[0].duration - memory_slots = [] - register_slots = [] - qubits = [] - discriminators = [] - kernels = [] - - for instruction in instruction_bundle: - qubits.append(instruction.channel.index) - - if instruction.start_time != t0: - raise QiskitError( - "The supplied acquire instructions have different starting times. " - "Something has gone wrong calling this code. Please report this " - "issue." - ) - - if instruction.duration != duration: - raise QiskitError( - "Acquire instructions beginning at the same time must have same duration." - ) - - if instruction.mem_slot: - memory_slots.append(instruction.mem_slot.index) - - if meas_level == MeasLevel.CLASSIFIED: - # setup discriminators - if instruction.discriminator: - discriminators.append( - QobjMeasurementOption( - name=instruction.discriminator.name, - params=instruction.discriminator.params, - ) - ) - # setup register_slots - if instruction.reg_slot: - register_slots.append(instruction.reg_slot.index) - - if meas_level in [MeasLevel.KERNELED, MeasLevel.CLASSIFIED]: - # setup kernels - if instruction.kernel: - kernels.append( - QobjMeasurementOption( - name=instruction.kernel.name, params=instruction.kernel.params - ) - ) - command_dict = { - "name": "acquire", - "t0": time_offset + t0, - "duration": duration, - "qubits": qubits, - } - if memory_slots: - command_dict["memory_slot"] = memory_slots - - if register_slots: - command_dict["register_slot"] = register_slots - - if discriminators: - num_discriminators = len(discriminators) - if num_discriminators == len(qubits) or num_discriminators == 1: - command_dict["discriminators"] = discriminators - else: - raise QiskitError( - "A discriminator must be supplied for every acquisition or a single " - "discriminator for all acquisitions." - ) - - if kernels: - num_kernels = len(kernels) - if num_kernels == len(qubits) or num_kernels == 1: - command_dict["kernels"] = kernels - else: - raise QiskitError( - "A kernel must be supplied for every acquisition or a single " - "kernel for all acquisitions." - ) - - return self._qobj_model(**command_dict) - - -class QobjToInstructionConverter: - """Converts Qobj data into Qiskit Pulse in-memory representation. - - This converter converts data from transfer layer into the in-memory representation of - the front-end of Qiskit Pulse. - - The transfer layer format must be the text representation that conforms to - the `OpenPulse specification`__. - Extension to the OpenPulse can be achieved by subclassing this this with - extra methods corresponding to each augmented instruction. For example, - - .. plot:: - :include-source: - :nofigs: - - class MyConverter(QobjToInstructionConverter): - - def get_supported_instructions(self): - instructions = super().get_supported_instructions() - instructions += ["new_inst"] - - return instructions - - def _convert_new_inst(self, instruction): - return NewInstruction(...) - - where ``NewInstruction`` must be a subclass of :class:`~qiskit.pulse.instructions.Instruction`. - """ - - __chan_regex__ = re.compile(r"([a-zA-Z]+)(\d+)") - - @deprecate_pulse_dependency - def __init__( - self, - pulse_library: Optional[List[PulseLibraryItem]] = None, - **run_config, - ): - """Create new converter. - - Args: - pulse_library: Pulse library in Qobj format. - run_config: Run configuration. - """ - pulse_library_dict = {} - for lib_item in pulse_library: - pulse_library_dict[lib_item.name] = lib_item.samples - - self._pulse_library = pulse_library_dict - self._run_config = run_config - - def __call__(self, instruction: PulseQobjInstruction) -> Schedule: - """Convert Qobj instruction to Qiskit in-memory representation. - - Args: - instruction: Instruction data in Qobj format. - - Returns: - Scheduled Qiskit Pulse instruction in Schedule format. - """ - schedule = Schedule() - for inst in self._get_sequences(instruction): - schedule.insert(instruction.t0, inst, inplace=True) - return schedule - - def _get_sequences( - self, - instruction: PulseQobjInstruction, - ) -> Iterator[instructions.Instruction]: - """A method to iterate over pulse instructions without creating Schedule. - - .. note:: - - This is internal fast-path function, and callers other than this converter class - might directly use this method to generate schedule from multiple - Qobj instructions. Because __call__ always returns a schedule with the time offset - parsed instruction, composing multiple Qobj instructions to create - a gate schedule is somewhat inefficient due to composing overhead of schedules. - Directly combining instructions with this method is much performant. - - Args: - instruction: Instruction data in Qobj format. - - Yields: - Qiskit Pulse instructions. - - :meta public: - """ - try: - method = getattr(self, f"_convert_{instruction.name}") - except AttributeError: - method = self._convert_generic - - yield from method(instruction) - - def get_supported_instructions(self) -> List[str]: - """Retrun a list of supported instructions.""" - return [ - "acquire", - "setp", - "fc", - "setf", - "shiftf", - "delay", - "parametric_pulse", - "snapshot", - ] - - def get_channel(self, channel: str) -> channels.PulseChannel: - """Parse and retrieve channel from ch string. - - Args: - channel: String identifier of pulse instruction channel. - - Returns: - Matched channel object. - - Raises: - QiskitError: Is raised if valid channel is not matched - """ - match = self.__chan_regex__.match(channel) - if match: - prefix, index = match.group(1), int(match.group(2)) - - if prefix == channels.DriveChannel.prefix: - return channels.DriveChannel(index) - elif prefix == channels.MeasureChannel.prefix: - return channels.MeasureChannel(index) - elif prefix == channels.ControlChannel.prefix: - return channels.ControlChannel(index) - - raise QiskitError(f"Channel {channel} is not valid") - - @staticmethod - def disassemble_value(value_expr: Union[float, str]) -> Union[float, ParameterExpression]: - """A helper function to format instruction operand. - - If parameter in string representation is specified, this method parses the - input string and generates Qiskit ParameterExpression object. - - Args: - value_expr: Operand value in Qobj. - - Returns: - Parsed operand value. ParameterExpression object is returned if value is not number. - """ - if isinstance(value_expr, str): - str_expr = parse_string_expr(value_expr, partial_binding=False) - value_expr = str_expr(**{pname: Parameter(pname) for pname in str_expr.params}) - - return value_expr - - def _convert_acquire( - self, - instruction: PulseQobjInstruction, - ) -> Iterator[instructions.Instruction]: - """Return converted `Acquire` instruction. - - Args: - instruction: Acquire qobj - - Yields: - Qiskit Pulse acquire instructions - """ - duration = instruction.duration - qubits = instruction.qubits - acquire_channels = [channels.AcquireChannel(qubit) for qubit in qubits] - - mem_slots = [channels.MemorySlot(instruction.memory_slot[i]) for i in range(len(qubits))] - - if hasattr(instruction, "register_slot"): - register_slots = [ - channels.RegisterSlot(instruction.register_slot[i]) for i in range(len(qubits)) - ] - else: - register_slots = [None] * len(qubits) - - discriminators = ( - instruction.discriminators if hasattr(instruction, "discriminators") else None - ) - if not isinstance(discriminators, list): - discriminators = [discriminators] - if any(discriminators[i] != discriminators[0] for i in range(len(discriminators))): - warnings.warn( - "Can currently only support one discriminator per acquire. Defaulting " - "to first discriminator entry." - ) - discriminator = discriminators[0] - if discriminator: - discriminator = Discriminator(name=discriminators[0].name, **discriminators[0].params) - - kernels = instruction.kernels if hasattr(instruction, "kernels") else None - if not isinstance(kernels, list): - kernels = [kernels] - if any(kernels[0] != kernels[i] for i in range(len(kernels))): - warnings.warn( - "Can currently only support one kernel per acquire. Defaulting to first " - "kernel entry." - ) - kernel = kernels[0] - if kernel: - kernel = Kernel(name=kernels[0].name, **kernels[0].params) - - for acquire_channel, mem_slot, reg_slot in zip(acquire_channels, mem_slots, register_slots): - yield instructions.Acquire( - duration, - acquire_channel, - mem_slot=mem_slot, - reg_slot=reg_slot, - kernel=kernel, - discriminator=discriminator, - ) - - def _convert_setp( - self, - instruction: PulseQobjInstruction, - ) -> Iterator[instructions.Instruction]: - """Return converted `SetPhase` instruction. - - Args: - instruction: SetPhase qobj instruction - - Yields: - Qiskit Pulse set phase instructions - """ - channel = self.get_channel(instruction.ch) - phase = self.disassemble_value(instruction.phase) - - yield instructions.SetPhase(phase, channel) - - def _convert_fc( - self, - instruction: PulseQobjInstruction, - ) -> Iterator[instructions.Instruction]: - """Return converted `ShiftPhase` instruction. - - Args: - instruction: ShiftPhase qobj instruction - - Yields: - Qiskit Pulse shift phase schedule instructions - """ - channel = self.get_channel(instruction.ch) - phase = self.disassemble_value(instruction.phase) - - yield instructions.ShiftPhase(phase, channel) - - def _convert_setf( - self, - instruction: PulseQobjInstruction, - ) -> Iterator[instructions.Instruction]: - """Return converted `SetFrequencyInstruction` instruction. - - .. note:: - - We assume frequency value is expressed in string with "GHz". - Operand value is thus scaled by a factor of 10^9. - - Args: - instruction: SetFrequency qobj instruction - - Yields: - Qiskit Pulse set frequency instructions - """ - channel = self.get_channel(instruction.ch) - frequency = self.disassemble_value(instruction.frequency) * 10**9 - - yield instructions.SetFrequency(frequency, channel) - - def _convert_shiftf( - self, - instruction: PulseQobjInstruction, - ) -> Iterator[instructions.Instruction]: - """Return converted `ShiftFrequency` instruction. - - .. note:: - - We assume frequency value is expressed in string with "GHz". - Operand value is thus scaled by a factor of 10^9. - - Args: - instruction: ShiftFrequency qobj instruction - - Yields: - Qiskit Pulse shift frequency schedule instructions - """ - channel = self.get_channel(instruction.ch) - frequency = self.disassemble_value(instruction.frequency) * 10**9 - - yield instructions.ShiftFrequency(frequency, channel) - - def _convert_delay( - self, - instruction: PulseQobjInstruction, - ) -> Iterator[instructions.Instruction]: - """Return converted `Delay` instruction. - - Args: - instruction: Delay qobj instruction - - Yields: - Qiskit Pulse delay instructions - """ - channel = self.get_channel(instruction.ch) - duration = instruction.duration - - yield instructions.Delay(duration, channel) - - def _convert_parametric_pulse( - self, - instruction: PulseQobjInstruction, - ) -> Iterator[instructions.Instruction]: - """Return converted `Play` instruction with parametric pulse operand. - - .. note:: - - If parametric pulse label is not provided by the backend, this method naively generates - a pulse name based on the pulse shape and bound parameters. This pulse name is formatted - to, for example, `gaussian_a4e3`, here the last four digits are a part of - the hash string generated based on the pulse shape and the parameters. - Because we are using a truncated hash for readability, - there may be a small risk of pulse name collision with other pulses. - Basically the parametric pulse name is used just for visualization purpose and - the pulse module should not have dependency on the parametric pulse names. - - Args: - instruction: Play qobj instruction with parametric pulse - - Yields: - Qiskit Pulse play schedule instructions - """ - channel = self.get_channel(instruction.ch) - - try: - pulse_name = instruction.label - except AttributeError: - sorted_params = sorted(instruction.parameters.items(), key=lambda x: x[0]) - base_str = f"{instruction.pulse_shape}_{str(sorted_params)}" - short_pulse_id = hashlib.md5(base_str.encode("utf-8")).hexdigest()[:4] - pulse_name = f"{instruction.pulse_shape}_{short_pulse_id}" - params = dict(instruction.parameters) - if "amp" in params and isinstance(params["amp"], complex): - params["angle"] = np.angle(params["amp"]) - params["amp"] = np.abs(params["amp"]) - pulse = ParametricPulseShapes.to_type(instruction.pulse_shape)(**params, name=pulse_name) - - yield instructions.Play(pulse, channel) - - def _convert_snapshot( - self, - instruction: PulseQobjInstruction, - ) -> Iterator[instructions.Instruction]: - """Return converted `Snapshot` instruction. - - Args: - instruction: Snapshot qobj instruction - - Yields: - Qiskit Pulse snapshot instructions - """ - yield instructions.Snapshot(instruction.label, instruction.type) - - def _convert_generic( - self, - instruction: PulseQobjInstruction, - ) -> Iterator[instructions.Instruction]: - """Convert generic pulse instruction. - - Args: - instruction: Generic qobj instruction - - Yields: - Qiskit Pulse generic instructions - - Raises: - QiskitError: When instruction name not found. - """ - if instruction.name in self._pulse_library: - waveform = library.Waveform( - samples=self._pulse_library[instruction.name], - name=instruction.name, - ) - channel = self.get_channel(instruction.ch) - - yield instructions.Play(waveform, channel) - else: - if qubits := getattr(instruction, "qubits", None): - msg = f"qubits {qubits}" - else: - msg = f"channel {instruction.ch}" - raise QiskitError( - f"Instruction {instruction.name} on {msg} is not found " - "in Qiskit namespace. This instruction cannot be deserialized." - ) diff --git a/qiskit/qobj/pulse_qobj.py b/qiskit/qobj/pulse_qobj.py deleted file mode 100644 index 1d2d33a1fa17..000000000000 --- a/qiskit/qobj/pulse_qobj.py +++ /dev/null @@ -1,709 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2019. -# -# 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. - -# pylint: disable=invalid-name,redefined-builtin -# pylint: disable=super-init-not-called - -"""Module providing definitions of Pulse Qobj classes.""" - -import copy -import pprint -from typing import Union, List - -import numpy -from qiskit.qobj.common import QobjDictField -from qiskit.qobj.common import QobjHeader -from qiskit.qobj.common import QobjExperimentHeader -from qiskit.utils import deprecate_func - - -class QobjMeasurementOption: - """An individual measurement option.""" - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="The `Qobj` class and related functionality are part of the deprecated " - "`BackendV1` workflow, and no longer necessary for `BackendV2`. If a user " - "workflow requires `Qobj` it likely relies on deprecated functionality and " - "should be updated to use `BackendV2`.", - ) - def __init__(self, name, params=None): - """Instantiate a new QobjMeasurementOption object. - - Args: - name (str): The name of the measurement option - params (list): The parameters of the measurement option. - """ - self.name = name - if params is not None: - self.params = params - - def to_dict(self): - """Return a dict format representation of the QobjMeasurementOption. - - Returns: - dict: The dictionary form of the QasmMeasurementOption. - """ - out_dict = {"name": self.name} - if hasattr(self, "params"): - out_dict["params"] = self.params - return out_dict - - @classmethod - def from_dict(cls, data): - """Create a new QobjMeasurementOption object from a dictionary. - - Args: - data (dict): A dictionary for the experiment config - - Returns: - QobjMeasurementOption: The object from the input dictionary. - """ - name = data.pop("name") - return cls(name, **data) - - def __eq__(self, other): - if isinstance(other, QobjMeasurementOption): - if self.to_dict() == other.to_dict(): - return True - return False - - -class PulseQobjInstruction: - """A class representing a single instruction in an PulseQobj Experiment.""" - - _COMMON_ATTRS = [ - "ch", - "conditional", - "val", - "phase", - "frequency", - "duration", - "qubits", - "memory_slot", - "register_slot", - "label", - "type", - "pulse_shape", - "parameters", - ] - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="The `Qobj` class and related functionality are part of the deprecated " - "`BackendV1` workflow, and no longer necessary for `BackendV2`. If a user " - "workflow requires `Qobj` it likely relies on deprecated functionality and " - "should be updated to use `BackendV2`.", - ) - def __init__( - self, - name, - t0, - ch=None, - conditional=None, - val=None, - phase=None, - duration=None, - qubits=None, - memory_slot=None, - register_slot=None, - kernels=None, - discriminators=None, - label=None, - type=None, - pulse_shape=None, - parameters=None, - frequency=None, - ): - """Instantiate a new PulseQobjInstruction object. - - Args: - name (str): The name of the instruction - t0 (int): Pulse start time in integer **dt** units. - ch (str): The channel to apply the pulse instruction. - conditional (int): The register to use for a conditional for this - instruction - val (complex): Complex value to apply, bounded by an absolute value - of 1. - phase (float): if a ``fc`` instruction, the frame change phase in - radians. - frequency (float): if a ``sf`` instruction, the frequency in Hz. - duration (int): The duration of the pulse in **dt** units. - qubits (list): A list of ``int`` representing the qubits the - instruction operates on - memory_slot (list): If a ``measure`` instruction this is a list - of ``int`` containing the list of memory slots to store the - measurement results in (must be the same length as qubits). - If a ``bfunc`` instruction this is a single ``int`` of the - memory slot to store the boolean function result in. - register_slot (list): If a ``measure`` instruction this is a list - of ``int`` containing the list of register slots in which to - store the measurement results (must be the same length as - qubits). If a ``bfunc`` instruction this is a single ``int`` - of the register slot in which to store the result. - kernels (list): List of :class:`QobjMeasurementOption` objects - defining the measurement kernels and set of parameters if the - measurement level is 1 or 2. Only used for ``acquire`` - instructions. - discriminators (list): A list of :class:`QobjMeasurementOption` - used to set the discriminators to be used if the measurement - level is 2. Only used for ``acquire`` instructions. - label (str): Label of instruction - type (str): Type of instruction - pulse_shape (str): The shape of the parametric pulse - parameters (dict): The parameters for a parametric pulse - """ - self.name = name - self.t0 = t0 - if ch is not None: - self.ch = ch - if conditional is not None: - self.conditional = conditional - if val is not None: - self.val = val - if phase is not None: - self.phase = phase - if frequency is not None: - self.frequency = frequency - if duration is not None: - self.duration = duration - if qubits is not None: - self.qubits = qubits - if memory_slot is not None: - self.memory_slot = memory_slot - if register_slot is not None: - self.register_slot = register_slot - if kernels is not None: - self.kernels = kernels - if discriminators is not None: - self.discriminators = discriminators - if label is not None: - self.label = label - if type is not None: - self.type = type - if pulse_shape is not None: - self.pulse_shape = pulse_shape - if parameters is not None: - self.parameters = parameters - - def to_dict(self): - """Return a dictionary format representation of the Instruction. - - Returns: - dict: The dictionary form of the PulseQobjInstruction. - """ - out_dict = {"name": self.name, "t0": self.t0} - for attr in self._COMMON_ATTRS: - if hasattr(self, attr): - out_dict[attr] = getattr(self, attr) - if hasattr(self, "kernels"): - out_dict["kernels"] = [x.to_dict() for x in self.kernels] - if hasattr(self, "discriminators"): - out_dict["discriminators"] = [x.to_dict() for x in self.discriminators] - return out_dict - - def __repr__(self): - out = f'PulseQobjInstruction(name="{self.name}", t0={self.t0}' - for attr in self._COMMON_ATTRS: - attr_val = getattr(self, attr, None) - if attr_val is not None: - if isinstance(attr_val, str): - out += f', {attr}="{attr_val}"' - else: - out += f", {attr}={attr_val}" - out += ")" - return out - - def __str__(self): - out = f"Instruction: {self.name}\n" - out += f"\t\tt0: {self.t0}\n" - for attr in self._COMMON_ATTRS: - if hasattr(self, attr): - out += f"\t\t{attr}: {getattr(self, attr)}\n" - return out - - @classmethod - def from_dict(cls, data): - """Create a new PulseQobjExperimentConfig object from a dictionary. - - Args: - data (dict): A dictionary for the experiment config - - Returns: - PulseQobjInstruction: The object from the input dictionary. - """ - schema = { - "discriminators": QobjMeasurementOption, - "kernels": QobjMeasurementOption, - } - skip = ["t0", "name"] - - # Pulse instruction data is nested dictionary. - # To avoid deepcopy and avoid mutating the source object, create new dict here. - in_data = {} - for key, value in data.items(): - if key in skip: - continue - if key == "parameters": - # This is flat dictionary of parametric pulse parameters - formatted_value = value.copy() - if "amp" in formatted_value: - formatted_value["amp"] = _to_complex(formatted_value["amp"]) - in_data[key] = formatted_value - continue - if key in schema: - if isinstance(value, list): - in_data[key] = list(map(schema[key].from_dict, value)) - else: - in_data[key] = schema[key].from_dict(value) - else: - in_data[key] = value - - return cls(data["name"], data["t0"], **in_data) - - def __eq__(self, other): - if isinstance(other, PulseQobjInstruction): - if self.to_dict() == other.to_dict(): - return True - return False - - -def _to_complex(value: Union[List[float], complex]) -> complex: - """Convert the input value to type ``complex``. - Args: - value: Value to be converted. - Returns: - Input value in ``complex``. - Raises: - TypeError: If the input value is not in the expected format. - """ - if isinstance(value, list) and len(value) == 2: - return complex(value[0], value[1]) - elif isinstance(value, complex): - return value - - raise TypeError(f"{value} is not in a valid complex number format.") - - -class PulseQobjConfig(QobjDictField): - """A configuration for a Pulse Qobj.""" - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="The `Qobj` class and related functionality are part of the deprecated " - "`BackendV1` workflow, and no longer necessary for `BackendV2`. If a user " - "workflow requires `Qobj` it likely relies on deprecated functionality and " - "should be updated to use `BackendV2`.", - ) - def __init__( - self, - meas_level, - meas_return, - pulse_library, - qubit_lo_freq, - meas_lo_freq, - memory_slot_size=None, - rep_time=None, - rep_delay=None, - shots=None, - seed_simulator=None, - memory_slots=None, - **kwargs, - ): - """Instantiate a PulseQobjConfig object. - - Args: - meas_level (int): The measurement level to use. - meas_return (int): The level of measurement information to return. - pulse_library (list): A list of :class:`PulseLibraryItem` objects - which define the set of primitive pulses - qubit_lo_freq (list): List of frequencies (as floats) for the qubit - driver LO's in GHz. - meas_lo_freq (list): List of frequencies (as floats) for the' - measurement driver LO's in GHz. - memory_slot_size (int): Size of each memory slot if the output is - Level 0. - rep_time (int): Time per program execution in sec. Must be from the list provided - by the backend (``backend.configuration().rep_times``). Defaults to the first entry - in ``backend.configuration().rep_times``. - rep_delay (float): Delay between programs in sec. Only supported on certain - backends (``backend.configuration().dynamic_reprate_enabled`` ). If supported, - ``rep_delay`` will be used instead of ``rep_time`` and must be from the range - supplied by the backend (``backend.configuration().rep_delay_range``). Default is - ``backend.configuration().default_rep_delay``. - shots (int): The number of shots - seed_simulator (int): the seed to use in the simulator - memory_slots (list): The number of memory slots on the device - kwargs: Additional free form key value fields to add to the - configuration - """ - self.meas_level = meas_level - self.meas_return = meas_return - self.pulse_library = pulse_library - self.qubit_lo_freq = qubit_lo_freq - self.meas_lo_freq = meas_lo_freq - if memory_slot_size is not None: - self.memory_slot_size = memory_slot_size - if rep_time is not None: - self.rep_time = rep_time - if rep_delay is not None: - self.rep_delay = rep_delay - if shots is not None: - self.shots = int(shots) - - if seed_simulator is not None: - self.seed_simulator = int(seed_simulator) - - if memory_slots is not None: - self.memory_slots = int(memory_slots) - - if kwargs: - self.__dict__.update(kwargs) - - def to_dict(self): - """Return a dictionary format representation of the Pulse Qobj config. - - Returns: - dict: The dictionary form of the PulseQobjConfig. - """ - out_dict = copy.copy(self.__dict__) - if hasattr(self, "pulse_library"): - out_dict["pulse_library"] = [x.to_dict() for x in self.pulse_library] - - return out_dict - - @classmethod - def from_dict(cls, data): - """Create a new PulseQobjConfig object from a dictionary. - - Args: - data (dict): A dictionary for the config - - Returns: - PulseQobjConfig: The object from the input dictionary. - """ - if "pulse_library" in data: - pulse_lib = data.pop("pulse_library") - pulse_lib_obj = [PulseLibraryItem.from_dict(x) for x in pulse_lib] - data["pulse_library"] = pulse_lib_obj - return cls(**data) - - -class PulseQobjExperiment: - """A Pulse Qobj Experiment. - - Each instance of this class is used to represent an individual Pulse - experiment as part of a larger Pulse Qobj. - """ - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="The `Qobj` class and related functionality are part of the deprecated " - "`BackendV1` workflow, and no longer necessary for `BackendV2`. If a user " - "workflow requires `Qobj` it likely relies on deprecated functionality and " - "should be updated to use `BackendV2`.", - ) - def __init__(self, instructions, config=None, header=None): - """Instantiate a PulseQobjExperiment. - - Args: - config (PulseQobjExperimentConfig): A config object for the experiment - header (PulseQobjExperimentHeader): A header object for the experiment - instructions (list): A list of :class:`PulseQobjInstruction` objects - """ - if config is not None: - self.config = config - if header is not None: - self.header = header - self.instructions = instructions - - def to_dict(self): - """Return a dictionary format representation of the Experiment. - - Returns: - dict: The dictionary form of the PulseQobjExperiment. - """ - out_dict = {"instructions": [x.to_dict() for x in self.instructions]} - if hasattr(self, "config"): - out_dict["config"] = self.config.to_dict() - if hasattr(self, "header"): - out_dict["header"] = self.header.to_dict() - return out_dict - - def __repr__(self): - instructions_str = [repr(x) for x in self.instructions] - instructions_repr = "[" + ", ".join(instructions_str) + "]" - out = "PulseQobjExperiment(" - out += instructions_repr - if hasattr(self, "config") or hasattr(self, "header"): - out += ", " - if hasattr(self, "config"): - out += "config=" + str(repr(self.config)) + ", " - if hasattr(self, "header"): - out += "header=" + str(repr(self.header)) + ", " - out += ")" - return out - - def __str__(self): - out = "\nPulse Experiment:\n" - if hasattr(self, "config"): - config = pprint.pformat(self.config.to_dict()) - else: - config = "{}" - if hasattr(self, "header"): - header = pprint.pformat(self.header.to_dict() or {}) - else: - header = "{}" - out += f"Header:\n{header}\n" - out += f"Config:\n{config}\n\n" - for instruction in self.instructions: - out += f"\t{instruction}\n" - return out - - @classmethod - def from_dict(cls, data): - """Create a new PulseQobjExperiment object from a dictionary. - - Args: - data (dict): A dictionary for the experiment config - - Returns: - PulseQobjExperiment: The object from the input dictionary. - """ - config = None - if "config" in data: - config = PulseQobjExperimentConfig.from_dict(data.pop("config")) - header = None - if "header" in data: - header = QobjExperimentHeader.from_dict(data.pop("header")) - instructions = None - if "instructions" in data: - instructions = [ - PulseQobjInstruction.from_dict(inst) for inst in data.pop("instructions") - ] - return cls(instructions, config, header) - - def __eq__(self, other): - if isinstance(other, PulseQobjExperiment): - if self.to_dict() == other.to_dict(): - return True - return False - - -class PulseQobjExperimentConfig(QobjDictField): - """A config for a single Pulse experiment in the qobj.""" - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="The `Qobj` class and related functionality are part of the deprecated " - "`BackendV1` workflow, and no longer necessary for `BackendV2`. If a user " - "workflow requires `Qobj` it likely relies on deprecated functionality and " - "should be updated to use `BackendV2`.", - ) - def __init__(self, qubit_lo_freq=None, meas_lo_freq=None, **kwargs): - """Instantiate a PulseQobjExperimentConfig object. - - Args: - qubit_lo_freq (List[float]): List of qubit LO frequencies in GHz. - meas_lo_freq (List[float]): List of meas readout LO frequencies in GHz. - kwargs: Additional free form key value fields to add to the configuration - """ - if qubit_lo_freq is not None: - self.qubit_lo_freq = qubit_lo_freq - if meas_lo_freq is not None: - self.meas_lo_freq = meas_lo_freq - if kwargs: - self.__dict__.update(kwargs) - - -class PulseLibraryItem: - """An item in a pulse library.""" - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="The `Qobj` class and related functionality are part of the deprecated " - "`BackendV1` workflow, and no longer necessary for `BackendV2`. If a user " - "workflow requires `Qobj` it likely relies on deprecated functionality and " - "should be updated to use `BackendV2`.", - ) - def __init__(self, name, samples): - """Instantiate a pulse library item. - - Args: - name (str): A name for the pulse. - samples (list[complex]): A list of complex values defining pulse - shape. - """ - self.name = name - if isinstance(samples[0], list): - self.samples = numpy.array([complex(sample[0], sample[1]) for sample in samples]) - else: - self.samples = samples - - def to_dict(self): - """Return a dictionary format representation of the pulse library item. - - Returns: - dict: The dictionary form of the PulseLibraryItem. - """ - return {"name": self.name, "samples": self.samples} - - @classmethod - def from_dict(cls, data): - """Create a new PulseLibraryItem object from a dictionary. - - Args: - data (dict): A dictionary for the experiment config - - Returns: - PulseLibraryItem: The object from the input dictionary. - """ - return cls(**data) - - def __repr__(self): - return f"PulseLibraryItem({self.name}, {repr(self.samples)})" - - def __str__(self): - return f"Pulse Library Item:\n\tname: {self.name}\n\tsamples: {self.samples}" - - def __eq__(self, other): - if isinstance(other, PulseLibraryItem): - if self.to_dict() == other.to_dict(): - return True - return False - - -class PulseQobj: - """A Pulse Qobj.""" - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="The `Qobj` class and related functionality are part of the deprecated " - "`BackendV1` workflow, and no longer necessary for `BackendV2`. If a user " - "workflow requires `Qobj` it likely relies on deprecated functionality and " - "should be updated to use `BackendV2`.", - ) - def __init__(self, qobj_id, config, experiments, header=None): - """Instantiate a new Pulse Qobj Object. - - Each Pulse Qobj object is used to represent a single payload that will - be passed to a Qiskit provider. It mirrors the Qobj the published - `Qobj specification `_ for Pulse - experiments. - - Args: - qobj_id (str): An identifier for the qobj - config (PulseQobjConfig): A config for the entire run - header (QobjHeader): A header for the entire run - experiments (list): A list of lists of :class:`PulseQobjExperiment` - objects representing an experiment - """ - self.qobj_id = qobj_id - self.config = config - self.header = header or QobjHeader() - self.experiments = experiments - self.type = "PULSE" - self.schema_version = "1.2.0" - - def __repr__(self): - experiments_str = [repr(x) for x in self.experiments] - experiments_repr = "[" + ", ".join(experiments_str) + "]" - return ( - f"PulseQobj(qobj_id='{self.qobj_id}', config={repr(self.config)}, " - f"experiments={experiments_repr}, header={repr(self.header)})" - ) - - def __str__(self): - out = f"Pulse Qobj: {self.qobj_id}:\n" - config = pprint.pformat(self.config.to_dict()) - out += f"Config: {str(config)}\n" - header = pprint.pformat(self.header.to_dict()) - out += f"Header: {str(header)}\n" - out += "Experiments:\n" - for experiment in self.experiments: - out += str(experiment) - return out - - def to_dict(self): - """Return a dictionary format representation of the Pulse Qobj. - - Note this dict is not in the json wire format expected by IBMQ and qobj - specification because complex numbers are still of type complex. Also - this may contain native numpy arrays. When serializing this output - for use with IBMQ you can leverage a json encoder that converts these - as expected. For example: - - .. code-block:: python - - import json - import numpy - - class QobjEncoder(json.JSONEncoder): - def default(self, obj): - if isinstance(obj, numpy.ndarray): - return obj.tolist() - if isinstance(obj, complex): - return (obj.real, obj.imag) - return json.JSONEncoder.default(self, obj) - - json.dumps(qobj.to_dict(), cls=QobjEncoder) - - Returns: - dict: A dictionary representation of the PulseQobj object - """ - out_dict = { - "qobj_id": self.qobj_id, - "header": self.header.to_dict(), - "config": self.config.to_dict(), - "schema_version": self.schema_version, - "type": self.type, - "experiments": [x.to_dict() for x in self.experiments], - } - return out_dict - - @classmethod - def from_dict(cls, data): - """Create a new PulseQobj object from a dictionary. - - Args: - data (dict): A dictionary representing the PulseQobj to create. It - will be in the same format as output by :func:`to_dict`. - - Returns: - PulseQobj: The PulseQobj from the input dictionary. - """ - config = None - if "config" in data: - config = PulseQobjConfig.from_dict(data["config"]) - experiments = None - if "experiments" in data: - experiments = [PulseQobjExperiment.from_dict(exp) for exp in data["experiments"]] - header = None - if "header" in data: - header = QobjHeader.from_dict(data["header"]) - - return cls( - qobj_id=data.get("qobj_id"), config=config, experiments=experiments, header=header - ) - - def __eq__(self, other): - if isinstance(other, PulseQobj): - if self.to_dict() == other.to_dict(): - return True - return False diff --git a/qiskit/qobj/qasm_qobj.py b/qiskit/qobj/qasm_qobj.py deleted file mode 100644 index eef2bb1315c4..000000000000 --- a/qiskit/qobj/qasm_qobj.py +++ /dev/null @@ -1,708 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2019. -# -# 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. - -"""Module providing definitions of OpenQASM 2 Qobj classes.""" - -import copy -import pprint -from types import SimpleNamespace -from qiskit.circuit.parameterexpression import ParameterExpression -from qiskit.qobj.pulse_qobj import PulseQobjInstruction, PulseLibraryItem -from qiskit.qobj.common import QobjDictField, QobjHeader -from qiskit.utils import deprecate_func - - -class QasmQobjInstruction: - """A class representing a single instruction in an QasmQobj Experiment.""" - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="The `Qobj` class and related functionality are part of the deprecated " - "`BackendV1` workflow, and no longer necessary for `BackendV2`. If a user " - "workflow requires `Qobj` it likely relies on deprecated functionality and " - "should be updated to use `BackendV2`.", - ) - def __init__( - self, - name, - params=None, - qubits=None, - register=None, - memory=None, - condition=None, - conditional=None, - label=None, - mask=None, - relation=None, - val=None, - snapshot_type=None, - ): - """Instantiate a new QasmQobjInstruction object. - - Args: - name (str): The name of the instruction - params (list): The list of parameters for the gate - qubits (list): A list of ``int`` representing the qubits the - instruction operates on - register (list): If a ``measure`` instruction this is a list - of ``int`` containing the list of register slots in which to - store the measurement results (must be the same length as - qubits). If a ``bfunc`` instruction this is a single ``int`` - of the register slot in which to store the result. - memory (list): If a ``measure`` instruction this is a list - of ``int`` containing the list of memory slots to store the - measurement results in (must be the same length as qubits). - If a ``bfunc`` instruction this is a single ``int`` of the - memory slot to store the boolean function result in. - condition (tuple): A tuple of the form ``(int, int)`` where the - first ``int`` is the control register and the second ``int`` is - the control value if the gate has a condition. - conditional (int): The register index of the condition - label (str): An optional label assigned to the instruction - mask (int): For a ``bfunc`` instruction the hex value which is - applied as an ``AND`` to the register bits. - relation (str): Relational operator for comparing the masked - register to the ``val`` kwarg. Can be either ``==`` (equals) or - ``!=`` (not equals). - val (int): Value to which to compare the masked register. In other - words, the output of the function is ``(register AND mask)`` - snapshot_type (str): For snapshot instructions the type of snapshot - to use - """ - self.name = name - if params is not None: - self.params = params - if qubits is not None: - self.qubits = qubits - if register is not None: - self.register = register - if memory is not None: - self.memory = memory - if condition is not None: - self._condition = condition - if conditional is not None: - self.conditional = conditional - if label is not None: - self.label = label - if mask is not None: - self.mask = mask - if relation is not None: - self.relation = relation - if val is not None: - self.val = val - if snapshot_type is not None: - self.snapshot_type = snapshot_type - - def to_dict(self): - """Return a dictionary format representation of the Instruction. - - Returns: - dict: The dictionary form of the QasmQobjInstruction. - """ - out_dict = {"name": self.name} - for attr in [ - "params", - "qubits", - "register", - "memory", - "_condition", - "conditional", - "label", - "mask", - "relation", - "val", - "snapshot_type", - ]: - if hasattr(self, attr): - # TODO: Remove the param type conversion when Aer understands - # ParameterExpression type - if attr == "params": - params = [] - for param in list(getattr(self, attr)): - if isinstance(param, ParameterExpression): - params.append(float(param)) - else: - params.append(param) - out_dict[attr] = params - else: - out_dict[attr] = getattr(self, attr) - - return out_dict - - def __repr__(self): - out = f"QasmQobjInstruction(name='{self.name}'" - for attr in [ - "params", - "qubits", - "register", - "memory", - "_condition", - "conditional", - "label", - "mask", - "relation", - "val", - "snapshot_type", - ]: - attr_val = getattr(self, attr, None) - if attr_val is not None: - if isinstance(attr_val, str): - out += f', {attr}="{attr_val}"' - else: - out += f", {attr}={attr_val}" - out += ")" - return out - - def __str__(self): - out = f"Instruction: {self.name}\n" - for attr in [ - "params", - "qubits", - "register", - "memory", - "_condition", - "conditional", - "label", - "mask", - "relation", - "val", - "snapshot_type", - ]: - if hasattr(self, attr): - out += f"\t\t{attr}: {getattr(self, attr)}\n" - return out - - @classmethod - def from_dict(cls, data): - """Create a new QasmQobjInstruction object from a dictionary. - - Args: - data (dict): A dictionary for the experiment config - - Returns: - QasmQobjInstruction: The object from the input dictionary. - """ - name = data.pop("name") - return cls(name, **data) - - def __eq__(self, other): - if isinstance(other, QasmQobjInstruction): - if self.to_dict() == other.to_dict(): - return True - return False - - -class QasmQobjExperiment: - """An OpenQASM 2 Qobj Experiment. - - Each instance of this class is used to represent an OpenQASM 2 experiment as - part of a larger OpenQASM 2 qobj. - """ - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="The `Qobj` class and related functionality are part of the deprecated " - "`BackendV1` workflow, and no longer necessary for `BackendV2`. If a user " - "workflow requires `Qobj` it likely relies on deprecated functionality and " - "should be updated to use `BackendV2`.", - ) - def __init__(self, config=None, header=None, instructions=None): - """Instantiate a QasmQobjExperiment. - - Args: - config (QasmQobjExperimentConfig): A config object for the experiment - header (QasmQobjExperimentHeader): A header object for the experiment - instructions (list): A list of :class:`QasmQobjInstruction` objects - """ - self.config = config or QasmQobjExperimentConfig() - self.header = header or QasmQobjExperimentHeader() - self.instructions = instructions or [] - - def __repr__(self): - instructions_str = [repr(x) for x in self.instructions] - instructions_repr = "[" + ", ".join(instructions_str) + "]" - return ( - f"QasmQobjExperiment(config={repr(self.config)}, header={repr(self.header)}," - f" instructions={instructions_repr})" - ) - - def __str__(self): - out = "\nOpenQASM2 Experiment:\n" - config = pprint.pformat(self.config.to_dict()) - header = pprint.pformat(self.header.to_dict()) - out += f"Header:\n{header}\n" - out += f"Config:\n{config}\n\n" - for instruction in self.instructions: - out += f"\t{instruction}\n" - return out - - def to_dict(self): - """Return a dictionary format representation of the Experiment. - - Returns: - dict: The dictionary form of the QasmQObjExperiment. - """ - out_dict = { - "config": self.config.to_dict(), - "header": self.header.to_dict(), - "instructions": [x.to_dict() for x in self.instructions], - } - return out_dict - - @classmethod - def from_dict(cls, data): - """Create a new QasmQobjExperiment object from a dictionary. - - Args: - data (dict): A dictionary for the experiment config - - Returns: - QasmQobjExperiment: The object from the input dictionary. - """ - config = None - if "config" in data: - config = QasmQobjExperimentConfig.from_dict(data.pop("config")) - header = None - if "header" in data: - header = QasmQobjExperimentHeader.from_dict(data.pop("header")) - instructions = None - if "instructions" in data: - instructions = [ - QasmQobjInstruction.from_dict(inst) for inst in data.pop("instructions") - ] - return cls(config, header, instructions) - - def __eq__(self, other): - if isinstance(other, QasmQobjExperiment): - if self.to_dict() == other.to_dict(): - return True - return False - - -class QasmQobjConfig(SimpleNamespace): - """A configuration for an OpenQASM 2 Qobj.""" - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="The `Qobj` class and related functionality are part of the deprecated " - "`BackendV1` workflow, and no longer necessary for `BackendV2`. If a user " - "workflow requires `Qobj` it likely relies on deprecated functionality and " - "should be updated to use `BackendV2`.", - ) - def __init__( - self, - shots=None, - seed_simulator=None, - memory=None, - parameter_binds=None, - meas_level=None, - meas_return=None, - memory_slots=None, - n_qubits=None, - pulse_library=None, - calibrations=None, - rep_delay=None, - qubit_lo_freq=None, - meas_lo_freq=None, - **kwargs, - ): - """Model for RunConfig. - - Args: - shots (int): the number of shots. - seed_simulator (int): the seed to use in the simulator - memory (bool): whether to request memory from backend (per-shot readouts) - parameter_binds (list[dict]): List of parameter bindings - meas_level (int): Measurement level 0, 1, or 2 - meas_return (str): For measurement level < 2, whether single or avg shots are returned - memory_slots (int): The number of memory slots on the device - n_qubits (int): The number of qubits on the device - pulse_library (list): List of :class:`PulseLibraryItem`. - calibrations (QasmExperimentCalibrations): Information required for Pulse gates. - rep_delay (float): Delay between programs in sec. Only supported on certain - backends (``backend.configuration().dynamic_reprate_enabled`` ). Must be from the - range supplied by the backend (``backend.configuration().rep_delay_range``). Default - is ``backend.configuration().default_rep_delay``. - qubit_lo_freq (list): List of frequencies (as floats) for the qubit driver LO's in GHz. - meas_lo_freq (list): List of frequencies (as floats) for the measurement driver LO's in - GHz. - kwargs: Additional free form key value fields to add to the - configuration. - """ - if shots is not None: - self.shots = int(shots) - - if seed_simulator is not None: - self.seed_simulator = int(seed_simulator) - - if memory is not None: - self.memory = bool(memory) - - if parameter_binds is not None: - self.parameter_binds = parameter_binds - - if meas_level is not None: - self.meas_level = meas_level - - if meas_return is not None: - self.meas_return = meas_return - - if memory_slots is not None: - self.memory_slots = memory_slots - - if n_qubits is not None: - self.n_qubits = n_qubits - - if pulse_library is not None: - self.pulse_library = pulse_library - - if calibrations is not None: - self.calibrations = calibrations - - if rep_delay is not None: - self.rep_delay = rep_delay - - if qubit_lo_freq is not None: - self.qubit_lo_freq = qubit_lo_freq - - if meas_lo_freq is not None: - self.meas_lo_freq = meas_lo_freq - - if kwargs: - self.__dict__.update(kwargs) - - def to_dict(self): - """Return a dictionary format representation of the OpenQASM 2 Qobj config. - - Returns: - dict: The dictionary form of the QasmQobjConfig. - """ - out_dict = copy.copy(self.__dict__) - if hasattr(self, "pulse_library"): - out_dict["pulse_library"] = [x.to_dict() for x in self.pulse_library] - - if hasattr(self, "calibrations"): - out_dict["calibrations"] = self.calibrations.to_dict() - - return out_dict - - @classmethod - def from_dict(cls, data): - """Create a new QasmQobjConfig object from a dictionary. - - Args: - data (dict): A dictionary for the config - - Returns: - QasmQobjConfig: The object from the input dictionary. - """ - if "pulse_library" in data: - pulse_lib = data.pop("pulse_library") - pulse_lib_obj = [PulseLibraryItem.from_dict(x) for x in pulse_lib] - data["pulse_library"] = pulse_lib_obj - - if "calibrations" in data: - calibrations = data.pop("calibrations") - data["calibrations"] = QasmExperimentCalibrations.from_dict(calibrations) - - return cls(**data) - - def __eq__(self, other): - if isinstance(other, QasmQobjConfig): - if self.to_dict() == other.to_dict(): - return True - return False - - -class QasmQobjExperimentHeader(QobjDictField): - """A header for a single OpenQASM 2 experiment in the qobj.""" - - pass - - -class QasmQobjExperimentConfig(QobjDictField): - """Configuration for a single OpenQASM 2 experiment in the qobj.""" - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="The `Qobj` class and related functionality are part of the deprecated " - "`BackendV1` workflow, and no longer necessary for `BackendV2`. If a user " - "workflow requires `Qobj` it likely relies on deprecated functionality and " - "should be updated to use `BackendV2`.", - ) - def __init__(self, calibrations=None, qubit_lo_freq=None, meas_lo_freq=None, **kwargs): - """ - Args: - calibrations (QasmExperimentCalibrations): Information required for Pulse gates. - qubit_lo_freq (List[float]): List of qubit LO frequencies in GHz. - meas_lo_freq (List[float]): List of meas readout LO frequencies in GHz. - kwargs: Additional free form key value fields to add to the configuration - """ - if calibrations: - self.calibrations = calibrations - if qubit_lo_freq is not None: - self.qubit_lo_freq = qubit_lo_freq - if meas_lo_freq is not None: - self.meas_lo_freq = meas_lo_freq - - super().__init__(**kwargs) - - def to_dict(self): - out_dict = copy.copy(self.__dict__) - if hasattr(self, "calibrations"): - out_dict["calibrations"] = self.calibrations.to_dict() - return out_dict - - @classmethod - def from_dict(cls, data): - if "calibrations" in data: - calibrations = data.pop("calibrations") - data["calibrations"] = QasmExperimentCalibrations.from_dict(calibrations) - return cls(**data) - - -class QasmExperimentCalibrations: - """A container for any calibrations data. The gates attribute contains a list of - GateCalibrations. - """ - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="The `Qobj` class and related functionality are part of the deprecated " - "`BackendV1` workflow, and no longer necessary for `BackendV2`. If a user " - "workflow requires `Qobj` it likely relies on deprecated functionality and " - "should be updated to use `BackendV2`.", - ) - def __init__(self, gates): - """ - Initialize a container for calibrations. - - Args: - gates (list(GateCalibration)) - """ - self.gates = gates - - def to_dict(self): - """Return a dictionary format representation of the calibrations. - - Returns: - dict: The dictionary form of the GateCalibration. - - """ - out_dict = copy.copy(self.__dict__) - out_dict["gates"] = [x.to_dict() for x in self.gates] - return out_dict - - @classmethod - def from_dict(cls, data): - """Create a new GateCalibration object from a dictionary. - - Args: - data (dict): A dictionary representing the QasmExperimentCalibrations to - create. It will be in the same format as output by :func:`to_dict`. - - Returns: - QasmExperimentCalibrations: The QasmExperimentCalibrations from the input dictionary. - """ - gates = data.pop("gates") - data["gates"] = [GateCalibration.from_dict(x) for x in gates] - return cls(**data) - - -class GateCalibration: - """Each calibration specifies a unique gate by name, qubits and params, and - contains the Pulse instructions to implement it.""" - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="The `Qobj` class and related functionality are part of the deprecated " - "`BackendV1` workflow, and no longer necessary for `BackendV2`. If a user " - "workflow requires `Qobj` it likely relies on deprecated functionality and " - "should be updated to use `BackendV2`.", - ) - def __init__(self, name, qubits, params, instructions): - """ - Initialize a single gate calibration. Instructions may reference waveforms which should be - made available in the pulse_library. - - Args: - name (str): Gate name. - qubits (list(int)): Qubits the gate applies to. - params (list(complex)): Gate parameter values, if any. - instructions (list(PulseQobjInstruction)): The gate implementation. - """ - self.name = name - self.qubits = qubits - self.params = params - self.instructions = instructions - - def __hash__(self): - return hash( - ( - self.name, - tuple(self.qubits), - tuple(self.params), - tuple(str(inst) for inst in self.instructions), - ) - ) - - def to_dict(self): - """Return a dictionary format representation of the Gate Calibration. - - Returns: - dict: The dictionary form of the GateCalibration. - """ - out_dict = copy.copy(self.__dict__) - out_dict["instructions"] = [x.to_dict() for x in self.instructions] - return out_dict - - @classmethod - def from_dict(cls, data): - """Create a new GateCalibration object from a dictionary. - - Args: - data (dict): A dictionary representing the GateCalibration to create. It - will be in the same format as output by :func:`to_dict`. - - Returns: - GateCalibration: The GateCalibration from the input dictionary. - """ - instructions = data.pop("instructions") - data["instructions"] = [PulseQobjInstruction.from_dict(x) for x in instructions] - return cls(**data) - - -class QasmQobj: - """An OpenQASM 2 Qobj.""" - - @deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="The `Qobj` class and related functionality are part of the deprecated " - "`BackendV1` workflow, and no longer necessary for `BackendV2`. If a user " - "workflow requires `Qobj` it likely relies on deprecated functionality and " - "should be updated to use `BackendV2`.", - ) - def __init__(self, qobj_id=None, config=None, experiments=None, header=None): - """Instantiate a new OpenQASM 2 Qobj Object. - - Each OpenQASM 2 Qobj object is used to represent a single payload that will - be passed to a Qiskit provider. It mirrors the Qobj the published - `Qobj specification `_ for OpenQASM - experiments. - - Args: - qobj_id (str): An identifier for the qobj - config (QasmQobjRunConfig): A config for the entire run - header (QobjHeader): A header for the entire run - experiments (list): A list of lists of :class:`QasmQobjExperiment` - objects representing an experiment - """ - self.header = header or QobjHeader() - self.config = config or QasmQobjConfig() - self.experiments = experiments or [] - self.qobj_id = qobj_id - self.type = "QASM" - self.schema_version = "1.3.0" - - def __repr__(self): - experiments_str = [repr(x) for x in self.experiments] - experiments_repr = "[" + ", ".join(experiments_str) + "]" - return ( - f"QasmQobj(qobj_id='{self.qobj_id}', config={repr(self.config)}," - f" experiments={experiments_repr}, header={repr(self.header)})" - ) - - def __str__(self): - out = f"QASM Qobj: {self.qobj_id}:\n" - config = pprint.pformat(self.config.to_dict()) - out += f"Config: {str(config)}\n" - header = pprint.pformat(self.header.to_dict()) - out += f"Header: {str(header)}\n" - out += "Experiments:\n" - for experiment in self.experiments: - out += str(experiment) - return out - - def to_dict(self): - """Return a dictionary format representation of the OpenQASM 2 Qobj. - - Note this dict is not in the json wire format expected by IBM and Qobj - specification because complex numbers are still of type complex. Also, - this may contain native numpy arrays. When serializing this output - for use with IBM systems, you can leverage a json encoder that converts these - as expected. For example: - - .. code-block:: python - - import json - import numpy - - class QobjEncoder(json.JSONEncoder): - def default(self, obj): - if isinstance(obj, numpy.ndarray): - return obj.tolist() - if isinstance(obj, complex): - return (obj.real, obj.imag) - return json.JSONEncoder.default(self, obj) - - json.dumps(qobj.to_dict(), cls=QobjEncoder) - - Returns: - dict: A dictionary representation of the QasmQobj object - """ - out_dict = { - "qobj_id": self.qobj_id, - "header": self.header.to_dict(), - "config": self.config.to_dict(), - "schema_version": self.schema_version, - "type": "QASM", - "experiments": [x.to_dict() for x in self.experiments], - } - return out_dict - - @classmethod - def from_dict(cls, data): - """Create a new QASMQobj object from a dictionary. - - Args: - data (dict): A dictionary representing the QasmQobj to create. It - will be in the same format as output by :func:`to_dict`. - - Returns: - QasmQobj: The QasmQobj from the input dictionary. - """ - config = None - if "config" in data: - config = QasmQobjConfig.from_dict(data["config"]) - experiments = None - if "experiments" in data: - experiments = [QasmQobjExperiment.from_dict(exp) for exp in data["experiments"]] - header = None - if "header" in data: - header = QobjHeader.from_dict(data["header"]) - - return cls( - qobj_id=data.get("qobj_id"), config=config, experiments=experiments, header=header - ) - - def __eq__(self, other): - if isinstance(other, QasmQobj): - if self.to_dict() == other.to_dict(): - return True - return False diff --git a/qiskit/qobj/utils.py b/qiskit/qobj/utils.py deleted file mode 100644 index 1e691d6324bf..000000000000 --- a/qiskit/qobj/utils.py +++ /dev/null @@ -1,46 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2018. -# -# 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. - -"""Qobj utilities and enums.""" - -from enum import Enum, IntEnum - -from qiskit.utils import deprecate_func - - -@deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="The `Qobj` class and related functionality are part of the deprecated `BackendV1` " - "workflow, and no longer necessary for `BackendV2`. If a user workflow requires `Qobj` it likely " - "relies on deprecated functionality and should be updated to use `BackendV2`.", -) -class QobjType(str, Enum): - """Qobj.type allowed values.""" - - QASM = "QASM" - PULSE = "PULSE" - - -class MeasReturnType(str, Enum): - """PulseQobjConfig meas_return allowed values.""" - - AVERAGE = "avg" - SINGLE = "single" - - -class MeasLevel(IntEnum): - """MeasLevel allowed values.""" - - RAW = 0 - KERNELED = 1 - CLASSIFIED = 2 diff --git a/qiskit/result/models.py b/qiskit/result/models.py index 93a1954ac7f4..71fda895952d 100644 --- a/qiskit/result/models.py +++ b/qiskit/result/models.py @@ -13,13 +13,26 @@ """Schema and helper models for schema-conformant Results.""" import copy -import warnings +from enum import Enum, IntEnum -from qiskit.qobj.utils import MeasReturnType, MeasLevel -from qiskit.qobj import QobjExperimentHeader from qiskit.exceptions import QiskitError +class MeasReturnType(str, Enum): + """meas_return allowed values defined by legacy PulseQobjConfig object but still used by Result.""" + + AVERAGE = "avg" + SINGLE = "single" + + +class MeasLevel(IntEnum): + """MeasLevel allowed values defined by legacy PulseQobjConfig object but still used by Result.""" + + RAW = 0 + KERNELED = 1 + CLASSIFIED = 2 + + class ExperimentResultData: """Class representing experiment result data""" @@ -132,7 +145,7 @@ def __init__( status (str): The status of the experiment seed (int): The seed used for simulation (if run on a simulator) meas_return (str): The type of measurement returned - header (qiskit.qobj.QobjExperimentHeader): A free form dictionary + header (dict): A free form dictionary header for the experiment kwargs: Arbitrary extra fields @@ -197,7 +210,7 @@ def to_dict(self): "meas_level": self.meas_level, } if hasattr(self, "header"): - out_dict["header"] = self.header.to_dict() + out_dict["header"] = self.header if hasattr(self, "status"): out_dict["status"] = self.status if hasattr(self, "seed"): @@ -223,11 +236,6 @@ def from_dict(cls, data): in_data = copy.copy(data) data_obj = ExperimentResultData.from_dict(in_data.pop("data")) - if "header" in in_data: - with warnings.catch_warnings(): - # The class QobjExperimentHeader is deprecated - warnings.filterwarnings("ignore", category=DeprecationWarning, module="qiskit") - in_data["header"] = QobjExperimentHeader.from_dict(in_data.pop("header")) shots = in_data.pop("shots") success = in_data.pop("success") diff --git a/qiskit/result/result.py b/qiskit/result/result.py index 4a5a928f06d5..f9cc0af22330 100644 --- a/qiskit/result/result.py +++ b/qiskit/result/result.py @@ -19,11 +19,9 @@ from qiskit.pulse.schedule import Schedule from qiskit.exceptions import QiskitError from qiskit.quantum_info.states import statevector -from qiskit.result.models import ExperimentResult +from qiskit.result.models import ExperimentResult, MeasLevel from qiskit.result import postprocess from qiskit.result.counts import Counts -from qiskit.qobj.utils import MeasLevel -from qiskit.qobj import QobjHeader class Result: @@ -32,7 +30,6 @@ class Result: Attributes: backend_name (str): backend name. backend_version (str): backend version, in the form X.Y.Z. - qobj_id (str): user-generated Qobj id. job_id (str): unique execution id from the backend. success (bool): True if complete input qobj executed correctly. (Implies each experiment success) @@ -46,7 +43,6 @@ def __init__( self, backend_name, backend_version, - qobj_id, job_id, success, results, @@ -58,7 +54,6 @@ def __init__( self._metadata = {} self.backend_name = backend_name self.backend_version = backend_version - self.qobj_id = qobj_id self.job_id = job_id self.success = success self.results = results @@ -70,7 +65,7 @@ def __init__( def __repr__(self): out = ( f"Result(backend_name='{self.backend_name}', backend_version='{self.backend_version}'," - f" qobj_id='{self.qobj_id}', job_id='{self.job_id}', success={self.success}," + f" job_id='{self.job_id}', success={self.success}," f" results={self.results}" ) out += f", date={self.date}, status={self.status}, header={self.header}" @@ -94,7 +89,6 @@ def to_dict(self): "backend_version": self.backend_version, "date": self.date, "header": None if self.header is None else self.header.to_dict(), - "qobj_id": self.qobj_id, "job_id": self.job_id, "status": self.status, "success": self.success, @@ -124,10 +118,6 @@ def from_dict(cls, data): in_data = copy.copy(data) in_data["results"] = [ExperimentResult.from_dict(x) for x in in_data.pop("results")] - if in_data.get("header") is not None: - with warnings.catch_warnings(): - warnings.filterwarnings("ignore", category=DeprecationWarning, module="qiskit") - in_data["header"] = QobjHeader.from_dict(in_data.pop("header")) return cls(**in_data) def data(self, experiment=None): @@ -212,7 +202,7 @@ def get_memory(self, experiment=None): exp_result = self._get_experiment(experiment) try: try: # header is not available - header = exp_result.header.to_dict() + header = exp_result.header except (AttributeError, QiskitError): header = None @@ -263,7 +253,7 @@ def get_counts(self, experiment=None): for key in exp_keys: exp = self._get_experiment(key) try: - header = exp.header.to_dict() + header = exp.header except (AttributeError, QiskitError): # header is not available header = None @@ -364,11 +354,12 @@ def _get_experiment(self, key=None): except IndexError as ex: raise QiskitError(f'Result for experiment "{key}" could not be found.') from ex else: - # Look into `result[x].header.name` for the names. + # Look into `result[x].header["name"]` for the names. exp = [ result for result in self.results - if getattr(getattr(result, "header", None), "name", "") == key + if getattr(result, "header", None) is not None + and getattr(result, "header").get("name", "") == key ] if len(exp) == 0: diff --git a/qiskit/result/utils.py b/qiskit/result/utils.py index b531b1bc65b5..ed1dfeeb3dc4 100644 --- a/qiskit/result/utils.py +++ b/qiskit/result/utils.py @@ -24,7 +24,6 @@ from qiskit.result.counts import Counts from qiskit.result.distributions.probability import ProbDistribution from qiskit.result.distributions.quasi import QuasiDistribution - from qiskit.result.postprocess import _bin_to_hex from qiskit._accelerate import results as results_rs # pylint: disable=no-name-in-module @@ -74,10 +73,10 @@ def marginal_counts( experiment_result.data.counts = new_counts_hex if indices is not None: - experiment_result.header.memory_slots = len(indices) - csize = getattr(experiment_result.header, "creg_sizes", None) + experiment_result.header["memory_slots"] = len(indices) + csize = experiment_result.header.get("creg_sizes", None) if csize is not None: - experiment_result.header.creg_sizes = _adjust_creg_sizes(csize, indices) + experiment_result.header["creg_sizes"] = _adjust_creg_sizes(csize, indices) if getattr(experiment_result.data, "memory", None) is not None and indices is not None: if marginalize_memory is False: diff --git a/qiskit/scheduler/lowering.py b/qiskit/scheduler/lowering.py index f0fb33957d9e..a03d80ac6958 100644 --- a/qiskit/scheduler/lowering.py +++ b/qiskit/scheduler/lowering.py @@ -28,7 +28,7 @@ from qiskit.pulse.exceptions import PulseError from qiskit.pulse.macros import measure from qiskit.scheduler.config import ScheduleConfig -from qiskit.providers import BackendV1, BackendV2 +from qiskit.providers import BackendV2 CircuitPulseDef = namedtuple( "CircuitPulseDef", @@ -39,7 +39,7 @@ def lower_gates( circuit: QuantumCircuit, schedule_config: ScheduleConfig, - backend: Optional[Union[BackendV1, BackendV2]] = None, + backend: Optional[Union[BackendV2]] = None, ) -> List[CircuitPulseDef]: """ Return a list of Schedules and the qubits they operate on, for each element encountered in the @@ -53,8 +53,7 @@ def lower_gates( Args: circuit: The quantum circuit to translate. schedule_config: Backend specific parameters used for building the Schedule. - backend: Pass in the backend used to build the Schedule, the backend could be BackendV1 - or BackendV2 + backend: Pass in the BackendV2 used to build the Schedule Returns: A list of CircuitPulseDefs: the pulse definition for each circuit element. diff --git a/qiskit/scheduler/methods/basic.py b/qiskit/scheduler/methods/basic.py index b08f0f866ab0..0458ef9cdad6 100644 --- a/qiskit/scheduler/methods/basic.py +++ b/qiskit/scheduler/methods/basic.py @@ -22,7 +22,7 @@ from qiskit.scheduler.config import ScheduleConfig from qiskit.scheduler.lowering import lower_gates -from qiskit.providers import BackendV1, BackendV2 +from qiskit.providers import BackendV2 from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency @@ -30,7 +30,7 @@ def as_soon_as_possible( circuit: QuantumCircuit, schedule_config: ScheduleConfig, - backend: Optional[Union[BackendV1, BackendV2]] = None, + backend: Optional[Union[BackendV2]] = None, ) -> Schedule: """ Return the pulse Schedule which implements the input circuit using an "as soon as possible" @@ -44,8 +44,7 @@ def as_soon_as_possible( Args: circuit: The quantum circuit to translate. schedule_config: Backend specific parameters used for building the Schedule. - backend: A backend used to build the Schedule, the backend could be BackendV1 - or BackendV2. + backend: A BackendV2 used to build the Schedule. Returns: A schedule corresponding to the input ``circuit`` with pulses occurring as early as @@ -84,7 +83,7 @@ def update_times(inst_qubits: List[int], time: int = 0) -> None: def as_late_as_possible( circuit: QuantumCircuit, schedule_config: ScheduleConfig, - backend: Optional[Union[BackendV1, BackendV2]] = None, + backend: Optional[Union[BackendV2]] = None, ) -> Schedule: """ Return the pulse Schedule which implements the input circuit using an "as late as possible" @@ -101,8 +100,7 @@ def as_late_as_possible( Args: circuit: The quantum circuit to translate. schedule_config: Backend specific parameters used for building the Schedule. - backend: A backend used to build the Schedule, the backend could be BackendV1 - or BackendV2. + backend: A BackendV2 used to build the Schedule. Returns: A schedule corresponding to the input ``circuit`` with pulses occurring as late as diff --git a/qiskit/scheduler/schedule_circuit.py b/qiskit/scheduler/schedule_circuit.py index 2cc32a8a7b3c..7b70f362d41e 100644 --- a/qiskit/scheduler/schedule_circuit.py +++ b/qiskit/scheduler/schedule_circuit.py @@ -11,7 +11,7 @@ # that they have been altered from the originals. """QuantumCircuit to Pulse scheduler.""" -from typing import Optional, Union +from typing import Optional from qiskit.circuit.quantumcircuit import QuantumCircuit from qiskit.exceptions import QiskitError @@ -19,7 +19,7 @@ from qiskit.pulse.schedule import Schedule from qiskit.scheduler.config import ScheduleConfig from qiskit.scheduler.methods import as_soon_as_possible, as_late_as_possible -from qiskit.providers import BackendV1, BackendV2 +from qiskit.providers import BackendV2 from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency @@ -28,7 +28,7 @@ def schedule_circuit( circuit: QuantumCircuit, schedule_config: ScheduleConfig, method: Optional[str] = None, - backend: Optional[Union[BackendV1, BackendV2]] = None, + backend: Optional[BackendV2] = None, ) -> Schedule: """ Basic scheduling pass from a circuit to a pulse Schedule, using the backend. If no method is @@ -46,8 +46,7 @@ def schedule_circuit( circuit: The quantum circuit to translate. schedule_config: Backend specific parameters used for building the Schedule. method: The scheduling pass method to use. - backend: A backend used to build the Schedule, the backend could be BackendV1 - or BackendV2. + backend: A BackendV2 used to build the Schedule. Returns: Schedule corresponding to the input circuit. diff --git a/qiskit/scheduler/sequence.py b/qiskit/scheduler/sequence.py index 7f69f5f65a6a..1e96436fa97c 100644 --- a/qiskit/scheduler/sequence.py +++ b/qiskit/scheduler/sequence.py @@ -24,7 +24,7 @@ from qiskit.pulse.transforms import pad from qiskit.scheduler.config import ScheduleConfig from qiskit.scheduler.lowering import lower_gates -from qiskit.providers import BackendV1, BackendV2 +from qiskit.providers import BackendV2 from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency @@ -32,7 +32,7 @@ def sequence( scheduled_circuit: QuantumCircuit, schedule_config: ScheduleConfig, - backend: Optional[Union[BackendV1, BackendV2]] = None, + backend: Optional[Union[BackendV2]] = None, ) -> Schedule: """ Return the pulse Schedule which implements the input scheduled circuit. @@ -43,8 +43,7 @@ def sequence( Args: scheduled_circuit: The scheduled quantum circuit to translate. schedule_config: Backend specific parameters used for building the Schedule. - backend: A backend used to build the Schedule, the backend could be BackendV1 - or BackendV2 + backend: A BackendV2 used to build the Schedule. Returns: A schedule corresponding to the input ``circuit``. diff --git a/qiskit/transpiler/passes/layout/vf2_post_layout.py b/qiskit/transpiler/passes/layout/vf2_post_layout.py index 0f46418e1fa4..5a6e8926930f 100644 --- a/qiskit/transpiler/passes/layout/vf2_post_layout.py +++ b/qiskit/transpiler/passes/layout/vf2_post_layout.py @@ -23,7 +23,6 @@ from qiskit.transpiler.layout import Layout from qiskit.transpiler.basepasses import AnalysisPass from qiskit.transpiler.exceptions import TranspilerError -from qiskit.providers.exceptions import BackendPropertyError from qiskit.transpiler.passes.layout import vf2_utils @@ -385,26 +384,4 @@ def _score_layout(self, layout, bit_map, reverse_bit_map, im_graph): props = self.target[gate][qargs] if props is not None and props.error is not None: fidelity *= (1 - props.error) ** count - else: - for bit, node_index in bit_map.items(): - gate_counts = im_graph[node_index] - for gate, count in gate_counts.items(): - if gate == "measure": - try: - fidelity *= (1 - self.properties.readout_error(bits[bit])) ** count - except BackendPropertyError: - pass - else: - try: - fidelity *= (1 - self.properties.gate_error(gate, bits[bit])) ** count - except BackendPropertyError: - pass - for edge in im_graph.edge_index_map().values(): - qargs = (bits[reverse_bit_map[edge[0]]], bits[reverse_bit_map[edge[1]]]) - gate_counts = edge[2] - for gate, count in gate_counts.items(): - try: - fidelity *= (1 - self.properties.gate_error(gate, qargs)) ** count - except BackendPropertyError: - pass return 1 - fidelity diff --git a/qiskit/transpiler/passmanager_config.py b/qiskit/transpiler/passmanager_config.py index 1d473014b981..1c4f01bc9407 100644 --- a/qiskit/transpiler/passmanager_config.py +++ b/qiskit/transpiler/passmanager_config.py @@ -12,10 +12,6 @@ """Pass Manager Configuration class.""" -import warnings - -from qiskit.transpiler.coupling import CouplingMap -from qiskit.transpiler.instruction_durations import InstructionDurations from qiskit.utils.deprecate_pulse import deprecate_pulse_arg @@ -113,14 +109,8 @@ def from_backend(cls, backend, _skip_target=False, **pass_manager_options): This method automatically generates a PassManagerConfig object based on the backend's features. User options can be used to overwrite the configuration. - .. deprecated:: 1.3 - The method ``PassManagerConfig.from_backend`` will stop supporting inputs of type - :class:`.BackendV1` in the `backend` parameter in a future release no - earlier than 2.0. :class:`.BackendV1` is deprecated and implementations should move - to :class:`.BackendV2`. - Args: - backend (BackendV1 or BackendV2): The backend that provides the configuration. + backend (BackendV2): The backend that provides the configuration. pass_manager_options: User-defined option-value pairs. Returns: @@ -129,49 +119,17 @@ def from_backend(cls, backend, _skip_target=False, **pass_manager_options): Raises: AttributeError: If the backend does not support a `configuration()` method. """ - backend_version = getattr(backend, "version", 0) - if backend_version == 1: - warnings.warn( - "The method PassManagerConfig.from_backend will stop supporting inputs of " - f"type `BackendV1` ( {backend} ) in the `backend` parameter in a future " - "release no earlier than 2.0. `BackendV1` is deprecated and implementations " - "should move to `BackendV2`.", - category=DeprecationWarning, - stacklevel=2, - ) - if not isinstance(backend_version, int): - backend_version = 0 - if backend_version < 2: - config = backend.configuration() res = cls(**pass_manager_options) if res.basis_gates is None: - if backend_version < 2: - res.basis_gates = getattr(config, "basis_gates", None) - else: - res.basis_gates = backend.operation_names + res.basis_gates = backend.operation_names if res.inst_map is None: - if backend_version < 2: - if hasattr(backend, "defaults"): - defaults = backend.defaults() - if defaults is not None: - res.inst_map = defaults.instruction_schedule_map - else: - res.inst_map = backend._instruction_schedule_map + res.inst_map = backend._instruction_schedule_map if res.coupling_map is None: - if backend_version < 2: - cmap_edge_list = getattr(config, "coupling_map", None) - if cmap_edge_list is not None: - res.coupling_map = CouplingMap(cmap_edge_list) - else: - res.coupling_map = backend.coupling_map + res.coupling_map = backend.coupling_map if res.instruction_durations is None: - if backend_version < 2: - res.instruction_durations = InstructionDurations.from_backend(backend) - else: - res.instruction_durations = backend.instruction_durations + res.instruction_durations = backend.instruction_durations if res.target is None and not _skip_target: - if backend_version >= 2: - res.target = backend.target + res.target = backend.target if res.scheduling_method is None and hasattr(backend, "get_scheduling_stage_plugin"): res.scheduling_method = backend.get_scheduling_stage_plugin() if res.translation_method is None and hasattr(backend, "get_translation_stage_plugin"): diff --git a/qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py b/qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py index 0deb1879a07e..8ac73673e225 100644 --- a/qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +++ b/qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py @@ -21,7 +21,6 @@ from qiskit.circuit.library.standard_gates import get_standard_gate_name_mapping from qiskit.circuit.quantumregister import Qubit from qiskit.providers.backend import Backend -from qiskit.providers.backend_compat import BackendV2Converter from qiskit.transpiler.coupling import CouplingMap from qiskit.transpiler.exceptions import TranspilerError from qiskit.transpiler.instruction_durations import InstructionDurations @@ -92,29 +91,28 @@ def generate_preset_pass_manager( function internally builds and uses. The target constraints for the pass manager construction can be specified through a :class:`.Target` - instance, a :class:`.BackendV1` or :class:`.BackendV2` instance, or via loose constraints + instance, a :class:`.BackendV2` instance, or via loose constraints (``basis_gates``, ``inst_map``, ``coupling_map``, ``instruction_durations``, ``dt`` or ``timing_constraints``). The order of priorities for target constraints works as follows: if a ``target`` input is provided, it will take priority over any ``backend`` input or loose constraints. If a ``backend`` is provided together with any loose constraint from the list above, the loose constraint will take priority over the corresponding backend - constraint. This behavior is independent of whether the ``backend`` instance is of type - :class:`.BackendV1` or :class:`.BackendV2`, as summarized in the table below. The first column + constraint. This behavior is summarized in the table below. The first column in the table summarizes the potential user-provided constraints, and each cell shows whether the priority is assigned to that specific constraint input or another input (`target`/`backend(V1)`/`backend(V2)`). - ============================ ========= ======================== ======================= - User Provided target backend(V1) backend(V2) - ============================ ========= ======================== ======================= - **basis_gates** target basis_gates basis_gates - **coupling_map** target coupling_map coupling_map - **instruction_durations** target instruction_durations instruction_durations - **inst_map** target inst_map inst_map - **dt** target dt dt - **timing_constraints** target timing_constraints timing_constraints - ============================ ========= ======================== ======================= + ============================ ========= ======================== + User Provided target backend(V2) + ============================ ========= ======================== + **basis_gates** target basis_gates + **coupling_map** target coupling_map + **instruction_durations** target instruction_durations + **inst_map** target inst_map + **dt** target dt + **timing_constraints** target timing_constraints + ============================ ========= ======================== Args: optimization_level (int): The optimization level to generate a @@ -269,20 +267,6 @@ def generate_preset_pass_manager( backend = optimization_level optimization_level = 2 - if backend is not None and getattr(backend, "version", 0) <= 1: - # This is a temporary conversion step to allow for a smoother transition - # to a fully target-based transpiler pipeline while maintaining the behavior - # of `transpile` with BackendV1 inputs. - warnings.warn( - "The `generate_preset_pass_manager` function will stop supporting inputs of " - f"type `BackendV1` ( {backend} ) in the `backend` parameter in a future " - "release no earlier than 2.0. `BackendV1` is deprecated and implementations " - "should move to `BackendV2`.", - category=DeprecationWarning, - stacklevel=2, - ) - backend = BackendV2Converter(backend) - # Check if a custom inst_map was specified before overwriting inst_map _given_inst_map = bool(inst_map) # If there are no loose constraints => use backend target if available diff --git a/qiskit/transpiler/target.py b/qiskit/transpiler/target.py index 51e1967473f3..e1cab6d3b46f 100644 --- a/qiskit/transpiler/target.py +++ b/qiskit/transpiler/target.py @@ -24,7 +24,6 @@ from typing import Optional, List, Any from collections.abc import Mapping -import datetime import io import logging import inspect @@ -48,15 +47,12 @@ from qiskit.transpiler.exceptions import TranspilerError from qiskit.transpiler.instruction_durations import InstructionDurations from qiskit.transpiler.timing_constraints import TimingConstraints -from qiskit.providers.exceptions import BackendPropertyError from qiskit.pulse.exceptions import PulseError, UnassignedDurationError from qiskit.exceptions import QiskitError # import QubitProperties here to provide convenience alias for building a # full target from qiskit.providers.backend import QubitProperties # pylint: disable=unused-import -from qiskit.providers.models.backendproperties import BackendProperties -from qiskit.utils import deprecate_func from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency, deprecate_pulse_arg logger = logging.getLogger(__name__) @@ -977,7 +973,6 @@ def from_configuration( num_qubits: int | None = None, coupling_map: CouplingMap | None = None, inst_map: InstructionScheduleMap | None = None, - backend_properties: BackendProperties | None = None, instruction_durations: InstructionDurations | None = None, concurrent_measurements: Optional[List[List[int]]] = None, dt: float | None = None, @@ -1017,14 +1012,6 @@ def from_configuration( on the instructions from the pair of ``basis_gates`` and ``coupling_map``. If you want to define a custom gate for a particular qubit or qubit pair, you can manually build :class:`.Target`. - backend_properties: The :class:`~.BackendProperties` object which is - used for instruction properties and qubit properties. - If specified and instruction properties are intended to be used - then the ``coupling_map`` argument must be specified. This is - only used to lookup error rates and durations (unless - ``instruction_durations`` is specified which would take - precedence) for instructions specified via ``coupling_map`` and - ``basis_gates``. instruction_durations: Optional instruction durations for instructions. If specified it will take priority for setting the ``duration`` field in the :class:`~InstructionProperties` objects for the instructions in the target. @@ -1060,11 +1047,6 @@ def from_configuration( acquire_alignment = timing_constraints.acquire_alignment qubit_properties = None - if backend_properties is not None: - # pylint: disable=cyclic-import - from qiskit.providers.backend_compat import qubit_props_list_from_props - - qubit_properties = qubit_props_list_from_props(properties=backend_properties) target = cls( num_qubits=num_qubits, @@ -1082,7 +1064,7 @@ def from_configuration( # While BackendProperties can also contain coupling information we # rely solely on CouplingMap to determine connectivity. This is because - # in legacy transpiler usage (and implicitly in the BackendV1 data model) + # in legacy transpiler usage # the coupling map is used to define connectivity constraints and # the properties is only used for error rate and duration population. # If coupling map is not specified we ignore the backend_properties @@ -1125,16 +1107,6 @@ def from_configuration( error = None duration = None calibration = None - if backend_properties is not None: - if duration is None: - try: - duration = backend_properties.gate_length(gate, qubit) - except BackendPropertyError: - duration = None - try: - error = backend_properties.gate_error(gate, qubit) - except BackendPropertyError: - error = None if inst_map is not None: try: calibration = inst_map._get_calibration_entry(gate, qubit) @@ -1174,16 +1146,6 @@ def from_configuration( error = None duration = None calibration = None - if backend_properties is not None: - if duration is None: - try: - duration = backend_properties.gate_length(gate, edge) - except BackendPropertyError: - duration = None - try: - error = backend_properties.gate_error(gate, edge) - except BackendPropertyError: - error = None if inst_map is not None: try: calibration = inst_map._get_calibration_entry(gate, edge) @@ -1222,98 +1184,3 @@ def from_configuration( Mapping.register(Target) - - -@deprecate_func( - since="1.2", - removal_timeline="in the 2.0 release", - additional_msg="This method is used to build an element from the deprecated " - "``qiskit.providers.models`` module. These models are part of the deprecated `BackendV1` " - "workflow and no longer necessary for `BackendV2`. If a user workflow requires these " - "representations it likely relies on deprecated functionality and " - "should be updated to use `BackendV2`.", -) -def target_to_backend_properties(target: Target): - """Convert a :class:`~.Target` object into a legacy :class:`~.BackendProperties`""" - - properties_dict: dict[str, Any] = { - "backend_name": "", - "backend_version": "", - "last_update_date": None, - "general": [], - } - gates = [] - qubits = [] - for gate, qargs_list in target.items(): - if gate != "measure": - for qargs, props in qargs_list.items(): - property_list = [] - if getattr(props, "duration", None) is not None: - property_list.append( - { - "date": datetime.datetime.now(datetime.timezone.utc), - "name": "gate_length", - "unit": "s", - "value": props.duration, - } - ) - if getattr(props, "error", None) is not None: - property_list.append( - { - "date": datetime.datetime.now(datetime.timezone.utc), - "name": "gate_error", - "unit": "", - "value": props.error, - } - ) - if property_list: - gates.append( - { - "gate": gate, - "qubits": list(qargs), - "parameters": property_list, - "name": gate + "_".join([str(x) for x in qargs]), - } - ) - else: - qubit_props: dict[int, Any] = {} - if target.num_qubits is not None: - qubit_props = {x: None for x in range(target.num_qubits)} - for qargs, props in qargs_list.items(): - if qargs is None: - continue - qubit = qargs[0] - props_list = [] - if getattr(props, "error", None) is not None: - props_list.append( - { - "date": datetime.datetime.now(datetime.timezone.utc), - "name": "readout_error", - "unit": "", - "value": props.error, - } - ) - if getattr(props, "duration", None) is not None: - props_list.append( - { - "date": datetime.datetime.now(datetime.timezone.utc), - "name": "readout_length", - "unit": "s", - "value": props.duration, - } - ) - if not props_list: - qubit_props = {} - break - qubit_props[qubit] = props_list - if qubit_props and all(x is not None for x in qubit_props.values()): - qubits = [qubit_props[i] for i in range(target.num_qubits)] - if gates or qubits: - properties_dict["gates"] = gates - properties_dict["qubits"] = qubits - with warnings.catch_warnings(): - # This raises BackendProperties internally - warnings.filterwarnings("ignore", category=DeprecationWarning) - return BackendProperties.from_dict(properties_dict) - else: - return None diff --git a/qiskit/visualization/gate_map.py b/qiskit/visualization/gate_map.py index 06dc3c66e425..2f18a492e343 100644 --- a/qiskit/visualization/gate_map.py +++ b/qiskit/visualization/gate_map.py @@ -21,16 +21,10 @@ from qiskit.exceptions import QiskitError from qiskit.utils import optionals as _optionals -from qiskit.providers.exceptions import BackendPropertyError from qiskit.transpiler.coupling import CouplingMap from .exceptions import VisualizationError -def _get_backend_interface_version(backend): - backend_interface_version = getattr(backend, "version", None) - return backend_interface_version - - @_optionals.HAS_MATPLOTLIB.require_in_call def plot_gate_map( backend, @@ -909,18 +903,9 @@ def plot_gate_map( [24, 26], ] - backend_version = _get_backend_interface_version(backend) - if backend_version <= 1: - if backend.configuration().simulator: - raise QiskitError("Requires a device backend, not simulator.") - config = backend.configuration() - num_qubits = config.n_qubits - coupling_map = CouplingMap(config.coupling_map) - name = backend.name() - else: - num_qubits = backend.num_qubits - coupling_map = backend.coupling_map - name = backend.name + num_qubits = backend.num_qubits + coupling_map = backend.coupling_map + name = backend.name if qubit_coordinates is None and ("ibm" in name or "fake" in name): qubit_coordinates = qubit_coordinates_map.get(num_qubits, None) @@ -1190,15 +1175,9 @@ def plot_circuit_layout(circuit, backend, view="virtual", qubit_coordinates=None if circuit._layout is None: raise QiskitError("Circuit has no layout. Perhaps it has not been transpiled.") - backend_version = _get_backend_interface_version(backend) - if backend_version <= 1: - num_qubits = backend.configuration().n_qubits - cmap = backend.configuration().coupling_map - cmap_len = len(cmap) - else: - num_qubits = backend.num_qubits - cmap = backend.coupling_map - cmap_len = cmap.graph.num_edges() + num_qubits = backend.num_qubits + cmap = backend.coupling_map + cmap_len = cmap.graph.num_edges() qubits = [] qubit_labels = [""] * num_qubits @@ -1290,84 +1269,40 @@ def plot_error_map(backend, figsize=(15, 12), show_title=True, qubit_coordinates color_map = sns.cubehelix_palette(reverse=True, as_cmap=True) - backend_version = _get_backend_interface_version(backend) - if backend_version <= 1: - backend_name = backend.name() - num_qubits = backend.configuration().n_qubits - cmap = backend.configuration().coupling_map - props = backend.properties() - props_dict = props.to_dict() - single_gate_errors = [0] * num_qubits - read_err = [0] * num_qubits - cx_errors = [] - # sx error rates - for gate in props_dict["gates"]: - if gate["gate"] == "sx": - _qubit = gate["qubits"][0] - for param in gate["parameters"]: - if param["name"] == "gate_error": - single_gate_errors[_qubit] = param["value"] - break - else: - raise VisualizationError( - f"Backend '{backend}' did not supply an error for the 'sx' gate." - ) - if cmap: - directed = False - if num_qubits < 20: - for edge in cmap: - if not [edge[1], edge[0]] in cmap: - directed = True - break - - for line in cmap: - for item in props_dict["gates"]: - if item["qubits"] == line: - cx_errors.append(item["parameters"][0]["value"]) - break - for qubit in range(num_qubits): - try: - read_err[qubit] = props.readout_error(qubit) - except BackendPropertyError: - pass - - else: - backend_name = backend.name - num_qubits = backend.num_qubits - cmap = backend.coupling_map - two_q_error_map = {} - single_gate_errors = [0] * num_qubits - read_err = [0] * num_qubits - cx_errors = [] - for gate, prop_dict in backend.target.items(): - if prop_dict is None or None in prop_dict: + backend_name = backend.name + num_qubits = backend.num_qubits + cmap = backend.coupling_map + two_q_error_map = {} + single_gate_errors = [0] * num_qubits + read_err = [0] * num_qubits + cx_errors = [] + for gate, prop_dict in backend.target.items(): + if prop_dict is None or None in prop_dict: + continue + for qargs, inst_props in prop_dict.items(): + if inst_props is None: continue - for qargs, inst_props in prop_dict.items(): - if inst_props is None: - continue - if gate == "measure": - if inst_props.error is not None: - read_err[qargs[0]] = inst_props.error - elif len(qargs) == 1: - if inst_props.error is not None: - single_gate_errors[qargs[0]] = max( - single_gate_errors[qargs[0]], inst_props.error - ) - elif len(qargs) == 2: - if inst_props.error is not None: - two_q_error_map[qargs] = max( - two_q_error_map.get(qargs, 0), inst_props.error - ) - if cmap: - directed = False - if num_qubits < 20: - for edge in cmap: - if not [edge[1], edge[0]] in cmap: - directed = True - break - for line in cmap.get_edges(): - err = two_q_error_map.get(tuple(line), 0) - cx_errors.append(err) + if gate == "measure": + if inst_props.error is not None: + read_err[qargs[0]] = inst_props.error + elif len(qargs) == 1: + if inst_props.error is not None: + single_gate_errors[qargs[0]] = max( + single_gate_errors[qargs[0]], inst_props.error + ) + elif len(qargs) == 2: + if inst_props.error is not None: + two_q_error_map[qargs] = max(two_q_error_map.get(qargs, 0), inst_props.error) + if cmap: + directed = False + if num_qubits < 20: + for edge in cmap: + if not [edge[1], edge[0]] in cmap: + directed = True + break + for line in cmap.get_edges(): + err = two_q_error_map.get(tuple(line), 0) + cx_errors.append(err) # Convert to percent single_gate_errors = 100 * np.asarray(single_gate_errors) diff --git a/qiskit/visualization/pulse_v2/device_info.py b/qiskit/visualization/pulse_v2/device_info.py index 7898f978772c..3a3f2688db59 100644 --- a/qiskit/visualization/pulse_v2/device_info.py +++ b/qiskit/visualization/pulse_v2/device_info.py @@ -39,7 +39,6 @@ class :py:class:``DrawerBackendInfo`` with necessary methods to generate drawing from typing import Dict, List, Union, Optional from qiskit import pulse -from qiskit.providers import BackendConfigurationError from qiskit.providers.backend import Backend, BackendV2 @@ -109,42 +108,7 @@ def create_from_backend(cls, backend: Backend): chan_freqs = {} qubit_channel_map = defaultdict(list) - if hasattr(backend, "configuration") and hasattr(backend, "defaults"): - configuration = backend.configuration() - defaults = backend.defaults() - - name = configuration.backend_name - dt = configuration.dt - - # load frequencies - chan_freqs.update( - { - pulse.DriveChannel(qind): freq - for qind, freq in enumerate(defaults.qubit_freq_est) - } - ) - chan_freqs.update( - { - pulse.MeasureChannel(qind): freq - for qind, freq in enumerate(defaults.meas_freq_est) - } - ) - for qind, u_lo_mappers in enumerate(configuration.u_channel_lo): - temp_val = 0.0 + 0.0j - for u_lo_mapper in u_lo_mappers: - temp_val += defaults.qubit_freq_est[u_lo_mapper.q] * u_lo_mapper.scale - chan_freqs[pulse.ControlChannel(qind)] = temp_val.real - - # load qubit channel mapping - for qind in range(configuration.n_qubits): - qubit_channel_map[qind].append(configuration.drive(qubit=qind)) - qubit_channel_map[qind].append(configuration.measure(qubit=qind)) - for tind in range(configuration.n_qubits): - try: - qubit_channel_map[qind].extend(configuration.control(qubits=(qind, tind))) - except BackendConfigurationError: - pass - elif isinstance(backend, BackendV2): + if isinstance(backend, BackendV2): # Pure V2 model doesn't contain channel frequency information. name = backend.name dt = backend.dt diff --git a/test/python/compiler/test_transpiler.py b/test/python/compiler/test_transpiler.py index cf0eb4c24a98..455b20099403 100644 --- a/test/python/compiler/test_transpiler.py +++ b/test/python/compiler/test_transpiler.py @@ -89,7 +89,6 @@ from qiskit.transpiler.target import ( InstructionProperties, Target, - InstructionDurations, ) from test import QiskitTestCase, combine, slow_test # pylint: disable=wrong-import-order @@ -1564,7 +1563,7 @@ def test_scheduling_instruction_constraints(self): def test_scheduling_dt_constraints(self): """Test that scheduling-related loose transpile constraints - work with both BackendV1 and BackendV2.""" + work with BackendV2.""" backend_v2 = GenericBackendV2(num_qubits=2, seed=1) qc = QuantumCircuit(1, 1) diff --git a/test/python/primitives/test_backend_sampler_v2.py b/test/python/primitives/test_backend_sampler_v2.py index dc76a95f488b..58462ffda32e 100644 --- a/test/python/primitives/test_backend_sampler_v2.py +++ b/test/python/primitives/test_backend_sampler_v2.py @@ -33,7 +33,7 @@ from qiskit.providers.basic_provider import BasicProviderJob, BasicSimulator from qiskit.providers.fake_provider import GenericBackendV2 from qiskit.result import Result -from qiskit.qobj.utils import MeasReturnType, MeasLevel +from qiskit.result.models import MeasReturnType, MeasLevel from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager from ..legacy_cmaps import LAGOS_CMAP diff --git a/test/python/providers/test_options.py b/test/python/providers/test_options.py index 194423fef528..59f69269b309 100644 --- a/test/python/providers/test_options.py +++ b/test/python/providers/test_options.py @@ -17,7 +17,7 @@ import pickle from qiskit.providers import Options -from qiskit.qobj.utils import MeasLevel +from qiskit.result.models import MeasLevel from test import QiskitTestCase # pylint: disable=wrong-import-order diff --git a/test/python/pulse/test_calibration_entries.py b/test/python/pulse/test_calibration_entries.py index 6a112ab854d5..166b03303704 100644 --- a/test/python/pulse/test_calibration_entries.py +++ b/test/python/pulse/test_calibration_entries.py @@ -19,19 +19,14 @@ Schedule, ScheduleBlock, Play, - ShiftPhase, Constant, - Waveform, DriveChannel, ) from qiskit.pulse.calibration_entries import ( ScheduleDef, CallableDef, - PulseQobjDef, ) from qiskit.pulse.exceptions import PulseError -from qiskit.qobj.converters.pulse_instruction import QobjToInstructionConverter -from qiskit.qobj.pulse_qobj import PulseLibraryItem, PulseQobjInstruction from test import QiskitTestCase # pylint: disable=wrong-import-order from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings @@ -277,232 +272,3 @@ def factory2(): self.assertEqual(entry1, entry3) self.assertNotEqual(entry1, entry2) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestPulseQobj(QiskitTestCase): - """Test case for the PulseQobjDef.""" - - def setUp(self): - super().setUp() - with self.assertWarns(DeprecationWarning): - self.converter = QobjToInstructionConverter( - pulse_library=[ - PulseLibraryItem(name="waveform", samples=[0.3, 0.1, 0.2, 0.2, 0.3]), - ] - ) - - def test_add_qobj(self): - """Basic test PulseQobj format.""" - with self.assertWarns(DeprecationWarning): - serialized_program = [ - PulseQobjInstruction( - name="parametric_pulse", - t0=0, - ch="d0", - label="TestPulse", - pulse_shape="constant", - parameters={"amp": 0.1 + 0j, "duration": 10}, - ), - PulseQobjInstruction( - name="waveform", - t0=20, - ch="d0", - ), - ] - - entry = PulseQobjDef(converter=self.converter, name="my_gate") - entry.define(serialized_program) - - signature_to_test = list(entry.get_signature().parameters.keys()) - signature_ref = [] - self.assertListEqual(signature_to_test, signature_ref) - - schedule_to_test = entry.get_schedule() - schedule_ref = Schedule() - schedule_ref.insert( - 0, - Play(Constant(duration=10, amp=0.1, angle=0.0), DriveChannel(0)), - inplace=True, - ) - schedule_ref.insert( - 20, - Play(Waveform([0.3, 0.1, 0.2, 0.2, 0.3]), DriveChannel(0)), - inplace=True, - ) - self.assertEqual(schedule_to_test, schedule_ref) - - def test_missing_waveform(self): - """Test incomplete Qobj should raise warning and calibration returns None.""" - with self.assertWarns(DeprecationWarning): - serialized_program = [ - PulseQobjInstruction( - name="waveform_123456", - t0=20, - ch="d0", - ), - ] - entry = PulseQobjDef(converter=self.converter, name="my_gate") - entry.define(serialized_program) - - with self.assertWarns( - UserWarning, - msg=( - "Pulse calibration cannot be built and the entry is ignored: " - "Instruction waveform_123456 on channel d0 is not found in Qiskit namespace. " - "This instruction cannot be deserialized." - ), - ): - out = entry.get_schedule() - - self.assertIsNone(out) - - def test_parameterized_qobj(self): - """Test adding and managing parameterized qobj. - - Note that pulse parameter cannot be parameterized by convention. - """ - with self.assertWarns(DeprecationWarning): - serialized_program = [ - PulseQobjInstruction( - name="parametric_pulse", - t0=0, - ch="d0", - label="TestPulse", - pulse_shape="constant", - parameters={"amp": 0.1, "duration": 10}, - ), - PulseQobjInstruction( - name="fc", - t0=0, - ch="d0", - phase="P1", - ), - ] - - entry = PulseQobjDef(converter=self.converter, name="my_gate") - entry.define(serialized_program) - - signature_to_test = list(entry.get_signature().parameters.keys()) - signature_ref = ["P1"] - self.assertListEqual(signature_to_test, signature_ref) - - schedule_to_test = entry.get_schedule(P1=1.57) - schedule_ref = Schedule() - schedule_ref.insert( - 0, - Play(Constant(duration=10, amp=0.1, angle=0.0), DriveChannel(0)), - inplace=True, - ) - schedule_ref.insert( - 0, - ShiftPhase(1.57, DriveChannel(0)), - inplace=True, - ) - self.assertEqual(schedule_to_test, schedule_ref) - - def test_equality(self): - """Test equality evaluation between the pulse qobj entries.""" - with self.assertWarns(DeprecationWarning): - serialized_program1 = [ - PulseQobjInstruction( - name="parametric_pulse", - t0=0, - ch="d0", - label="TestPulse", - pulse_shape="constant", - parameters={"amp": 0.1, "duration": 10}, - ) - ] - serialized_program2 = [ - PulseQobjInstruction( - name="parametric_pulse", - t0=0, - ch="d0", - label="TestPulse", - pulse_shape="constant", - parameters={"amp": 0.2, "duration": 10}, - ) - ] - - with self.assertWarns(DeprecationWarning): - entry1 = PulseQobjDef(name="my_gate1") - entry1.define(serialized_program1) - - with self.assertWarns(DeprecationWarning): - entry2 = PulseQobjDef(name="my_gate2") - entry2.define(serialized_program2) - - with self.assertWarns(DeprecationWarning): - entry3 = PulseQobjDef(name="my_gate3") - entry3.define(serialized_program1) - - self.assertEqual(entry1, entry3) - self.assertNotEqual(entry1, entry2) - - def test_equality_with_schedule(self): - """Test equality, but other is schedule entry. - - Because the pulse qobj entry is a subclass of the schedule entry, - these instances can be compared by the generated definition, i.e. Schedule. - """ - with self.assertWarns(DeprecationWarning): - serialized_program = [ - PulseQobjInstruction( - name="parametric_pulse", - t0=0, - ch="d0", - label="TestPulse", - pulse_shape="constant", - parameters={"amp": 0.1, "duration": 10}, - ) - ] - entry1 = PulseQobjDef(name="qobj_entry") - entry1.define(serialized_program) - - program = Schedule() - program.insert( - 0, - Play(Constant(duration=10, amp=0.1, angle=0.0), DriveChannel(0)), - inplace=True, - ) - entry2 = ScheduleDef() - entry2.define(program) - - self.assertEqual(entry1, entry2) - - def test_calibration_missing_waveform(self): - """Test that calibration with missing waveform should become None. - - When a hardware doesn't support waveform payload and Qiskit doesn't have - the corresponding parametric pulse definition, CmdDef with missing waveform - might be input to the QobjConverter. This fails in loading the calibration data - because necessary pulse object cannot be built. - - In this situation, parsed calibration data must become None, - instead of raising an error. - """ - with self.assertWarns(DeprecationWarning): - serialized_program = [ - PulseQobjInstruction( - name="SomeMissingPulse", - t0=0, - ch="d0", - ) - ] - with self.assertWarns(DeprecationWarning): - entry = PulseQobjDef(name="qobj_entry") - entry.define(serialized_program) - - # This is pulse qobj before parsing it - self.assertEqual(str(entry), "PulseQobj") - - # Actual calibration value is None - parsed_output = entry.get_schedule() - self.assertIsNone(parsed_output) - - # Repr becomes None-like after it finds calibration is incomplete - self.assertEqual(str(entry), "None") - - # Signature is also None - self.assertIsNone(entry.get_signature()) diff --git a/test/python/qobj/__init__.py b/test/python/qobj/__init__.py deleted file mode 100644 index e9ca20dd1979..000000000000 --- a/test/python/qobj/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2018. -# -# 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. - -"""Qiskit Qobj tests.""" diff --git a/test/python/qobj/test_pulse_converter.py b/test/python/qobj/test_pulse_converter.py deleted file mode 100644 index 8f920eb96d80..000000000000 --- a/test/python/qobj/test_pulse_converter.py +++ /dev/null @@ -1,523 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2019. -# -# 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. - -"""Converter Test.""" - -import hashlib -import numpy as np - -from qiskit.pulse import LoConfig, Kernel, Discriminator -from qiskit.pulse.channels import ( - DriveChannel, - ControlChannel, - MeasureChannel, - AcquireChannel, - MemorySlot, - RegisterSlot, -) -from qiskit.pulse.instructions import ( - SetPhase, - ShiftPhase, - SetFrequency, - ShiftFrequency, - Play, - Delay, - Acquire, - Snapshot, -) -from qiskit.pulse.library import Waveform, Gaussian, GaussianSquare, Constant, Drag -from qiskit.pulse.schedule import Schedule -from qiskit.qobj import ( - PulseQobjInstruction, - PulseQobjExperimentConfig, - PulseLibraryItem, - QobjMeasurementOption, -) -from qiskit.qobj.converters import ( - InstructionToQobjConverter, - QobjToInstructionConverter, - LoConfigConverter, -) -from qiskit.exceptions import QiskitError -from test import QiskitTestCase # pylint: disable=wrong-import-order - - -class TestInstructionToQobjConverter(QiskitTestCase): - """Pulse converter tests.""" - - def test_drive_instruction(self): - """Test converted qobj from Play.""" - with self.assertWarns(DeprecationWarning): - converter = InstructionToQobjConverter(PulseQobjInstruction, meas_level=2) - instruction = Play(Waveform(np.arange(0, 0.01), name="linear"), DriveChannel(0)) - valid_qobj = PulseQobjInstruction(name="linear", ch="d0", t0=0) - self.assertEqual(converter(0, instruction), valid_qobj) - - def test_gaussian_pulse_instruction(self): - """Test that parametric pulses are correctly converted to PulseQobjInstructions.""" - amp = 0.3 - angle = -0.7 - with self.assertWarns(DeprecationWarning): - converter = InstructionToQobjConverter(PulseQobjInstruction, meas_level=2) - instruction = Play( - Gaussian(duration=25, sigma=15, amp=amp, angle=angle), DriveChannel(0) - ) - with self.assertWarns(DeprecationWarning): - valid_qobj = PulseQobjInstruction( - name="parametric_pulse", - pulse_shape="gaussian", - ch="d0", - t0=0, - parameters={"duration": 25, "sigma": 15, "amp": amp * np.exp(1j * angle)}, - ) - self.assertEqual(converter(0, instruction), valid_qobj) - - def test_gaussian_square_pulse_instruction(self): - """Test that parametric pulses are correctly converted to PulseQobjInstructions.""" - with self.assertWarns(DeprecationWarning): - converter = InstructionToQobjConverter(PulseQobjInstruction, meas_level=2) - amp = 0.7 - angle = -0.6 - with self.assertWarns(DeprecationWarning): - instruction = Play( - GaussianSquare(duration=1500, sigma=15, amp=amp, width=1300, angle=angle), - MeasureChannel(1), - ) - - with self.assertWarns(DeprecationWarning): - valid_qobj = PulseQobjInstruction( - name="parametric_pulse", - pulse_shape="gaussian_square", - ch="m1", - t0=10, - parameters={ - "duration": 1500, - "sigma": 15, - "amp": amp * np.exp(1j * angle), - "width": 1300, - }, - ) - self.assertEqual(converter(10, instruction), valid_qobj) - - def test_constant_pulse_instruction(self): - """Test that parametric pulses are correctly converted to PulseQobjInstructions.""" - with self.assertWarns(DeprecationWarning): - converter = InstructionToQobjConverter(PulseQobjInstruction, meas_level=2) - instruction = Play(Constant(duration=25, amp=1, angle=np.pi), ControlChannel(2)) - - with self.assertWarns(DeprecationWarning): - valid_qobj = PulseQobjInstruction( - name="parametric_pulse", - pulse_shape="constant", - ch="u2", - t0=20, - parameters={"duration": 25, "amp": 1 * np.exp(1j * np.pi)}, - ) - self.assertEqual(converter(20, instruction), valid_qobj) - - def test_drag_pulse_instruction(self): - """Test that parametric pulses are correctly converted to PulseQobjInstructions.""" - amp = 0.7 - angle = -0.6 - with self.assertWarns(DeprecationWarning): - converter = InstructionToQobjConverter(PulseQobjInstruction, meas_level=2) - instruction = Play( - Drag(duration=25, sigma=15, amp=amp, angle=angle, beta=0.5), DriveChannel(0) - ) - - with self.assertWarns(DeprecationWarning): - valid_qobj = PulseQobjInstruction( - name="parametric_pulse", - pulse_shape="drag", - ch="d0", - t0=30, - parameters={ - "duration": 25, - "sigma": 15, - "amp": amp * np.exp(1j * angle), - "beta": 0.5, - }, - ) - self.assertEqual(converter(30, instruction), valid_qobj) - - def test_frame_change(self): - """Test converted qobj from ShiftPhase.""" - with self.assertWarns(DeprecationWarning): - converter = InstructionToQobjConverter(PulseQobjInstruction, meas_level=2) - valid_qobj = PulseQobjInstruction(name="fc", ch="d0", t0=0, phase=0.1) - instruction = ShiftPhase(0.1, DriveChannel(0)) - self.assertEqual(converter(0, instruction), valid_qobj) - - def test_set_phase(self): - """Test converted qobj from ShiftPhase.""" - with self.assertWarns(DeprecationWarning): - converter = InstructionToQobjConverter(PulseQobjInstruction, meas_level=2) - instruction = SetPhase(3.14, DriveChannel(0)) - - valid_qobj = PulseQobjInstruction(name="setp", ch="d0", t0=0, phase=3.14) - - self.assertEqual(converter(0, instruction), valid_qobj) - - def test_set_frequency(self): - """Test converted qobj from SetFrequency.""" - with self.assertWarns(DeprecationWarning): - converter = InstructionToQobjConverter(PulseQobjInstruction, meas_level=2) - instruction = SetFrequency(8.0e9, DriveChannel(0)) - - valid_qobj = PulseQobjInstruction(name="setf", ch="d0", t0=0, frequency=8.0) - - self.assertEqual(converter(0, instruction), valid_qobj) - - def test_shift_frequency(self): - """Test converted qobj from ShiftFrequency.""" - with self.assertWarns(DeprecationWarning): - converter = InstructionToQobjConverter(PulseQobjInstruction, meas_level=2) - instruction = ShiftFrequency(8.0e9, DriveChannel(0)) - - valid_qobj = PulseQobjInstruction(name="shiftf", ch="d0", t0=0, frequency=8.0) - - self.assertEqual(converter(0, instruction), valid_qobj) - - def test_acquire(self): - """Test converted qobj from AcquireInstruction.""" - with self.assertWarns(DeprecationWarning): - converter = InstructionToQobjConverter(PulseQobjInstruction, meas_level=2) - instruction = Acquire(10, AcquireChannel(0), MemorySlot(0), RegisterSlot(0)) - - valid_qobj = PulseQobjInstruction( - name="acquire", t0=0, duration=10, qubits=[0], memory_slot=[0], register_slot=[0] - ) - self.assertEqual(converter(0, instruction), valid_qobj) - - # without register - instruction = Acquire(10, AcquireChannel(0), MemorySlot(0)) - valid_qobj = PulseQobjInstruction( - name="acquire", t0=0, duration=10, qubits=[0], memory_slot=[0] - ) - self.assertEqual(converter(0, instruction), valid_qobj) - - def test_snapshot(self): - """Test converted qobj from Snapshot.""" - with self.assertWarns(DeprecationWarning): - converter = InstructionToQobjConverter(PulseQobjInstruction, meas_level=2) - instruction = Snapshot(label="label", snapshot_type="type") - - with self.assertWarns(DeprecationWarning): - valid_qobj = PulseQobjInstruction(name="snapshot", t0=0, label="label", type="type") - - self.assertEqual(converter(0, instruction), valid_qobj) - - -class TestQobjToInstructionConverter(QiskitTestCase): - """Pulse converter tests.""" - - def setUp(self): - super().setUp() - with self.assertWarns(DeprecationWarning): - self.linear = Waveform(np.arange(0, 0.01), name="linear") - self.pulse_library = [ - PulseLibraryItem(name=self.linear.name, samples=self.linear.samples.tolist()) - ] - - with self.assertWarns(DeprecationWarning): - self.converter = QobjToInstructionConverter(self.pulse_library, buffer=0) - self.num_qubits = 2 - - def test_drive_instruction(self): - """Test converted qobj from PulseInstruction.""" - with self.assertWarns(DeprecationWarning): - instruction = Play(self.linear, DriveChannel(0)) - qobj = PulseQobjInstruction(name="linear", ch="d0", t0=10) - converted_instruction = self.converter(qobj) - self.assertEqual(converted_instruction.instructions[0][-1], instruction) - - def test_parametric_pulses(self): - """Test converted qobj from ParametricInstruction.""" - with self.assertWarns(DeprecationWarning): - instruction = Play( - Gaussian(duration=25, sigma=15, amp=0.5, angle=np.pi / 2, name="pulse1"), - DriveChannel(0), - ) - qobj = PulseQobjInstruction( - name="parametric_pulse", - label="pulse1", - pulse_shape="gaussian", - ch="d0", - t0=0, - parameters={"duration": 25, "sigma": 15, "amp": 0.5j}, - ) - converted_instruction = self.converter(qobj) - self.assertEqual(converted_instruction.start_time, 0) - self.assertEqual(converted_instruction.duration, 25) - self.assertAlmostEqual(converted_instruction.instructions[0][-1], instruction) - self.assertEqual(converted_instruction.instructions[0][-1].pulse.name, "pulse1") - - def test_parametric_pulses_no_label(self): - """Test converted qobj from ParametricInstruction without label.""" - base_str = "gaussian_[('amp', (-0.5+0.2j)), ('duration', 25), ('sigma', 15)]" - short_pulse_id = hashlib.md5(base_str.encode("utf-8")).hexdigest()[:4] - pulse_name = f"gaussian_{short_pulse_id}" - - with self.assertWarns(DeprecationWarning): - qobj = PulseQobjInstruction( - name="parametric_pulse", - pulse_shape="gaussian", - ch="d0", - t0=0, - parameters={"duration": 25, "sigma": 15, "amp": -0.5 + 0.2j}, - ) - converted_instruction = self.converter(qobj) - self.assertEqual(converted_instruction.instructions[0][-1].pulse.name, pulse_name) - - def test_frame_change(self): - """Test converted qobj from ShiftPhase.""" - with self.assertWarns(DeprecationWarning): - qobj = PulseQobjInstruction(name="fc", ch="m0", t0=0, phase=0.1) - converted_instruction = self.converter(qobj) - - instruction = ShiftPhase(0.1, MeasureChannel(0)) - self.assertEqual(converted_instruction.start_time, 0) - self.assertEqual(converted_instruction.duration, 0) - self.assertEqual(converted_instruction.instructions[0][-1], instruction) - - def test_parameterized_frame_change(self): - """Test converted qobj from ShiftPhase.""" - with self.assertWarns(DeprecationWarning): - instruction = ShiftPhase(4.0, MeasureChannel(0)) - shifted = instruction << 10 - - qobj = PulseQobjInstruction(name="fc", ch="m0", t0=10, phase="P1*2") - converted_instruction = self.converter(qobj) - - self.assertIsInstance(converted_instruction, Schedule) - - bind_dict = {converted_instruction.get_parameters("P1")[0]: 2.0} - evaluated_instruction = converted_instruction.assign_parameters(bind_dict) - - self.assertEqual(evaluated_instruction.start_time, shifted.start_time) - self.assertEqual(evaluated_instruction.duration, shifted.duration) - self.assertEqual(evaluated_instruction.instructions[0][-1], instruction) - - def test_set_phase(self): - """Test converted qobj from SetPhase.""" - with self.assertWarns(DeprecationWarning): - qobj = PulseQobjInstruction(name="setp", ch="m0", t0=0, phase=3.14) - converted_instruction = self.converter(qobj) - - instruction = SetPhase(3.14, MeasureChannel(0)) - self.assertEqual(converted_instruction.start_time, 0) - self.assertEqual(converted_instruction.duration, 0) - self.assertEqual(converted_instruction.instructions[0][-1], instruction) - - def test_parameterized_set_phase(self): - """Test converted qobj from SetPhase, with parameterized phase.""" - with self.assertWarns(DeprecationWarning): - qobj = PulseQobjInstruction(name="setp", ch="m0", t0=0, phase="p/2") - converted_instruction = self.converter(qobj) - self.assertIsInstance(converted_instruction, Schedule) - - bind_dict = {converted_instruction.get_parameters("p")[0]: 3.14} - evaluated_instruction = converted_instruction.assign_parameters(bind_dict) - - with self.assertWarns(DeprecationWarning): - instruction = SetPhase(3.14 / 2, MeasureChannel(0)) - self.assertEqual(evaluated_instruction.start_time, 0) - self.assertEqual(evaluated_instruction.duration, 0) - self.assertEqual(evaluated_instruction.instructions[0][-1], instruction) - - def test_set_frequency(self): - """Test converted qobj from SetFrequency.""" - with self.assertWarns(DeprecationWarning): - instruction = SetFrequency(8.0e9, DriveChannel(0)) - - qobj = PulseQobjInstruction(name="setf", ch="d0", t0=0, frequency=8.0) - converted_instruction = self.converter(qobj) - - self.assertEqual(converted_instruction.start_time, 0) - self.assertEqual(converted_instruction.duration, 0) - self.assertEqual(converted_instruction.instructions[0][-1], instruction) - self.assertTrue("frequency" in qobj.to_dict()) - - def test_parameterized_set_frequency(self): - """Test converted qobj from SetFrequency, when passing a parameterized frequency.""" - with self.assertWarns(DeprecationWarning): - qobj = PulseQobjInstruction(name="setf", ch="d0", t0=2, frequency="f") - self.assertTrue("frequency" in qobj.to_dict()) - - with self.assertWarns(DeprecationWarning): - converted_instruction = self.converter(qobj) - self.assertIsInstance(converted_instruction, Schedule) - - bind_dict = {converted_instruction.get_parameters("f")[0]: 2.0} - evaluated_instruction = converted_instruction.assign_parameters(bind_dict) - - with self.assertWarns(DeprecationWarning): - instruction = SetFrequency(2.0e9, DriveChannel(0)) - - self.assertEqual(evaluated_instruction.start_time, 2) - self.assertEqual(evaluated_instruction.duration, 2) - self.assertEqual(evaluated_instruction.instructions[0][-1], instruction) - - def test_shift_frequency(self): - """Test converted qobj from ShiftFrequency.""" - with self.assertWarns(DeprecationWarning): - instruction = ShiftFrequency(8.0e9, DriveChannel(0)) - - qobj = PulseQobjInstruction(name="shiftf", ch="d0", t0=0, frequency=8.0) - converted_instruction = self.converter(qobj) - - self.assertEqual(converted_instruction.start_time, 0) - self.assertEqual(converted_instruction.duration, 0) - self.assertEqual(converted_instruction.instructions[0][-1], instruction) - self.assertTrue("frequency" in qobj.to_dict()) - - def test_parameterized_shift_frequency(self): - """Test converted qobj from ShiftFrequency, with a parameterized frequency.""" - with self.assertWarns(DeprecationWarning): - qobj = PulseQobjInstruction(name="shiftf", ch="d0", t0=1, frequency="f / 1000") - self.assertTrue("frequency" in qobj.to_dict()) - - with self.assertWarns(DeprecationWarning): - converted_instruction = self.converter(qobj) - self.assertIsInstance(converted_instruction, Schedule) - - bind_dict = {converted_instruction.get_parameters("f")[0]: 3.14} - evaluated_instruction = converted_instruction.assign_parameters(bind_dict) - - with self.assertWarns(DeprecationWarning): - instruction = ShiftFrequency(3.14e6, DriveChannel(0)) - - self.assertEqual(evaluated_instruction.start_time, 1) - self.assertEqual(evaluated_instruction.duration, 1) - self.assertEqual(evaluated_instruction.instructions[0][-1], instruction) - - def test_delay(self): - """Test converted qobj from Delay.""" - with self.assertWarns(DeprecationWarning): - instruction = Delay(10, DriveChannel(0)) - - qobj = PulseQobjInstruction(name="delay", ch="d0", t0=0, duration=10) - converted_instruction = self.converter(qobj) - - self.assertTrue("delay" in qobj.to_dict().values()) - self.assertEqual(converted_instruction.duration, instruction.duration) - self.assertEqual(converted_instruction.instructions[0][-1], instruction) - - def test_acquire(self): - """Test converted qobj from Acquire.""" - with self.assertWarns(DeprecationWarning): - schedule = Schedule() - for i in range(self.num_qubits): - schedule |= Acquire( - 10, - AcquireChannel(i), - MemorySlot(i), - RegisterSlot(i), - kernel=Kernel(name="test_kern", test_params="test"), - discriminator=Discriminator(name="test_disc", test_params=1.0), - ) - qobj = PulseQobjInstruction( - name="acquire", - t0=0, - duration=10, - qubits=[0, 1], - memory_slot=[0, 1], - register_slot=[0, 1], - kernels=[QobjMeasurementOption(name="test_kern", params={"test_params": "test"})], - discriminators=[ - QobjMeasurementOption(name="test_disc", params={"test_params": 1.0}) - ], - ) - with self.assertWarns(DeprecationWarning): - converted_instruction = self.converter(qobj) - - self.assertEqual(converted_instruction.start_time, 0) - self.assertEqual(converted_instruction.duration, 10) - self.assertEqual(converted_instruction.instructions[0][-1].duration, 10) - self.assertEqual( - converted_instruction.instructions[0][-1].kernel.params, {"test_params": "test"} - ) - with self.assertWarns(DeprecationWarning): - self.assertEqual(converted_instruction.instructions[1][-1].channel, AcquireChannel(1)) - - def test_snapshot(self): - """Test converted qobj from SnapShot.""" - with self.assertWarns(DeprecationWarning): - instruction = Snapshot(label="label", snapshot_type="type") - shifted = instruction << 10 - - qobj = PulseQobjInstruction(name="snapshot", t0=10, label="label", type="type") - converted_instruction = self.converter(qobj) - - self.assertEqual(converted_instruction.start_time, shifted.start_time) - self.assertEqual(converted_instruction.duration, shifted.duration) - self.assertEqual(converted_instruction.instructions[0][-1], instruction) - - def test_instruction_name_collision(self): - """Avoid command name collision of pulse library items.""" - with self.assertWarns(DeprecationWarning): - pulse_library_from_backend_x = [ - PulseLibraryItem(name="pulse123", samples=[0.1, 0.1, 0.1]), - PulseLibraryItem(name="pulse456", samples=[0.3, 0.3, 0.3]), - ] - converter_of_backend_x = QobjToInstructionConverter( - pulse_library_from_backend_x, buffer=0 - ) - - pulse_library_from_backend_y = [ - PulseLibraryItem(name="pulse123", samples=[0.2, 0.2, 0.2]) - ] - converter_of_backend_y = QobjToInstructionConverter( - pulse_library_from_backend_y, buffer=0 - ) - - qobj1 = PulseQobjInstruction(name="pulse123", qubits=[0], t0=0, ch="d0") - qobj2 = PulseQobjInstruction(name="pulse456", qubits=[0], t0=0, ch="d0") - - sched_out_x = converter_of_backend_x(qobj1) - sched_out_y = converter_of_backend_y(qobj1) - - # pulse123 have different definition on backend-x and backend-y - self.assertNotEqual(sched_out_x, sched_out_y) - - with self.assertRaises(QiskitError): - with self.assertWarns(DeprecationWarning): - # This should not exist in backend-y command namespace. - converter_of_backend_y(qobj2) - - -class TestLoConverter(QiskitTestCase): - """LO converter tests.""" - - def test_qubit_los(self): - """Test qubit channel configuration.""" - with self.assertWarns(DeprecationWarning): - user_lo_config = LoConfig({DriveChannel(0): 1.3e9}) - converter = LoConfigConverter( - PulseQobjExperimentConfig, [1.2e9], [3.4e9], [(0.0, 5e9)], [(0.0, 5e9)] - ) - valid_qobj = PulseQobjExperimentConfig(qubit_lo_freq=[1.3]) - - with self.assertWarns(DeprecationWarning): - self.assertEqual(converter(user_lo_config), valid_qobj) - - def test_meas_los(self): - """Test measurement channel configuration.""" - with self.assertWarns(DeprecationWarning): - user_lo_config = LoConfig({MeasureChannel(0): 3.5e9}) - converter = LoConfigConverter( - PulseQobjExperimentConfig, [1.2e9], [3.4e9], [(0.0, 5e9)], [(0.0, 5e9)] - ) - - valid_qobj = PulseQobjExperimentConfig(meas_lo_freq=[3.5]) - - self.assertEqual(converter(user_lo_config), valid_qobj) diff --git a/test/python/qobj/test_qobj.py b/test/python/qobj/test_qobj.py deleted file mode 100644 index 21950b0a1486..000000000000 --- a/test/python/qobj/test_qobj.py +++ /dev/null @@ -1,435 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2018. -# -# 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. - - -"""Qobj tests.""" - -import copy - -from qiskit.qobj import ( - QasmQobj, - PulseQobj, - QobjHeader, - PulseQobjInstruction, - PulseQobjExperiment, - PulseQobjConfig, - QobjMeasurementOption, - PulseLibraryItem, - QasmQobjInstruction, - QasmQobjExperiment, - QasmQobjConfig, - QasmExperimentCalibrations, - GateCalibration, -) - -from test import QiskitTestCase # pylint: disable=wrong-import-order - - -class TestQASMQobj(QiskitTestCase): - """Tests for QasmQobj.""" - - def setUp(self): - super().setUp() - with self.assertWarns(DeprecationWarning): - self.valid_qobj = QasmQobj( - qobj_id="12345", - header=QobjHeader(), - config=QasmQobjConfig(shots=1024, memory_slots=2), - experiments=[ - QasmQobjExperiment( - instructions=[ - QasmQobjInstruction(name="u1", qubits=[1], params=[0.4]), - QasmQobjInstruction(name="u2", qubits=[1], params=[0.4, 0.2]), - ] - ) - ], - ) - - self.valid_dict = { - "qobj_id": "12345", - "type": "QASM", - "schema_version": "1.2.0", - "header": {}, - "config": {"memory_slots": 2, "shots": 1024}, - "experiments": [ - { - "instructions": [ - {"name": "u1", "params": [0.4], "qubits": [1]}, - {"name": "u2", "params": [0.4, 0.2], "qubits": [1]}, - ] - } - ], - } - with self.assertWarns(DeprecationWarning): - self.bad_qobj = copy.deepcopy(self.valid_qobj) - self.bad_qobj.experiments = [] - - def test_from_dict_per_class(self): - """Test Qobj and its subclass representations given a dictionary.""" - with self.assertWarns(DeprecationWarning): - test_parameters = { - QasmQobj: (self.valid_qobj, self.valid_dict), - QasmQobjConfig: ( - QasmQobjConfig(shots=1, memory_slots=2), - {"shots": 1, "memory_slots": 2}, - ), - QasmQobjExperiment: ( - QasmQobjExperiment( - instructions=[QasmQobjInstruction(name="u1", qubits=[1], params=[0.4])] - ), - {"instructions": [{"name": "u1", "qubits": [1], "params": [0.4]}]}, - ), - QasmQobjInstruction: ( - QasmQobjInstruction(name="u1", qubits=[1], params=[0.4]), - {"name": "u1", "qubits": [1], "params": [0.4]}, - ), - } - - for qobj_class, (qobj_item, expected_dict) in test_parameters.items(): - with self.subTest(msg=str(qobj_class)): - with self.assertWarns(DeprecationWarning): - qobj = qobj_class.from_dict(expected_dict) - self.assertEqual(qobj_item, qobj) - - def test_snapshot_instruction_to_dict(self): - """Test snapshot instruction to dict.""" - with self.assertWarns(DeprecationWarning): - valid_qobj = QasmQobj( - qobj_id="12345", - header=QobjHeader(), - config=QasmQobjConfig(shots=1024, memory_slots=2), - experiments=[ - QasmQobjExperiment( - instructions=[ - QasmQobjInstruction(name="u1", qubits=[1], params=[0.4]), - QasmQobjInstruction(name="u2", qubits=[1], params=[0.4, 0.2]), - QasmQobjInstruction( - name="snapshot", - qubits=[1], - snapshot_type="statevector", - label="my_snap", - ), - ] - ) - ], - ) - res = valid_qobj.to_dict() - expected_dict = { - "qobj_id": "12345", - "type": "QASM", - "schema_version": "1.3.0", - "header": {}, - "config": {"memory_slots": 2, "shots": 1024}, - "experiments": [ - { - "instructions": [ - {"name": "u1", "params": [0.4], "qubits": [1]}, - {"name": "u2", "params": [0.4, 0.2], "qubits": [1]}, - { - "name": "snapshot", - "qubits": [1], - "snapshot_type": "statevector", - "label": "my_snap", - }, - ], - "config": {}, - "header": {}, - } - ], - } - self.assertEqual(expected_dict, res) - - def test_snapshot_instruction_from_dict(self): - """Test snapshot instruction from dict.""" - with self.assertWarns(DeprecationWarning): - expected_qobj = QasmQobj( - qobj_id="12345", - header=QobjHeader(), - config=QasmQobjConfig(shots=1024, memory_slots=2), - experiments=[ - QasmQobjExperiment( - instructions=[ - QasmQobjInstruction(name="u1", qubits=[1], params=[0.4]), - QasmQobjInstruction(name="u2", qubits=[1], params=[0.4, 0.2]), - QasmQobjInstruction( - name="snapshot", - qubits=[1], - snapshot_type="statevector", - label="my_snap", - ), - ] - ) - ], - ) - qobj_dict = { - "qobj_id": "12345", - "type": "QASM", - "schema_version": "1.2.0", - "header": {}, - "config": {"memory_slots": 2, "shots": 1024}, - "experiments": [ - { - "instructions": [ - {"name": "u1", "params": [0.4], "qubits": [1]}, - {"name": "u2", "params": [0.4, 0.2], "qubits": [1]}, - { - "name": "snapshot", - "qubits": [1], - "snapshot_type": "statevector", - "label": "my_snap", - }, - ] - } - ], - } - with self.assertWarns(DeprecationWarning): - qobj = QasmQobj.from_dict(qobj_dict) - self.assertEqual(expected_qobj, qobj) - - def test_gate_calibrations_to_dict(self): - """Test gate calibrations to dict.""" - with self.assertWarns(DeprecationWarning): - pulse_library = [PulseLibraryItem(name="test", samples=[1j, 1j])] - with self.assertWarns(DeprecationWarning): - valid_qobj = QasmQobj( - qobj_id="12345", - header=QobjHeader(), - config=QasmQobjConfig(shots=1024, memory_slots=2, pulse_library=pulse_library), - experiments=[ - QasmQobjExperiment( - instructions=[QasmQobjInstruction(name="u1", qubits=[1], params=[0.4])], - config=QasmQobjConfig( - calibrations=QasmExperimentCalibrations( - gates=[ - GateCalibration( - name="u1", qubits=[1], params=[0.4], instructions=[] - ) - ] - ) - ), - ) - ], - ) - res = valid_qobj.to_dict() - expected_dict = { - "qobj_id": "12345", - "type": "QASM", - "schema_version": "1.3.0", - "header": {}, - "config": { - "memory_slots": 2, - "shots": 1024, - "pulse_library": [{"name": "test", "samples": [1j, 1j]}], - }, - "experiments": [ - { - "instructions": [{"name": "u1", "params": [0.4], "qubits": [1]}], - "config": { - "calibrations": { - "gates": [ - {"name": "u1", "qubits": [1], "params": [0.4], "instructions": []} - ] - } - }, - "header": {}, - } - ], - } - self.assertEqual(expected_dict, res) - - -class TestPulseQobj(QiskitTestCase): - """Tests for PulseQobj.""" - - def setUp(self): - super().setUp() - with self.assertWarns(DeprecationWarning): - self.valid_qobj = PulseQobj( - qobj_id="12345", - header=QobjHeader(), - config=PulseQobjConfig( - shots=1024, - memory_slots=2, - meas_level=1, - memory_slot_size=8192, - meas_return="avg", - pulse_library=[ - PulseLibraryItem( - name="pulse0", samples=[0.0 + 0.0j, 0.5 + 0.0j, 0.0 + 0.0j] - ) - ], - qubit_lo_freq=[4.9], - meas_lo_freq=[6.9], - rep_time=1000, - ), - experiments=[ - PulseQobjExperiment( - instructions=[ - PulseQobjInstruction(name="pulse0", t0=0, ch="d0"), - PulseQobjInstruction(name="fc", t0=5, ch="d0", phase=1.57), - PulseQobjInstruction(name="fc", t0=5, ch="d0", phase=0.0), - PulseQobjInstruction(name="fc", t0=5, ch="d0", phase="P1"), - PulseQobjInstruction(name="setp", t0=10, ch="d0", phase=3.14), - PulseQobjInstruction(name="setf", t0=10, ch="d0", frequency=8.0), - PulseQobjInstruction(name="shiftf", t0=10, ch="d0", frequency=4.0), - PulseQobjInstruction( - name="acquire", - t0=15, - duration=5, - qubits=[0], - memory_slot=[0], - kernels=[ - QobjMeasurementOption( - name="boxcar", params={"start_window": 0, "stop_window": 5} - ) - ], - ), - ] - ) - ], - ) - self.valid_dict = { - "qobj_id": "12345", - "type": "PULSE", - "schema_version": "1.2.0", - "header": {}, - "config": { - "memory_slots": 2, - "shots": 1024, - "meas_level": 1, - "memory_slot_size": 8192, - "meas_return": "avg", - "pulse_library": [{"name": "pulse0", "samples": [0, 0.5, 0]}], - "qubit_lo_freq": [4.9], - "meas_lo_freq": [6.9], - "rep_time": 1000, - }, - "experiments": [ - { - "instructions": [ - {"name": "pulse0", "t0": 0, "ch": "d0"}, - {"name": "fc", "t0": 5, "ch": "d0", "phase": 1.57}, - {"name": "fc", "t0": 5, "ch": "d0", "phase": 0}, - {"name": "fc", "t0": 5, "ch": "d0", "phase": "P1"}, - {"name": "setp", "t0": 10, "ch": "d0", "phase": 3.14}, - {"name": "setf", "t0": 10, "ch": "d0", "frequency": 8.0}, - {"name": "shiftf", "t0": 10, "ch": "d0", "frequency": 4.0}, - { - "name": "acquire", - "t0": 15, - "duration": 5, - "qubits": [0], - "memory_slot": [0], - "kernels": [ - {"name": "boxcar", "params": {"start_window": 0, "stop_window": 5}} - ], - }, - ] - } - ], - } - - def test_from_dict_per_class(self): - """Test converting to Qobj and its subclass representations given a dictionary.""" - with self.assertWarns(DeprecationWarning): - test_parameters = { - PulseQobj: (self.valid_qobj, self.valid_dict), - PulseQobjConfig: ( - PulseQobjConfig( - meas_level=1, - memory_slot_size=8192, - meas_return="avg", - pulse_library=[PulseLibraryItem(name="pulse0", samples=[0.1 + 0.0j])], - qubit_lo_freq=[4.9], - meas_lo_freq=[6.9], - rep_time=1000, - ), - { - "meas_level": 1, - "memory_slot_size": 8192, - "meas_return": "avg", - "pulse_library": [{"name": "pulse0", "samples": [0.1 + 0j]}], - "qubit_lo_freq": [4.9], - "meas_lo_freq": [6.9], - "rep_time": 1000, - }, - ), - PulseLibraryItem: ( - PulseLibraryItem(name="pulse0", samples=[0.1 + 0.0j]), - {"name": "pulse0", "samples": [0.1 + 0j]}, - ), - PulseQobjExperiment: ( - PulseQobjExperiment( - instructions=[PulseQobjInstruction(name="pulse0", t0=0, ch="d0")] - ), - {"instructions": [{"name": "pulse0", "t0": 0, "ch": "d0"}]}, - ), - PulseQobjInstruction: ( - PulseQobjInstruction(name="pulse0", t0=0, ch="d0"), - {"name": "pulse0", "t0": 0, "ch": "d0"}, - ), - } - - for qobj_class, (qobj_item, expected_dict) in test_parameters.items(): - with self.subTest(msg=str(qobj_class)): - with self.assertWarns(DeprecationWarning): - qobj = qobj_class.from_dict(expected_dict) - self.assertEqual(qobj_item, qobj) - - def test_to_dict_per_class(self): - """Test converting from Qobj and its subclass representations given a dictionary.""" - with self.assertWarns(DeprecationWarning): - test_parameters = { - PulseQobj: (self.valid_qobj, self.valid_dict), - PulseQobjConfig: ( - PulseQobjConfig( - meas_level=1, - memory_slot_size=8192, - meas_return="avg", - pulse_library=[PulseLibraryItem(name="pulse0", samples=[0.1 + 0.0j])], - qubit_lo_freq=[4.9], - meas_lo_freq=[6.9], - rep_time=1000, - ), - { - "meas_level": 1, - "memory_slot_size": 8192, - "meas_return": "avg", - "pulse_library": [{"name": "pulse0", "samples": [0.1 + 0j]}], - "qubit_lo_freq": [4.9], - "meas_lo_freq": [6.9], - "rep_time": 1000, - }, - ), - PulseLibraryItem: ( - PulseLibraryItem(name="pulse0", samples=[0.1 + 0.0j]), - {"name": "pulse0", "samples": [0.1 + 0j]}, - ), - PulseQobjExperiment: ( - PulseQobjExperiment( - instructions=[PulseQobjInstruction(name="pulse0", t0=0, ch="d0")] - ), - {"instructions": [{"name": "pulse0", "t0": 0, "ch": "d0"}]}, - ), - PulseQobjInstruction: ( - PulseQobjInstruction(name="pulse0", t0=0, ch="d0"), - {"name": "pulse0", "t0": 0, "ch": "d0"}, - ), - } - - for qobj_class, (qobj_item, expected_dict) in test_parameters.items(): - with self.subTest(msg=str(qobj_class)): - self.assertEqual(qobj_item.to_dict(), expected_dict) - - -def _nop(): - pass diff --git a/test/python/result/test_result.py b/test/python/result/test_result.py index 89539487158c..ca65fda7e44b 100644 --- a/test/python/result/test_result.py +++ b/test/python/result/test_result.py @@ -18,7 +18,6 @@ from qiskit.result import marginal_counts from qiskit.result import marginal_distribution from qiskit.result import Result -from qiskit.qobj import QobjExperimentHeader from qiskit.exceptions import QiskitError from test import QiskitTestCase # pylint: disable=wrong-import-order @@ -30,7 +29,6 @@ def setUp(self): self.base_result_args = { "backend_name": "test_backend", "backend_version": "1.0.0", - "qobj_id": "id-123", "job_id": "job-123", "success": True, } @@ -42,8 +40,7 @@ def generate_qiskit_result(self): memory = [hex(ii) for ii in range(8)] counts = {m: 1 for m in memory} data_1 = models.ExperimentResultData(counts=counts, memory=memory) - with self.assertWarns(DeprecationWarning): - exp_result_header_1 = QobjExperimentHeader(creg_sizes=[["c0", 4]], memory_slots=4) + exp_result_header_1 = {"creg_sizes": [["c0", 4]], "memory_slots": 4} exp_result_1 = models.ExperimentResult( shots=8, success=True, data=data_1, header=exp_result_header_1 ) @@ -68,10 +65,7 @@ def test_counts_header(self): raw_counts = {"0x0": 4, "0x2": 10} processed_counts = {"0 0 00": 4, "0 0 10": 10} data = models.ExperimentResultData(counts=raw_counts) - with self.assertWarns(DeprecationWarning): - exp_result_header = QobjExperimentHeader( - creg_sizes=[["c0", 2], ["c0", 1], ["c1", 1]], memory_slots=4 - ) + exp_result_header = {"creg_sizes": [["c0", 2], ["c0", 1], ["c1", 1]], "memory_slots": 4} exp_result = models.ExperimentResult( shots=14, success=True, meas_level=2, data=data, header=exp_result_header ) @@ -84,10 +78,11 @@ def test_counts_by_name(self): raw_counts = {"0x0": 4, "0x2": 10} processed_counts = {"0 0 00": 4, "0 0 10": 10} data = models.ExperimentResultData(counts=raw_counts) - with self.assertWarns(DeprecationWarning): - exp_result_header = QobjExperimentHeader( - creg_sizes=[["c0", 2], ["c0", 1], ["c1", 1]], memory_slots=4, name="a_name" - ) + exp_result_header = { + "creg_sizes": [["c0", 2], ["c0", 1], ["c1", 1]], + "memory_slots": 4, + "name": "a_name", + } exp_result = models.ExperimentResult( shots=14, success=True, meas_level=2, data=data, header=exp_result_header ) @@ -98,8 +93,7 @@ def test_counts_by_name(self): def test_counts_duplicate_name(self): """Test results containing multiple entries of a single name will warn.""" data = models.ExperimentResultData(counts={}) - with self.assertWarns(DeprecationWarning): - exp_result_header = QobjExperimentHeader(name="foo") + exp_result_header = {"name": "foo"} exp_result = models.ExperimentResult( shots=14, success=True, data=data, header=exp_result_header ) @@ -112,21 +106,17 @@ def test_result_repr(self): """Test that repr is constructed correctly for a results object.""" raw_counts = {"0x0": 4, "0x2": 10} data = models.ExperimentResultData(counts=raw_counts) - with self.assertWarns(DeprecationWarning): - exp_result_header = QobjExperimentHeader( - creg_sizes=[["c0", 2], ["c0", 1], ["c1", 1]], memory_slots=4 - ) + exp_result_header = {"creg_sizes": [["c0", 2], ["c0", 1], ["c1", 1]], "memory_slots": 4} exp_result = models.ExperimentResult( shots=14, success=True, meas_level=2, data=data, header=exp_result_header ) result = Result(results=[exp_result], **self.base_result_args) expected = ( "Result(backend_name='test_backend', backend_version='1.0.0', " - "qobj_id='id-123', job_id='job-123', success=True, " - "results=[ExperimentResult(shots=14, success=True, " - "meas_level=2, data=ExperimentResultData(counts={'0x0': 4," - " '0x2': 10}), header=QobjExperimentHeader(creg_sizes=" - "[['c0', 2], ['c0', 1], ['c1', 1]], memory_slots=4))], date=None, " + "job_id='job-123', success=True, results=[ExperimentResult(" + "shots=14, success=True, meas_level=2, data=ExperimentResultData(" + "counts={'0x0': 4, '0x2': 10}), header={'creg_sizes': [['c0', 2], " + "['c0', 1], ['c1', 1]], 'memory_slots': 4})], date=None, " "status=None, header=None)" ) self.assertEqual(expected, repr(result)) @@ -142,8 +132,7 @@ def test_multiple_circuits_counts(self): raw_counts_1 = {"0x0": 5, "0x3": 12, "0x5": 9, "0xD": 6, "0xE": 2} processed_counts_1 = {"0000": 5, "0011": 12, "0101": 9, "1101": 6, "1110": 2} data_1 = models.ExperimentResultData(counts=raw_counts_1) - with self.assertWarns(DeprecationWarning): - exp_result_header_1 = QobjExperimentHeader(creg_sizes=[["c0", 4]], memory_slots=4) + exp_result_header_1 = {"creg_sizes": [["c0", 4]], "memory_slots": 4} exp_result_1 = models.ExperimentResult( shots=14, success=True, meas_level=2, data=data_1, header=exp_result_header_1 ) @@ -151,8 +140,7 @@ def test_multiple_circuits_counts(self): raw_counts_2 = {"0x1": 0, "0x4": 3, "0x6": 6, "0xA": 1, "0xB": 2} processed_counts_2 = {"0001": 0, "0100": 3, "0110": 6, "1010": 1, "1011": 2} data_2 = models.ExperimentResultData(counts=raw_counts_2) - with self.assertWarns(DeprecationWarning): - exp_result_header_2 = QobjExperimentHeader(creg_sizes=[["c0", 4]], memory_slots=4) + exp_result_header_2 = {"creg_sizes": [["c0", 4]], "memory_slots": 4} exp_result_2 = models.ExperimentResult( shots=14, success=True, meas_level=2, data=data_2, header=exp_result_header_2 ) @@ -160,8 +148,7 @@ def test_multiple_circuits_counts(self): raw_counts_3 = {"0xC": 27, "0xF": 20} processed_counts_3 = {"1100": 27, "1111": 20} data_3 = models.ExperimentResultData(counts=raw_counts_3) - with self.assertWarns(DeprecationWarning): - exp_result_header_3 = QobjExperimentHeader(creg_sizes=[["c0", 4]], memory_slots=4) + exp_result_header_3 = {"creg_sizes": [["c0", 4]], "memory_slots": 4} exp_result_3 = models.ExperimentResult( shots=14, success=True, meas_level=2, data=data_3, header=exp_result_header_3 ) @@ -180,8 +167,7 @@ def test_marginal_counts(self): """Test that counts are marginalized correctly.""" raw_counts = {"0x0": 4, "0x1": 7, "0x2": 10, "0x6": 5, "0x9": 11, "0xD": 9, "0xE": 8} data = models.ExperimentResultData(counts=raw_counts) - with self.assertWarns(DeprecationWarning): - exp_result_header = QobjExperimentHeader(creg_sizes=[["c0", 4]], memory_slots=4) + exp_result_header = {"creg_sizes": [["c0", 4]], "memory_slots": 4} exp_result = models.ExperimentResult( shots=54, success=True, data=data, header=exp_result_header ) @@ -195,8 +181,7 @@ def test_marginal_distribution(self): """Test that counts are marginalized correctly.""" raw_counts = {"0x0": 4, "0x1": 7, "0x2": 10, "0x6": 5, "0x9": 11, "0xD": 9, "0xE": 8} data = models.ExperimentResultData(counts=raw_counts) - with self.assertWarns(DeprecationWarning): - exp_result_header = QobjExperimentHeader(creg_sizes=[["c0", 4]], memory_slots=4) + exp_result_header = {"creg_sizes": [["c0", 4]], "memory_slots": 4} exp_result = models.ExperimentResult( shots=54, success=True, data=data, header=exp_result_header ) @@ -210,10 +195,7 @@ def test_marginal_distribution(self): self.assertEqual(marginal_distribution(result.get_counts(), [1, 0]), expected_reverse) # test with register spacing, bitstrings are in form of "00 00" for register split data = models.ExperimentResultData(counts=raw_counts) - with self.assertWarns(DeprecationWarning): - exp_result_header = QobjExperimentHeader( - creg_sizes=[["c0", 2], ["c1", 2]], memory_slots=4 - ) + exp_result_header = {"creg_sizes": [["c0", 2], ["c1", 2]], "memory_slots": 4} exp_result = models.ExperimentResult( shots=54, success=True, data=data, header=exp_result_header ) @@ -227,16 +209,14 @@ def test_marginal_counts_result(self): """Test that a Result object containing counts marginalizes correctly.""" raw_counts_1 = {"0x0": 4, "0x1": 7, "0x2": 10, "0x6": 5, "0x9": 11, "0xD": 9, "0xE": 8} data_1 = models.ExperimentResultData(counts=raw_counts_1) - with self.assertWarns(DeprecationWarning): - exp_result_header_1 = QobjExperimentHeader(creg_sizes=[["c0", 4]], memory_slots=4) + exp_result_header_1 = {"creg_sizes": [["c0", 4]], "memory_slots": 4} exp_result_1 = models.ExperimentResult( shots=54, success=True, data=data_1, header=exp_result_header_1 ) raw_counts_2 = {"0x2": 5, "0x3": 8} data_2 = models.ExperimentResultData(counts=raw_counts_2) - with self.assertWarns(DeprecationWarning): - exp_result_header_2 = QobjExperimentHeader(creg_sizes=[["c0", 2]], memory_slots=2) + exp_result_header_2 = {"creg_sizes": [["c0", 2]], "memory_slots": 2} exp_result_2 = models.ExperimentResult( shots=13, success=True, data=data_2, header=exp_result_header_2 ) @@ -255,20 +235,14 @@ def test_marginal_counts_result(self): "1110": 8, } - with self.assertWarns(DeprecationWarning): - self.assertEqual( - marginal_counts(result, [0, 1]).get_counts(0), expected_marginal_counts_1 - ) - self.assertEqual(marginal_counts(result, [0]).get_counts(1), expected_marginal_counts_2) - self.assertEqual( - marginal_counts(result, None).get_counts(0), expected_marginal_counts_none - ) + self.assertEqual(marginal_counts(result, [0, 1]).get_counts(0), expected_marginal_counts_1) + self.assertEqual(marginal_counts(result, [0]).get_counts(1), expected_marginal_counts_2) + self.assertEqual(marginal_counts(result, None).get_counts(0), expected_marginal_counts_none) def test_marginal_counts_result_memory(self): """Test that a Result object containing memory marginalizes correctly.""" result = self.generate_qiskit_result() - with self.assertWarns(DeprecationWarning): - marginal_result = marginal_counts(result, indices=[0]) + marginal_result = marginal_counts(result, indices=[0]) marginal_memory = marginal_result.results[0].data.memory self.assertEqual(marginal_memory, [hex(ii % 2) for ii in range(8)]) @@ -276,8 +250,7 @@ def test_marginal_counts_result_memory_nonzero_indices(self): """Test that a Result object containing memory marginalizes correctly.""" result = self.generate_qiskit_result() index = 2 - with self.assertWarns(DeprecationWarning): - marginal_result = marginal_counts(result, indices=[index]) + marginal_result = marginal_counts(result, indices=[index]) marginal_memory = marginal_result.results[0].data.memory mask = 1 << index expected = [hex((ii & mask) >> index) for ii in range(8)] @@ -288,8 +261,7 @@ def test_marginal_counts_result_memory_indices_None(self): result = self.generate_qiskit_result() memory = "should not be touched" result.results[0].data.memory = memory - with self.assertWarns(DeprecationWarning): - marginal_result = marginal_counts(result, indices=None) + marginal_result = marginal_counts(result, indices=None) marginal_memory = marginal_result.results[0].data.memory self.assertEqual(marginal_memory, memory) @@ -320,20 +292,17 @@ def test_marginal_counts_result_marginalize_memory(self): self.assertTrue(hasattr(marginal_result.results[0].data, "memory")) result = self.generate_qiskit_result() - with self.assertWarns(DeprecationWarning): - marginal_result = marginal_counts( - result, indices=[0], inplace=False, marginalize_memory=False - ) + marginal_result = marginal_counts( + result, indices=[0], inplace=False, marginalize_memory=False + ) self.assertFalse(hasattr(marginal_result.results[0].data, "memory")) - with self.assertWarns(DeprecationWarning): - marginal_result = marginal_counts( - result, indices=[0], inplace=False, marginalize_memory=None - ) + marginal_result = marginal_counts( + result, indices=[0], inplace=False, marginalize_memory=None + ) self.assertTrue(hasattr(marginal_result.results[0].data, "memory")) - with self.assertWarns(DeprecationWarning): - marginal_result = marginal_counts( - result, indices=[0], inplace=False, marginalize_memory=True - ) + marginal_result = marginal_counts( + result, indices=[0], inplace=False, marginalize_memory=True + ) self.assertTrue(hasattr(marginal_result.results[0].data, "memory")) def test_marginal_counts_result_inplace(self): @@ -349,10 +318,7 @@ def test_marginal_counts_result_creg_sizes(self): """Test that marginal_counts with Result input properly changes creg_sizes.""" raw_counts = {"0x0": 4, "0x1": 7, "0x2": 10, "0x6": 5, "0x9": 11, "0xD": 9, "0xE": 8} data = models.ExperimentResultData(counts=raw_counts) - with self.assertWarns(DeprecationWarning): - exp_result_header = QobjExperimentHeader( - creg_sizes=[["c0", 1], ["c1", 3]], memory_slots=4 - ) + exp_result_header = {"creg_sizes": [["c0", 1], ["c1", 3]], "memory_slots": 4} exp_result = models.ExperimentResult( shots=54, success=True, data=data, header=exp_result_header ) @@ -362,11 +328,12 @@ def test_marginal_counts_result_creg_sizes(self): expected_marginal_counts = {"0 0": 14, "0 1": 18, "1 0": 13, "1 1": 9} expected_creg_sizes = [["c0", 1], ["c1", 1]] expected_memory_slots = 2 - with self.assertWarns(DeprecationWarning): - marginal_counts_result = marginal_counts(result, [0, 2]) - self.assertEqual(marginal_counts_result.results[0].header.creg_sizes, expected_creg_sizes) + marginal_counts_result = marginal_counts(result, [0, 2]) + self.assertEqual( + marginal_counts_result.results[0].header["creg_sizes"], expected_creg_sizes + ) self.assertEqual( - marginal_counts_result.results[0].header.memory_slots, expected_memory_slots + marginal_counts_result.results[0].header["memory_slots"], expected_memory_slots ) self.assertEqual(marginal_counts_result.get_counts(0), expected_marginal_counts) @@ -374,10 +341,7 @@ def test_marginal_counts_result_format(self): """Test that marginal_counts with format_marginal true properly formats output.""" raw_counts_1 = {"0x0": 4, "0x1": 7, "0x2": 10, "0x6": 5, "0x9": 11, "0xD": 9, "0x12": 8} data_1 = models.ExperimentResultData(counts=raw_counts_1) - with self.assertWarns(DeprecationWarning): - exp_result_header_1 = QobjExperimentHeader( - creg_sizes=[["c0", 2], ["c1", 3]], memory_slots=5 - ) + exp_result_header_1 = {"creg_sizes": [["c0", 2], ["c1", 3]], "memory_slots": 5} exp_result_1 = models.ExperimentResult( shots=54, success=True, data=data_1, header=exp_result_header_1 ) @@ -400,16 +364,14 @@ def test_marginal_counts_inplace_true(self): """Test marginal_counts(Result, inplace = True)""" raw_counts_1 = {"0x0": 4, "0x1": 7, "0x2": 10, "0x6": 5, "0x9": 11, "0xD": 9, "0xE": 8} data_1 = models.ExperimentResultData(counts=raw_counts_1) - with self.assertWarns(DeprecationWarning): - exp_result_header_1 = QobjExperimentHeader(creg_sizes=[["c0", 4]], memory_slots=4) + exp_result_header_1 = {"creg_sizes": [["c0", 4]], "memory_slots": 4} exp_result_1 = models.ExperimentResult( shots=54, success=True, data=data_1, header=exp_result_header_1 ) raw_counts_2 = {"0x2": 5, "0x3": 8} data_2 = models.ExperimentResultData(counts=raw_counts_2) - with self.assertWarns(DeprecationWarning): - exp_result_header_2 = QobjExperimentHeader(creg_sizes=[["c0", 2]], memory_slots=2) + exp_result_header_2 = {"creg_sizes": [["c0", 2]], "memory_slots": 2} exp_result_2 = models.ExperimentResult( shots=13, success=True, data=data_2, header=exp_result_header_2 ) @@ -427,16 +389,14 @@ def test_marginal_counts_inplace_false(self): """Test marginal_counts(Result, inplace=False)""" raw_counts_1 = {"0x0": 4, "0x1": 7, "0x2": 10, "0x6": 5, "0x9": 11, "0xD": 9, "0xE": 8} data_1 = models.ExperimentResultData(counts=raw_counts_1) - with self.assertWarns(DeprecationWarning): - exp_result_header_1 = QobjExperimentHeader(creg_sizes=[["c0", 4]], memory_slots=4) + exp_result_header_1 = {"creg_sizes": [["c0", 4]], "memory_slots": 4} exp_result_1 = models.ExperimentResult( shots=54, success=True, data=data_1, header=exp_result_header_1 ) raw_counts_2 = {"0x2": 5, "0x3": 8} data_2 = models.ExperimentResultData(counts=raw_counts_2) - with self.assertWarns(DeprecationWarning): - exp_result_header_2 = QobjExperimentHeader(creg_sizes=[["c0", 2]], memory_slots=2) + exp_result_header_2 = {"creg_sizes": [["c0", 2]], "memory_slots": 2} exp_result_2 = models.ExperimentResult( shots=13, success=True, data=data_2, header=exp_result_header_2 ) @@ -445,10 +405,9 @@ def test_marginal_counts_inplace_false(self): expected_marginal_counts = {"0": 27, "1": 27} - with self.assertWarns(DeprecationWarning): - self.assertEqual( - marginal_counts(result, [0], inplace=False).get_counts(0), expected_marginal_counts - ) + self.assertEqual( + marginal_counts(result, [0], inplace=False).get_counts(0), expected_marginal_counts + ) self.assertNotEqual(result.get_counts(0), expected_marginal_counts) def test_marginal_counts_with_dict(self): @@ -501,10 +460,7 @@ def test_memory_counts_header(self): "0 0 10", ] data = models.ExperimentResultData(memory=raw_memory) - with self.assertWarns(DeprecationWarning): - exp_result_header = QobjExperimentHeader( - creg_sizes=[["c0", 2], ["c0", 1], ["c1", 1]], memory_slots=4 - ) + exp_result_header = {"creg_sizes": [["c0", 2], ["c0", 1], ["c1", 1]], "memory_slots": 4} exp_result = models.ExperimentResult( shots=14, success=True, meas_level=2, memory=True, data=data, header=exp_result_header ) @@ -740,10 +696,11 @@ def test_counts_name_out(self): """Test that fails when get_count is called with a nonexistent name.""" raw_counts = {"0x0": 4, "0x2": 10} data = models.ExperimentResultData(counts=raw_counts) - with self.assertWarns(DeprecationWarning): - exp_result_header = QobjExperimentHeader( - creg_sizes=[["c0", 2], ["c0", 1], ["c1", 1]], memory_slots=4, name="a_name" - ) + exp_result_header = { + "creg_sizes": [["c0", 2], ["c0", 1], ["c1", 1]], + "memory_slots": 4, + "name": "a_name", + } exp_result = models.ExperimentResult( shots=14, success=True, meas_level=2, data=data, header=exp_result_header ) @@ -774,15 +731,13 @@ def test_marginal_counts_no_cregs(self): """Test that marginal_counts without cregs See qiskit-terra/6430.""" raw_counts_1 = {"0x0": 4, "0x1": 7, "0x2": 10, "0x6": 5, "0x9": 11, "0xD": 9, "0x12": 8} data_1 = models.ExperimentResultData(counts=raw_counts_1) - with self.assertWarns(DeprecationWarning): - exp_result_header_1 = QobjExperimentHeader(memory_slots=5) + exp_result_header_1 = {"memory_slots": 5} exp_result_1 = models.ExperimentResult( shots=54, success=True, data=data_1, header=exp_result_header_1 ) result = Result(results=[exp_result_1], **self.base_result_args) - with self.assertWarns(DeprecationWarning): - _ = marginal_counts(result, indices=[0]) - marginal_counts_result = marginal_counts(result, indices=[0]) + _ = marginal_counts(result, indices=[0]) + marginal_counts_result = marginal_counts(result, indices=[0]) self.assertEqual(marginal_counts_result.get_counts(), {"0": 27, "1": 27}) From da93a94a3389cd17d835716e84089ea1630a5c99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elena=20Pe=C3=B1a=20Tapia?= Date: Mon, 17 Feb 2025 17:15:45 +0100 Subject: [PATCH 19/29] Fix lint --- test/python/compiler/test_transpiler.py | 1 - 1 file changed, 1 deletion(-) diff --git a/test/python/compiler/test_transpiler.py b/test/python/compiler/test_transpiler.py index cf0eb4c24a98..8b89fc27e9f2 100644 --- a/test/python/compiler/test_transpiler.py +++ b/test/python/compiler/test_transpiler.py @@ -89,7 +89,6 @@ from qiskit.transpiler.target import ( InstructionProperties, Target, - InstructionDurations, ) from test import QiskitTestCase, combine, slow_test # pylint: disable=wrong-import-order From c44bc0f8e9c04ee625cedcf1018e3c29df34143d Mon Sep 17 00:00:00 2001 From: Eli Arbel Date: Mon, 17 Feb 2025 18:25:38 +0200 Subject: [PATCH 20/29] Add recent changes from remove-pulse-qpy branch --- qiskit/qpy/binary_io/circuits.py | 2 +- test/qpy_compat/test_qpy.py | 30 +++++++++++++++++++++++------- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/qiskit/qpy/binary_io/circuits.py b/qiskit/qpy/binary_io/circuits.py index ee284233a41d..ed1b58d64db7 100644 --- a/qiskit/qpy/binary_io/circuits.py +++ b/qiskit/qpy/binary_io/circuits.py @@ -651,7 +651,7 @@ def _read_calibrations(file_obj, version, vectors, metadata_deserializer): if name: warnings.warn( category=exceptions.QPYLoadingDeprecatedFeatureWarning, - message="Support for loading dulse gates has been removed in Qiskit 2.0. " + message="Support for loading pulse gates has been removed in Qiskit 2.0. " f"If `{name}` is in the circuit, it will be left as a custom instruction" " without definition.", ) diff --git a/test/qpy_compat/test_qpy.py b/test/qpy_compat/test_qpy.py index 0ba8e22d7690..628eff9984b5 100755 --- a/test/qpy_compat/test_qpy.py +++ b/test/qpy_compat/test_qpy.py @@ -426,6 +426,7 @@ def generate_control_flow_switch_circuits(): def generate_schedule_blocks(): """Standard QPY testcase for schedule blocks.""" + # pylint: disable=no-name-in-module from qiskit.pulse import builder, channels, library current_version = current_version_str.split(".") @@ -493,6 +494,7 @@ def generate_schedule_blocks(): def generate_referenced_schedule(): """Test for QPY serialization of unassigned reference schedules.""" + # pylint: disable=no-name-in-module from qiskit.pulse import builder, channels, library schedule_blocks = [] @@ -518,6 +520,7 @@ def generate_referenced_schedule(): def generate_calibrated_circuits(): """Test for QPY serialization with calibrations.""" + # pylint: disable=no-name-in-module from qiskit.pulse import builder, Constant, DriveChannel circuits = [] @@ -588,6 +591,7 @@ def generate_open_controlled_gates(): def generate_acquire_instruction_with_kernel_and_discriminator(): """Test QPY serialization with Acquire instruction with kernel and discriminator.""" + # pylint: disable=no-name-in-module from qiskit.pulse import builder, AcquireChannel, MemorySlot, Discriminator, Kernel schedule_blocks = [] @@ -820,8 +824,13 @@ def generate_v12_expr(): return [index, shift] -def generate_circuits(version_parts): - """Generate reference circuits.""" +def generate_circuits(version_parts, load_context=False): + """Generate reference circuits. + + If load_context is True, avoid generating Pulse-based reference + circuits. For those circuits, load_qpy only checks that the cached + circuits can be loaded without erroring.""" + output_circuits = { "full.qpy": [generate_full_circuit()], "unitary.qpy": [generate_unitary_gate_circuit()], @@ -849,10 +858,16 @@ def generate_circuits(version_parts): if version_parts >= (0, 19, 2): output_circuits["control_flow.qpy"] = generate_control_flow_circuits() if version_parts >= (0, 21, 0) and version_parts < (2, 0): - output_circuits["schedule_blocks.qpy"] = generate_schedule_blocks() - output_circuits["pulse_gates.qpy"] = generate_calibrated_circuits() + output_circuits["schedule_blocks.qpy"] = ( + None if load_context else generate_schedule_blocks() + ) + output_circuits["pulse_gates.qpy"] = ( + None if load_context else generate_calibrated_circuits() + ) if version_parts >= (0, 24, 0) and version_parts < (2, 0): - output_circuits["referenced_schedule_blocks.qpy"] = generate_referenced_schedule() + output_circuits["referenced_schedule_blocks.qpy"] = ( + None if load_context else generate_referenced_schedule() + ) if version_parts >= (0, 24, 0): output_circuits["control_flow_switch.qpy"] = generate_control_flow_switch_circuits() if version_parts >= (0, 24, 1): @@ -862,7 +877,7 @@ def generate_circuits(version_parts): output_circuits["layout.qpy"] = generate_layout_circuits() if version_parts >= (0, 25, 0) and version_parts < (2, 0): output_circuits["acquire_inst_with_kernel_and_disc.qpy"] = ( - generate_acquire_instruction_with_kernel_and_discriminator() + None if load_context else generate_acquire_instruction_with_kernel_and_discriminator() ) output_circuits["control_flow_expr.qpy"] = generate_control_flow_expr() if version_parts >= (0, 45, 2): @@ -1007,10 +1022,11 @@ def _main(): version_match = re.search(VERSION_PATTERN, args.version, re.VERBOSE | re.IGNORECASE) version_parts = tuple(int(x) for x in version_match.group("release").split(".")) - qpy_files = generate_circuits(version_parts) if args.command == "generate": + qpy_files = generate_circuits(version_parts) generate_qpy(qpy_files) else: + qpy_files = generate_circuits(version_parts, load_context=True) load_qpy(qpy_files, version_parts) From f24d391fd246274acecf52a5a99748c0429270ca Mon Sep 17 00:00:00 2001 From: Eli Arbel Date: Tue, 18 Feb 2025 15:34:51 +0200 Subject: [PATCH 21/29] Remove pulse module files, visualization & testing --- .github/CODEOWNERS | 2 - .../src/basis/basis_translator/mod.rs | 1 + docs/apidoc/index.rst | 7 - docs/apidoc/pulse.rst | 6 - qiskit/compiler/transpiler.py | 9 - qiskit/providers/__init__.py | 3 +- qiskit/providers/backend.py | 93 +- .../fake_provider/generic_backend_v2.py | 8 +- qiskit/pulse/__init__.py | 158 -- qiskit/pulse/builder.py | 1983 ---------------- qiskit/pulse/calibration_entries.py | 283 --- qiskit/pulse/channels.py | 227 -- qiskit/pulse/configuration.py | 245 -- qiskit/pulse/exceptions.py | 45 - qiskit/pulse/filters.py | 309 --- qiskit/pulse/instruction_schedule_map.py | 421 ---- qiskit/pulse/instructions/__init__.py | 67 - qiskit/pulse/instructions/acquire.py | 150 -- qiskit/pulse/instructions/delay.py | 71 - qiskit/pulse/instructions/directives.py | 162 -- qiskit/pulse/instructions/frequency.py | 135 -- qiskit/pulse/instructions/instruction.py | 270 --- qiskit/pulse/instructions/phase.py | 152 -- qiskit/pulse/instructions/play.py | 99 - qiskit/pulse/instructions/reference.py | 100 - qiskit/pulse/instructions/snapshot.py | 82 - qiskit/pulse/library/__init__.py | 97 - qiskit/pulse/library/continuous.py | 430 ---- qiskit/pulse/library/pulse.py | 148 -- qiskit/pulse/library/samplers/__init__.py | 15 - qiskit/pulse/library/samplers/decorators.py | 295 --- qiskit/pulse/library/samplers/strategies.py | 71 - qiskit/pulse/library/symbolic_pulses.py | 1991 ----------------- qiskit/pulse/library/waveform.py | 136 -- qiskit/pulse/macros.py | 260 --- qiskit/pulse/parameter_manager.py | 445 ---- qiskit/pulse/parser.py | 314 --- qiskit/pulse/reference_manager.py | 58 - qiskit/pulse/schedule.py | 1910 ---------------- qiskit/pulse/transforms/__init__.py | 106 - qiskit/pulse/transforms/alignments.py | 408 ---- qiskit/pulse/transforms/base_transforms.py | 71 - qiskit/pulse/transforms/canonicalization.py | 504 ----- qiskit/pulse/transforms/dag.py | 128 -- qiskit/pulse/utils.py | 149 -- qiskit/result/result.py | 5 +- .../passes/optimization/normalize_rx_angle.py | 1 - .../optimization/optimize_1q_decomposition.py | 1 - .../passes/scheduling/alignments/__init__.py | 1 - .../scheduling/alignments/check_durations.py | 2 +- .../passes/scheduling/base_scheduler.py | 2 +- .../transpiler/preset_passmanagers/level3.py | 1 - qiskit/transpiler/target.py | 1 - qiskit/utils/deprecate_pulse.py | 119 - qiskit/visualization/__init__.py | 8 +- qiskit/visualization/pulse_v2/__init__.py | 21 - qiskit/visualization/pulse_v2/core.py | 901 -------- qiskit/visualization/pulse_v2/device_info.py | 137 -- qiskit/visualization/pulse_v2/drawings.py | 253 --- qiskit/visualization/pulse_v2/events.py | 260 --- .../pulse_v2/generators/__init__.py | 40 - .../pulse_v2/generators/barrier.py | 76 - .../pulse_v2/generators/chart.py | 208 -- .../pulse_v2/generators/frame.py | 436 ---- .../pulse_v2/generators/snapshot.py | 133 -- .../pulse_v2/generators/waveform.py | 645 ------ qiskit/visualization/pulse_v2/interface.py | 463 ---- qiskit/visualization/pulse_v2/layouts.py | 387 ---- .../pulse_v2/plotters/__init__.py | 17 - .../pulse_v2/plotters/base_plotter.py | 53 - .../pulse_v2/plotters/matplotlib.py | 201 -- qiskit/visualization/pulse_v2/stylesheet.py | 312 --- qiskit/visualization/pulse_v2/types.py | 242 -- qiskit_bot.yaml | 8 +- test/python/pulse/__init__.py | 15 - test/python/pulse/test_block.py | 930 -------- test/python/pulse/test_calibration_entries.py | 274 --- test/python/pulse/test_channels.py | 195 -- test/python/pulse/test_continuous_pulses.py | 307 --- .../pulse/test_experiment_configurations.py | 206 -- test/python/pulse/test_instructions.py | 336 --- test/python/pulse/test_parameter_manager.py | 716 ------ test/python/pulse/test_parser.py | 234 -- test/python/pulse/test_pulse_lib.py | 899 -------- test/python/pulse/test_reference.py | 641 ------ test/python/pulse/test_samplers.py | 96 - test/python/pulse/test_schedule.py | 469 ---- test/python/pulse/test_transforms.py | 714 ------ test/python/utils/test_parallel.py | 15 - .../python/visualization/pulse_v2/__init__.py | 13 - .../visualization/pulse_v2/test_core.py | 387 ---- .../visualization/pulse_v2/test_drawings.py | 210 -- .../visualization/pulse_v2/test_events.py | 165 -- .../visualization/pulse_v2/test_generators.py | 905 -------- .../visualization/pulse_v2/test_layouts.py | 258 --- 95 files changed, 15 insertions(+), 25528 deletions(-) delete mode 100644 docs/apidoc/pulse.rst delete mode 100644 qiskit/pulse/__init__.py delete mode 100644 qiskit/pulse/builder.py delete mode 100644 qiskit/pulse/calibration_entries.py delete mode 100644 qiskit/pulse/channels.py delete mode 100644 qiskit/pulse/configuration.py delete mode 100644 qiskit/pulse/exceptions.py delete mode 100644 qiskit/pulse/filters.py delete mode 100644 qiskit/pulse/instruction_schedule_map.py delete mode 100644 qiskit/pulse/instructions/__init__.py delete mode 100644 qiskit/pulse/instructions/acquire.py delete mode 100644 qiskit/pulse/instructions/delay.py delete mode 100644 qiskit/pulse/instructions/directives.py delete mode 100644 qiskit/pulse/instructions/frequency.py delete mode 100644 qiskit/pulse/instructions/instruction.py delete mode 100644 qiskit/pulse/instructions/phase.py delete mode 100644 qiskit/pulse/instructions/play.py delete mode 100644 qiskit/pulse/instructions/reference.py delete mode 100644 qiskit/pulse/instructions/snapshot.py delete mode 100644 qiskit/pulse/library/__init__.py delete mode 100644 qiskit/pulse/library/continuous.py delete mode 100644 qiskit/pulse/library/pulse.py delete mode 100644 qiskit/pulse/library/samplers/__init__.py delete mode 100644 qiskit/pulse/library/samplers/decorators.py delete mode 100644 qiskit/pulse/library/samplers/strategies.py delete mode 100644 qiskit/pulse/library/symbolic_pulses.py delete mode 100644 qiskit/pulse/library/waveform.py delete mode 100644 qiskit/pulse/macros.py delete mode 100644 qiskit/pulse/parameter_manager.py delete mode 100644 qiskit/pulse/parser.py delete mode 100644 qiskit/pulse/reference_manager.py delete mode 100644 qiskit/pulse/schedule.py delete mode 100644 qiskit/pulse/transforms/__init__.py delete mode 100644 qiskit/pulse/transforms/alignments.py delete mode 100644 qiskit/pulse/transforms/base_transforms.py delete mode 100644 qiskit/pulse/transforms/canonicalization.py delete mode 100644 qiskit/pulse/transforms/dag.py delete mode 100644 qiskit/pulse/utils.py delete mode 100644 qiskit/utils/deprecate_pulse.py delete mode 100644 qiskit/visualization/pulse_v2/__init__.py delete mode 100644 qiskit/visualization/pulse_v2/core.py delete mode 100644 qiskit/visualization/pulse_v2/device_info.py delete mode 100644 qiskit/visualization/pulse_v2/drawings.py delete mode 100644 qiskit/visualization/pulse_v2/events.py delete mode 100644 qiskit/visualization/pulse_v2/generators/__init__.py delete mode 100644 qiskit/visualization/pulse_v2/generators/barrier.py delete mode 100644 qiskit/visualization/pulse_v2/generators/chart.py delete mode 100644 qiskit/visualization/pulse_v2/generators/frame.py delete mode 100644 qiskit/visualization/pulse_v2/generators/snapshot.py delete mode 100644 qiskit/visualization/pulse_v2/generators/waveform.py delete mode 100644 qiskit/visualization/pulse_v2/interface.py delete mode 100644 qiskit/visualization/pulse_v2/layouts.py delete mode 100644 qiskit/visualization/pulse_v2/plotters/__init__.py delete mode 100644 qiskit/visualization/pulse_v2/plotters/base_plotter.py delete mode 100644 qiskit/visualization/pulse_v2/plotters/matplotlib.py delete mode 100644 qiskit/visualization/pulse_v2/stylesheet.py delete mode 100644 qiskit/visualization/pulse_v2/types.py delete mode 100644 test/python/pulse/__init__.py delete mode 100644 test/python/pulse/test_block.py delete mode 100644 test/python/pulse/test_calibration_entries.py delete mode 100644 test/python/pulse/test_channels.py delete mode 100644 test/python/pulse/test_continuous_pulses.py delete mode 100644 test/python/pulse/test_experiment_configurations.py delete mode 100644 test/python/pulse/test_instructions.py delete mode 100644 test/python/pulse/test_parameter_manager.py delete mode 100644 test/python/pulse/test_parser.py delete mode 100644 test/python/pulse/test_pulse_lib.py delete mode 100644 test/python/pulse/test_reference.py delete mode 100644 test/python/pulse/test_samplers.py delete mode 100644 test/python/pulse/test_schedule.py delete mode 100644 test/python/pulse/test_transforms.py delete mode 100644 test/python/visualization/pulse_v2/__init__.py delete mode 100644 test/python/visualization/pulse_v2/test_core.py delete mode 100644 test/python/visualization/pulse_v2/test_drawings.py delete mode 100644 test/python/visualization/pulse_v2/test_events.py delete mode 100644 test/python/visualization/pulse_v2/test_generators.py delete mode 100644 test/python/visualization/pulse_v2/test_layouts.py diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index c0868cbd5bde..28636f7c8ac3 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -24,8 +24,6 @@ # Qiskit folders (also their corresponding tests) providers/ @Qiskit/terra-core @jyu00 -pulse/ @Qiskit/terra-core @eggerdj @wshanks @nkanazawa1989 -scheduler/ @Qiskit/terra-core @eggerdj @wshanks @nkanazawa1989 visualization/ @Qiskit/terra-core @nonhermitian primitives/ @Qiskit/terra-core @Qiskit/qiskit-primitives # Override the release notes directories to have _no_ code owners, so any review diff --git a/crates/accelerate/src/basis/basis_translator/mod.rs b/crates/accelerate/src/basis/basis_translator/mod.rs index 8c9d6449d934..f8468fe14d7b 100644 --- a/crates/accelerate/src/basis/basis_translator/mod.rs +++ b/crates/accelerate/src/basis/basis_translator/mod.rs @@ -337,6 +337,7 @@ fn extract_basis_target( /// This needs to use a Python instance of `QuantumCircuit` due to it needing /// to access `has_calibration_for()` which is unavailable through rust. However, /// this API will be removed with the deprecation of `Pulse`. +/// TODO: pulse is removed, we can use op.blocks fn extract_basis_target_circ( circuit: &Bound, source_basis: &mut HashSet, diff --git a/docs/apidoc/index.rst b/docs/apidoc/index.rst index 0fa886d83659..0f306decec9b 100644 --- a/docs/apidoc/index.rst +++ b/docs/apidoc/index.rst @@ -70,13 +70,6 @@ Serialization: qasm3 qpy -Pulse-level programming: - -.. toctree:: - :maxdepth: 1 - - pulse - Other: .. toctree:: diff --git a/docs/apidoc/pulse.rst b/docs/apidoc/pulse.rst deleted file mode 100644 index 980821d10bfb..000000000000 --- a/docs/apidoc/pulse.rst +++ /dev/null @@ -1,6 +0,0 @@ -.. _qiskit-pulse: - -.. automodule:: qiskit.pulse - :no-members: - :no-inherited-members: - :no-special-members: diff --git a/qiskit/compiler/transpiler.py b/qiskit/compiler/transpiler.py index 7e598700f52d..ff8ffa0e7102 100644 --- a/qiskit/compiler/transpiler.py +++ b/qiskit/compiler/transpiler.py @@ -302,16 +302,7 @@ def callback_func(**kwargs): if not circuits: return [] - # transpiling schedules is not supported yet. start_time = time() - if all(isinstance(c, Schedule) for c in circuits): - warnings.warn("Transpiling schedules is not supported yet.", UserWarning) - end_time = time() - _log_transpile_time(start_time, end_time) - if arg_circuits_list: - return circuits - else: - return circuits[0] if optimization_level is None: # Take optimization level from the configuration or 1 as default. diff --git a/qiskit/providers/__init__.py b/qiskit/providers/__init__.py index 0a413e11c570..3682cfe5de80 100644 --- a/qiskit/providers/__init__.py +++ b/qiskit/providers/__init__.py @@ -137,8 +137,7 @@ a backend and its operation for the :mod:`~qiskit.transpiler` so that circuits can be compiled to something that is optimized and can execute on the backend. It also provides the :meth:`~qiskit.providers.BackendV2.run` method which can -run the :class:`~qiskit.circuit.QuantumCircuit` objects and/or -:class:`~qiskit.pulse.Schedule` objects. This enables users and other Qiskit +run the :class:`~qiskit.circuit.QuantumCircuit` objects. This enables users and other Qiskit APIs to get results from executing circuits on devices in a standard fashion regardless of how the backend is implemented. At a high level the basic diff --git a/qiskit/providers/backend.py b/qiskit/providers/backend.py index 9bfec114ae6d..7df178d984da 100644 --- a/qiskit/providers/backend.py +++ b/qiskit/providers/backend.py @@ -18,11 +18,10 @@ from abc import ABC from abc import abstractmethod import datetime -from typing import List, Union, Iterable, Tuple +from typing import List, Union, Tuple from qiskit.providers.provider import Provider from qiskit.circuit.gate import Instruction -from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency class Backend: @@ -204,7 +203,7 @@ def instruction_durations(self): @property @abstractmethod def max_circuits(self): - """The maximum number of circuits (or Pulse schedules) that can be + """The maximum number of circuits that can be run in a single job. If there is no limit this will return None @@ -269,18 +268,6 @@ def meas_map(self) -> List[List[int]]: """ raise NotImplementedError - @property - @deprecate_pulse_dependency(is_property=True) - def instruction_schedule_map(self): - """Return the :class:`~qiskit.pulse.InstructionScheduleMap` for the - instructions defined in this backend's target.""" - return self._instruction_schedule_map - - @property - def _instruction_schedule_map(self): - """An alternative private path to be used internally to avoid pulse deprecation warnings.""" - return self.target._get_instruction_schedule_map() - def qubit_properties( self, qubit: Union[int, List[int]] ) -> Union[QubitProperties, List[QubitProperties]]: @@ -315,77 +302,6 @@ def qubit_properties( return self.target.qubit_properties[qubit] return [self.target.qubit_properties[q] for q in qubit] - @deprecate_pulse_dependency - def drive_channel(self, qubit: int): - """Return the drive channel for the given qubit. - - This is required to be implemented if the backend supports Pulse - scheduling. - - Returns: - DriveChannel: The Qubit drive channel - - Raises: - NotImplementedError: if the backend doesn't support querying the - measurement mapping - """ - raise NotImplementedError - - @deprecate_pulse_dependency - def measure_channel(self, qubit: int): - """Return the measure stimulus channel for the given qubit. - - This is required to be implemented if the backend supports Pulse - scheduling. - - Returns: - MeasureChannel: The Qubit measurement stimulus line - - Raises: - NotImplementedError: if the backend doesn't support querying the - measurement mapping - """ - raise NotImplementedError - - @deprecate_pulse_dependency - def acquire_channel(self, qubit: int): - """Return the acquisition channel for the given qubit. - - This is required to be implemented if the backend supports Pulse - scheduling. - - Returns: - AcquireChannel: The Qubit measurement acquisition line. - - Raises: - NotImplementedError: if the backend doesn't support querying the - measurement mapping - """ - raise NotImplementedError - - @deprecate_pulse_dependency - def control_channel(self, qubits: Iterable[int]): - """Return the secondary drive channel for the given qubit - - This is typically utilized for controlling multiqubit interactions. - This channel is derived from other channels. - - This is required to be implemented if the backend supports Pulse - scheduling. - - Args: - qubits: Tuple or list of qubits of the form - ``(control_qubit, target_qubit)``. - - Returns: - List[ControlChannel]: The multi qubit control line. - - Raises: - NotImplementedError: if the backend doesn't support querying the - measurement mapping - """ - raise NotImplementedError - def set_options(self, **fields): """Set the options fields for the backend @@ -435,9 +351,8 @@ def run(self, run_input, **options): class can handle either situation. Args: - run_input (QuantumCircuit or Schedule or ScheduleBlock or list): An - individual or a list of :class:`.QuantumCircuit`, - :class:`~qiskit.pulse.ScheduleBlock`, or :class:`~qiskit.pulse.Schedule` objects to + run_input (QuantumCircuit or list): An + individual or a list of :class:`.QuantumCircuit` objects to run on the backend. options: Any kwarg options to pass to the backend for running the config. If a key is also present in the options diff --git a/qiskit/providers/fake_provider/generic_backend_v2.py b/qiskit/providers/fake_provider/generic_backend_v2.py index 4d4aded058b7..04333992306c 100644 --- a/qiskit/providers/fake_provider/generic_backend_v2.py +++ b/qiskit/providers/fake_provider/generic_backend_v2.py @@ -308,16 +308,13 @@ def run(self, run_input, **options): """Run on the backend using a simulator. This method runs circuit jobs (an individual or a list of :class:`~.QuantumCircuit` - ) and pulse jobs (an individual or a list of :class:`~.Schedule` or - :class:`~.ScheduleBlock`) using :class:`~.BasicSimulator` or Aer simulator and returns a + ) using :class:`~.BasicSimulator` or Aer simulator and returns a :class:`~qiskit.providers.Job` object. If qiskit-aer is installed, jobs will be run using the ``AerSimulator`` with noise model of the backend. Otherwise, jobs will be run using the ``BasicSimulator`` simulator without noise. - Noisy simulations of pulse jobs are not yet supported in :class:`~.GenericBackendV2`. - Args: run_input (QuantumCircuit or list): An individual or a list of :class:`~qiskit.circuit.QuantumCircuit` @@ -332,7 +329,8 @@ def run(self, run_input, **options): Job: The job object for the run Raises: - QiskitError: If a pulse job is supplied and qiskit_aer is not installed. + QiskitError: If input is not :class:`~qiskit.circuit.QuantumCircuit or a list of + :class:`~qiskit.circuit.QuantumCircuit objects. """ circuits = run_input if not isinstance(circuits, QuantumCircuit) and ( diff --git a/qiskit/pulse/__init__.py b/qiskit/pulse/__init__.py deleted file mode 100644 index 58f13cda060e..000000000000 --- a/qiskit/pulse/__init__.py +++ /dev/null @@ -1,158 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2019. -# -# 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. - -r""" -=========================== -Pulse (:mod:`qiskit.pulse`) -=========================== - -.. currentmodule:: qiskit.pulse - -Qiskit-Pulse is a pulse-level quantum programming kit. This lower level of -programming offers the user more control than programming with -:py:class:`~qiskit.circuit.QuantumCircuit`\ s. - -Extracting the greatest performance from quantum hardware requires real-time -pulse-level instructions. Pulse answers that need: it enables the quantum -physicist *user* to specify the exact time dynamics of an experiment. -It is especially powerful for error mitigation techniques. - -The input is given as arbitrary, time-ordered signals (see: :ref:`Instructions `) -scheduled in parallel over multiple virtual hardware or simulator resources -(see: :ref:`Channels `). The system also allows the user to recover the -time dynamics of the measured output. - -This is sufficient to allow the quantum physicist to explore and correct for -noise in a quantum system. - -.. automodule:: qiskit.pulse.instructions -.. automodule:: qiskit.pulse.library -.. automodule:: qiskit.pulse.channels -.. automodule:: qiskit.pulse.schedule -.. automodule:: qiskit.pulse.transforms -.. automodule:: qiskit.pulse.builder - -.. currentmodule:: qiskit.pulse - -Configuration -============= - -.. autosummary:: - :toctree: ../stubs/ - - InstructionScheduleMap - -Exceptions -========== - -.. autoexception:: PulseError -.. autoexception:: BackendNotSet -.. autoexception:: NoActiveBuilder -.. autoexception:: UnassignedDurationError -.. autoexception:: UnassignedReferenceError -""" - -# Builder imports. -from qiskit.pulse.builder import ( - # Construction methods. - active_backend, - build, - num_qubits, - qubit_channels, - samples_to_seconds, - seconds_to_samples, - # Instructions. - acquire, - barrier, - call, - delay, - play, - reference, - set_frequency, - set_phase, - shift_frequency, - shift_phase, - snapshot, - # Channels. - acquire_channel, - control_channels, - drive_channel, - measure_channel, - # Contexts. - align_equispaced, - align_func, - align_left, - align_right, - align_sequential, - frequency_offset, - phase_offset, - # Macros. - macro, - measure, - measure_all, - delay_qubits, -) -from qiskit.pulse.channels import ( - AcquireChannel, - ControlChannel, - DriveChannel, - MeasureChannel, - MemorySlot, - RegisterSlot, - SnapshotChannel, -) -from qiskit.pulse.configuration import ( - Discriminator, - Kernel, - LoConfig, - LoRange, -) -from qiskit.pulse.exceptions import ( - PulseError, - BackendNotSet, - NoActiveBuilder, - UnassignedDurationError, - UnassignedReferenceError, -) -from qiskit.pulse.instruction_schedule_map import InstructionScheduleMap -from qiskit.pulse.instructions import ( - Acquire, - Delay, - Instruction, - Play, - SetFrequency, - SetPhase, - ShiftFrequency, - ShiftPhase, - Snapshot, -) -from qiskit.pulse.library import ( - Constant, - Drag, - Gaussian, - GaussianSquare, - GaussianSquareDrag, - gaussian_square_echo, - Sin, - Cos, - Sawtooth, - Triangle, - Square, - GaussianDeriv, - Sech, - SechDeriv, - SymbolicPulse, - ScalableSymbolicPulse, - Waveform, -) -from qiskit.pulse.library.samplers.decorators import functional_pulse -from qiskit.pulse.schedule import Schedule, ScheduleBlock diff --git a/qiskit/pulse/builder.py b/qiskit/pulse/builder.py deleted file mode 100644 index c034a957f684..000000000000 --- a/qiskit/pulse/builder.py +++ /dev/null @@ -1,1983 +0,0 @@ -# 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. - -r""" - -.. _pulse_builder: - -============= -Pulse Builder -============= - -.. - We actually want people to think of these functions as being defined within the ``qiskit.pulse`` - namespace, not the submodule ``qiskit.pulse.builder``. - -.. currentmodule: qiskit.pulse - -Use the pulse builder DSL to write pulse programs with an imperative syntax. - -.. warning:: - The pulse builder interface is still in active development. It may have - breaking API changes without deprecation warnings in future releases until - otherwise indicated. - - -The pulse builder provides an imperative API for writing pulse programs -with less difficulty than the :class:`~qiskit.pulse.Schedule` API. -It contextually constructs a pulse schedule and then emits the schedule for -execution. For example, to play a series of pulses on channels is as simple as: - - -.. plot:: - :alt: Output from the previous code. - :include-source: - - from qiskit import pulse - - dc = pulse.DriveChannel - d0, d1, d2, d3, d4 = dc(0), dc(1), dc(2), dc(3), dc(4) - - with pulse.build(name='pulse_programming_in') as pulse_prog: - pulse.play([1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1], d0) - pulse.play([1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0], d1) - pulse.play([1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0], d2) - pulse.play([1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0], d3) - pulse.play([1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0], d4) - - pulse_prog.draw() - -To begin pulse programming we must first initialize our program builder -context with :func:`build`, after which we can begin adding program -statements. For example, below we write a simple program that :func:`play`\s -a pulse: - -.. plot:: - :alt: Output from the previous code. - :include-source: - - from qiskit import pulse - - d0 = pulse.DriveChannel(0) - - with pulse.build() as pulse_prog: - pulse.play(pulse.Constant(100, 1.0), d0) - - pulse_prog.draw() - -The builder initializes a :class:`.pulse.Schedule`, ``pulse_prog`` -and then begins to construct the program within the context. The output pulse -schedule will survive after the context is exited and can be used like a -normal Qiskit schedule. - -Pulse programming has a simple imperative style. This leaves the programmer -to worry about the raw experimental physics of pulse programming and not -constructing cumbersome data structures. - -We can optionally pass a :class:`~qiskit.providers.Backend` to -:func:`build` to enable enhanced functionality. Below, we prepare a Bell state -by automatically compiling the required pulses from their gate-level -representations, while simultaneously applying a long decoupling pulse to a -neighboring qubit. We terminate the experiment with a measurement to observe the -state we prepared. This program which mixes circuits and pulses will be -automatically lowered to be run as a pulse program. - -With the pulse builder we are able to blend programming on qubits and channels. -While the pulse schedule is based on instructions that operate on -channels, the pulse builder automatically handles the mapping from qubits to -channels for you. - -.. autofunction:: build - - -Channels -======== - -Methods to return the correct channels for the respective qubit indices. - -.. code-block:: python - - from qiskit import pulse - from qiskit.providers.fake_provider import GenericBackendV2 - - backend = GenericBackendV2(num_qubits=2) - - with pulse.build(backend) as drive_sched: - d0 = pulse.drive_channel(0) - print(d0) - -.. code-block:: text - - DriveChannel(0) - -.. autofunction:: acquire_channel -.. autofunction:: control_channels -.. autofunction:: drive_channel -.. autofunction:: measure_channel - - -Instructions -============ - -Pulse instructions are available within the builder interface. Here's an example: - -.. code-block:: python - - from qiskit import pulse - from qiskit.providers.fake_provider import GenericBackendV2 - - backend = GenericBackendV2(num_qubits=2) - - with pulse.build(backend) as drive_sched: - d0 = pulse.drive_channel(0) - a0 = pulse.acquire_channel(0) - - pulse.play(pulse.Constant(10, 1.0), d0) - pulse.delay(20, d0) - pulse.shift_phase(3.14/2, d0) - pulse.set_phase(3.14, d0) - pulse.shift_frequency(1e7, d0) - pulse.set_frequency(5e9, d0) - - with pulse.build() as temp_sched: - pulse.play(pulse.Gaussian(20, 1.0, 3.0), d0) - pulse.play(pulse.Gaussian(20, -1.0, 3.0), d0) - - pulse.call(temp_sched) - pulse.acquire(30, a0, pulse.MemorySlot(0)) - - drive_sched.draw() - -.. autofunction:: acquire -.. autofunction:: barrier -.. autofunction:: call -.. autofunction:: delay -.. autofunction:: play -.. autofunction:: reference -.. autofunction:: set_frequency -.. autofunction:: set_phase -.. autofunction:: shift_frequency -.. autofunction:: shift_phase -.. autofunction:: snapshot - - -Contexts -======== - -Builder aware contexts that modify the construction of a pulse program. For -example an alignment context like :func:`align_right` may -be used to align all pulses as late as possible in a pulse program. - -.. code-block:: python - - from qiskit import pulse - - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - - with pulse.build() as pulse_prog: - with pulse.align_right(): - # this pulse will start at t=0 - pulse.play(pulse.Constant(100, 1.0), d0) - # this pulse will start at t=80 - pulse.play(pulse.Constant(20, 1.0), d1) - - pulse_prog.draw() - -.. autofunction:: align_equispaced -.. autofunction:: align_func -.. autofunction:: align_left -.. autofunction:: align_right -.. autofunction:: align_sequential -.. autofunction:: frequency_offset -.. autofunction:: phase_offset - - -Macros -====== - -Macros help you add more complex functionality to your pulse program. - -.. code-block:: python - - from qiskit import pulse - from qiskit.providers.fake_provider import GenericBackendV2 - - backend = GenericBackendV2(num_qubits=2) - - with pulse.build(backend) as measure_sched: - mem_slot = pulse.measure(0) - print(mem_slot) - -.. code-block:: text - - MemorySlot(0) - -.. autofunction:: measure -.. autofunction:: measure_all -.. autofunction:: delay_qubits - - -Utilities -========= - -The utility functions can be used to gather attributes about the backend and modify -how the program is built. - -.. code-block:: python - - from qiskit import pulse - - from qiskit.providers.fake_provider import GenericBackendV2 - - backend = GenericBackendV2(num_qubits=2) - - with pulse.build(backend) as u3_sched: - print('Number of qubits in backend: {}'.format(pulse.num_qubits())) - - samples = 160 - print('There are {} samples in {} seconds'.format( - samples, pulse.samples_to_seconds(160))) - - seconds = 1e-6 - print('There are {} seconds in {} samples.'.format( - seconds, pulse.seconds_to_samples(1e-6))) - -.. code-block:: text - - Number of qubits in backend: 1 - There are 160 samples in 3.5555555555555554e-08 seconds - There are 1e-06 seconds in 4500 samples. - -.. autofunction:: active_backend -.. autofunction:: num_qubits -.. autofunction:: qubit_channels -.. autofunction:: samples_to_seconds -.. autofunction:: seconds_to_samples -""" -from __future__ import annotations -import contextvars -import functools -import itertools -import sys -import uuid -import warnings -from collections.abc import Generator, Callable, Iterable -from contextlib import contextmanager -from functools import singledispatchmethod -from typing import TypeVar, ContextManager, TypedDict, Union, Optional, Dict - -import numpy as np - -from qiskit.circuit.parameterexpression import ParameterExpression, ParameterValueType -from qiskit.pulse import ( - channels as chans, - configuration, - exceptions, - instructions, - macros, - library, - transforms, -) -from qiskit.providers.backend import BackendV2 -from qiskit.pulse.instructions import directives -from qiskit.pulse.schedule import Schedule, ScheduleBlock -from qiskit.pulse.transforms.alignments import AlignmentKind -from qiskit.utils.deprecate_pulse import deprecate_pulse_func - - -if sys.version_info >= (3, 12): - from typing import Unpack -else: - from typing_extensions import Unpack - -#: contextvars.ContextVar[BuilderContext]: active builder -BUILDER_CONTEXTVAR: contextvars.ContextVar["_PulseBuilder"] = contextvars.ContextVar("backend") - -T = TypeVar("T") - -StorageLocation = Union[chans.MemorySlot, chans.RegisterSlot] - - -def _requires_backend(function: Callable[..., T]) -> Callable[..., T]: - """Decorator a function to raise if it is called without a builder with a - set backend. - """ - - @functools.wraps(function) - def wrapper(self, *args, **kwargs): - if self.backend is None: - raise exceptions.BackendNotSet( - 'This function requires the builder to have a "backend" set.' - ) - return function(self, *args, **kwargs) - - return wrapper - - -class _PulseBuilder: - """Builder context class.""" - - __alignment_kinds__ = { - "left": transforms.AlignLeft(), - "right": transforms.AlignRight(), - "sequential": transforms.AlignSequential(), - } - - def __init__( - self, - backend=None, - block: ScheduleBlock | None = None, - name: str | None = None, - default_alignment: str | AlignmentKind = "left", - ): - """Initialize the builder context. - - .. note:: - At some point we may consider incorporating the builder into - the :class:`~qiskit.pulse.Schedule` class. However, the risk of - this is tying the user interface to the intermediate - representation. For now we avoid this at the cost of some code - duplication. - - Args: - backend (Backend): Input backend to use in - builder. If not set certain functionality will be unavailable. - block: Initital ``ScheduleBlock`` to build on. - name: Name of pulse program to be built. - default_alignment: Default scheduling alignment for builder. - One of ``left``, ``right``, ``sequential`` or an instance of - :class:`~qiskit.pulse.transforms.alignments.AlignmentKind` subclass. - - Raises: - PulseError: When invalid ``default_alignment`` or `block` is specified. - """ - #: Backend: Backend instance for context builder. - self._backend = backend - - # Token for this ``_PulseBuilder``'s ``ContextVar``. - self._backend_ctx_token: contextvars.Token[_PulseBuilder] | None = None - - # Stack of context. - self._context_stack: list[ScheduleBlock] = [] - - #: str: Name of the output program - self._name = name - - # Add root block if provided. Schedule will be built on top of this. - if block is not None: - if isinstance(block, ScheduleBlock): - root_block = block - elif isinstance(block, Schedule): - root_block = self._naive_typecast_schedule(block) - else: - raise exceptions.PulseError( - f"Input `block` type {block.__class__.__name__} is " - "not a valid format. Specify a pulse program." - ) - self._context_stack.append(root_block) - - # Set default alignment context - if isinstance(default_alignment, AlignmentKind): # AlignmentKind instance - alignment = default_alignment - else: # str identifier - alignment = _PulseBuilder.__alignment_kinds__.get(default_alignment, default_alignment) - if not isinstance(alignment, AlignmentKind): - raise exceptions.PulseError( - f"Given `default_alignment` {repr(default_alignment)} is " - "not a valid transformation. Set one of " - f'{", ".join(_PulseBuilder.__alignment_kinds__.keys())}, ' - "or set an instance of `AlignmentKind` subclass." - ) - self.push_context(alignment) - - def __enter__(self) -> ScheduleBlock: - """Enter this builder context and yield either the supplied schedule - or the schedule created for the user. - - Returns: - The schedule that the builder will build on. - """ - self._backend_ctx_token = BUILDER_CONTEXTVAR.set(self) - output = self._context_stack[0] - output._name = self._name or output.name - - return output - - def __exit__(self, exc_type, exc_val, exc_tb): - """Exit the builder context and compile the built pulse program.""" - self.compile() - BUILDER_CONTEXTVAR.reset(self._backend_ctx_token) - - @property - def backend(self): - """Returns the builder backend if set. - - Returns: - Optional[Backend]: The builder's backend. - """ - return self._backend - - def push_context(self, alignment: AlignmentKind): - """Push new context to the stack.""" - self._context_stack.append(ScheduleBlock(alignment_context=alignment)) - - def pop_context(self) -> ScheduleBlock: - """Pop the last context from the stack.""" - if len(self._context_stack) == 1: - raise exceptions.PulseError("The root context cannot be popped out.") - - return self._context_stack.pop() - - def get_context(self) -> ScheduleBlock: - """Get current context. - - Notes: - New instruction can be added by `.append_subroutine` or `.append_instruction` method. - Use above methods rather than directly accessing to the current context. - """ - return self._context_stack[-1] - - @property - @_requires_backend - def num_qubits(self): - """Get the number of qubits in the backend.""" - # backendV2 - if isinstance(self.backend, BackendV2): - return self.backend.num_qubits - return self.backend.configuration().n_qubits - - def compile(self) -> ScheduleBlock: - """Compile and output the built pulse program.""" - # Not much happens because we currently compile as we build. - # This should be offloaded to a true compilation module - # once we define a more sophisticated IR. - - while len(self._context_stack) > 1: - current = self.pop_context() - self.append_subroutine(current) - - return self._context_stack[0] - - def append_instruction(self, instruction: instructions.Instruction): - """Add an instruction to the builder's context schedule. - - Args: - instruction: Instruction to append. - """ - self._context_stack[-1].append(instruction) - - 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 append_subroutine(self, subroutine: Schedule | ScheduleBlock): - """Append a :class:`ScheduleBlock` to the builder's context schedule. - - This operation doesn't create a reference. Subroutine is directly - appended to current context schedule. - - Args: - subroutine: ScheduleBlock to append to the current context block. - - Raises: - PulseError: When subroutine is not Schedule nor ScheduleBlock. - """ - if not isinstance(subroutine, (ScheduleBlock, Schedule)): - raise exceptions.PulseError( - f"'{subroutine.__class__.__name__}' is not valid data format in the builder. " - "'Schedule' and 'ScheduleBlock' can be appended to the builder context." - ) - - if len(subroutine) == 0: - return - if isinstance(subroutine, Schedule): - subroutine = self._naive_typecast_schedule(subroutine) - self._context_stack[-1].append(subroutine) - - @singledispatchmethod - def call_subroutine( - self, - subroutine: Schedule | ScheduleBlock, - name: str | None = None, - value_dict: dict[ParameterExpression, ParameterValueType] | None = None, - **kw_params: ParameterValueType, - ): - """Call a schedule or circuit defined outside of the current scope. - - 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. - See :class:`~pulse.instructions.Call` for more details. - - Args: - subroutine: Target schedule or circuit to append to the current context. - 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. - - Raises: - PulseError: - - When input subroutine is not valid data format. - """ - raise exceptions.PulseError( - f"Subroutine type {subroutine.__class__.__name__} is " - "not valid data format. Call " - "Schedule, or ScheduleBlock." - ) - - @call_subroutine.register - def _( - self, - target_block: ScheduleBlock, - name: Optional[str] = None, - value_dict: Optional[Dict[ParameterExpression, ParameterValueType]] = None, - **kw_params: ParameterValueType, - ): - if len(target_block) == 0: - return - - # Create local parameter assignment - local_assignment = {} - for param_name, value in kw_params.items(): - params = target_block.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, target_block.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 local_assignment: - target_block = target_block.assign_parameters(local_assignment, inplace=False) - - if name is None: - # Add unique string, not to accidentally override existing reference entry. - keys: tuple[str, ...] = (target_block.name, uuid.uuid4().hex) - else: - keys = (name,) - - self.append_reference(*keys) - self.get_context().assign_references({keys: target_block}, inplace=True) - - @call_subroutine.register - def _( - self, - target_schedule: Schedule, - name: Optional[str] = None, - value_dict: Optional[Dict[ParameterExpression, ParameterValueType]] = None, - **kw_params: ParameterValueType, - ): - if len(target_schedule) == 0: - return - - self.call_subroutine( - self._naive_typecast_schedule(target_schedule), - name=name, - value_dict=value_dict, - **kw_params, - ) - - @staticmethod - def _naive_typecast_schedule(schedule: Schedule): - # Naively convert into ScheduleBlock - from qiskit.pulse.transforms import inline_subroutines, flatten, pad - - preprocessed_schedule = inline_subroutines(flatten(schedule)) - pad(preprocessed_schedule, inplace=True, pad_with=instructions.TimeBlockade) - - # default to left alignment, namely ASAP scheduling - target_block = ScheduleBlock(name=schedule.name) - for _, inst in preprocessed_schedule.instructions: - target_block.append(inst, inplace=True) - - return target_block - - def get_dt(self): - """Retrieve dt differently based on the type of Backend""" - if isinstance(self.backend, BackendV2): - return self.backend.dt - return self.backend.configuration().dt - - -@deprecate_pulse_func -def build( - backend=None, - schedule: ScheduleBlock | None = None, - name: str | None = None, - default_alignment: str | AlignmentKind | None = "left", -) -> ContextManager[ScheduleBlock]: - """Create a context manager for launching the imperative pulse builder DSL. - - To enter a building context and starting building a pulse program: - - .. code-block:: python - - from qiskit import transpile, pulse - from qiskit.providers.fake_provider import FakeOpenPulse2Q - - backend = FakeOpenPulse2Q() - - d0 = pulse.DriveChannel(0) - - with pulse.build() as pulse_prog: - pulse.play(pulse.Constant(100, 0.5), d0) - - - While the output program ``pulse_prog`` cannot be executed as we are using - a mock backend. If a real backend is being used, executing the program is - done with: - - .. code-block:: python - - backend.run(transpile(pulse_prog, backend)) - - Args: - backend (Backend): A Qiskit backend. If not supplied certain - builder functionality will be unavailable. - schedule: A pulse ``ScheduleBlock`` in which your pulse program will be built. - name: Name of pulse program to be built. - default_alignment: Default scheduling alignment for builder. - One of ``left``, ``right``, ``sequential`` or an alignment context. - - Returns: - A new builder context which has the active builder initialized. - """ - return _PulseBuilder( - backend=backend, - block=schedule, - name=name, - default_alignment=default_alignment, - ) - - -# Builder Utilities - - -def _active_builder() -> _PulseBuilder: - """Get the active builder in the active context. - - Returns: - The active active builder in this context. - - Raises: - exceptions.NoActiveBuilder: If a pulse builder function is called - outside of a builder context. - """ - try: - return BUILDER_CONTEXTVAR.get() - except LookupError as ex: - raise exceptions.NoActiveBuilder( - "A Pulse builder function was called outside of " - "a builder context. Try calling within a builder " - 'context, eg., "with pulse.build() as schedule: ...".' - ) from ex - - -@deprecate_pulse_func -def active_backend(): - """Get the backend of the currently active builder context. - - Returns: - Backend: The active backend in the currently active - builder context. - - Raises: - exceptions.BackendNotSet: If the builder does not have a backend set. - """ - builder = _active_builder().backend - if builder is None: - raise exceptions.BackendNotSet( - 'This function requires the active builder to have a "backend" set.' - ) - return builder - - -def append_schedule(schedule: Schedule | ScheduleBlock): - """Call a schedule by appending to the active builder's context block. - - Args: - schedule: Schedule or ScheduleBlock to append. - """ - _active_builder().append_subroutine(schedule) - - -def append_instruction(instruction: instructions.Instruction): - """Append an instruction to the active builder's context schedule. - - Examples: - - .. code-block:: python - - from qiskit import pulse - - d0 = pulse.DriveChannel(0) - - with pulse.build() as pulse_prog: - pulse.builder.append_instruction(pulse.Delay(10, d0)) - - print(pulse_prog.instructions) - - .. code-block:: text - - ((0, Delay(10, DriveChannel(0))),) - """ - _active_builder().append_instruction(instruction) - - -@deprecate_pulse_func -def num_qubits() -> int: - """Return number of qubits in the currently active backend. - - .. note:: Requires the active builder context to have a backend set. - """ - if isinstance(active_backend(), BackendV2): - return active_backend().num_qubits - return active_backend().configuration().n_qubits - - -@deprecate_pulse_func -def seconds_to_samples(seconds: float | np.ndarray) -> int | np.ndarray: - """Obtain the number of samples that will elapse in ``seconds`` on the - active backend. - - Rounds down. - - Args: - seconds: Time in seconds to convert to samples. - - Returns: - The number of samples for the time to elapse - """ - dt = _active_builder().get_dt() - if isinstance(seconds, np.ndarray): - return (seconds / dt).astype(int) - return int(seconds / dt) - - -@deprecate_pulse_func -def samples_to_seconds(samples: int | np.ndarray) -> float | np.ndarray: - """Obtain the time in seconds that will elapse for the input number of - samples on the active backend. - - Args: - samples: Number of samples to convert to time in seconds. - - Returns: - The time that elapses in ``samples``. - """ - return samples * _active_builder().get_dt() - - -@deprecate_pulse_func -def qubit_channels(qubit: int) -> set[chans.Channel]: - """Returns the set of channels associated with a qubit. - - .. note:: Requires the active builder context to have a backend set. - - .. note:: A channel may still be associated with another qubit in this list - such as in the case where significant crosstalk exists. - - """ - - # implement as the inner function to avoid API change for a patch release in 0.24.2. - def get_qubit_channels_v2(backend: BackendV2, qubit: int): - r"""Return a list of channels which operate on the given ``qubit``. - Returns: - List of ``Channel``\s operated on my the given ``qubit``. - """ - channels = [] - - # add multi-qubit channels - for node_qubits in backend.coupling_map: - if qubit in node_qubits: - control_channel = backend.control_channel(node_qubits) - if control_channel: - channels.extend(control_channel) - - # add single qubit channels - channels.append(backend.drive_channel(qubit)) - channels.append(backend.measure_channel(qubit)) - channels.append(backend.acquire_channel(qubit)) - return channels - - # backendV2 - if isinstance(active_backend(), BackendV2): - return set(get_qubit_channels_v2(active_backend(), qubit)) - return set(active_backend().configuration().get_qubit_channels(qubit)) - - -def _qubits_to_channels(*channels_or_qubits: int | chans.Channel) -> set[chans.Channel]: - """Returns the unique channels of the input qubits.""" - channels = set() - for channel_or_qubit in channels_or_qubits: - if isinstance(channel_or_qubit, int): - channels |= qubit_channels(channel_or_qubit) - elif isinstance(channel_or_qubit, chans.Channel): - channels.add(channel_or_qubit) - else: - raise exceptions.PulseError( - f'{channel_or_qubit} is not a "Channel" or qubit (integer).' - ) - return channels - - -# Contexts - - -@contextmanager -@deprecate_pulse_func -def align_left() -> Generator[None, None, None]: - """Left alignment pulse scheduling context. - - Pulse instructions within this context are scheduled as early as possible - by shifting them left to the earliest available time. - - Examples: - - .. plot:: - :include-source: - :nofigs: - - from qiskit import pulse - - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - - with pulse.build() as pulse_prog: - with pulse.align_left(): - # this pulse will start at t=0 - pulse.play(pulse.Constant(100, 1.0), d0) - # this pulse will start at t=0 - pulse.play(pulse.Constant(20, 1.0), d1) - pulse_prog = pulse.transforms.block_to_schedule(pulse_prog) - - assert pulse_prog.ch_start_time(d0) == pulse_prog.ch_start_time(d1) - - Yields: - None - """ - builder = _active_builder() - builder.push_context(transforms.AlignLeft()) - try: - yield - finally: - current = builder.pop_context() - builder.append_subroutine(current) - - -@contextmanager -@deprecate_pulse_func -def align_right() -> Generator[None, None, None]: - """Right alignment pulse scheduling context. - - Pulse instructions within this context are scheduled as late as possible - by shifting them right to the latest available time. - - Examples: - - .. plot:: - :include-source: - :nofigs: - - from qiskit import pulse - - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - - with pulse.build() as pulse_prog: - with pulse.align_right(): - # this pulse will start at t=0 - pulse.play(pulse.Constant(100, 1.0), d0) - # this pulse will start at t=80 - pulse.play(pulse.Constant(20, 1.0), d1) - pulse_prog = pulse.transforms.block_to_schedule(pulse_prog) - - assert pulse_prog.ch_stop_time(d0) == pulse_prog.ch_stop_time(d1) - - Yields: - None - """ - builder = _active_builder() - builder.push_context(transforms.AlignRight()) - try: - yield - finally: - current = builder.pop_context() - builder.append_subroutine(current) - - -@contextmanager -@deprecate_pulse_func -def align_sequential() -> Generator[None, None, None]: - """Sequential alignment pulse scheduling context. - - Pulse instructions within this context are scheduled sequentially in time - such that no two instructions will be played at the same time. - - Examples: - - .. plot:: - :include-source: - :nofigs: - - from qiskit import pulse - - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - - with pulse.build() as pulse_prog: - with pulse.align_sequential(): - # this pulse will start at t=0 - pulse.play(pulse.Constant(100, 1.0), d0) - # this pulse will also start at t=100 - pulse.play(pulse.Constant(20, 1.0), d1) - pulse_prog = pulse.transforms.block_to_schedule(pulse_prog) - - assert pulse_prog.ch_stop_time(d0) == pulse_prog.ch_start_time(d1) - - Yields: - None - """ - builder = _active_builder() - builder.push_context(transforms.AlignSequential()) - try: - yield - finally: - current = builder.pop_context() - builder.append_subroutine(current) - - -@contextmanager -@deprecate_pulse_func -def align_equispaced(duration: int | ParameterExpression) -> Generator[None, None, None]: - """Equispaced alignment pulse scheduling context. - - Pulse instructions within this context are scheduled with the same interval spacing such that - the total length of the context block is ``duration``. - If the total free ``duration`` cannot be evenly divided by the number of instructions - within the context, the modulo is split and then prepended and appended to - the returned schedule. Delay instructions are automatically inserted in between pulses. - - This context is convenient to write a schedule for periodical dynamic decoupling or - the Hahn echo sequence. - - Examples: - - .. plot:: - :alt: Output from the previous code. - :include-source: - - from qiskit import pulse - - d0 = pulse.DriveChannel(0) - x90 = pulse.Gaussian(10, 0.1, 3) - x180 = pulse.Gaussian(10, 0.2, 3) - - with pulse.build() as hahn_echo: - with pulse.align_equispaced(duration=100): - pulse.play(x90, d0) - pulse.play(x180, d0) - pulse.play(x90, d0) - - hahn_echo.draw() - - Args: - duration: Duration of this context. This should be larger than the schedule duration. - - Yields: - None - - Notes: - The scheduling is performed for sub-schedules within the context rather than - channel-wise. If you want to apply the equispaced context for each channel, - you should use the context independently for channels. - """ - builder = _active_builder() - builder.push_context(transforms.AlignEquispaced(duration=duration)) - try: - yield - finally: - current = builder.pop_context() - builder.append_subroutine(current) - - -@contextmanager -@deprecate_pulse_func -def align_func( - duration: int | ParameterExpression, func: Callable[[int], float] -) -> Generator[None, None, None]: - """Callback defined alignment pulse scheduling context. - - Pulse instructions within this context are scheduled at the location specified by - arbitrary callback function `position` that takes integer index and returns - the associated fractional location within [0, 1]. - Delay instruction is automatically inserted in between pulses. - - This context may be convenient to write a schedule of arbitrary dynamical decoupling - sequences such as Uhrig dynamical decoupling. - - Examples: - - .. plot:: - :alt: Output from the previous code. - :include-source: - - import numpy as np - from qiskit import pulse - - d0 = pulse.DriveChannel(0) - x90 = pulse.Gaussian(10, 0.1, 3) - x180 = pulse.Gaussian(10, 0.2, 3) - - def udd10_pos(j): - return np.sin(np.pi*j/(2*10 + 2))**2 - - with pulse.build() as udd_sched: - pulse.play(x90, d0) - with pulse.align_func(duration=300, func=udd10_pos): - for _ in range(10): - pulse.play(x180, d0) - pulse.play(x90, d0) - - udd_sched.draw() - - Args: - duration: Duration of context. This should be larger than the schedule duration. - func: A function that takes an index of sub-schedule and returns the - fractional coordinate of of that sub-schedule. - The returned value should be defined within [0, 1]. - The pulse index starts from 1. - - Yields: - None - - Notes: - The scheduling is performed for sub-schedules within the context rather than - channel-wise. If you want to apply the numerical context for each channel, - you need to apply the context independently to channels. - """ - builder = _active_builder() - builder.push_context(transforms.AlignFunc(duration=duration, func=func)) - try: - yield - finally: - current = builder.pop_context() - builder.append_subroutine(current) - - -@contextmanager -def general_transforms(alignment_context: AlignmentKind) -> Generator[None, None, None]: - """Arbitrary alignment transformation defined by a subclass instance of - :class:`~qiskit.pulse.transforms.alignments.AlignmentKind`. - - Args: - alignment_context: Alignment context instance that defines schedule transformation. - - Yields: - None - - Raises: - PulseError: When input ``alignment_context`` is not ``AlignmentKind`` subclasses. - """ - if not isinstance(alignment_context, AlignmentKind): - raise exceptions.PulseError("Input alignment context is not `AlignmentKind` subclass.") - - builder = _active_builder() - builder.push_context(alignment_context) - try: - yield - finally: - current = builder.pop_context() - builder.append_subroutine(current) - - -@contextmanager -@deprecate_pulse_func -def phase_offset(phase: float, *channels: chans.PulseChannel) -> Generator[None, None, None]: - """Shift the phase of input channels on entry into context and undo on exit. - - Examples: - - .. plot:: - :include-source: - :nofigs: - - import math - - from qiskit import pulse - - d0 = pulse.DriveChannel(0) - - with pulse.build() as pulse_prog: - with pulse.phase_offset(math.pi, d0): - pulse.play(pulse.Constant(10, 1.0), d0) - - assert len(pulse_prog.instructions) == 3 - - Args: - phase: Amount of phase offset in radians. - channels: Channels to offset phase of. - - Yields: - None - """ - for channel in channels: - shift_phase(phase, channel) - try: - yield - finally: - for channel in channels: - shift_phase(-phase, channel) - - -@contextmanager -@deprecate_pulse_func -def frequency_offset( - frequency: float, *channels: chans.PulseChannel, compensate_phase: bool = False -) -> Generator[None, None, None]: - """Shift the frequency of inputs channels on entry into context and undo on exit. - - Args: - frequency: Amount of frequency offset in Hz. - channels: Channels to offset frequency of. - compensate_phase: Compensate for accumulated phase accumulated with - respect to the channels' frame at its initial frequency. - - Yields: - None - """ - builder = _active_builder() - # TODO: Need proper implementation of compensation. t0 may depend on the parent context. - # For example, the instruction position within the equispaced context depends on - # the current total number of instructions, thus adding more instruction after - # offset context may change the t0 when the parent context is transformed. - t0 = builder.get_context().duration - - for channel in channels: - shift_frequency(frequency, channel) - try: - yield - finally: - if compensate_phase: - duration = builder.get_context().duration - t0 - - accumulated_phase = 2 * np.pi * ((duration * builder.get_dt() * frequency) % 1) - for channel in channels: - shift_phase(-accumulated_phase, channel) - - for channel in channels: - shift_frequency(-frequency, channel) - - -# Channels -@deprecate_pulse_func -def drive_channel(qubit: int) -> chans.DriveChannel: - """Return ``DriveChannel`` for ``qubit`` on the active builder backend. - - .. note:: Requires the active builder context to have a backend set. - """ - # backendV2 - if isinstance(active_backend(), BackendV2): - return active_backend().drive_channel(qubit) - return active_backend().configuration().drive(qubit) - - -@deprecate_pulse_func -def measure_channel(qubit: int) -> chans.MeasureChannel: - """Return ``MeasureChannel`` for ``qubit`` on the active builder backend. - - .. note:: Requires the active builder context to have a backend set. - """ - # backendV2 - if isinstance(active_backend(), BackendV2): - return active_backend().measure_channel(qubit) - return active_backend().configuration().measure(qubit) - - -@deprecate_pulse_func -def acquire_channel(qubit: int) -> chans.AcquireChannel: - """Return ``AcquireChannel`` for ``qubit`` on the active builder backend. - - .. note:: Requires the active builder context to have a backend set. - """ - # backendV2 - if isinstance(active_backend(), BackendV2): - return active_backend().acquire_channel(qubit) - return active_backend().configuration().acquire(qubit) - - -@deprecate_pulse_func -def control_channels(*qubits: Iterable[int]) -> list[chans.ControlChannel]: - """Return ``ControlChannel`` for ``qubit`` on the active builder backend. - - Return the secondary drive channel for the given qubit -- typically - utilized for controlling multi-qubit interactions. - - .. note:: Requires the active builder context to have a backend set. - - Args: - qubits: Tuple or list of ordered qubits of the form - `(control_qubit, target_qubit)`. - - Returns: - List of control channels associated with the supplied ordered list - of qubits. - """ - # backendV2 - if isinstance(active_backend(), BackendV2): - return active_backend().control_channel(qubits) - return active_backend().configuration().control(qubits=qubits) - - -# Base Instructions -@deprecate_pulse_func -def delay(duration: int, channel: chans.Channel, name: str | None = None): - """Delay on a ``channel`` for a ``duration``. - - Examples: - - .. plot:: - :include-source: - :nofigs: - - from qiskit import pulse - - d0 = pulse.DriveChannel(0) - - with pulse.build() as pulse_prog: - pulse.delay(10, d0) - - Args: - duration: Number of cycles to delay for on ``channel``. - channel: Channel to delay on. - name: Name of the instruction. - """ - append_instruction(instructions.Delay(duration, channel, name=name)) - - -@deprecate_pulse_func -def play(pulse: library.Pulse | np.ndarray, channel: chans.PulseChannel, name: str | None = None): - """Play a ``pulse`` on a ``channel``. - - Examples: - - .. plot:: - :include-source: - :nofigs: - - from qiskit import pulse - - d0 = pulse.DriveChannel(0) - - with pulse.build() as pulse_prog: - pulse.play(pulse.Constant(10, 1.0), d0) - - Args: - pulse: Pulse to play. - channel: Channel to play pulse on. - name: Name of the pulse. - """ - if not isinstance(pulse, library.Pulse): - pulse = library.Waveform(pulse) - - append_instruction(instructions.Play(pulse, channel, name=name)) - - -class _MetaDataType(TypedDict, total=False): - kernel: configuration.Kernel - discriminator: configuration.Discriminator - mem_slot: chans.MemorySlot - reg_slot: chans.RegisterSlot - name: str - - -@deprecate_pulse_func -def acquire( - duration: int, - qubit_or_channel: int | chans.AcquireChannel, - register: StorageLocation, - **metadata: Unpack[_MetaDataType], -): - """Acquire for a ``duration`` on a ``channel`` and store the result - in a ``register``. - - Examples: - - .. plot:: - :include-source: - :nofigs: - - from qiskit import pulse - - acq0 = pulse.AcquireChannel(0) - mem0 = pulse.MemorySlot(0) - - with pulse.build() as pulse_prog: - pulse.acquire(100, acq0, mem0) - - # measurement metadata - kernel = pulse.configuration.Kernel('linear_discriminator') - pulse.acquire(100, acq0, mem0, kernel=kernel) - - .. note:: The type of data acquire will depend on the execution ``meas_level``. - - Args: - duration: Duration to acquire data for - qubit_or_channel: Either the qubit to acquire data for or the specific - :class:`~qiskit.pulse.channels.AcquireChannel` to acquire on. - register: Location to store measured result. - metadata: Additional metadata for measurement. See - :class:`~qiskit.pulse.instructions.Acquire` for more information. - - Raises: - exceptions.PulseError: If the register type is not supported. - """ - if isinstance(qubit_or_channel, int): - qubit_or_channel = chans.AcquireChannel(qubit_or_channel) - - if isinstance(register, chans.MemorySlot): - append_instruction( - instructions.Acquire(duration, qubit_or_channel, mem_slot=register, **metadata) - ) - elif isinstance(register, chans.RegisterSlot): - append_instruction( - instructions.Acquire(duration, qubit_or_channel, reg_slot=register, **metadata) - ) - else: - raise exceptions.PulseError(f'Register of type: "{type(register)}" is not supported') - - -@deprecate_pulse_func -def set_frequency(frequency: float, channel: chans.PulseChannel, name: str | None = None): - """Set the ``frequency`` of a pulse ``channel``. - - Examples: - - .. plot:: - :include-source: - :nofigs: - - from qiskit import pulse - - d0 = pulse.DriveChannel(0) - - with pulse.build() as pulse_prog: - pulse.set_frequency(1e9, d0) - - Args: - frequency: Frequency in Hz to set channel to. - channel: Channel to set frequency of. - name: Name of the instruction. - """ - append_instruction(instructions.SetFrequency(frequency, channel, name=name)) - - -@deprecate_pulse_func -def shift_frequency(frequency: float, channel: chans.PulseChannel, name: str | None = None): - """Shift the ``frequency`` of a pulse ``channel``. - - Examples: - - .. plot:: - :include-source: - :nofigs: - - from qiskit import pulse - - d0 = pulse.DriveChannel(0) - - with pulse.build() as pulse_prog: - pulse.shift_frequency(1e9, d0) - - Args: - frequency: Frequency in Hz to shift channel frequency by. - channel: Channel to shift frequency of. - name: Name of the instruction. - """ - append_instruction(instructions.ShiftFrequency(frequency, channel, name=name)) - - -@deprecate_pulse_func -def set_phase(phase: float, channel: chans.PulseChannel, name: str | None = None): - """Set the ``phase`` of a pulse ``channel``. - - Examples: - - .. plot:: - :include-source: - :nofigs: - - import math - - from qiskit import pulse - - d0 = pulse.DriveChannel(0) - - with pulse.build() as pulse_prog: - pulse.set_phase(math.pi, d0) - - Args: - phase: Phase in radians to set channel carrier signal to. - channel: Channel to set phase of. - name: Name of the instruction. - """ - append_instruction(instructions.SetPhase(phase, channel, name=name)) - - -@deprecate_pulse_func -def shift_phase(phase: float, channel: chans.PulseChannel, name: str | None = None): - """Shift the ``phase`` of a pulse ``channel``. - - Examples: - - .. plot:: - :include-source: - :nofigs: - - import math - - from qiskit import pulse - - d0 = pulse.DriveChannel(0) - - with pulse.build() as pulse_prog: - pulse.shift_phase(math.pi, d0) - - Args: - phase: Phase in radians to shift channel carrier signal by. - channel: Channel to shift phase of. - name: Name of the instruction. - """ - append_instruction(instructions.ShiftPhase(phase, channel, name)) - - -@deprecate_pulse_func -def snapshot(label: str, snapshot_type: str = "statevector"): - """Simulator snapshot. - - Examples: - - .. plot:: - :include-source: - :nofigs: - - from qiskit import pulse - - with pulse.build() as pulse_prog: - pulse.snapshot('first', 'statevector') - - Args: - label: Label for snapshot. - snapshot_type: Type of snapshot. - """ - append_instruction(instructions.Snapshot(label, snapshot_type=snapshot_type)) - - -@deprecate_pulse_func -def call( - target: Schedule | ScheduleBlock | None, - name: str | None = None, - value_dict: dict[ParameterValueType, ParameterValueType] | None = None, - **kw_params: ParameterValueType, -): - """Call the subroutine within the currently active builder context with arbitrary - parameters which will be assigned to the target program. - - .. note:: - - 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: - - 1. Calling a schedule block (recommended) - - .. code-block:: python - - from qiskit import circuit, pulse - from qiskit.providers.fake_provider import GenericBackendV2 - - backend = GenericBackendV2(num_qubits=5) - - with pulse.build() as x_sched: - pulse.play(pulse.Gaussian(160, 0.1, 40), pulse.DriveChannel(0)) - - with pulse.build() as pulse_prog: - pulse.call(x_sched) - - print(pulse_prog) - - .. code-block:: text - - ScheduleBlock( - ScheduleBlock( - Play( - Gaussian(duration=160, amp=(0.1+0j), sigma=40), - DriveChannel(0) - ), - name="block0", - transform=AlignLeft() - ), - name="block1", - transform=AlignLeft() - ) - - The actual program is stored in the reference table attached to the schedule. - - .. code-block:: python - - print(pulse_prog.references) - - .. code-block:: text - - ReferenceManager: - - ('block0', '634b3b50bd684e26a673af1fbd2d6c81'): ScheduleBlock(Play(Gaussian(... - - In addition, you can call a parameterized target program with parameter assignment. - - .. code-block:: python - - amp = circuit.Parameter("amp") - - with pulse.build() as subroutine: - pulse.play(pulse.Gaussian(160, amp, 40), pulse.DriveChannel(0)) - - with pulse.build() as pulse_prog: - pulse.call(subroutine, amp=0.1) - pulse.call(subroutine, amp=0.3) - - print(pulse_prog) - - .. code-block:: text - - ScheduleBlock( - ScheduleBlock( - Play( - Gaussian(duration=160, amp=(0.1+0j), sigma=40), - DriveChannel(0) - ), - name="block2", - transform=AlignLeft() - ), - ScheduleBlock( - Play( - Gaussian(duration=160, amp=(0.3+0j), sigma=40), - DriveChannel(0) - ), - name="block2", - transform=AlignLeft() - ), - name="block3", - transform=AlignLeft() - ) - - If there is a name collision between parameters, you can distinguish them by specifying - each parameter object in a python dictionary. For example, - - .. code-block:: python - - 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) - - .. code-block:: text - - ScheduleBlock( - ScheduleBlock( - Play(Gaussian(duration=160, amp=(0.1+0j), sigma=40), DriveChannel(0)), - Play(Gaussian(duration=160, amp=(0.3+0j), sigma=40), DriveChannel(1)), - name="block4", - transform=AlignLeft() - ), - name="block5", - transform=AlignLeft() - ) - - 2. Calling a schedule - - .. code-block:: python - - x_sched = backend.instruction_schedule_map.get("x", (0,)) - - with pulse.build(backend) as pulse_prog: - pulse.call(x_sched) - - print(pulse_prog) - - .. code-block:: text - - ScheduleBlock( - Call( - Schedule( - ( - 0, - Play( - Drag( - duration=160, - amp=(0.18989731546729305+0j), - sigma=40, - beta=-1.201258305015517, - name='drag_86a8' - ), - DriveChannel(0), - name='drag_86a8' - ) - ), - name="x" - ), - name='x' - ), - name="block6", - transform=AlignLeft() - ) - - 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. - - - Args: - target: Target circuit or pulse schedule to call. - 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. - """ - _active_builder().call_subroutine(target, name, value_dict, **kw_params) - - -@deprecate_pulse_func -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. - - .. plot:: - :include-source: - :nofigs: - - 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 -@deprecate_pulse_func -def barrier(*channels_or_qubits: chans.Channel | int, name: str | None = None): - """Barrier directive for a set of channels and qubits. - - This directive prevents the compiler from moving instructions across - the barrier. Consider the case where we want to enforce that one pulse - happens after another on separate channels, this can be done with: - - .. plot:: - :include-source: - :nofigs: - :context: reset - - from qiskit import pulse - from qiskit.providers.fake_provider import FakeOpenPulse2Q - - backend = FakeOpenPulse2Q() - - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - - with pulse.build(backend) as barrier_pulse_prog: - pulse.play(pulse.Constant(10, 1.0), d0) - pulse.barrier(d0, d1) - pulse.play(pulse.Constant(10, 1.0), d1) - - Of course this could have been accomplished with: - - .. plot:: - :include-source: - :nofigs: - :context: - - from qiskit.pulse import transforms - - with pulse.build(backend) as aligned_pulse_prog: - with pulse.align_sequential(): - pulse.play(pulse.Constant(10, 1.0), d0) - pulse.play(pulse.Constant(10, 1.0), d1) - - barrier_pulse_prog = transforms.target_qobj_transform(barrier_pulse_prog) - aligned_pulse_prog = transforms.target_qobj_transform(aligned_pulse_prog) - - assert barrier_pulse_prog == aligned_pulse_prog - - The barrier allows the pulse compiler to take care of more advanced - scheduling alignment operations across channels. For example - in the case where we are calling an outside circuit or schedule and - want to align a pulse at the end of one call: - - .. code-block:: python - - import math - from qiskit import pulse - from qiskit.providers.fake_provider import FakeOpenPulse2Q - - backend = FakeOpenPulse2Q() - - d0 = pulse.DriveChannel(0) - - with pulse.build(backend) as pulse_prog: - with pulse.align_right(): - pulse.call(backend.defaults().instruction_schedule_map.get('u1', (1,))) - # Barrier qubit 1 and d0. - pulse.barrier(1, d0) - # Due to barrier this will play before the gate on qubit 1. - pulse.play(pulse.Constant(10, 1.0), d0) - # This will end at the same time as the pulse above due to - # the barrier. - pulse.call(backend.defaults().instruction_schedule_map.get('u1', (1,))) - - .. note:: Requires the active builder context to have a backend set if - qubits are barriered on. - - Args: - channels_or_qubits: Channels or qubits to barrier. - name: Name for the barrier - """ - channels = _qubits_to_channels(*channels_or_qubits) - if len(channels) > 1: - append_instruction(directives.RelativeBarrier(*channels, name=name)) - - -# Macros -def macro(func: Callable): - """Wrap a Python function and activate the parent builder context at calling time. - - This enables embedding Python functions as builder macros. This generates a new - :class:`pulse.Schedule` that is embedded in the parent builder context with - every call of the decorated macro function. The decorated macro function will - behave as if the function code was embedded inline in the parent builder context - after parameter substitution. - - Args: - func: The Python function to enable as a builder macro. There are no - requirements on the signature of the function, any calls to pulse - builder methods will be added to builder context the wrapped function - is called from. - - Returns: - Callable: The wrapped ``func``. - """ - func_name = getattr(func, "__name__", repr(func)) - - @functools.wraps(func) - def wrapper(*args, **kwargs): - _builder = _active_builder() - # activate the pulse builder before calling the function - with build(backend=_builder.backend, name=func_name) as built: - output = func(*args, **kwargs) - - _builder.call_subroutine(built) - return output - - return wrapper - - -@deprecate_pulse_func -def measure( - qubits: list[int] | int, - registers: list[StorageLocation] | StorageLocation = None, -) -> list[StorageLocation] | StorageLocation: - """Measure a qubit within the currently active builder context. - - At the pulse level a measurement is composed of both a stimulus pulse and - an acquisition instruction which tells the systems measurement unit to - acquire data and process it. We provide this measurement macro to automate - the process for you, but if desired full control is still available with - :func:`acquire` and :func:`play`. - - To use the measurement it is as simple as specifying the qubit you wish to - measure: - - .. code-block:: python - - from qiskit import pulse - from qiskit.providers.fake_provider import FakeOpenPulse2Q - - backend = FakeOpenPulse2Q() - - qubit = 0 - - with pulse.build(backend) as pulse_prog: - # Do something to the qubit. - qubit_drive_chan = pulse.drive_channel(0) - pulse.play(pulse.Constant(100, 1.0), qubit_drive_chan) - # Measure the qubit. - reg = pulse.measure(qubit) - - For now it is not possible to do much with the handle to ``reg`` but in the - future we will support using this handle to a result register to build - up ones program. It is also possible to supply this register: - - .. code-block:: python - - with pulse.build(backend) as pulse_prog: - pulse.play(pulse.Constant(100, 1.0), qubit_drive_chan) - # Measure the qubit. - mem0 = pulse.MemorySlot(0) - reg = pulse.measure(qubit, mem0) - - assert reg == mem0 - - .. note:: Requires the active builder context to have a backend set. - - Args: - qubits: Physical qubit to measure. - registers: Register to store result in. If not selected the current - behavior is to return the :class:`MemorySlot` with the same - index as ``qubit``. This register will be returned. - Returns: - The ``register`` the qubit measurement result will be stored in. - """ - backend = active_backend() - - try: - qubits = list(qubits) - except TypeError: - qubits = [qubits] - - if registers is None: - registers = [chans.MemorySlot(qubit) for qubit in qubits] - else: - try: - registers = list(registers) - except TypeError: - registers = [registers] - measure_sched = macros.measure( - qubits=qubits, - backend=backend, - qubit_mem_slots={qubit: register.index for qubit, register in zip(qubits, registers)}, - ) - - # note this is not a subroutine. - # just a macro to automate combination of stimulus and acquisition. - # prepare unique reference name based on qubit and memory slot index. - qubits_repr = "&".join(map(str, qubits)) - mslots_repr = "&".join((str(r.index) for r in registers)) - _active_builder().call_subroutine(measure_sched, name=f"measure_{qubits_repr}..{mslots_repr}") - - if len(qubits) == 1: - return registers[0] - else: - return registers - - -@deprecate_pulse_func -def measure_all() -> list[chans.MemorySlot]: - r"""Measure all qubits within the currently active builder context. - - A simple macro function to measure all of the qubits in the device at the - same time. This is useful for handling device ``meas_map`` and single - measurement constraints. - - .. note:: - Requires the active builder context to have a backend set. - - Returns: - The ``register``\s the qubit measurement results will be stored in. - """ - backend = active_backend() - qubits = range(num_qubits()) - registers = [chans.MemorySlot(qubit) for qubit in qubits] - - measure_sched = macros.measure( - qubits=qubits, - backend=backend, - qubit_mem_slots={qubit: qubit for qubit in qubits}, - ) - - # note this is not a subroutine. - # just a macro to automate combination of stimulus and acquisition. - _active_builder().call_subroutine(measure_sched, name="measure_all") - - return registers - - -@deprecate_pulse_func -def delay_qubits(duration: int, *qubits: int): - r"""Insert delays on all the :class:`channels.Channel`\s that correspond - to the input ``qubits`` at the same time. - - .. note:: Requires the active builder context to have a backend set. - - Args: - duration: Duration to delay for. - qubits: Physical qubits to delay on. Delays will be inserted based on - the channels returned by :func:`pulse.qubit_channels`. - """ - qubit_chans = set(itertools.chain.from_iterable(qubit_channels(qubit) for qubit in qubits)) - with align_left(): - for chan in qubit_chans: - delay(duration, chan) diff --git a/qiskit/pulse/calibration_entries.py b/qiskit/pulse/calibration_entries.py deleted file mode 100644 index 0055e48f0682..000000000000 --- a/qiskit/pulse/calibration_entries.py +++ /dev/null @@ -1,283 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2023. -# -# 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 format of calibration data in target.""" -from __future__ import annotations -import inspect -from abc import ABCMeta, abstractmethod -from collections.abc import Sequence, Callable -from enum import IntEnum -from typing import Any - -from qiskit.pulse.exceptions import PulseError -from qiskit.pulse.schedule import Schedule, ScheduleBlock - - -IncompletePulseQobj = object() -"""A None-like constant that represents the PulseQobj is incomplete.""" - - -class CalibrationPublisher(IntEnum): - """Defines who defined schedule entry.""" - - BACKEND_PROVIDER = 0 - QISKIT = 1 - EXPERIMENT_SERVICE = 2 - - -class CalibrationEntry(metaclass=ABCMeta): - """A metaclass of a calibration entry. - - This class defines a standard model of Qiskit pulse program that is - agnostic to the underlying in-memory representation. - - This entry distinguishes whether this is provided by end-users or a backend - by :attr:`.user_provided` attribute which may be provided when - the actual calibration data is provided to the entry with by :meth:`define`. - - Note that a custom entry provided by an end-user may appear in the wire-format - as an inline calibration, e.g. :code:`defcal` of the QASM3, - that may update the backend instruction set architecture for execution. - - .. note:: - - This and built-in subclasses are expected to be private without stable user-facing API. - The purpose of this class is to wrap different - in-memory pulse program representations in Qiskit, so that it can provide - the standard data model and API which are primarily used by the transpiler ecosystem. - It is assumed that end-users will never directly instantiate this class, - but :class:`.Target` or :class:`.InstructionScheduleMap` internally use this data model - to avoid implementing a complicated branching logic to - manage different calibration data formats. - - """ - - @abstractmethod - def define(self, definition: Any, user_provided: bool): - """Attach definition to the calibration entry. - - Args: - definition: Definition of this entry. - user_provided: If this entry is defined by user. - If the flag is set, this calibration may appear in the wire format - as an inline calibration, to override the backend instruction set architecture. - """ - pass - - @abstractmethod - def get_signature(self) -> inspect.Signature: - """Return signature object associated with entry definition. - - Returns: - Signature object. - """ - pass - - @abstractmethod - def get_schedule(self, *args, **kwargs) -> Schedule | ScheduleBlock: - """Generate schedule from entry definition. - - If the pulse program is templated with :class:`.Parameter` objects, - you can provide corresponding parameter values for this method - to get a particular pulse program with assigned parameters. - - Args: - args: Command parameters. - kwargs: Command keyword parameters. - - Returns: - Pulse schedule with assigned parameters. - """ - pass - - @property - @abstractmethod - def user_provided(self) -> bool: - """Return if this entry is user defined.""" - pass - - -class ScheduleDef(CalibrationEntry): - """In-memory Qiskit Pulse representation. - - A pulse schedule must provide signature with the .parameters attribute. - This entry can be parameterized by a Qiskit Parameter object. - The .get_schedule method returns a parameter-assigned pulse program. - - .. see_also:: - :class:`.CalibrationEntry` for the purpose of this class. - - """ - - def __init__(self, arguments: Sequence[str] | None = None): - """Define an empty entry. - - Args: - arguments: User provided argument names for this entry, if parameterized. - - Raises: - PulseError: When `arguments` is not a sequence of string. - """ - if arguments and not all(isinstance(arg, str) for arg in arguments): - raise PulseError(f"Arguments must be name of parameters. Not {arguments}.") - if arguments: - arguments = list(arguments) - self._user_arguments = arguments - - self._definition: Callable | Schedule | None = None - self._signature: inspect.Signature | None = None - self._user_provided: bool | None = None - - @property - def user_provided(self) -> bool: - return self._user_provided - - def _parse_argument(self): - """Generate signature from program and user provided argument names.""" - # This doesn't assume multiple parameters with the same name - # Parameters with the same name are treated identically - all_argnames = {x.name for x in self._definition.parameters} - - if self._user_arguments: - if set(self._user_arguments) != all_argnames: - raise PulseError( - "Specified arguments don't match with schedule parameters. " - f"{self._user_arguments} != {self._definition.parameters}." - ) - argnames = list(self._user_arguments) - else: - argnames = sorted(all_argnames) - - params = [] - for argname in argnames: - param = inspect.Parameter( - argname, - kind=inspect.Parameter.POSITIONAL_OR_KEYWORD, - ) - params.append(param) - signature = inspect.Signature( - parameters=params, - return_annotation=type(self._definition), - ) - self._signature = signature - - def define( - self, - definition: Schedule | ScheduleBlock, - user_provided: bool = True, - ): - self._definition = definition - self._parse_argument() - self._user_provided = user_provided - - def get_signature(self) -> inspect.Signature: - return self._signature - - def get_schedule(self, *args, **kwargs) -> Schedule | ScheduleBlock: - if not args and not kwargs: - out = self._definition - else: - try: - to_bind = self.get_signature().bind_partial(*args, **kwargs) - except TypeError as ex: - raise PulseError( - "Assigned parameter doesn't match with schedule parameters." - ) from ex - value_dict = {} - for param in self._definition.parameters: - # Schedule allows partial bind. This results in parameterized Schedule. - try: - value_dict[param] = to_bind.arguments[param.name] - except KeyError: - pass - out = self._definition.assign_parameters(value_dict, inplace=False) - if "publisher" not in out.metadata: - if self.user_provided: - out.metadata["publisher"] = CalibrationPublisher.QISKIT - else: - out.metadata["publisher"] = CalibrationPublisher.BACKEND_PROVIDER - return out - - def __eq__(self, other): - # This delegates equality check to Schedule or ScheduleBlock. - if hasattr(other, "_definition"): - return self._definition == other._definition - return False - - def __str__(self): - out = f"Schedule {self._definition.name}" - params_str = ", ".join(self.get_signature().parameters.keys()) - if params_str: - out += f"({params_str})" - return out - - -class CallableDef(CalibrationEntry): - """Python callback function that generates Qiskit Pulse program. - - A callable is inspected by the python built-in inspection module and - provide the signature. This entry is parameterized by the function signature - and .get_schedule method returns a non-parameterized pulse program - by consuming the provided arguments and keyword arguments. - - .. see_also:: - :class:`.CalibrationEntry` for the purpose of this class. - - """ - - def __init__(self): - """Define an empty entry.""" - self._definition = None - self._signature = None - self._user_provided = None - - @property - def user_provided(self) -> bool: - return self._user_provided - - def define( - self, - definition: Callable, - user_provided: bool = True, - ): - self._definition = definition - self._signature = inspect.signature(definition) - self._user_provided = user_provided - - def get_signature(self) -> inspect.Signature: - return self._signature - - def get_schedule(self, *args, **kwargs) -> Schedule | ScheduleBlock: - try: - # Python function doesn't allow partial bind, but default value can exist. - to_bind = self._signature.bind(*args, **kwargs) - to_bind.apply_defaults() - except TypeError as ex: - raise PulseError("Assigned parameter doesn't match with function signature.") from ex - out = self._definition(**to_bind.arguments) - if "publisher" not in out.metadata: - if self.user_provided: - out.metadata["publisher"] = CalibrationPublisher.QISKIT - else: - out.metadata["publisher"] = CalibrationPublisher.BACKEND_PROVIDER - return out - - def __eq__(self, other): - # We cannot evaluate function equality without parsing python AST. - # This simply compares weather they are the same object. - if hasattr(other, "_definition"): - return self._definition == other._definition - return False - - def __str__(self): - params_str = ", ".join(self.get_signature().parameters.keys()) - return f"Callable {self._definition.__name__}({params_str})" diff --git a/qiskit/pulse/channels.py b/qiskit/pulse/channels.py deleted file mode 100644 index 8b196345c179..000000000000 --- a/qiskit/pulse/channels.py +++ /dev/null @@ -1,227 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2019. -# -# 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. - -""" -.. _pulse-channels: - -======================================= -Channels (:mod:`qiskit.pulse.channels`) -======================================= - -Pulse is meant to be agnostic to the underlying hardware implementation, while still allowing -low-level control. Therefore, our signal channels are *virtual* hardware channels. The backend -which executes our programs is responsible for mapping these virtual channels to the proper -physical channel within the quantum control hardware. - -Channels are characterized by their type and their index. Channels include: - -* transmit channels, which should subclass ``PulseChannel`` -* receive channels, such as :class:`AcquireChannel` -* non-signal "channels" such as :class:`SnapshotChannel`, :class:`MemorySlot` and - :class:`RegisterChannel`. - -Novel channel types can often utilize the :class:`ControlChannel`, but if this is not sufficient, -new channel types can be created. Then, they must be supported in the PulseQobj schema and the -assembler. Channels are characterized by their type and their index. See each channel type below to -learn more. - -.. autosummary:: - :toctree: ../stubs/ - - DriveChannel - MeasureChannel - AcquireChannel - ControlChannel - RegisterSlot - MemorySlot - SnapshotChannel - -All channels are children of the same abstract base class: - -.. autoclass:: Channel -""" -from __future__ import annotations -from abc import ABCMeta -from typing import Any - -import numpy as np - -from qiskit.circuit import Parameter -from qiskit.circuit.parameterexpression import ParameterExpression -from qiskit.pulse.exceptions import PulseError -from qiskit.utils.deprecate_pulse import deprecate_pulse_func - - -class Channel(metaclass=ABCMeta): - """Base class of channels. Channels provide a Qiskit-side label for typical quantum control - hardware signal channels. The final label -> physical channel mapping is the responsibility - of the hardware backend. For instance, ``DriveChannel(0)`` holds instructions which the backend - should map to the signal line driving gate operations on the qubit labeled (indexed) 0. - - When serialized channels are identified by their serialized name ````. - The type of the channel is interpreted from the prefix, - and the index often (but not always) maps to the qubit index. - All concrete channel classes must have a ``prefix`` class attribute - (and instances of that class have an index attribute). Base classes which have - ``prefix`` set to ``None`` are prevented from being instantiated. - - To implement a new channel inherit from :class:`Channel` and provide a unique string identifier - for the ``prefix`` class attribute. - """ - - prefix: str | None = None - """A shorthand string prefix for characterizing the channel type.""" - - # pylint: disable=unused-argument - def __new__(cls, *args, **kwargs): - if cls.prefix is None: - raise NotImplementedError( - "Cannot instantiate abstract channel. " - "See Channel documentation for more information." - ) - - return super().__new__(cls) - - @deprecate_pulse_func - def __init__(self, index: int): - """Channel class. - - Args: - index: Index of channel. - """ - self._validate_index(index) - self._index = index - - @property - def index(self) -> int | ParameterExpression: - """Return the index of this channel. The index is a label for a control signal line - typically mapped trivially to a qubit index. For instance, ``DriveChannel(0)`` labels - the signal line driving the qubit labeled with index 0. - """ - return self._index - - def _validate_index(self, index: Any) -> None: - """Raise a PulseError if the channel index is invalid, namely, if it's not a positive - integer. - - Raises: - PulseError: If ``index`` is not a nonnegative integer. - """ - if isinstance(index, ParameterExpression) and index.parameters: - # Parameters are unbound - return - elif isinstance(index, ParameterExpression): - index = float(index) - if index.is_integer(): - index = int(index) - - if not isinstance(index, (int, np.integer)) or index < 0: - raise PulseError("Channel index must be a nonnegative integer") - - @property - def parameters(self) -> set[Parameter]: - """Parameters which determine the channel index.""" - if isinstance(self.index, ParameterExpression): - return self.index.parameters - return set() - - def is_parameterized(self) -> bool: - """Return True iff the channel is parameterized.""" - return isinstance(self.index, ParameterExpression) - - @property - def name(self) -> str: - """Return the shorthand alias for this channel, which is based on its type and index.""" - return f"{self.__class__.prefix}{self._index}" - - def __repr__(self): - return f"{self.__class__.__name__}({self._index})" - - def __eq__(self, other: object) -> bool: - """Return True iff self and other are equal, specifically, iff they have the same type - and the same index. - - Args: - other: The channel to compare to this channel. - - Returns: - True iff equal. - """ - if not isinstance(other, Channel): - return NotImplemented - return type(self) is type(other) and self._index == other._index - - def __hash__(self): - return hash((type(self), self._index)) - - -class PulseChannel(Channel, metaclass=ABCMeta): - """Base class of transmit Channels. Pulses can be played on these channels.""" - - pass - - -class ClassicalIOChannel(Channel, metaclass=ABCMeta): - """Base class of classical IO channels. These cannot have instructions scheduled on them.""" - - pass - - -class DriveChannel(PulseChannel): - """Drive channels transmit signals to qubits which enact gate operations.""" - - prefix = "d" - - -class MeasureChannel(PulseChannel): - """Measure channels transmit measurement stimulus pulses for readout.""" - - prefix = "m" - - -class ControlChannel(PulseChannel): - """Control channels provide supplementary control over the qubit to the drive channel. - These are often associated with multi-qubit gate operations. They may not map trivially - to a particular qubit index. - """ - - prefix = "u" - - -class AcquireChannel(Channel): - """Acquire channels are used to collect data.""" - - prefix = "a" - - -class SnapshotChannel(ClassicalIOChannel): - """Snapshot channels are used to specify instructions for simulators.""" - - prefix = "s" - - def __init__(self): - """Create new snapshot channel.""" - super().__init__(0) - - -class MemorySlot(ClassicalIOChannel): - """Memory slot channels represent classical memory storage.""" - - prefix = "m" - - -class RegisterSlot(ClassicalIOChannel): - """Classical resister slot channels represent classical registers (low-latency classical - memory). - """ - - prefix = "c" diff --git a/qiskit/pulse/configuration.py b/qiskit/pulse/configuration.py deleted file mode 100644 index 1bfd1f13e2ee..000000000000 --- a/qiskit/pulse/configuration.py +++ /dev/null @@ -1,245 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2019. -# -# 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. - -""" -Configurations for pulse experiments. -""" -from __future__ import annotations -import numpy as np - -from .channels import DriveChannel, MeasureChannel -from .exceptions import PulseError - - -def _assert_nested_dict_equal(a: dict, b: dict): - if len(a) != len(b): - return False - for key in a: - if key in b: - if isinstance(a[key], dict): - if not _assert_nested_dict_equal(a[key], b[key]): - return False - elif isinstance(a[key], np.ndarray): - if not np.all(a[key] == b[key]): - return False - else: - if a[key] != b[key]: - return False - else: - return False - return True - - -class Kernel: - """Settings for this Kernel, which is responsible for integrating time series (raw) data - into IQ points. - """ - - def __init__(self, name: str | None = None, **params): - """Create new kernel. - - Args: - name: Name of kernel to be used - params: Any settings for kerneling. - """ - self.name = name - self.params = params - - def __repr__(self): - name_repr = "'" + self.name + "', " - params_repr = ", ".join(f"{str(k)}={str(v)}" for k, v in self.params.items()) - return f"{self.__class__.__name__}({name_repr}{params_repr})" - - def __eq__(self, other): - if isinstance(other, Kernel): - return _assert_nested_dict_equal(self.__dict__, other.__dict__) - return False - - -class Discriminator: - """Setting for this Discriminator, which is responsible for classifying kerneled IQ points - into 0/1 state results. - """ - - def __init__(self, name: str | None = None, **params): - """Create new discriminator. - - Args: - name: Name of discriminator to be used - params: Any settings for discrimination. - """ - self.name = name - self.params = params - - def __repr__(self): - name_repr = "'" + self.name + "', " or "" - params_repr = ", ".join(f"{str(k)}={str(v)}" for k, v in self.params.items()) - return f"{self.__class__.__name__}({name_repr}{params_repr})" - - def __eq__(self, other): - if isinstance(other, Discriminator): - return _assert_nested_dict_equal(self.__dict__, other.__dict__) - return False - - -class LoRange: - """Range of LO frequency.""" - - def __init__(self, lower_bound: float, upper_bound: float): - self._lb = lower_bound - self._ub = upper_bound - - def includes(self, lo_freq: complex) -> bool: - """Whether `lo_freq` is within the `LoRange`. - - Args: - lo_freq: LO frequency to be validated - - Returns: - bool: True if lo_freq is included in this range, otherwise False - """ - if self._lb <= abs(lo_freq) <= self._ub: - return True - return False - - @property - def lower_bound(self) -> float: - """Lower bound of the LO range""" - return self._lb - - @property - def upper_bound(self) -> float: - """Upper bound of the LO range""" - return self._ub - - def __repr__(self): - return f"{self.__class__.__name__}({self._lb:f}, {self._ub:f})" - - def __eq__(self, other): - """Two LO ranges are the same if they are of the same type, and - have the same frequency range - - Args: - other (LoRange): other LoRange - - Returns: - bool: are self and other equal. - """ - if type(self) is type(other) and self._ub == other._ub and self._lb == other._lb: - return True - return False - - -class LoConfig: - """Pulse channel LO frequency container.""" - - def __init__( - self, - channel_los: dict[DriveChannel | MeasureChannel, float] | None = None, - lo_ranges: dict[DriveChannel | MeasureChannel, LoRange | tuple[int, int]] | None = None, - ): - """Lo channel configuration data structure. - - Args: - channel_los: Dictionary of mappings from configurable channel to lo - lo_ranges: Dictionary of mappings to be enforced from configurable channel to `LoRange` - - Raises: - PulseError: If channel is not configurable or set lo is out of range. - - """ - self._q_lo_freq: dict[DriveChannel, float] = {} - self._m_lo_freq: dict[MeasureChannel, float] = {} - self._lo_ranges: dict[DriveChannel | MeasureChannel, LoRange] = {} - - lo_ranges = lo_ranges if lo_ranges else {} - for channel, freq in lo_ranges.items(): - self.add_lo_range(channel, freq) - - channel_los = channel_los if channel_los else {} - for channel, freq in channel_los.items(): - self.add_lo(channel, freq) - - def add_lo(self, channel: DriveChannel | MeasureChannel, freq: float): - """Add a lo mapping for a channel.""" - if isinstance(channel, DriveChannel): - # add qubit_lo_freq - self.check_lo(channel, freq) - self._q_lo_freq[channel] = freq - elif isinstance(channel, MeasureChannel): - # add meas_lo_freq - self.check_lo(channel, freq) - self._m_lo_freq[channel] = freq - else: - raise PulseError(f"Specified channel {channel.name} cannot be configured.") - - def add_lo_range( - self, channel: DriveChannel | MeasureChannel, lo_range: LoRange | tuple[int, int] - ): - """Add lo range to configuration. - - Args: - channel: Channel to add lo range for - lo_range: Lo range to add - - """ - if isinstance(lo_range, (list, tuple)): - lo_range = LoRange(*lo_range) - self._lo_ranges[channel] = lo_range - - def check_lo(self, channel: DriveChannel | MeasureChannel, freq: float) -> bool: - """Check that lo is valid for channel. - - Args: - channel: Channel to validate lo for - freq: lo frequency - Raises: - PulseError: If freq is outside of channels range - Returns: - True if lo is valid for channel - """ - lo_ranges = self._lo_ranges - if channel in lo_ranges: - lo_range = lo_ranges[channel] - if not lo_range.includes(freq): - raise PulseError(f"Specified LO freq {freq:f} is out of range {lo_range}") - return True - - def channel_lo(self, channel: DriveChannel | MeasureChannel) -> float: - """Return channel lo. - - Args: - channel: Channel to get lo for - Raises: - PulseError: If channel is not configured - Returns: - Lo of supplied channel if present - """ - if isinstance(channel, DriveChannel): - if channel in self.qubit_los: - return self.qubit_los[channel] - - if isinstance(channel, MeasureChannel): - if channel in self.meas_los: - return self.meas_los[channel] - - raise PulseError(f"Channel {channel} is not configured") - - @property - def qubit_los(self) -> dict[DriveChannel, float]: - """Returns dictionary mapping qubit channels (DriveChannel) to los.""" - return self._q_lo_freq - - @property - def meas_los(self) -> dict[MeasureChannel, float]: - """Returns dictionary mapping measure channels (MeasureChannel) to los.""" - return self._m_lo_freq diff --git a/qiskit/pulse/exceptions.py b/qiskit/pulse/exceptions.py deleted file mode 100644 index 29d5288bc121..000000000000 --- a/qiskit/pulse/exceptions.py +++ /dev/null @@ -1,45 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2019. -# -# 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. - -"""Exception for errors raised by the pulse module.""" -from qiskit.exceptions import QiskitError -from qiskit.utils.deprecate_pulse import deprecate_pulse_func - - -class PulseError(QiskitError): - """Errors raised by the pulse module.""" - - @deprecate_pulse_func - def __init__(self, *message): - """Set the error message.""" - super().__init__(*message) - self.message = " ".join(message) - - def __str__(self): - """Return the message.""" - return repr(self.message) - - -class BackendNotSet(PulseError): - """Raised if the builder context does not have a backend.""" - - -class NoActiveBuilder(PulseError): - """Raised if no builder context is active.""" - - -class UnassignedDurationError(PulseError): - """Raised if instruction duration is unassigned.""" - - -class UnassignedReferenceError(PulseError): - """Raised if subroutine is unassigned.""" diff --git a/qiskit/pulse/filters.py b/qiskit/pulse/filters.py deleted file mode 100644 index 7d9dc33bdf8d..000000000000 --- a/qiskit/pulse/filters.py +++ /dev/null @@ -1,309 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021. -# -# 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. - -"""A collection of functions that filter instructions in a pulse program.""" -from __future__ import annotations -import abc -from functools import singledispatch -from collections.abc import Iterable -from typing import Callable, Any, List - -import numpy as np - -from qiskit.pulse import Schedule, ScheduleBlock, Instruction -from qiskit.pulse.channels import Channel -from qiskit.pulse.schedule import Interval -from qiskit.pulse.exceptions import PulseError - - -@singledispatch -def filter_instructions( - sched, - filters: List[Callable[..., bool]], - negate: bool = False, - recurse_subroutines: bool = True, -): - """A catch-TypeError function which will only get called if none of the other decorated - functions, namely handle_schedule() and handle_scheduleblock(), handle the type passed. - """ - raise TypeError( - f"Type '{type(sched)}' is not valid data format as an input to filter_instructions." - ) - - -@filter_instructions.register -def handle_schedule( - sched: Schedule, - filters: List[Callable[..., bool]], - negate: bool = False, - recurse_subroutines: bool = True, -) -> Schedule: - """A filtering function that takes a schedule and returns a schedule consisting of - filtered instructions. - - Args: - sched: A pulse schedule to be filtered. - filters: List of callback functions that take an instruction and return boolean. - negate: Set `True` to accept an instruction if a filter function returns `False`. - Otherwise the instruction is accepted when the filter function returns `False`. - recurse_subroutines: Set `True` to individually filter instructions inside of a subroutine - defined by the :py:class:`~qiskit.pulse.instructions.Call` instruction. - - Returns: - Filtered pulse schedule. - """ - from qiskit.pulse.transforms import flatten, inline_subroutines - - target_sched = flatten(sched) - if recurse_subroutines: - target_sched = inline_subroutines(target_sched) - - time_inst_tuples = np.array(target_sched.instructions) - - valid_insts = np.ones(len(time_inst_tuples), dtype=bool) - for filt in filters: - valid_insts = np.logical_and(valid_insts, np.array(list(map(filt, time_inst_tuples)))) - - if negate and len(filters) > 0: - valid_insts = ~valid_insts - - filter_schedule = Schedule.initialize_from(sched) - for time, inst in time_inst_tuples[valid_insts]: - filter_schedule.insert(time, inst, inplace=True) - - return filter_schedule - - -@filter_instructions.register -def handle_scheduleblock( - sched_blk: ScheduleBlock, - filters: List[Callable[..., bool]], - negate: bool = False, - recurse_subroutines: bool = True, -) -> ScheduleBlock: - """A filtering function that takes a schedule_block and returns a schedule_block consisting of - filtered instructions. - - Args: - sched_blk: A pulse schedule_block to be filtered. - filters: List of callback functions that take an instruction and return boolean. - negate: Set `True` to accept an instruction if a filter function returns `False`. - Otherwise the instruction is accepted when the filter function returns `False`. - recurse_subroutines: Set `True` to individually filter instructions inside of a subroutine - defined by the :py:class:`~qiskit.pulse.instructions.Call` instruction. - - Returns: - Filtered pulse schedule_block. - """ - from qiskit.pulse.transforms import inline_subroutines - - target_sched_blk = sched_blk - if recurse_subroutines: - target_sched_blk = inline_subroutines(target_sched_blk) - - def apply_filters_to_insts_in_scheblk(blk: ScheduleBlock) -> ScheduleBlock: - blk_new = ScheduleBlock.initialize_from(blk) - for element in blk.blocks: - if isinstance(element, ScheduleBlock): - inner_blk = apply_filters_to_insts_in_scheblk(element) - if len(inner_blk) > 0: - blk_new.append(inner_blk) - - elif isinstance(element, Instruction): - valid_inst = all(filt(element) for filt in filters) - if negate: - valid_inst ^= True - if valid_inst: - blk_new.append(element) - - else: - raise PulseError( - f"An unexpected element '{element}' is included in ScheduleBlock.blocks." - ) - return blk_new - - filter_sched_blk = apply_filters_to_insts_in_scheblk(target_sched_blk) - return filter_sched_blk - - -def composite_filter( - channels: Iterable[Channel] | Channel | None = None, - instruction_types: Iterable[abc.ABCMeta] | abc.ABCMeta | None = None, - time_ranges: Iterable[tuple[int, int]] | None = None, - intervals: Iterable[Interval] | None = None, -) -> list[Callable]: - """A helper function to generate a list of filter functions based on - typical elements to be filtered. - - Args: - channels: For example, ``[DriveChannel(0), AcquireChannel(0)]``. - instruction_types (Optional[Iterable[Type[qiskit.pulse.Instruction]]]): For example, - ``[PulseInstruction, AcquireInstruction]``. - time_ranges: For example, ``[(0, 5), (6, 10)]``. - intervals: For example, ``[(0, 5), (6, 10)]``. - - Returns: - List of filtering functions. - """ - filters = [] - - # An empty list is also valid input for filter generators. - # See unittest `test.python.pulse.test_schedule.TestScheduleFilter.test_empty_filters`. - if channels is not None: - filters.append(with_channels(channels)) - if instruction_types is not None: - filters.append(with_instruction_types(instruction_types)) - if time_ranges is not None: - filters.append(with_intervals(time_ranges)) - if intervals is not None: - filters.append(with_intervals(intervals)) - - return filters - - -def with_channels(channels: Iterable[Channel] | Channel) -> Callable: - """Channel filter generator. - - Args: - channels: List of channels to filter. - - Returns: - A callback function to filter channels. - """ - channels = _if_scalar_cast_to_list(channels) - - @singledispatch - def channel_filter(time_inst): - """A catch-TypeError function which will only get called if none of the other decorated - functions, namely handle_numpyndarray() and handle_instruction(), handle the type passed. - """ - raise TypeError( - f"Type '{type(time_inst)}' is not valid data format as an input to channel_filter." - ) - - @channel_filter.register - def handle_numpyndarray(time_inst: np.ndarray) -> bool: - """Filter channel. - - Args: - time_inst (numpy.ndarray([int, Instruction])): Time - - Returns: - If instruction matches with condition. - """ - return any(chan in channels for chan in time_inst[1].channels) - - @channel_filter.register - def handle_instruction(inst: Instruction) -> bool: - """Filter channel. - - Args: - inst: Instruction - - Returns: - If instruction matches with condition. - """ - return any(chan in channels for chan in inst.channels) - - return channel_filter - - -def with_instruction_types(types: Iterable[abc.ABCMeta] | abc.ABCMeta) -> Callable: - """Instruction type filter generator. - - Args: - types: List of instruction types to filter. - - Returns: - A callback function to filter instructions. - """ - types = _if_scalar_cast_to_list(types) - - @singledispatch - def instruction_filter(time_inst) -> bool: - """A catch-TypeError function which will only get called if none of the other decorated - functions, namely handle_numpyndarray() and handle_instruction(), handle the type passed. - """ - raise TypeError( - f"Type '{type(time_inst)}' is not valid data format as an input to instruction_filter." - ) - - @instruction_filter.register - def handle_numpyndarray(time_inst: np.ndarray) -> bool: - """Filter instruction. - - Args: - time_inst (numpy.ndarray([int, Instruction])): Time - - Returns: - If instruction matches with condition. - """ - return isinstance(time_inst[1], tuple(types)) - - @instruction_filter.register - def handle_instruction(inst: Instruction) -> bool: - """Filter instruction. - - Args: - inst: Instruction - - Returns: - If instruction matches with condition. - """ - return isinstance(inst, tuple(types)) - - return instruction_filter - - -def with_intervals(ranges: Iterable[Interval] | Interval) -> Callable: - """Interval filter generator. - - Args: - ranges: List of intervals ``[t0, t1]`` to filter. - - Returns: - A callback function to filter intervals. - """ - ranges = _if_scalar_cast_to_list(ranges) - - def interval_filter(time_inst) -> bool: - """Filter interval. - Args: - time_inst (Tuple[int, Instruction]): Time - - Returns: - If instruction matches with condition. - """ - for t0, t1 in ranges: - inst_start = time_inst[0] - inst_stop = inst_start + time_inst[1].duration - if t0 <= inst_start and inst_stop <= t1: - return True - return False - - return interval_filter - - -def _if_scalar_cast_to_list(to_list: Any) -> list[Any]: - """A helper function to create python list of input arguments. - - Args: - to_list: Arbitrary object can be converted into a python list. - - Returns: - Python list of input object. - """ - try: - iter(to_list) - except TypeError: - to_list = [to_list] - return to_list diff --git a/qiskit/pulse/instruction_schedule_map.py b/qiskit/pulse/instruction_schedule_map.py deleted file mode 100644 index 96e8ad0a48a6..000000000000 --- a/qiskit/pulse/instruction_schedule_map.py +++ /dev/null @@ -1,421 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2019. -# -# 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. - -# pylint: disable=unused-import - -""" -A convenient way to track reusable subschedules by name and qubit. - -This can be used for scheduling circuits with custom definitions, for instance:: - - inst_map = InstructionScheduleMap() - inst_map.add('new_inst', 0, qubit_0_new_inst_schedule) - - sched = schedule(quantum_circuit, backend, inst_map) - -An instance of this class is instantiated by Pulse-enabled backends and populated with defaults -(if available):: - - inst_map = backend.defaults().instruction_schedule_map - -""" -from __future__ import annotations -import functools -import warnings -from collections import defaultdict -from collections.abc import Iterable, Callable - -from qiskit import circuit -from qiskit.circuit.parameterexpression import ParameterExpression -from qiskit.pulse.calibration_entries import ( - CalibrationEntry, - ScheduleDef, - CallableDef, -) -from qiskit.pulse.exceptions import PulseError -from qiskit.pulse.schedule import Schedule, ScheduleBlock -from qiskit.utils.deprecate_pulse import deprecate_pulse_func - - -class InstructionScheduleMap: - """Mapping from :py:class:`~qiskit.circuit.QuantumCircuit` - :py:class:`qiskit.circuit.Instruction` names and qubits to - :py:class:`~qiskit.pulse.Schedule` s. In particular, the mapping is formatted as type:: - - Dict[str, Dict[Tuple[int], Schedule]] - - where the first key is the name of a circuit instruction (e.g. ``'u1'``, ``'measure'``), the - second key is a tuple of qubit indices, and the final value is a Schedule implementing the - requested instruction. - - These can usually be seen as gate calibrations. - """ - - @deprecate_pulse_func - def __init__(self): - """Initialize a circuit instruction to schedule mapper instance.""" - # The processed and reformatted circuit instruction definitions - - # Do not use lambda function for nested defaultdict, i.e. lambda: defaultdict(CalibrationEntry). - # This crashes qiskit parallel. Note that parallel framework passes args as - # pickled object, however lambda function cannot be pickled. - self._map: dict[str | circuit.instruction.Instruction, dict[tuple, CalibrationEntry]] = ( - defaultdict(functools.partial(defaultdict, CalibrationEntry)) - ) - - # A backwards mapping from qubit to supported instructions - self._qubit_instructions: dict[tuple[int, ...], set] = defaultdict(set) - - def has_custom_gate(self) -> bool: - """Return ``True`` if the map has user provided instruction.""" - for qubit_inst in self._map.values(): - for entry in qubit_inst.values(): - if entry.user_provided: - return True - return False - - @property - def instructions(self) -> list[str]: - """Return all instructions which have definitions. - - By default, these are typically the basis gates along with other instructions such as - measure and reset. - - Returns: - The names of all the circuit instructions which have Schedule definitions in this. - """ - return list(self._map.keys()) - - def qubits_with_instruction( - self, instruction: str | circuit.instruction.Instruction - ) -> list[int | tuple[int, ...]]: - """Return a list of the qubits for which the given instruction is defined. Single qubit - instructions return a flat list, and multiqubit instructions return a list of ordered - tuples. - - Args: - instruction: The name of the circuit instruction. - - Returns: - Qubit indices which have the given instruction defined. This is a list of tuples if the - instruction has an arity greater than 1, or a flat list of ints otherwise. - - Raises: - PulseError: If the instruction is not found. - """ - instruction = _get_instruction_string(instruction) - if instruction not in self._map: - return [] - return [ - qubits[0] if len(qubits) == 1 else qubits - for qubits in sorted(self._map[instruction].keys()) - ] - - def qubit_instructions(self, qubits: int | Iterable[int]) -> list[str]: - """Return a list of the instruction names that are defined by the backend for the given - qubit or qubits. - - Args: - qubits: A qubit index, or a list or tuple of indices. - - Returns: - All the instructions which are defined on the qubits. - - For 1 qubit, all the 1Q instructions defined. For multiple qubits, all the instructions - which apply to that whole set of qubits (e.g. ``qubits=[0, 1]`` may return ``['cx']``). - """ - if _to_tuple(qubits) in self._qubit_instructions: - return list(self._qubit_instructions[_to_tuple(qubits)]) - return [] - - def has( - self, instruction: str | circuit.instruction.Instruction, qubits: int | Iterable[int] - ) -> bool: - """Is the instruction defined for the given qubits? - - Args: - instruction: The instruction for which to look. - qubits: The specific qubits for the instruction. - - Returns: - True iff the instruction is defined. - """ - instruction = _get_instruction_string(instruction) - return instruction in self._map and _to_tuple(qubits) in self._map[instruction] - - def assert_has( - self, instruction: str | circuit.instruction.Instruction, qubits: int | Iterable[int] - ) -> None: - """Error if the given instruction is not defined. - - Args: - instruction: The instruction for which to look. - qubits: The specific qubits for the instruction. - - Raises: - PulseError: If the instruction is not defined on the qubits. - """ - instruction = _get_instruction_string(instruction) - if not self.has(instruction, _to_tuple(qubits)): - # TODO: PulseError is deprecated, this code will be removed in 2.0. - # In the meantime, we catch the deprecation - # warning not to overload users with non-actionable messages - with warnings.catch_warnings(): - warnings.filterwarnings( - "ignore", - category=DeprecationWarning, - message=".*The entire Qiskit Pulse package*", - module="qiskit", - ) - if instruction in self._map: - raise PulseError( - f"Operation '{instruction}' exists, but is only defined for qubits " - f"{self.qubits_with_instruction(instruction)}." - ) - raise PulseError(f"Operation '{instruction}' is not defined for this system.") - - def get( - self, - instruction: str | circuit.instruction.Instruction, - qubits: int | Iterable[int], - *params: complex | ParameterExpression, - **kwparams: complex | ParameterExpression, - ) -> Schedule | ScheduleBlock: - """Return the defined :py:class:`~qiskit.pulse.Schedule` or - :py:class:`~qiskit.pulse.ScheduleBlock` for the given instruction on the given qubits. - - If all keys are not specified this method returns schedule with unbound parameters. - - Args: - instruction: Name of the instruction or the instruction itself. - qubits: The qubits for the instruction. - *params: Command parameters for generating the output schedule. - **kwparams: Keyworded command parameters for generating the schedule. - - Returns: - The Schedule defined for the input. - """ - return self._get_calibration_entry(instruction, qubits).get_schedule(*params, **kwparams) - - def _get_calibration_entry( - self, - instruction: str | circuit.instruction.Instruction, - qubits: int | Iterable[int], - ) -> CalibrationEntry: - """Return the :class:`.CalibrationEntry` without generating schedule. - - When calibration entry is un-parsed Pulse Qobj, this returns calibration - without parsing it. :meth:`CalibrationEntry.get_schedule` method - must be manually called with assigned parameters to get corresponding pulse schedule. - - This method is expected be directly used internally by the V2 backend converter - for faster loading of the backend calibrations. - - Args: - instruction: Name of the instruction or the instruction itself. - qubits: The qubits for the instruction. - - Returns: - The calibration entry. - """ - instruction = _get_instruction_string(instruction) - self.assert_has(instruction, qubits) - - return self._map[instruction][_to_tuple(qubits)] - - def add( - self, - instruction: str | circuit.instruction.Instruction, - qubits: int | Iterable[int], - schedule: Schedule | ScheduleBlock | Callable[..., Schedule | ScheduleBlock], - arguments: list[str] | None = None, - ) -> None: - """Add a new known instruction for the given qubits and its mapping to a pulse schedule. - - Args: - instruction: The name of the instruction to add. - qubits: The qubits which the instruction applies to. - schedule: The Schedule that implements the given instruction. - arguments: List of parameter names to create a parameter-bound schedule from the - associated gate instruction. If :py:meth:`get` is called with arguments rather - than keyword arguments, this parameter list is used to map the input arguments to - parameter objects stored in the target schedule. - - Raises: - PulseError: If the qubits are provided as an empty iterable. - """ - instruction = _get_instruction_string(instruction) - - # validation of target qubit - qubits = _to_tuple(qubits) - if not qubits: - raise PulseError(f"Cannot add definition {instruction} with no target qubits.") - - # generate signature - if isinstance(schedule, (Schedule, ScheduleBlock)): - entry: CalibrationEntry = ScheduleDef(arguments) - elif callable(schedule): - if arguments: - warnings.warn( - "Arguments are overruled by the callback function signature. " - "Input `arguments` are ignored.", - UserWarning, - ) - entry = CallableDef() - else: - raise PulseError( - "Supplied schedule must be one of the Schedule, ScheduleBlock or a " - "callable that outputs a schedule." - ) - entry.define(schedule, user_provided=True) - self._add(instruction, qubits, entry) - - def _add( - self, - instruction_name: str, - qubits: tuple[int, ...], - entry: CalibrationEntry, - ): - """A method to resister calibration entry. - - .. note:: - - This is internal fast-path function, and caller must ensure - the entry is properly formatted. This function may be used by other programs - that load backend calibrations to create Qiskit representation of it. - - Args: - instruction_name: Name of instruction. - qubits: List of qubits that this calibration is applied. - entry: Calibration entry to register. - - :meta public: - """ - self._map[instruction_name][qubits] = entry - self._qubit_instructions[qubits].add(instruction_name) - - def remove( - self, instruction: str | circuit.instruction.Instruction, qubits: int | Iterable[int] - ) -> None: - """Remove the given instruction from the listing of instructions defined in self. - - Args: - instruction: The name of the instruction to add. - qubits: The qubits which the instruction applies to. - """ - instruction = _get_instruction_string(instruction) - qubits = _to_tuple(qubits) - self.assert_has(instruction, qubits) - - del self._map[instruction][qubits] - if not self._map[instruction]: - del self._map[instruction] - - self._qubit_instructions[qubits].remove(instruction) - if not self._qubit_instructions[qubits]: - del self._qubit_instructions[qubits] - - def pop( - self, - instruction: str | circuit.instruction.Instruction, - qubits: int | Iterable[int], - *params: complex | ParameterExpression, - **kwparams: complex | ParameterExpression, - ) -> Schedule | ScheduleBlock: - """Remove and return the defined schedule for the given instruction on the given - qubits. - - Args: - instruction: Name of the instruction. - qubits: The qubits for the instruction. - *params: Command parameters for generating the output schedule. - **kwparams: Keyworded command parameters for generating the schedule. - - Returns: - The Schedule defined for the input. - """ - instruction = _get_instruction_string(instruction) - schedule = self.get(instruction, qubits, *params, **kwparams) - self.remove(instruction, qubits) - return schedule - - def get_parameters( - self, instruction: str | circuit.instruction.Instruction, qubits: int | Iterable[int] - ) -> tuple[str, ...]: - """Return the list of parameters taken by the given instruction on the given qubits. - - Args: - instruction: Name of the instruction. - qubits: The qubits for the instruction. - - Returns: - The names of the parameters required by the instruction. - """ - instruction = _get_instruction_string(instruction) - - self.assert_has(instruction, qubits) - with warnings.catch_warnings(): - warnings.simplefilter(action="ignore", category=DeprecationWarning) - # Prevent `get_signature` from emitting pulse package deprecation warnings - signature = self._map[instruction][_to_tuple(qubits)].get_signature() - return tuple(signature.parameters.keys()) - - def __str__(self): - single_q_insts = "1Q instructions:\n" - multi_q_insts = "Multi qubit instructions:\n" - for qubits, insts in self._qubit_instructions.items(): - if len(qubits) == 1: - single_q_insts += f" q{qubits[0]}: {insts}\n" - else: - multi_q_insts += f" {qubits}: {insts}\n" - instructions = single_q_insts + multi_q_insts - return f"<{self.__class__.__name__}({instructions})>" - - def __eq__(self, other): - if not isinstance(other, InstructionScheduleMap): - return False - - for inst in self.instructions: - for qinds in self.qubits_with_instruction(inst): - try: - if self._map[inst][_to_tuple(qinds)] != other._map[inst][_to_tuple(qinds)]: - return False - except KeyError: - return False - return True - - -def _to_tuple(values: int | Iterable[int]) -> tuple[int, ...]: - """Return the input as a tuple. - - Args: - values: An integer, or iterable of integers. - - Returns: - The input values as a sorted tuple. - """ - try: - return tuple(values) - except TypeError: - return (values,) - - -def _get_instruction_string(inst: str | circuit.instruction.Instruction) -> str: - if isinstance(inst, str): - return inst - else: - try: - return inst.name - except AttributeError as ex: - raise PulseError( - 'Input "inst" has no attribute "name". This should be a circuit "Instruction".' - ) from ex diff --git a/qiskit/pulse/instructions/__init__.py b/qiskit/pulse/instructions/__init__.py deleted file mode 100644 index e97ac27fc62f..000000000000 --- a/qiskit/pulse/instructions/__init__.py +++ /dev/null @@ -1,67 +0,0 @@ -# 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. - -r""" -.. _pulse-insts: - -=============================================== -Instructions (:mod:`qiskit.pulse.instructions`) -=============================================== - -The ``instructions`` module holds the various :obj:`Instruction`\ s which are supported by -Qiskit Pulse. Instructions have operands, which typically include at least one -:py:class:`~qiskit.pulse.channels.Channel` specifying where the instruction will be applied. - -Every instruction has a duration, whether explicitly included as an operand or implicitly defined. -For instance, a :py:class:`~qiskit.pulse.instructions.ShiftPhase` instruction can be instantiated -with operands *phase* and *channel*, for some float ``phase`` and a -:py:class:`~qiskit.pulse.channels.Channel` ``channel``:: - - ShiftPhase(phase, channel) - -The duration of this instruction is implicitly zero. On the other hand, the -:py:class:`~qiskit.pulse.instructions.Delay` instruction takes an explicit duration:: - - Delay(duration, channel) - -An instruction can be added to a :py:class:`~qiskit.pulse.Schedule`, which is a -sequence of scheduled Pulse ``Instruction`` s over many channels. ``Instruction`` s and -``Schedule`` s implement the same interface. - -.. autosummary:: - :toctree: ../stubs/ - - Acquire - Reference - Delay - Play - RelativeBarrier - SetFrequency - ShiftFrequency - SetPhase - ShiftPhase - Snapshot - TimeBlockade - -These are all instances of the same base class: - -.. autoclass:: Instruction -""" -from .acquire import Acquire -from .delay import Delay -from .directives import Directive, RelativeBarrier, TimeBlockade -from .instruction import Instruction -from .frequency import SetFrequency, ShiftFrequency -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 deleted file mode 100644 index 3b5964d4ee3e..000000000000 --- a/qiskit/pulse/instructions/acquire.py +++ /dev/null @@ -1,150 +0,0 @@ -# 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. - -"""The Acquire instruction is used to trigger the qubit measurement unit and provide -some metadata for the acquisition process, for example, where to store classified readout data. -""" -from __future__ import annotations -from qiskit.circuit import ParameterExpression -from qiskit.pulse.channels import MemorySlot, RegisterSlot, AcquireChannel -from qiskit.pulse.configuration import Kernel, Discriminator -from qiskit.pulse.exceptions import PulseError -from qiskit.pulse.instructions.instruction import Instruction -from qiskit.utils.deprecate_pulse import deprecate_pulse_func - - -class Acquire(Instruction): - """The Acquire instruction is used to trigger the ADC associated with a particular qubit; - e.g. instantiated with AcquireChannel(0), the Acquire command will trigger data collection - for the channel associated with qubit 0 readout. This instruction also provides acquisition - metadata: - - * the number of cycles during which to acquire (in terms of dt), - - * the register slot to store classified, intermediary readout results, - - * the memory slot to return classified results, - - * the kernel to integrate raw data for each shot, and - - * the discriminator to classify kerneled IQ points. - """ - - @deprecate_pulse_func - def __init__( - self, - duration: int | ParameterExpression, - channel: AcquireChannel, - mem_slot: MemorySlot | None = None, - reg_slot: RegisterSlot | None = None, - kernel: Kernel | None = None, - discriminator: Discriminator | None = None, - name: str | None = None, - ): - """Create a new Acquire instruction. - - Args: - duration: Length of time to acquire data in terms of dt. - channel: The channel that will acquire data. - mem_slot: The classical memory slot in which to store the classified readout result. - reg_slot: The fast-access register slot in which to store the classified readout - result for fast feedback. - kernel: A ``Kernel`` for integrating raw data. - discriminator: A ``Discriminator`` for discriminating kerneled IQ data into 0/1 - results. - name: Name of the instruction for display purposes. - """ - 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 - scheduled on. - """ - return self.operands[1] - - @property - def channels(self) -> tuple[AcquireChannel | MemorySlot | RegisterSlot, ...]: - """Returns the channels that this schedule uses.""" - return tuple(self.operands[ind] for ind in (1, 2, 3) if self.operands[ind] is not None) - - @property - def duration(self) -> int | ParameterExpression: - """Duration of this instruction.""" - return self.operands[0] - - @property - def kernel(self) -> Kernel: - """Return kernel settings.""" - return self._operands[4] - - @property - def discriminator(self) -> Discriminator: - """Return discrimination settings.""" - return self._operands[5] - - @property - def acquire(self) -> AcquireChannel: - """Acquire channel to acquire data. The ``AcquireChannel`` index maps trivially to - qubit index. - """ - return self.channel - - @property - def mem_slot(self) -> MemorySlot: - """The classical memory slot which will store the classified readout result.""" - return self.operands[2] - - @property - def reg_slot(self) -> RegisterSlot: - """The fast-access register slot which will store the classified readout result for - fast-feedback computation. - """ - return self.operands[3] - - def is_parameterized(self) -> bool: - """Return True iff the instruction is parameterized.""" - return isinstance(self.duration, ParameterExpression) or super().is_parameterized() - - def __repr__(self) -> str: - mem_slot_repr = str(self.mem_slot) if self.mem_slot else "" - reg_slot_repr = str(self.reg_slot) if self.reg_slot else "" - kernel_repr = str(self.kernel) if self.kernel else "" - discriminator_repr = str(self.discriminator) if self.discriminator else "" - return ( - f"{self.__class__.__name__}({self.duration}, {str(self.channel)}, " - f"{mem_slot_repr}, {reg_slot_repr}, {kernel_repr}, {discriminator_repr})" - ) diff --git a/qiskit/pulse/instructions/delay.py b/qiskit/pulse/instructions/delay.py deleted file mode 100644 index 6dd028c94fcd..000000000000 --- a/qiskit/pulse/instructions/delay.py +++ /dev/null @@ -1,71 +0,0 @@ -# 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. - -"""An instruction for blocking time on a channel; useful for scheduling alignment.""" -from __future__ import annotations - -from qiskit.circuit import ParameterExpression -from qiskit.pulse.channels import Channel -from qiskit.pulse.instructions.instruction import Instruction -from qiskit.utils.deprecate_pulse import deprecate_pulse_func - - -class Delay(Instruction): - """A blocking instruction with no other effect. The delay is used for aligning and scheduling - other instructions. - - Example: - - To schedule an instruction at time = 10, on a channel assigned to the variable ``channel``, - the following could be used:: - - sched = Schedule(name="Delay instruction example") - sched += Delay(10, channel) - sched += Gaussian(duration, amp, sigma, channel) - - The ``channel`` will output no signal from time=0 up until time=10. - """ - - @deprecate_pulse_func - def __init__( - self, - duration: int | ParameterExpression, - channel: Channel, - name: str | None = None, - ): - """Create a new delay instruction. - - No other instruction may be scheduled within a ``Delay``. - - Args: - duration: Length of time of the delay in terms of dt. - channel: The channel that will have the delay. - name: Name of the delay for display purposes. - """ - super().__init__(operands=(duration, channel), name=name) - - @property - def channel(self) -> Channel: - """Return the :py:class:`~qiskit.pulse.channels.Channel` that this instruction is - scheduled on. - """ - return self.operands[1] - - @property - def channels(self) -> tuple[Channel]: - """Returns the channels that this schedule uses.""" - return (self.channel,) - - @property - def duration(self) -> int | ParameterExpression: - """Duration of this instruction.""" - return self.operands[0] diff --git a/qiskit/pulse/instructions/directives.py b/qiskit/pulse/instructions/directives.py deleted file mode 100644 index 1a9731798fea..000000000000 --- a/qiskit/pulse/instructions/directives.py +++ /dev/null @@ -1,162 +0,0 @@ -# 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. - -"""Directives are hints to the pulse compiler for how to process its input programs.""" -from __future__ import annotations - -from abc import ABC - -from qiskit.pulse import channels as chans -from qiskit.pulse.instructions import instruction -from qiskit.pulse.exceptions import PulseError -from qiskit.utils.deprecate_pulse import deprecate_pulse_func - - -class Directive(instruction.Instruction, ABC): - """A compiler directive. - - This is a hint to the pulse compiler and is not loaded into hardware. - """ - - @property - def duration(self) -> int: - """Duration of this instruction.""" - return 0 - - -class RelativeBarrier(Directive): - """Pulse ``RelativeBarrier`` directive.""" - - @deprecate_pulse_func - def __init__(self, *channels: chans.Channel, name: str | None = None): - """Create a relative barrier directive. - - The barrier directive blocks instructions within the same schedule - as the barrier on channels contained within this barrier from moving - through the barrier in time. - - Args: - channels: The channel that the barrier applies to. - name: Name of the directive for display purposes. - """ - super().__init__(operands=tuple(channels), name=name) - - @property - def channels(self) -> tuple[chans.Channel, ...]: - """Returns the channels that this schedule uses.""" - return self.operands - - def __eq__(self, other: object) -> bool: - """Verify two barriers are equivalent.""" - return isinstance(other, type(self)) and set(self.channels) == set(other.channels) - - -class TimeBlockade(Directive): - """Pulse ``TimeBlockade`` directive. - - This instruction is intended to be used internally within the pulse builder, - to convert :class:`.Schedule` into :class:`.ScheduleBlock`. - Because :class:`.ScheduleBlock` cannot take an absolute instruction time interval, - this directive helps the block representation to find the starting time of an instruction. - - Example: - - This schedule plays constant pulse at t0 = 120. - - .. plot:: - :include-source: - :nofigs: - - from qiskit.pulse import Schedule, Play, Constant, DriveChannel - - schedule = Schedule() - schedule.insert(120, Play(Constant(10, 0.1), DriveChannel(0))) - - This schedule block is expected to be identical to above at a time of execution. - - .. plot:: - :include-source: - :nofigs: - :context: reset - - from qiskit.pulse import ScheduleBlock, Play, Constant, DriveChannel - from qiskit.pulse.instructions import TimeBlockade - - block = ScheduleBlock() - block.append(TimeBlockade(120, DriveChannel(0))) - block.append(Play(Constant(10, 0.1), DriveChannel(0))) - - Such conversion may be done by - - .. plot:: - :include-source: - :nofigs: - :context: - - from qiskit.pulse.transforms import block_to_schedule, remove_directives - - schedule = remove_directives(block_to_schedule(block)) - - - .. note:: - - The TimeBlockade instruction behaves almost identically - to :class:`~qiskit.pulse.instructions.Delay` instruction. - However, the TimeBlockade is just a compiler directive and must be removed before execution. - This may be done by :func:`~qiskit.pulse.transforms.remove_directives` transform. - Once these directives are removed, occupied timeslots are released and - user can insert another instruction without timing overlap. - """ - - @deprecate_pulse_func - def __init__( - self, - duration: int, - channel: chans.Channel, - name: str | None = None, - ): - """Create a time blockade directive. - - Args: - duration: Length of time of the occupation in terms of dt. - channel: The channel that will be the occupied. - name: Name of the time blockade for display purposes. - """ - super().__init__(operands=(duration, channel), name=name) - - def _validate(self): - """Called after initialization to validate instruction data. - - Raises: - PulseError: If the input ``duration`` is not integer value. - """ - if not isinstance(self.duration, int): - raise PulseError( - "TimeBlockade duration cannot be parameterized. Specify an integer duration value." - ) - - @property - def channel(self) -> chans.Channel: - """Return the :py:class:`~qiskit.pulse.channels.Channel` that this instruction is - scheduled on. - """ - return self.operands[1] - - @property - def channels(self) -> tuple[chans.Channel]: - """Returns the channels that this schedule uses.""" - return (self.channel,) - - @property - def duration(self) -> int: - """Duration of this instruction.""" - return self.operands[0] diff --git a/qiskit/pulse/instructions/frequency.py b/qiskit/pulse/instructions/frequency.py deleted file mode 100644 index 545d26c92639..000000000000 --- a/qiskit/pulse/instructions/frequency.py +++ /dev/null @@ -1,135 +0,0 @@ -# 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. - -"""Frequency instructions module. These instructions allow the user to manipulate -the frequency of a channel. -""" -from typing import Optional, Union, Tuple - -from qiskit.circuit.parameterexpression import ParameterExpression -from qiskit.pulse.channels import PulseChannel -from qiskit.pulse.instructions.instruction import Instruction -from qiskit.pulse.exceptions import PulseError -from qiskit.utils.deprecate_pulse import deprecate_pulse_func - - -class SetFrequency(Instruction): - r"""Set the channel frequency. This instruction operates on ``PulseChannel`` s. - A ``PulseChannel`` creates pulses of the form - - .. math:: - Re[\exp(i 2\pi f jdt + \phi) d_j]. - - Here, :math:`f` is the frequency of the channel. The instruction ``SetFrequency`` allows - the user to set the value of :math:`f`. All pulses that are played on a channel - after SetFrequency has been called will have the corresponding frequency. - - The duration of SetFrequency is 0. - """ - - @deprecate_pulse_func - def __init__( - self, - frequency: Union[float, ParameterExpression], - channel: PulseChannel, - name: Optional[str] = None, - ): - """Creates a new set channel frequency instruction. - - Args: - frequency: New frequency of the channel in Hz. - channel: The channel this instruction operates on. - name: Name of this set channel frequency instruction. - """ - 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.""" - return self.operands[0] - - @property - def channel(self) -> PulseChannel: - """Return the :py:class:`~qiskit.pulse.channels.Channel` that this instruction is - scheduled on. - """ - return self.operands[1] - - @property - def channels(self) -> Tuple[PulseChannel]: - """Returns the channels that this schedule uses.""" - return (self.channel,) - - @property - def duration(self) -> int: - """Duration of this instruction.""" - return 0 - - -class ShiftFrequency(Instruction): - """Shift the channel frequency away from the current frequency.""" - - @deprecate_pulse_func - def __init__( - self, - frequency: Union[float, ParameterExpression], - channel: PulseChannel, - name: Optional[str] = None, - ): - """Creates a new shift frequency instruction. - - Args: - frequency: Frequency shift of the channel in Hz. - channel: The channel this instruction operates on. - name: Name of this set channel frequency instruction. - """ - 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.""" - return self.operands[0] - - @property - def channel(self) -> PulseChannel: - """Return the :py:class:`~qiskit.pulse.channels.Channel` that this instruction is - scheduled on. - """ - return self.operands[1] - - @property - def channels(self) -> Tuple[PulseChannel]: - """Returns the channels that this schedule uses.""" - return (self.channel,) - - @property - def duration(self) -> int: - """Duration of this instruction.""" - return 0 diff --git a/qiskit/pulse/instructions/instruction.py b/qiskit/pulse/instructions/instruction.py deleted file mode 100644 index fda854d2b7eb..000000000000 --- a/qiskit/pulse/instructions/instruction.py +++ /dev/null @@ -1,270 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2019. -# -# 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. - -""" -``Instruction`` s are single operations within a :py:class:`~qiskit.pulse.Schedule`, and can be -used the same way as :py:class:`~qiskit.pulse.Schedule` s. - -For example:: - - duration = 10 - channel = DriveChannel(0) - sched = Schedule() - sched += Delay(duration, channel) # Delay is a specific subclass of Instruction -""" -from __future__ import annotations -from abc import ABC, abstractmethod -from collections.abc import Iterable - -from qiskit.circuit import Parameter, ParameterExpression -from qiskit.pulse.channels import Channel -from qiskit.pulse.exceptions import PulseError -from qiskit.utils.deprecate_pulse import deprecate_pulse_func - - -# pylint: disable=bad-docstring-quotes - - -class Instruction(ABC): - """The smallest schedulable unit: a single instruction. It has a fixed duration and specified - channels. - """ - - @deprecate_pulse_func - def __init__( - self, - operands: tuple, - name: str | None = None, - ): - """Instruction initializer. - - Args: - operands: The argument list. - name: Optional display name for this instruction. - """ - self._operands = operands - self._name = name - 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.") - - @property - def name(self) -> str: - """Name of this instruction.""" - return self._name - - @property - def id(self) -> int: # pylint: disable=invalid-name - """Unique identifier for this instruction.""" - return id(self) - - @property - def operands(self) -> tuple: - """Return instruction operands.""" - return self._operands - - @property - @abstractmethod - def channels(self) -> tuple[Channel, ...]: - """Returns the channels that this schedule uses.""" - raise NotImplementedError - - @property - def start_time(self) -> int: - """Relative begin time of this instruction.""" - return 0 - - @property - def stop_time(self) -> int: - """Relative end time of this instruction.""" - return self.duration - - @property - def duration(self) -> int | ParameterExpression: - """Duration of this instruction.""" - raise NotImplementedError - - @property - def _children(self) -> tuple["Instruction", ...]: - """Instruction has no child nodes.""" - return () - - @property - def instructions(self) -> tuple[tuple[int, "Instruction"], ...]: - """Iterable for getting instructions from Schedule tree.""" - return tuple(self._instructions()) - - def ch_duration(self, *channels: Channel) -> int: - """Return duration of the supplied channels in this Instruction. - - Args: - *channels: Supplied channels - """ - return self.ch_stop_time(*channels) - - def ch_start_time(self, *channels: Channel) -> int: - # pylint: disable=unused-argument - """Return minimum start time for supplied channels. - - Args: - *channels: Supplied channels - """ - return 0 - - def ch_stop_time(self, *channels: Channel) -> int: - """Return maximum start time for supplied channels. - - Args: - *channels: Supplied channels - """ - if any(chan in self.channels for chan in channels): - return self.duration - return 0 - - def _instructions(self, time: int = 0) -> Iterable[tuple[int, "Instruction"]]: - """Iterable for flattening Schedule tree. - - Args: - time: Shifted time of this node due to parent - - Yields: - Tuple[int, Union['Schedule, 'Instruction']]: Tuple of the form - (start_time, instruction). - """ - yield (time, self) - - def shift(self, time: int, name: str | None = None): - """Return a new schedule shifted forward by `time`. - - Args: - time: Time to shift by - name: Name of the new schedule. Defaults to name of self - - Returns: - Schedule: The shifted schedule. - """ - from qiskit.pulse.schedule import Schedule - - if name is None: - name = self.name - return Schedule((time, self), name=name) - - def insert(self, start_time: int, schedule, name: str | None = None): - """Return a new :class:`~qiskit.pulse.Schedule` with ``schedule`` inserted within - ``self`` at ``start_time``. - - Args: - start_time: Time to insert the schedule schedule - schedule (Union['Schedule', 'Instruction']): Schedule or instruction to insert - name: Name of the new schedule. Defaults to name of self - - Returns: - Schedule: A new schedule with ``schedule`` inserted with this instruction at t=0. - """ - from qiskit.pulse.schedule import Schedule - - if name is None: - name = self.name - return Schedule(self, (start_time, schedule), name=name) - - def append(self, schedule, name: str | None = None): - """Return a new :class:`~qiskit.pulse.Schedule` with ``schedule`` inserted at the - maximum time over all channels shared between ``self`` and ``schedule``. - - Args: - schedule (Union['Schedule', 'Instruction']): Schedule or instruction to be appended - name: Name of the new schedule. Defaults to name of self - - Returns: - Schedule: A new schedule with ``schedule`` a this instruction at t=0. - """ - common_channels = set(self.channels) & set(schedule.channels) - time = self.ch_stop_time(*common_channels) - return self.insert(time, schedule, name=name) - - @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: - parameters |= _get_parameters_recursive(op) - return parameters - - def is_parameterized(self) -> bool: - """Return True iff the instruction is parameterized.""" - return any(self.parameters) - - def __eq__(self, other: object) -> bool: - """Check if this Instruction is equal to the `other` instruction. - - Equality is determined by the instruction sharing the same operands and channels. - """ - if not isinstance(other, Instruction): - return NotImplemented - return isinstance(other, type(self)) and self.operands == other.operands - - def __hash__(self) -> int: - return hash((type(self), self.operands, self.name)) - - def __add__(self, other): - """Return a new schedule with `other` inserted within `self` at `start_time`. - - Args: - other (Union['Schedule', 'Instruction']): Schedule or instruction to be appended - - Returns: - Schedule: A new schedule with ``schedule`` appended after this instruction at t=0. - """ - return self.append(other) - - def __or__(self, other): - """Return a new schedule which is the union of `self` and `other`. - - Args: - other (Union['Schedule', 'Instruction']): Schedule or instruction to union with - - Returns: - Schedule: A new schedule with ``schedule`` inserted with this instruction at t=0 - """ - return self.insert(0, other) - - def __lshift__(self, time: int): - """Return a new schedule which is shifted forward by `time`. - - Returns: - Schedule: The shifted schedule - """ - return self.shift(time) - - def __repr__(self) -> str: - operands = ", ".join(str(op) for op in self.operands) - name_repr = f", name='{self.name}'" if self.name else "" - return f"{self.__class__.__name__}({operands}{name_repr})" diff --git a/qiskit/pulse/instructions/phase.py b/qiskit/pulse/instructions/phase.py deleted file mode 100644 index 1d08918cb7e9..000000000000 --- a/qiskit/pulse/instructions/phase.py +++ /dev/null @@ -1,152 +0,0 @@ -# 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. - -"""The phase instructions update the modulation phase of pulses played on a channel. -This includes ``SetPhase`` instructions which lock the modulation to a particular phase -at that moment, and ``ShiftPhase`` instructions which increase the existing phase by a -relative amount. -""" -from typing import Optional, Union, Tuple - -from qiskit.circuit import ParameterExpression -from qiskit.pulse.channels import PulseChannel -from qiskit.pulse.instructions.instruction import Instruction -from qiskit.pulse.exceptions import PulseError -from qiskit.utils.deprecate_pulse import deprecate_pulse_func - - -class ShiftPhase(Instruction): - r"""The shift phase instruction updates the modulation phase of proceeding pulses played on the - same :py:class:`~qiskit.pulse.channels.Channel`. It is a relative increase in phase determined - by the ``phase`` operand. - - In particular, a PulseChannel creates pulses of the form - - .. math:: - Re[\exp(i 2\pi f jdt + \phi) d_j]. - - The ``ShiftPhase`` instruction causes :math:`\phi` to be increased by the instruction's - ``phase`` operand. This will affect all pulses following on the same channel. - - The qubit phase is tracked in software, enabling instantaneous, nearly error-free Z-rotations - by using a ShiftPhase to update the frame tracking the qubit state. - """ - - @deprecate_pulse_func - def __init__( - self, - phase: Union[complex, ParameterExpression], - channel: PulseChannel, - name: Optional[str] = None, - ): - """Instantiate a shift phase instruction, increasing the output signal phase on ``channel`` - by ``phase`` [radians]. - - Args: - 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 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.""" - return self.operands[0] - - @property - def channel(self) -> PulseChannel: - """Return the :py:class:`~qiskit.pulse.channels.Channel` that this instruction is - scheduled on. - """ - return self.operands[1] - - @property - def channels(self) -> Tuple[PulseChannel]: - """Returns the channels that this schedule uses.""" - return (self.channel,) - - @property - def duration(self) -> int: - """Duration of this instruction.""" - return 0 - - -class SetPhase(Instruction): - r"""The set phase instruction sets the phase of the proceeding pulses on that channel - to ``phase`` radians. - - In particular, a PulseChannel creates pulses of the form - - .. math:: - - Re[\exp(i 2\pi f jdt + \phi) d_j] - - The ``SetPhase`` instruction sets :math:`\phi` to the instruction's ``phase`` operand. - """ - - @deprecate_pulse_func - def __init__( - self, - phase: Union[complex, ParameterExpression], - channel: PulseChannel, - name: Optional[str] = None, - ): - """Instantiate a set phase instruction, setting the output signal phase on ``channel`` - to ``phase`` [radians]. - - Args: - 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 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.""" - return self.operands[0] - - @property - def channel(self) -> PulseChannel: - """Return the :py:class:`~qiskit.pulse.channels.Channel` that this instruction is - scheduled on. - """ - return self.operands[1] - - @property - def channels(self) -> Tuple[PulseChannel]: - """Returns the channels that this schedule uses.""" - return (self.channel,) - - @property - def duration(self) -> int: - """Duration of this instruction.""" - return 0 diff --git a/qiskit/pulse/instructions/play.py b/qiskit/pulse/instructions/play.py deleted file mode 100644 index 8c86555bbc8c..000000000000 --- a/qiskit/pulse/instructions/play.py +++ /dev/null @@ -1,99 +0,0 @@ -# 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. - -"""An instruction to transmit a given pulse on a ``PulseChannel`` (i.e., those which support -transmitted pulses, such as ``DriveChannel``). -""" -from __future__ import annotations - -from qiskit.circuit import Parameter -from qiskit.circuit.parameterexpression import ParameterExpression -from qiskit.pulse.channels import PulseChannel -from qiskit.pulse.exceptions import PulseError -from qiskit.pulse.instructions.instruction import Instruction -from qiskit.pulse.library.pulse import Pulse -from qiskit.utils.deprecate_pulse import deprecate_pulse_func - - -class Play(Instruction): - """This instruction is responsible for applying a pulse on a channel. - - The pulse specifies the exact time dynamics of the output signal envelope for a limited - time. The output is modulated by a phase and frequency which are controlled by separate - instructions. The pulse duration must be fixed, and is implicitly given in terms of the - cycle time, dt, of the backend. - """ - - @deprecate_pulse_func - def __init__(self, pulse: Pulse, channel: PulseChannel, name: str | None = None): - """Create a new pulse instruction. - - Args: - pulse: A pulse waveform description, such as - :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``. - """ - 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.""" - return self.operands[0] - - @property - def channel(self) -> PulseChannel: - """Return the :py:class:`~qiskit.pulse.channels.Channel` that this instruction is - scheduled on. - """ - return self.operands[1] - - @property - def channels(self) -> tuple[PulseChannel]: - """Returns the channels that this schedule uses.""" - return (self.channel,) - - @property - def duration(self) -> int | ParameterExpression: - """Duration of this instruction.""" - return self.pulse.duration - - @property - def parameters(self) -> set[Parameter]: - """Parameters which determine the instruction behavior.""" - parameters: set[Parameter] = 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): - parameters = parameters | pulse_param_expr.parameters - - if self.channel.is_parameterized(): - parameters = parameters | self.channel.parameters - - return parameters diff --git a/qiskit/pulse/instructions/reference.py b/qiskit/pulse/instructions/reference.py deleted file mode 100644 index 1f17327877a7..000000000000 --- a/qiskit/pulse/instructions/reference.py +++ /dev/null @@ -1,100 +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. - -"""Reference instruction that is a placeholder for subroutine.""" -from __future__ import annotations - -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 -from qiskit.utils.deprecate_pulse import deprecate_pulse_func - - -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 = "," - - @deprecate_pulse_func - 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) -> 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 deleted file mode 100644 index 1692d13abc8f..000000000000 --- a/qiskit/pulse/instructions/snapshot.py +++ /dev/null @@ -1,82 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2019. -# -# 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. - -"""A simulator instruction to capture output within a simulation. The types of snapshot -instructions available are determined by the simulator being used. -""" -from typing import Optional, Tuple - -from qiskit.pulse.channels import SnapshotChannel -from qiskit.pulse.exceptions import PulseError -from qiskit.pulse.instructions.instruction import Instruction -from qiskit.utils.deprecate_pulse import deprecate_pulse_func - - -class Snapshot(Instruction): - """An instruction targeted for simulators, to capture a moment in the simulation.""" - - @deprecate_pulse_func - def __init__(self, label: str, snapshot_type: str = "statevector", name: Optional[str] = None): - """Create new snapshot. - - Args: - label: Snapshot label which is used to identify the snapshot in the output. - snapshot_type: Type of snapshot, e.g., “state” (take a snapshot of the quantum state). - 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. - """ - 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.""" - return self.operands[0] - - @property - def type(self) -> str: - """Type of snapshot.""" - return self.operands[1] - - @property - def channel(self) -> SnapshotChannel: - """Return the :py:class:`~qiskit.pulse.channels.Channel` that this instruction is - scheduled on; trivially, a ``SnapshotChannel``. - """ - return self._channel - - @property - def channels(self) -> Tuple[SnapshotChannel]: - """Returns the channels that this schedule uses.""" - return (self.channel,) - - @property - def duration(self) -> int: - """Duration of this instruction.""" - return 0 - - def is_parameterized(self) -> bool: - """Return True iff the instruction is parameterized.""" - return False diff --git a/qiskit/pulse/library/__init__.py b/qiskit/pulse/library/__init__.py deleted file mode 100644 index 99d382e63f91..000000000000 --- a/qiskit/pulse/library/__init__.py +++ /dev/null @@ -1,97 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2019. -# -# 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. - -""" -=========================================== -Pulse Library (:mod:`qiskit.pulse.library`) -=========================================== - -This library provides Pulse users with convenient methods to build Pulse waveforms. - -A pulse programmer can choose from one of several :ref:`pulse_models` such as -:class:`~Waveform` and :class:`~SymbolicPulse` to create a pulse program. -The :class:`~Waveform` model directly stores the waveform data points in each class instance. -This model provides the most flexibility to express arbitrary waveforms and allows -a rapid prototyping of new control techniques. However, this model is typically memory -inefficient and might be hard to scale to large-size quantum processors. -A user can directly instantiate the :class:`~Waveform` class with ``samples`` argument -which is usually a complex numpy array or any kind of array-like data. - -In contrast, the :class:`~SymbolicPulse` model only stores the function and its parameters -that generate the waveform in a class instance. -It thus provides greater memory efficiency at the price of less flexibility in the waveform. -This model also defines a small set of pulse subclasses in :ref:`symbolic_pulses` -which are commonly used in superconducting quantum processors. -An instance of these subclasses can be serialized in the :ref:`qpy_format` -while keeping the memory-efficient parametric representation of waveforms. -Note that :class:`~Waveform` object can be generated from an instance of -a :class:`~SymbolicPulse` which will set values for the parameters and -sample the parametric expression to create the :class:`~Waveform`. - - -.. _pulse_models: - -Pulse Models -============ - -.. autosummary:: - :toctree: ../stubs/ - - Waveform - SymbolicPulse - - -.. _symbolic_pulses: - -Parametric Pulse Representation -=============================== - -.. autosummary:: - :toctree: ../stubs/ - - Constant - Drag - Gaussian - GaussianSquare - GaussianSquareDrag - gaussian_square_echo - GaussianDeriv - Sin - Cos - Sawtooth - Triangle - Square - Sech - SechDeriv - -""" - -from .symbolic_pulses import ( - SymbolicPulse, - ScalableSymbolicPulse, - Gaussian, - GaussianSquare, - GaussianSquareDrag, - gaussian_square_echo, - GaussianDeriv, - Drag, - Constant, - Sin, - Cos, - Sawtooth, - Triangle, - Square, - Sech, - SechDeriv, -) -from .pulse import Pulse -from .waveform import Waveform diff --git a/qiskit/pulse/library/continuous.py b/qiskit/pulse/library/continuous.py deleted file mode 100644 index be69ae8c5d02..000000000000 --- a/qiskit/pulse/library/continuous.py +++ /dev/null @@ -1,430 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2019. -# -# 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. - -# pylint: disable=invalid-unary-operand-type - -"""Module for builtin continuous pulse functions.""" -from __future__ import annotations - -import functools - -import numpy as np -from qiskit.pulse.exceptions import PulseError - - -def constant(times: np.ndarray, amp: complex) -> np.ndarray: - """Continuous constant pulse. - - Args: - times: Times to output pulse for. - amp: Complex pulse amplitude. - """ - return np.full(len(times), amp, dtype=np.complex128) - - -def zero(times: np.ndarray) -> np.ndarray: - """Continuous zero pulse. - - Args: - times: Times to output pulse for. - """ - return constant(times, 0) - - -def square(times: np.ndarray, amp: complex, freq: float, phase: float = 0) -> np.ndarray: - """Continuous square wave. - - Args: - times: Times to output wave for. - amp: Pulse amplitude. Wave range is [-amp, amp]. - freq: Pulse frequency. units of 1/dt. - phase: Pulse phase. - """ - x = times * freq + phase / np.pi - return amp * (2 * (2 * np.floor(x) - np.floor(2 * x)) + 1).astype(np.complex128) - - -def sawtooth(times: np.ndarray, amp: complex, freq: float, phase: float = 0) -> np.ndarray: - """Continuous sawtooth wave. - - Args: - times: Times to output wave for. - amp: Pulse amplitude. Wave range is [-amp, amp]. - freq: Pulse frequency. units of 1/dt. - phase: Pulse phase. - """ - x = times * freq + phase / np.pi - return amp * 2 * (x - np.floor(1 / 2 + x)).astype(np.complex128) - - -def triangle(times: np.ndarray, amp: complex, freq: float, phase: float = 0) -> np.ndarray: - """Continuous triangle wave. - - Args: - times: Times to output wave for. - amp: Pulse amplitude. Wave range is [-amp, amp]. - freq: Pulse frequency. units of 1/dt. - phase: Pulse phase. - """ - return amp * (-2 * np.abs(sawtooth(times, 1, freq, phase=(phase - np.pi / 2) / 2)) + 1).astype( - np.complex128 - ) - - -def cos(times: np.ndarray, amp: complex, freq: float, phase: float = 0) -> np.ndarray: - """Continuous cosine wave. - - Args: - times: Times to output wave for. - amp: Pulse amplitude. - freq: Pulse frequency, units of 1/dt. - phase: Pulse phase. - """ - return amp * np.cos(2 * np.pi * freq * times + phase).astype(np.complex128) - - -def sin(times: np.ndarray, amp: complex, freq: float, phase: float = 0) -> np.ndarray: - """Continuous cosine wave. - - Args: - times: Times to output wave for. - amp: Pulse amplitude. - freq: Pulse frequency, units of 1/dt. - phase: Pulse phase. - """ - return amp * np.sin(2 * np.pi * freq * times + phase).astype(np.complex128) - - -def _fix_gaussian_width( - gaussian_samples: np.ndarray, - amp: complex, - center: float, - sigma: float, - zeroed_width: float | None = None, - rescale_amp: bool = False, - ret_scale_factor: bool = False, -) -> np.ndarray | tuple[np.ndarray, float]: - r"""Enforce that the supplied gaussian pulse is zeroed at a specific width. - - This is achieved by subtracting $\Omega_g(center \pm zeroed_width/2)$ from all samples. - - amp: Pulse amplitude at `center`. - center: Center (mean) of pulse. - sigma: Standard deviation of pulse. - zeroed_width: Subtract baseline from gaussian pulses to make sure - $\Omega_g(center \pm zeroed_width/2)=0$ is satisfied. This is used to avoid - large discontinuities at the start of a gaussian pulse. If unsupplied, - defaults to $2*(center + 1)$ such that $\Omega_g(-1)=0$ and $\Omega_g(2*(center + 1))=0$. - rescale_amp: If True the pulse will be rescaled so that $\Omega_g(center)=amp$. - ret_scale_factor: Return amplitude scale factor. - """ - if zeroed_width is None: - zeroed_width = 2 * (center + 1) - - zero_offset = gaussian(np.array([zeroed_width / 2]), amp, 0, sigma) - gaussian_samples -= zero_offset - amp_scale_factor: complex | float | np.ndarray = 1.0 - if rescale_amp: - amp_scale_factor = amp / (amp - zero_offset) if amp - zero_offset != 0 else 1.0 - gaussian_samples *= amp_scale_factor - - if ret_scale_factor: - return gaussian_samples, amp_scale_factor - return gaussian_samples - - -def gaussian( - times: np.ndarray, - amp: complex, - center: float, - sigma: float, - zeroed_width: float | None = None, - rescale_amp: bool = False, - ret_x: bool = False, -) -> np.ndarray | tuple[np.ndarray, np.ndarray]: - r"""Continuous unnormalized gaussian pulse. - - Integrated area under curve is $\Omega_g(amp, sigma) = amp \times np.sqrt(2\pi \sigma^2)$ - - Args: - times: Times to output pulse for. - amp: Pulse amplitude at `center`. If `zeroed_width` is set pulse amplitude at center - will be $amp-\Omega_g(center \pm zeroed_width/2)$ unless `rescale_amp` is set, - in which case all samples will be rescaled such that the center - amplitude will be `amp`. - center: Center (mean) of pulse. - sigma: Width (standard deviation) of pulse. - zeroed_width: Subtract baseline from gaussian pulses to make sure - $\Omega_g(center \pm zeroed_width/2)=0$ is satisfied. This is used to avoid - large discontinuities at the start of a gaussian pulse. - rescale_amp: If `zeroed_width` is not `None` and `rescale_amp=True` the pulse will - be rescaled so that $\Omega_g(center)=amp$. - ret_x: Return centered and standard deviation normalized pulse location. - $x=(times-center)/sigma. - """ - times = np.asarray(times, dtype=np.complex128) - x = (times - center) / sigma - gauss = amp * np.exp(-(x**2) / 2).astype(np.complex128) - - if zeroed_width is not None: - gauss = _fix_gaussian_width( - gauss, - amp=amp, - center=center, - sigma=sigma, - zeroed_width=zeroed_width, - rescale_amp=rescale_amp, - ) - - if ret_x: - return gauss, x - return gauss - - -def gaussian_deriv( - times: np.ndarray, - amp: complex, - center: float, - sigma: float, - ret_gaussian: bool = False, - zeroed_width: float | None = None, - rescale_amp: bool = False, -) -> np.ndarray | tuple[np.ndarray, np.ndarray]: - r"""Continuous unnormalized gaussian derivative pulse. - - Args: - times: Times to output pulse for. - amp: Pulse amplitude at `center`. - center: Center (mean) of pulse. - sigma: Width (standard deviation) of pulse. - ret_gaussian: Return gaussian with which derivative was taken with. - zeroed_width: Subtract baseline of pulse to make sure - $\Omega_g(center \pm zeroed_width/2)=0$ is satisfied. This is used to avoid - large discontinuities at the start of a pulse. - rescale_amp: If `zeroed_width` is not `None` and `rescale_amp=True` the pulse will - be rescaled so that $\Omega_g(center)=amp$. - """ - gauss, x = gaussian( - times, - amp=amp, - center=center, - sigma=sigma, - zeroed_width=zeroed_width, - rescale_amp=rescale_amp, - ret_x=True, - ) - gauss_deriv = -x / sigma * gauss # Note that x is shifted and normalized by sigma - if ret_gaussian: - return gauss_deriv, gauss - return gauss_deriv - - -def _fix_sech_width( - sech_samples: np.ndarray, - amp: complex, - center: float, - sigma: float, - zeroed_width: float | None = None, - rescale_amp: bool = False, - ret_scale_factor: bool = False, -) -> np.ndarray | tuple[np.ndarray, float]: - r"""Enforce that the supplied sech pulse is zeroed at a specific width. - - This is achieved by subtracting $\Omega_g(center \pm zeroed_width/2)$ from all samples. - - amp: Pulse amplitude at `center`. - center: Center (mean) of pulse. - sigma: Standard deviation of pulse. - zeroed_width: Subtract baseline from sech pulses to make sure - $\Omega_g(center \pm zeroed_width/2)=0$ is satisfied. This is used to avoid - large discontinuities at the start of a sech pulse. If unsupplied, - defaults to $2*(center + 1)$ such that $\Omega_g(-1)=0$ and $\Omega_g(2*(center + 1))=0$. - rescale_amp: If True the pulse will be rescaled so that $\Omega_g(center)=amp$. - ret_scale_factor: Return amplitude scale factor. - """ - if zeroed_width is None: - zeroed_width = 2 * (center + 1) - - zero_offset = sech(np.array([zeroed_width / 2]), amp, 0, sigma) - sech_samples -= zero_offset - amp_scale_factor: complex | float | np.ndarray = 1.0 - if rescale_amp: - amp_scale_factor = amp / (amp - zero_offset) if amp - zero_offset != 0 else 1.0 - sech_samples *= amp_scale_factor - - if ret_scale_factor: - return sech_samples, amp_scale_factor - return sech_samples - - -def sech_fn(x, *args, **kwargs): - r"""Hyperbolic secant function""" - return 1.0 / np.cosh(x, *args, **kwargs) - - -def sech( - times: np.ndarray, - amp: complex, - center: float, - sigma: float, - zeroed_width: float | None = None, - rescale_amp: bool = False, - ret_x: bool = False, -) -> np.ndarray | tuple[np.ndarray, np.ndarray]: - r"""Continuous unnormalized sech pulse. - - Args: - times: Times to output pulse for. - amp: Pulse amplitude at `center`. - center: Center (mean) of pulse. - sigma: Width (standard deviation) of pulse. - zeroed_width: Subtract baseline from pulse to make sure - $\Omega_g(center \pm zeroed_width/2)=0$ is satisfied. This is used to avoid - large discontinuities at the start and end of the pulse. - rescale_amp: If `zeroed_width` is not `None` and `rescale_amp=True` the pulse will - be rescaled so that $\Omega_g(center)=amp$. - ret_x: Return centered and standard deviation normalized pulse location. - $x=(times-center)/sigma$. - """ - times = np.asarray(times, dtype=np.complex128) - x = (times - center) / sigma - sech_out = amp * sech_fn(x).astype(np.complex128) - - if zeroed_width is not None: - sech_out = _fix_sech_width( - sech_out, - amp=amp, - center=center, - sigma=sigma, - zeroed_width=zeroed_width, - rescale_amp=rescale_amp, - ) - - if ret_x: - return sech_out, x - return sech_out - - -def sech_deriv( - times: np.ndarray, amp: complex, center: float, sigma: float, ret_sech: bool = False -) -> np.ndarray | tuple[np.ndarray, np.ndarray]: - """Continuous unnormalized sech derivative pulse. - - Args: - times: Times to output pulse for. - amp: Pulse amplitude at `center`. - center: Center (mean) of pulse. - sigma: Width (standard deviation) of pulse. - ret_sech: Return sech with which derivative was taken with. - """ - sech_out, x = sech(times, amp=amp, center=center, sigma=sigma, ret_x=True) - sech_out_deriv = -sech_out * np.tanh(x) / sigma - if ret_sech: - return sech_out_deriv, sech_out - return sech_out_deriv - - -def gaussian_square( - times: np.ndarray, - amp: complex, - center: float, - square_width: float, - sigma: float, - zeroed_width: float | None = None, -) -> np.ndarray: - r"""Continuous gaussian square pulse. - - Args: - times: Times to output pulse for. - amp: Pulse amplitude. - center: Center of the square pulse component. - square_width: Width of the square pulse component. - sigma: Standard deviation of Gaussian rise/fall portion of the pulse. - zeroed_width: Subtract baseline of gaussian square pulse - to enforce $\OmegaSquare(center \pm zeroed_width/2)=0$. - - Raises: - PulseError: if zeroed_width is not compatible with square_width. - """ - square_start = center - square_width / 2 - square_stop = center + square_width / 2 - if zeroed_width: - if zeroed_width < square_width: - raise PulseError("zeroed_width cannot be smaller than square_width.") - gaussian_zeroed_width = zeroed_width - square_width - else: - gaussian_zeroed_width = None - - funclist = [ - functools.partial( - gaussian, - amp=amp, - center=square_start, - sigma=sigma, - zeroed_width=gaussian_zeroed_width, - rescale_amp=True, - ), - functools.partial( - gaussian, - amp=amp, - center=square_stop, - sigma=sigma, - zeroed_width=gaussian_zeroed_width, - rescale_amp=True, - ), - functools.partial(constant, amp=amp), - ] - condlist = [times <= square_start, times >= square_stop] - return np.piecewise(times.astype(np.complex128), condlist, funclist) - - -def drag( - times: np.ndarray, - amp: complex, - center: float, - sigma: float, - beta: float, - zeroed_width: float | None = None, - rescale_amp: bool = False, -) -> np.ndarray: - r"""Continuous Y-only correction DRAG pulse for standard nonlinear oscillator (SNO) [1]. - - [1] Gambetta, J. M., Motzoi, F., Merkel, S. T. & Wilhelm, F. K. - Analytic control methods for high-fidelity unitary operations - in a weakly nonlinear oscillator. Phys. Rev. A 83, 012308 (2011). - - Args: - times: Times to output pulse for. - amp: Pulse amplitude at `center`. - center: Center (mean) of pulse. - sigma: Width (standard deviation) of pulse. - beta: Y correction amplitude. For the SNO this is $\beta=-\frac{\lambda_1^2}{4\Delta_2}$. - Where $\lambds_1$ is the relative coupling strength between the first excited and second - excited states and $\Delta_2$ is the detuning between the respective excited states. - zeroed_width: Subtract baseline of drag pulse to make sure - $\Omega_g(center \pm zeroed_width/2)=0$ is satisfied. This is used to avoid - large discontinuities at the start of a drag pulse. - rescale_amp: If `zeroed_width` is not `None` and `rescale_amp=True` the pulse will - be rescaled so that $\Omega_g(center)=amp$. - - """ - gauss_deriv, gauss = gaussian_deriv( - times, - amp=amp, - center=center, - sigma=sigma, - ret_gaussian=True, - zeroed_width=zeroed_width, - rescale_amp=rescale_amp, - ) - - return gauss + 1j * beta * gauss_deriv diff --git a/qiskit/pulse/library/pulse.py b/qiskit/pulse/library/pulse.py deleted file mode 100644 index 89d67a381ec5..000000000000 --- a/qiskit/pulse/library/pulse.py +++ /dev/null @@ -1,148 +0,0 @@ -# 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. - -"""Pulses are descriptions of waveform envelopes. They can be transmitted by control electronics -to the device. -""" -from __future__ import annotations - -import typing -from abc import ABC, abstractmethod -from typing import Any -from qiskit.utils.deprecate_pulse import deprecate_pulse_func - -from qiskit.circuit.parameterexpression import ParameterExpression - - -if typing.TYPE_CHECKING: - from qiskit.providers import Backend # pylint: disable=cyclic-import - - -class Pulse(ABC): - """The abstract superclass for pulses. Pulses are complex-valued waveform envelopes. The - modulation phase and frequency are specified separately from ``Pulse``s. - """ - - __slots__ = ("duration", "name", "_limit_amplitude") - - limit_amplitude = True - - @abstractmethod - @deprecate_pulse_func - def __init__( - self, - duration: int | ParameterExpression, - name: str | None = None, - limit_amplitude: bool | None = None, - ): - """Abstract base class for pulses - Args: - duration: Duration of the pulse - name: Optional name for the pulse - limit_amplitude: If ``True``, then limit the amplitude of the waveform to 1. - The default value of ``None`` causes the flag value to be - derived from :py:attr:`~limit_amplitude` which is ``True`` - by default but may be set by the user to disable amplitude - checks globally. - """ - if limit_amplitude is None: - limit_amplitude = self.__class__.limit_amplitude - - self.duration = duration - self.name = name - self._limit_amplitude = limit_amplitude - - @property - def id(self) -> int: # pylint: disable=invalid-name - """Unique identifier for this pulse.""" - return id(self) - - @property - @abstractmethod - def parameters(self) -> dict[str, typing.Any]: - """Return a dictionary containing the pulse's parameters.""" - pass - - def is_parameterized(self) -> bool: - """Return True iff the instruction is parameterized.""" - raise NotImplementedError - - def draw( - self, - style: dict[str, Any] | None = None, - backend: Backend | None = None, - time_range: tuple[int, int] | None = None, - time_unit: str = "dt", - show_waveform_info: bool = True, - plotter: str = "mpl2d", - axis: Any | None = None, - ): - """Plot the interpolated envelope of pulse. - - Args: - style: Stylesheet options. This can be dictionary or preset stylesheet classes. See - :py:class:`~qiskit.visualization.pulse_v2.stylesheets.IQXStandard`, - :py:class:`~qiskit.visualization.pulse_v2.stylesheets.IQXSimple`, and - :py:class:`~qiskit.visualization.pulse_v2.stylesheets.IQXDebugging` for details of - preset stylesheets. - backend (Optional[BaseBackend]): Backend object to play the input pulse program. - If provided, the plotter may use to make the visualization hardware aware. - time_range: Set horizontal axis limit. Tuple ``(tmin, tmax)``. - time_unit: The unit of specified time range either ``dt`` or ``ns``. - The unit of ``ns`` is available only when ``backend`` object is provided. - show_waveform_info: Show waveform annotations, i.e. name, of waveforms. - Set ``True`` to show additional information about waveforms. - plotter: Name of plotter API to generate an output image. - One of following APIs should be specified:: - - mpl2d: Matplotlib API for 2D image generation. - Matplotlib API to generate 2D image. Charts are placed along y axis with - vertical offset. This API takes matplotlib.axes.Axes as `axis` input. - - `axis` and `style` kwargs may depend on the plotter. - axis: Arbitrary object passed to the plotter. If this object is provided, - the plotters use a given ``axis`` instead of internally initializing - a figure object. This object format depends on the plotter. - See plotter argument for details. - - Returns: - Visualization output data. - The returned data type depends on the ``plotter``. - If matplotlib family is specified, this will be a ``matplotlib.pyplot.Figure`` data. - """ - # pylint: disable=cyclic-import - from qiskit.visualization import pulse_drawer - - return pulse_drawer( - program=self, - style=style, - backend=backend, - time_range=time_range, - time_unit=time_unit, - show_waveform_info=show_waveform_info, - plotter=plotter, - axis=axis, - ) - - @abstractmethod - def __eq__(self, other: object) -> bool: - if not isinstance(other, Pulse): - return NotImplemented - return isinstance(other, type(self)) - - @abstractmethod - def __hash__(self) -> int: - raise NotImplementedError - - @abstractmethod - def __repr__(self) -> str: - raise NotImplementedError diff --git a/qiskit/pulse/library/samplers/__init__.py b/qiskit/pulse/library/samplers/__init__.py deleted file mode 100644 index ea5e2dd5d16a..000000000000 --- a/qiskit/pulse/library/samplers/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2019. -# -# 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. - -"""Module for methods which sample continuous functions.""" - -from .decorators import left, right, midpoint diff --git a/qiskit/pulse/library/samplers/decorators.py b/qiskit/pulse/library/samplers/decorators.py deleted file mode 100644 index db6aabd7b1de..000000000000 --- a/qiskit/pulse/library/samplers/decorators.py +++ /dev/null @@ -1,295 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2019. -# -# 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. - -"""Sampler decorator module for sampling of continuous pulses to discrete pulses to be -exposed to user. - -Some atypical boilerplate has been added to solve the problem of decorators not preserving -their wrapped function signatures. Below we explain the problem that samplers solve and how -we implement this. - -A sampler is a function that takes an continuous pulse function with signature: - ```python - def f(times: np.ndarray, *args, **kwargs) -> np.ndarray: - ... - ``` -and returns a new function: - def f(duration: int, *args, **kwargs) -> Waveform: - ... - -Samplers are used to build up pulse waveforms from continuous pulse functions. - -In Python the creation of a dynamic function that wraps another function will cause -the underlying signature and documentation of the underlying function to be overwritten. -In order to circumvent this issue the Python standard library provides the decorator -`functools.wraps` which allows the programmer to expose the names and signature of the -wrapped function as those of the dynamic function. - -Samplers are implemented by creating a function with signature - @sampler - def left(continuous_pulse: Callable, duration: int, *args, **kwargs) - ... - -This will create a sampler function for `left`. Since it is a dynamic function it would not -have the docstring of `left` available too `help`. This could be fixed by wrapping with -`functools.wraps` in the `sampler`, but this would then cause the signature to be that of the -sampler function which is called on the continuous pulse, below: - `(continuous_pulse: Callable, duration: int, *args, **kwargs)`` -This is not correct for the sampler as the output sampled functions accept only a function. -For the standard sampler we get around this by not using `functools.wraps` and -explicitly defining our samplers such as `left`, `right` and `midpoint` and -calling `sampler` internally on the function that implements the sampling schemes such as -`left_sample`, `right_sample` and `midpoint_sample` respectively. See `left` for an example of this. - - -In this way our standard samplers will expose the proper help signature, but a user can -still create their own sampler with - @sampler - def custom_sampler(time, *args, **kwargs): - ... -However, in this case it will be missing documentation of the underlying sampling methods. -We believe that the definition of custom samplers will be rather infrequent. - -However, users will frequently apply sampler instances too continuous pulses. Therefore, a different -approach was required for sampled continuous functions (the output of an continuous pulse function -decorated by a sampler instance). - -A sampler instance is a decorator that may be used to wrap continuous pulse functions such as -linear below: -```python - @left - def linear(times: np.ndarray, m: float, b: float) -> np.ndarray: - ```Linear test function - Args: - times: Input times. - m: Slope. - b: Intercept - Returns: - np.ndarray - ``` - return m*times+b -``` -Which after decoration may be called with a duration rather than an array of times - ```python - duration = 10 - pulse_envelope = linear(10, 0.1, 0.1) - ``` -If one calls help on `linear` they will find - ``` - linear(duration:int, *args, **kwargs) -> numpy.ndarray - Discretized continuous pulse function: `linear` using - sampler: `_left`. - - The first argument (time) of the continuous pulse function has been replaced with - a discretized `duration` of type (int). - - Args: - duration (int) - *args: Remaining arguments of continuous pulse function. - See continuous pulse function documentation below. - **kwargs: Remaining kwargs of continuous pulse function. - See continuous pulse function documentation below. - - Sampled continuous function: - - function linear in module test.python.pulse.test_samplers - linear(x:numpy.ndarray, m:float, b:float) -> numpy.ndarray - Linear test function - Args: - x: Input times. - m: Slope. - b: Intercept - Returns: - np.ndarray - ``` -This is partly because `functools.wraps` has been used on the underlying function. -This in itself is not sufficient as the signature of the sampled function has -`duration`, whereas the signature of the continuous function is `time`. - -This is achieved by removing `__wrapped__` set by `functools.wraps` in order to preserve -the correct signature and also applying `_update_annotations` and `_update_docstring` -to the generated function which corrects the function annotations and adds an informative -docstring respectively. - -The user therefore has access to the correct sampled function docstring in its entirety, while -still seeing the signature for the continuous pulse function and all of its arguments. -""" -from __future__ import annotations -import functools -import textwrap -import pydoc -from collections.abc import Callable - -import numpy as np - -from ...exceptions import PulseError -from ..waveform import Waveform -from . import strategies - - -def functional_pulse(func: Callable) -> Callable: - """A decorator for generating Waveform from python callable. - - Args: - func: A function describing pulse envelope. - - Raises: - PulseError: when invalid function is specified. - """ - - @functools.wraps(func) - def to_pulse(duration, *args, name=None, **kwargs): - """Return Waveform.""" - if isinstance(duration, (int, np.integer)) and duration > 0: - samples = func(duration, *args, **kwargs) - samples = np.asarray(samples, dtype=np.complex128) - return Waveform(samples=samples, name=name) - raise PulseError("The first argument must be an integer value representing duration.") - - return to_pulse - - -def _update_annotations(discretized_pulse: Callable) -> Callable: - """Update annotations of discretized continuous pulse function with duration. - - Args: - discretized_pulse: Discretized decorated continuous pulse. - """ - undecorated_annotations = list(discretized_pulse.__annotations__.items()) - decorated_annotations = undecorated_annotations[1:] - decorated_annotations.insert(0, ("duration", int)) - discretized_pulse.__annotations__ = dict(decorated_annotations) - return discretized_pulse - - -def _update_docstring(discretized_pulse: Callable, sampler_inst: Callable) -> Callable: - """Update annotations of discretized continuous pulse function. - - Args: - discretized_pulse: Discretized decorated continuous pulse. - sampler_inst: Applied sampler. - """ - wrapped_docstring = pydoc.render_doc(discretized_pulse, "%s") - header, body = wrapped_docstring.split("\n", 1) - body = textwrap.indent(body, " ") - wrapped_docstring = header + body - updated_ds = f""" - Discretized continuous pulse function: `{discretized_pulse.__name__}` using - sampler: `{sampler_inst.__name__}`. - - The first argument (time) of the continuous pulse function has been replaced with - a discretized `duration` of type (int). - - Args: - duration (int) - *args: Remaining arguments of continuous pulse function. - See continuous pulse function documentation below. - **kwargs: Remaining kwargs of continuous pulse function. - See continuous pulse function documentation below. - - Sampled continuous function: - - {wrapped_docstring} - """ - - discretized_pulse.__doc__ = updated_ds - return discretized_pulse - - -def sampler(sample_function: Callable) -> Callable: - """Sampler decorator base method. - - Samplers are used for converting an continuous function to a discretized pulse. - - They operate on a function with the signature: - `def f(times: np.ndarray, *args, **kwargs) -> np.ndarray` - Where `times` is a numpy array of floats with length n_times and the output array - is a complex numpy array with length n_times. The output of the decorator is an - instance of `FunctionalPulse` with signature: - `def g(duration: int, *args, **kwargs) -> Waveform` - - Note if your continuous pulse function outputs a `complex` scalar rather than a - `np.ndarray`, you should first vectorize it before applying a sampler. - - - This class implements the sampler boilerplate for the sampler. - - Args: - sample_function: A sampler function to be decorated. - """ - - def generate_sampler(continuous_pulse: Callable) -> Callable: - """Return a decorated sampler function.""" - - @functools.wraps(continuous_pulse) - def call_sampler(duration: int, *args, **kwargs) -> np.ndarray: - """Replace the call to the continuous function with a call to the sampler applied - to the analytic pulse function.""" - sampled_pulse = sample_function(continuous_pulse, duration, *args, **kwargs) - return np.asarray(sampled_pulse, dtype=np.complex128) - - # Update type annotations for wrapped continuous function to be discrete - call_sampler = _update_annotations(call_sampler) - # Update docstring with that of the sampler and include sampled function documentation. - call_sampler = _update_docstring(call_sampler, sample_function) - # Unset wrapped to return base sampler signature - # but still get rest of benefits of wraps - # such as __name__, __qualname__ - call_sampler.__dict__.pop("__wrapped__") - # wrap with functional pulse - return functional_pulse(call_sampler) - - return generate_sampler - - -def left(continuous_pulse: Callable) -> Callable: - r"""Left sampling strategy decorator. - - See `pulse.samplers.sampler` for more information. - - For `duration`, return: - $$\{f(t) \in \mathbb{C} | t \in \mathbb{Z} \wedge 0<=t<\texttt{duration}\}$$ - - Args: - continuous_pulse: To sample. - """ - - return sampler(strategies.left_sample)(continuous_pulse) - - -def right(continuous_pulse: Callable) -> Callable: - r"""Right sampling strategy decorator. - - See `pulse.samplers.sampler` for more information. - - For `duration`, return: - $$\{f(t) \in \mathbb{C} | t \in \mathbb{Z} \wedge 0 Callable: - r"""Midpoint sampling strategy decorator. - - See `pulse.samplers.sampler` for more information. - - For `duration`, return: - $$\{f(t+0.5) \in \mathbb{C} | t \in \mathbb{Z} \wedge 0<=t<\texttt{duration}\}$$ - - Args: - continuous_pulse: To sample. - """ - return sampler(strategies.midpoint_sample)(continuous_pulse) diff --git a/qiskit/pulse/library/samplers/strategies.py b/qiskit/pulse/library/samplers/strategies.py deleted file mode 100644 index c0886138d910..000000000000 --- a/qiskit/pulse/library/samplers/strategies.py +++ /dev/null @@ -1,71 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2019. -# -# 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. - - -"""Sampler strategy module for sampler functions. - -Sampler functions have signature. - ```python - def sampler_function(continuous_pulse: Callable, duration: int, *args, **kwargs) -> np.ndarray: - ... - ``` -where the supplied `continuous_pulse` is a function with signature: - ```python - def f(times: np.ndarray, *args, **kwargs) -> np.ndarray: - ... - ``` -The sampler will call the `continuous_pulse` function with a set of times it will decide -according to the sampling strategy it implements along with the passed `args` and `kwargs`. -""" - -from typing import Callable - -import numpy as np - - -def left_sample(continuous_pulse: Callable, duration: int, *args, **kwargs) -> np.ndarray: - """Left sample a continuous function. - - Args: - continuous_pulse: Continuous pulse function to sample. - duration: Duration to sample for. - *args: Continuous pulse function args. - **kwargs: Continuous pulse function kwargs. - """ - times = np.arange(duration) - return continuous_pulse(times, *args, **kwargs) - - -def right_sample(continuous_pulse: Callable, duration: int, *args, **kwargs) -> np.ndarray: - """Sampling strategy for decorator. - - Args: - continuous_pulse: Continuous pulse function to sample. - duration: Duration to sample for. - *args: Continuous pulse function args. - **kwargs: Continuous pulse function kwargs. - """ - times = np.arange(1, duration + 1) - return continuous_pulse(times, *args, **kwargs) - - -def midpoint_sample(continuous_pulse: Callable, duration: int, *args, **kwargs) -> np.ndarray: - """Sampling strategy for decorator. - - Args: - continuous_pulse: Continuous pulse function to sample. - duration: Duration to sample for. - *args: Continuous pulse function args. - **kwargs: Continuous pulse function kwargs. - """ - times = np.arange(1 / 2, duration + 1 / 2) - return continuous_pulse(times, *args, **kwargs) diff --git a/qiskit/pulse/library/symbolic_pulses.py b/qiskit/pulse/library/symbolic_pulses.py deleted file mode 100644 index 560e1d529958..000000000000 --- a/qiskit/pulse/library/symbolic_pulses.py +++ /dev/null @@ -1,1991 +0,0 @@ -# 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. - -# pylint: disable=invalid-name - -"""Symbolic waveform module. - -These are pulses which are described by symbolic equations for their envelopes and for their -parameter constraints. -""" -from __future__ import annotations -import functools -import warnings -from collections.abc import Mapping, Callable -from copy import deepcopy -from typing import Any - -import numpy as np -import symengine as sym - -from qiskit.circuit.parameterexpression import ParameterExpression, ParameterValueType -from qiskit.pulse.exceptions import PulseError -from qiskit.pulse.library.pulse import Pulse -from qiskit.pulse.library.waveform import Waveform -from qiskit.utils.deprecate_pulse import deprecate_pulse_func - - -def _lifted_gaussian( - t: sym.Symbol, - center: sym.Symbol | sym.Expr | complex, - t_zero: sym.Symbol | sym.Expr | complex, - sigma: sym.Symbol | sym.Expr | complex, -) -> sym.Expr: - r"""Helper function that returns a lifted Gaussian symbolic equation. - - For :math:`\sigma=` ``sigma`` the symbolic equation will be - - .. math:: - - f(x) = \exp\left(-\frac12 \left(\frac{x - \mu}{\sigma}\right)^2 \right), - - with the center :math:`\mu=` ``duration/2``. - Then, each output sample :math:`y` is modified according to: - - .. math:: - - y \mapsto \frac{y-y^*}{1.0-y^*}, - - where :math:`y^*` is the value of the un-normalized Gaussian at the endpoints of the pulse. - This sets the endpoints to :math:`0` while preserving the amplitude at the center, - i.e. :math:`y` is set to :math:`1.0`. - - Args: - t: Symbol object representing time. - center: Symbol or expression representing the middle point of the samples. - t_zero: The value of t at which the pulse is lowered to 0. - sigma: Symbol or expression representing Gaussian sigma. - - Returns: - Symbolic equation. - """ - # Sympy automatically does expand. - # This causes expression inconsistency after qpy round-trip serializing through sympy. - # See issue for details: https://github.com/symengine/symengine.py/issues/409 - t_shifted = (t - center).expand() - t_offset = (t_zero - center).expand() - - gauss = sym.exp(-((t_shifted / sigma) ** 2) / 2) - offset = sym.exp(-((t_offset / sigma) ** 2) / 2) - - return (gauss - offset) / (1 - offset) - - -@functools.lru_cache(maxsize=None) -def _is_amplitude_valid( - envelope_lam: Callable, time: tuple[float, ...], *fargs: float -) -> bool | np.bool_: - """A helper function to validate maximum amplitude limit. - - Result is cached for better performance. - - Args: - envelope_lam: The SymbolicPulse's lambdified envelope_lam expression. - time: The SymbolicPulse's time array, given as a tuple for hashability. - fargs: The arguments for the lambdified envelope_lam, as given by `_get_expression_args`, - except for the time array. - - Returns: - Return True if no sample point exceeds 1.0 in absolute value. - """ - - time = np.asarray(time, dtype=float) - samples_norm = np.abs(envelope_lam(time, *fargs)) - epsilon = 1e-7 # The value of epsilon mimics that of Waveform._clip() - return np.all(samples_norm < 1.0 + epsilon) - - -def _get_expression_args(expr: sym.Expr, params: dict[str, float]) -> list[np.ndarray | float]: - """A helper function to get argument to evaluate expression. - - Args: - expr: Symbolic expression to evaluate. - params: Dictionary of parameter, which is a superset of expression arguments. - - Returns: - Arguments passed to the lambdified expression. - - Raises: - PulseError: When a free symbol value is not defined in the pulse instance parameters. - """ - args: list[np.ndarray | float] = [] - for symbol in sorted(expr.free_symbols, key=lambda s: s.name): - if symbol.name == "t": - # 't' is a special parameter to represent time vector. - # This should be place at first to broadcast other parameters - # in symengine lambdify function. - times = np.arange(0, params["duration"]) + 1 / 2 - args.insert(0, times) - continue - try: - args.append(params[symbol.name]) - except KeyError as ex: - raise PulseError( - f"Pulse parameter '{symbol.name}' is not defined for this instance. " - "Please check your waveform expression is correct." - ) from ex - return args - - -class LambdifiedExpression: - """Descriptor to lambdify symbolic expression with cache. - - When a new symbolic expression is assigned for the first time, :class:`.LambdifiedExpression` - will internally lambdify the expressions and store the resulting callbacks in its cache. - The next time it encounters the same expression it will return the cached callbacks - thereby increasing the code's speed. - - Note that this class is a python `Descriptor`_, and thus not intended to be - directly called by end-users. This class is designed to be attached to the - :class:`.SymbolicPulse` as attributes for symbolic expressions. - - _`Descriptor`: https://docs.python.org/3/reference/datamodel.html#descriptors - """ - - def __init__(self, attribute: str): - """Create new descriptor. - - Args: - attribute: Name of attribute of :class:`.SymbolicPulse` that returns - the target expression to evaluate. - """ - self.attribute = attribute - self.lambda_funcs: dict[int, Callable] = {} - - def __get__(self, instance, owner) -> Callable: - expr = getattr(instance, self.attribute, None) - if expr is None: - raise PulseError(f"'{self.attribute}' of '{instance.pulse_type}' is not assigned.") - key = hash(expr) - if key not in self.lambda_funcs: - self.__set__(instance, expr) - - return self.lambda_funcs[key] - - def __set__(self, instance, value): - key = hash(value) - if key not in self.lambda_funcs: - params: list[Any] = [] - for p in sorted(value.free_symbols, key=lambda s: s.name): - if p.name == "t": - # Argument "t" must be placed at first. This is a vector. - params.insert(0, p) - continue - params.append(p) - - try: - lamb = sym.lambdify(params, [value], real=False) - - def _wrapped_lamb(*args): - if isinstance(args[0], np.ndarray): - # When the args[0] is a vector ("t"), tile other arguments args[1:] - # to prevent evaluation from looping over each element in t. - t = args[0] - args = np.hstack( - ( - t.reshape(t.size, 1), - np.tile(args[1:], t.size).reshape(t.size, len(args) - 1), - ) - ) - return lamb(args) - - func = _wrapped_lamb - except RuntimeError: - # Currently symengine doesn't support complex_double version for - # several functions such as comparison operator and piecewise. - # If expression contains these function, it fall back to sympy lambdify. - # See https://github.com/symengine/symengine.py/issues/406 for details. - import sympy - - func = sympy.lambdify(params, value) - - self.lambda_funcs[key] = func - - -class SymbolicPulse(Pulse): - r"""The pulse representation model with parameters and symbolic expressions. - - A symbolic pulse instance can be defined with an envelope and parameter constraints. - Envelope and parameter constraints should be provided as symbolic expressions. - Rather than creating a subclass, different pulse shapes can be distinguished by - the instance attributes :attr:`SymbolicPulse.envelope` and :attr:`SymbolicPulse.pulse_type`. - - The symbolic expressions must be defined either with SymPy_ or Symengine_. - Usually Symengine-based expression is much more performant for instantiation - of the :class:`SymbolicPulse`, however, it doesn't support every functions available in SymPy. - You may need to choose proper library depending on how you define your pulses. - Symengine works in the most envelopes and constraints, and thus it is recommended to use - this library especially when your program contains a lot of pulses. - Also note that Symengine has the limited platform support and may not be available - for your local system. Symengine is a required dependency for Qiskit on platforms - that support it will always be installed along with Qiskit on macOS ``x86_64`` and ``arm64``, - and Linux ``x86_64``, ``aarch64``, and ``ppc64le``. - For 64-bit Windows users they will need to manual install it. - For 32-bit platforms such as ``i686`` and ``armv7`` Linux, and on Linux ``s390x`` - there are no pre-compiled packages available and to use symengine you'll need to - compile it from source. If Symengine is not available in your environment SymPy will be used. - - .. _SymPy: https://www.sympy.org/en/index.html - .. _Symengine: https://symengine.org - - .. _symbolic_pulse_envelope: - - .. rubric:: Envelope function - - The waveform at time :math:`t` is generated by the :meth:`get_waveform` according to - - .. math:: - - F(t, \Theta) = \times F(t, {\rm duration}, \overline{\rm params}) - - where :math:`\Theta` is the set of full pulse parameters in the :attr:`SymbolicPulse.parameters` - dictionary which must include the :math:`\rm duration`. - Note that the :math:`F` is an envelope of the waveform, and a programmer must provide this - as a symbolic expression. :math:`\overline{\rm params}` can be arbitrary complex values - as long as they pass :meth:`.validate_parameters` and your quantum backend can accept. - The time :math:`t` and :math:`\rm duration` are in units of dt, i.e. sample time resolution, - and this function is sampled with a discrete time vector in :math:`[0, {\rm duration}]` - sampling the pulse envelope at every 0.5 dt (middle sampling strategy) when - the :meth:`SymbolicPulse.get_waveform` method is called. - The sample data is not generated until this method is called - thus a symbolic pulse instance only stores parameter values and waveform shape, - which greatly reduces memory footprint during the program generation. - - - .. _symbolic_pulse_validation: - - .. rubric:: Pulse validation - - When a symbolic pulse is instantiated, the method :meth:`.validate_parameters` is called, - and performs validation of the pulse. The validation process involves testing the constraint - functions and the maximal amplitude of the pulse (see below). While the validation process - will improve code stability, it will reduce performance and might create - compatibility issues (particularly with JAX). Therefore, it is possible to disable the - validation by setting the class attribute :attr:`.disable_validation` to ``True``. - - .. _symbolic_pulse_constraints: - - .. rubric:: Constraint functions - - Constraints on the parameters are defined with an instance attribute - :attr:`SymbolicPulse.constraints` which can be provided through the constructor. - The constraints value must be a symbolic expression, which is a - function of parameters to be validated and must return a boolean value - being ``True`` when parameters are valid. - If there are multiple conditions to be evaluated, these conditions can be - concatenated with logical expressions such as ``And`` and ``Or`` in SymPy or Symengine. - The symbolic pulse instance can be played only when the constraint function returns ``True``. - The constraint is evaluated when :meth:`.validate_parameters` is called. - - - .. _symbolic_pulse_eval_condition: - - .. rubric:: Maximum amplitude validation - - When you play a pulse in a quantum backend, you might face the restriction on the power - that your waveform generator can handle. Usually, the pulse amplitude is normalized - by this maximum power, namely :math:`\max |F| \leq 1`. This condition is - evaluated along with above constraints when you set ``limit_amplitude = True`` in the constructor. - To evaluate maximum amplitude of the waveform, we need to call :meth:`get_waveform`. - However, this introduces a significant overhead in the validation, and this cannot be ignored - when you repeatedly instantiate symbolic pulse instances. - :attr:`SymbolicPulse.valid_amp_conditions` provides a condition to skip this waveform validation, - and the waveform is not generated as long as this condition returns ``True``, - so that `healthy` symbolic pulses are created very quick. - For example, for a simple pulse shape like ``amp * cos(f * t)``, we know that - pulse amplitude is valid as long as ``amp`` remains less than magnitude 1.0. - So ``abs(amp) <= 1`` could be passed as :attr:`SymbolicPulse.valid_amp_conditions` to skip - doing a full waveform evaluation for amplitude validation. - This expression is provided through the constructor. If this is not provided, - the waveform is generated everytime when :meth:`.validate_parameters` is called. - - - .. rubric:: Examples - - This is how a user can instantiate a symbolic pulse instance. - In this example, we instantiate a custom `Sawtooth` envelope. - - .. code-block:: python - - from qiskit.pulse.library import SymbolicPulse - - my_pulse = SymbolicPulse( - pulse_type="Sawtooth", - duration=100, - parameters={"amp": 0.1, "freq": 0.05}, - name="pulse1", - ) - - Note that :class:`SymbolicPulse` can be instantiated without providing - the envelope and constraints. However, this instance cannot generate waveforms - without knowing the envelope definition. Now you need to provide the envelope. - - .. plot:: - :alt: Output from the previous code. - :include-source: - - import sympy - from qiskit.pulse.library import SymbolicPulse - - t, amp, freq = sympy.symbols("t, amp, freq") - envelope = 2 * amp * (freq * t - sympy.floor(1 / 2 + freq * t)) - - my_pulse = SymbolicPulse( - pulse_type="Sawtooth", - duration=100, - parameters={"amp": 0.1, "freq": 0.05}, - envelope=envelope, - name="pulse1", - ) - - my_pulse.draw() - - Likewise, you can define :attr:`SymbolicPulse.constraints` for ``my_pulse``. - After providing the envelope definition, you can generate the waveform data. - Note that it would be convenient to define a factory function that automatically - accomplishes this procedure. - - .. plot:: - :include-source: - :nofigs: - - def Sawtooth(duration, amp, freq, name): - t, amp, freq = sympy.symbols("t, amp, freq") - - instance = SymbolicPulse( - pulse_type="Sawtooth", - duration=duration, - parameters={"amp": amp, "freq": freq}, - envelope=2 * amp * (freq * t - sympy.floor(1 / 2 + freq * t)), - name=name, - ) - - return instance - - You can also provide a :class:`Parameter` object in the ``parameters`` dictionary, - or define ``duration`` with a :class:`Parameter` object when you instantiate - the symbolic pulse instance. - A waveform cannot be generated until you assign all unbounded parameters. - Note that parameters will be assigned through the schedule playing the pulse. - - - .. _symbolic_pulse_serialize: - - .. rubric:: Serialization - - The :class:`~SymbolicPulse` subclass can be serialized along with the - symbolic expressions through :mod:`qiskit.qpy`. - A user can therefore create a custom pulse subclass with a novel envelope and constraints, - and then one can instantiate the class with certain parameters to run on a backend. - This pulse instance can be saved in the QPY binary, which can be loaded afterwards - even within the environment not having original class definition loaded. - This mechanism also allows us to easily share a pulse program including - custom pulse instructions with collaborators. - """ - - __slots__ = ( - "_pulse_type", - "_params", - "_envelope", - "_constraints", - "_valid_amp_conditions", - ) - - disable_validation = False - - # Lambdify caches keyed on sympy expressions. Returns the corresponding callable. - _envelope_lam = LambdifiedExpression("_envelope") - _constraints_lam = LambdifiedExpression("_constraints") - _valid_amp_conditions_lam = LambdifiedExpression("_valid_amp_conditions") - - @deprecate_pulse_func - def __init__( - self, - pulse_type: str, - duration: ParameterExpression | int, - parameters: Mapping[str, ParameterExpression | complex] | None = None, - name: str | None = None, - limit_amplitude: bool | None = None, - envelope: sym.Expr | None = None, - constraints: sym.Expr | None = None, - valid_amp_conditions: sym.Expr | None = None, - ): - """Create a parametric pulse. - - Args: - pulse_type: Display name of this pulse shape. - duration: Duration of pulse. - parameters: Dictionary of pulse parameters that defines the pulse envelope. - name: Display name for this particular pulse envelope. - limit_amplitude: If ``True``, then limit the absolute value of the amplitude of the - waveform to 1. The default is ``True`` and the amplitude is constrained to 1. - envelope: Pulse envelope expression. - constraints: Pulse parameter constraint expression. - valid_amp_conditions: Extra conditions to skip a full-waveform check for the - amplitude limit. If this condition is not met, then the validation routine - will investigate the full-waveform and raise an error when the amplitude norm - of any data point exceeds 1.0. If not provided, the validation always - creates a full-waveform. - - Raises: - PulseError: When not all parameters are listed in the attribute :attr:`PARAM_DEF`. - """ - super().__init__( - duration=duration, - name=name, - limit_amplitude=limit_amplitude, - ) - if parameters is None: - parameters = {} - - self._pulse_type = pulse_type - self._params = parameters - - self._envelope = envelope - self._constraints = constraints - self._valid_amp_conditions = valid_amp_conditions - if not self.__class__.disable_validation: - self.validate_parameters() - - def __getattr__(self, item): - # Get pulse parameters with attribute-like access. - params = object.__getattribute__(self, "_params") - if item not in params: - raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{item}'") - return params[item] - - @property - def pulse_type(self) -> str: - """Return display name of the pulse shape.""" - return self._pulse_type - - @property - def envelope(self) -> sym.Expr: - """Return symbolic expression for the pulse envelope.""" - return self._envelope - - @property - def constraints(self) -> sym.Expr: - """Return symbolic expression for the pulse parameter constraints.""" - return self._constraints - - @property - def valid_amp_conditions(self) -> sym.Expr: - """Return symbolic expression for the pulse amplitude constraints.""" - return self._valid_amp_conditions - - def get_waveform(self) -> Waveform: - r"""Return a Waveform with samples filled according to the formula that the pulse - represents and the parameter values it contains. - - Since the returned array is a discretized time series of the continuous function, - this method uses a midpoint sampler. For ``duration``, return: - - .. math:: - - \{f(t+0.5) \in \mathbb{C} | t \in \mathbb{Z} \wedge 0<=t<\texttt{duration}\} - - Returns: - A waveform representation of this pulse. - - Raises: - PulseError: When parameters are not assigned. - PulseError: When expression for pulse envelope is not assigned. - """ - if self.is_parameterized(): - raise PulseError("Unassigned parameter exists. All parameters must be assigned.") - - if self._envelope is None: - raise PulseError("Pulse envelope expression is not assigned.") - - fargs = _get_expression_args(self._envelope, self.parameters) - return Waveform(samples=self._envelope_lam(*fargs), name=self.name) - - def validate_parameters(self) -> None: - """Validate parameters. - - Raises: - PulseError: If the parameters passed are not valid. - """ - if self.is_parameterized(): - return - - if self._constraints is not None: - fargs = _get_expression_args(self._constraints, self.parameters) - if not bool(self._constraints_lam(*fargs)): - param_repr = ", ".join(f"{p}={v}" for p, v in self.parameters.items()) - const_repr = str(self._constraints) - raise PulseError( - f"Assigned parameters {param_repr} violate following constraint: {const_repr}." - ) - - if self._limit_amplitude: - if self._valid_amp_conditions is not None: - fargs = _get_expression_args(self._valid_amp_conditions, self.parameters) - check_full_waveform = not bool(self._valid_amp_conditions_lam(*fargs)) - else: - check_full_waveform = True - - if check_full_waveform: - # Check full waveform only when the condition is satisified or - # evaluation condition is not provided. - # This operation is slower due to overhead of 'get_waveform'. - fargs = _get_expression_args(self._envelope, self.parameters) - - if not _is_amplitude_valid(self._envelope_lam, tuple(fargs.pop(0)), *fargs): - param_repr = ", ".join(f"{p}={v}" for p, v in self.parameters.items()) - raise PulseError( - f"Maximum pulse amplitude norm exceeds 1.0 with parameters {param_repr}." - "This can be overruled by setting Pulse.limit_amplitude." - ) - - def is_parameterized(self) -> bool: - """Return True iff the instruction is parameterized.""" - return any(isinstance(val, ParameterExpression) for val in self.parameters.values()) - - @property - def parameters(self) -> dict[str, Any]: - params: dict[str, ParameterExpression | complex | int] = {"duration": self.duration} - params.update(self._params) - return params - - def __eq__(self, other: object) -> bool: - if not isinstance(other, SymbolicPulse): - return NotImplemented - - if self._pulse_type != other._pulse_type: - return False - - if self._envelope != other._envelope: - return False - - if self.parameters != other.parameters: - return False - - return True - - def __repr__(self) -> str: - param_repr = ", ".join(f"{p}={v}" for p, v in self.parameters.items()) - name_repr = f", name='{self.name}'" if self.name is not None else "" - return f"{self._pulse_type}({param_repr}{name_repr})" - - __hash__ = None - - -class ScalableSymbolicPulse(SymbolicPulse): - r"""Subclass of :class:`SymbolicPulse` for pulses with scalable envelope. - - Instance of :class:`ScalableSymbolicPulse` behaves the same as an instance of - :class:`SymbolicPulse`, but its envelope is assumed to have a scalable form - :math:`\text{amp}\times\exp\left(i\times\text{angle}\right)\times\text{F} - \left(t,\text{parameters}\right)`, - where :math:`\text{F}` is some function describing the rest of the envelope, - and both `amp` and `angle` are real (float). Note that both `amp` and `angle` are - stored in the :attr:`parameters` dictionary of the :class:`ScalableSymbolicPulse` - instance. - - When two :class:`ScalableSymbolicPulse` objects are equated, instead of comparing - `amp` and `angle` individually, only the complex amplitude - :math:'\text{amp}\times\exp\left(i\times\text{angle}\right)' is compared. - """ - - def __init__( - self, - pulse_type: str, - duration: ParameterExpression | int, - amp: ParameterValueType, - angle: ParameterValueType, - parameters: dict[str, ParameterExpression | complex] | None = None, - name: str | None = None, - limit_amplitude: bool | None = None, - envelope: sym.Expr | None = None, - constraints: sym.Expr | None = None, - valid_amp_conditions: sym.Expr | None = None, - ): - """Create a scalable symbolic pulse. - - Args: - pulse_type: Display name of this pulse shape. - duration: Duration of pulse. - amp: The magnitude of the complex amplitude of the pulse. - angle: The phase of the complex amplitude of the pulse. - parameters: Dictionary of pulse parameters that defines the pulse envelope. - name: Display name for this particular pulse envelope. - limit_amplitude: If ``True``, then limit the absolute value of the amplitude of the - waveform to 1. The default is ``True`` and the amplitude is constrained to 1. - envelope: Pulse envelope expression. - constraints: Pulse parameter constraint expression. - valid_amp_conditions: Extra conditions to skip a full-waveform check for the - amplitude limit. If this condition is not met, then the validation routine - will investigate the full-waveform and raise an error when the amplitude norm - of any data point exceeds 1.0. If not provided, the validation always - creates a full-waveform. - - Raises: - PulseError: If ``amp`` is complex. - """ - if isinstance(amp, complex): - raise PulseError( - "amp represents the magnitude of the complex amplitude and can't be complex" - ) - - if not isinstance(parameters, dict): - parameters = {"amp": amp, "angle": angle} - else: - parameters = deepcopy(parameters) - parameters["amp"] = amp - parameters["angle"] = angle - - super().__init__( - pulse_type=pulse_type, - duration=duration, - parameters=parameters, - name=name, - limit_amplitude=limit_amplitude, - envelope=envelope, - constraints=constraints, - valid_amp_conditions=valid_amp_conditions, - ) - - # pylint: disable=too-many-return-statements - def __eq__(self, other: object) -> bool: - if not isinstance(other, ScalableSymbolicPulse): - return NotImplemented - - if self._pulse_type != other._pulse_type: - return False - - if self._envelope != other._envelope: - return False - - complex_amp1 = self.amp * np.exp(1j * self.angle) - complex_amp2 = other.amp * np.exp(1j * other.angle) - - if isinstance(complex_amp1, ParameterExpression) or isinstance( - complex_amp2, ParameterExpression - ): - if complex_amp1 != complex_amp2: - return False - else: - if not np.isclose(complex_amp1, complex_amp2): - return False - - for key, value in self.parameters.items(): - if key not in ["amp", "angle"] and value != other.parameters[key]: - return False - - return True - - -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): - - .. math:: - - \begin{aligned} - f'(x) &= \exp\Bigl( -\frac12 \frac{{(x - \text{duration}/2)}^2}{\text{sigma}^2} \Bigr)\\ - f(x) &= \text{A} \times \frac{f'(x) - f'(-1)}{1-f'(-1)}, \quad 0 \le x < \text{duration} - \end{aligned} - - where :math:`f'(x)` is the gaussian waveform without lifting or amplitude scaling, and - :math:`\text{A} = \text{amp} \times \exp\left(i\times\text{angle}\right)`. - """ - - alias = "Gaussian" - - def __new__( - cls, - duration: int | ParameterValueType, - amp: ParameterValueType, - sigma: ParameterValueType, - angle: ParameterValueType = 0.0, - name: str | None = None, - limit_amplitude: bool | None = None, - ) -> ScalableSymbolicPulse: - """Create new pulse instance. - - Args: - duration: Pulse length in terms of the sampling period `dt`. - amp: The magnitude of the amplitude of the Gaussian envelope. - sigma: A measure of how wide or narrow the Gaussian peak is; described mathematically - in the class docstring. - angle: The angle of the complex amplitude of the Gaussian envelope. Default value 0. - 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: - ScalableSymbolicPulse instance. - """ - parameters = {"sigma": sigma} - - # Prepare symbolic expressions - _t, _duration, _amp, _sigma, _angle = sym.symbols("t, duration, amp, sigma, angle") - _center = _duration / 2 - - envelope_expr = ( - _amp * sym.exp(sym.I * _angle) * _lifted_gaussian(_t, _center, _duration + 1, _sigma) - ) - - consts_expr = _sigma > 0 - valid_amp_conditions_expr = sym.Abs(_amp) <= 1.0 - - return ScalableSymbolicPulse( - pulse_type=cls.alias, - duration=duration, - amp=amp, - angle=angle, - parameters=parameters, - name=name, - limit_amplitude=limit_amplitude, - envelope=envelope_expr, - constraints=consts_expr, - valid_amp_conditions=valid_amp_conditions_expr, - ) - - @deprecate_pulse_func - def __init__(self): - pass - - -class GaussianSquare(metaclass=_PulseType): - """A square pulse with a Gaussian shaped risefall on both sides lifted such that - its first sample is zero. - - Exactly one of the ``risefall_sigma_ratio`` and ``width`` parameters has to be specified. - - If ``risefall_sigma_ratio`` is not None and ``width`` is None: - - .. math:: - - \\begin{aligned} - \\text{risefall} &= \\text{risefall\\_sigma\\_ratio} \\times \\text{sigma}\\\\ - \\text{width} &= \\text{duration} - 2 \\times \\text{risefall} - \\end{aligned} - - If ``width`` is not None and ``risefall_sigma_ratio`` is None: - - .. math:: \\text{risefall} = \\frac{\\text{duration} - \\text{width}}{2} - - In both cases, the lifted gaussian square pulse :math:`f'(x)` is defined as: - - .. math:: - - \\begin{aligned} - f'(x) &= \\begin{cases}\ - \\exp\\biggl(-\\frac12 \\frac{(x - \\text{risefall})^2}{\\text{sigma}^2}\\biggr)\ - & x < \\text{risefall}\\\\ - 1\ - & \\text{risefall} \\le x < \\text{risefall} + \\text{width}\\\\ - \\exp\\biggl(-\\frac12\ - \\frac{{\\bigl(x - (\\text{risefall} + \\text{width})\\bigr)}^2}\ - {\\text{sigma}^2}\ - \\biggr)\ - & \\text{risefall} + \\text{width} \\le x\ - \\end{cases}\\\\ - f(x) &= \\text{A} \\times \\frac{f'(x) - f'(-1)}{1-f'(-1)},\ - \\quad 0 \\le x < \\text{duration} - \\end{aligned} - - where :math:`f'(x)` is the gaussian square waveform without lifting or amplitude scaling, and - :math:`\\text{A} = \\text{amp} \\times \\exp\\left(i\\times\\text{angle}\\right)`. - """ - - alias = "GaussianSquare" - - def __new__( - cls, - duration: int | ParameterValueType, - amp: ParameterValueType, - sigma: ParameterValueType, - width: ParameterValueType | None = None, - angle: ParameterValueType = 0.0, - risefall_sigma_ratio: ParameterValueType | None = None, - name: str | None = None, - limit_amplitude: bool | None = None, - ) -> ScalableSymbolicPulse: - """Create new pulse instance. - - Args: - duration: Pulse length in terms of the sampling period `dt`. - amp: The magnitude of the amplitude of the Gaussian and square pulse. - sigma: A measure of how wide or narrow the Gaussian risefall is; see the class - docstring for more details. - width: The duration of the embedded square pulse. - angle: The angle of the complex amplitude of the pulse. Default value 0. - risefall_sigma_ratio: The ratio of each risefall duration to sigma. - 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: - ScalableSymbolicPulse instance. - - Raises: - PulseError: When width and risefall_sigma_ratio are both empty or both non-empty. - """ - # Convert risefall_sigma_ratio into width which is defined in OpenPulse spec - if width is None and risefall_sigma_ratio is None: - raise PulseError( - "Either the pulse width or the risefall_sigma_ratio parameter must be specified." - ) - if width is not None and risefall_sigma_ratio is not None: - raise PulseError( - "Either the pulse width or the risefall_sigma_ratio parameter can be specified" - " but not both." - ) - if width is None and risefall_sigma_ratio is not None: - width = duration - 2.0 * risefall_sigma_ratio * sigma - - parameters = {"sigma": sigma, "width": width} - - # Prepare symbolic expressions - _t, _duration, _amp, _sigma, _width, _angle = sym.symbols( - "t, duration, amp, sigma, width, angle" - ) - _center = _duration / 2 - - _sq_t0 = _center - _width / 2 - _sq_t1 = _center + _width / 2 - - _gaussian_ledge = _lifted_gaussian(_t, _sq_t0, -1, _sigma) - _gaussian_redge = _lifted_gaussian(_t, _sq_t1, _duration + 1, _sigma) - - envelope_expr = ( - _amp - * sym.exp(sym.I * _angle) - * sym.Piecewise( - (_gaussian_ledge, _t <= _sq_t0), (_gaussian_redge, _t >= _sq_t1), (1, True) - ) - ) - - consts_expr = sym.And(_sigma > 0, _width >= 0, _duration >= _width) - valid_amp_conditions_expr = sym.Abs(_amp) <= 1.0 - - return ScalableSymbolicPulse( - pulse_type=cls.alias, - duration=duration, - amp=amp, - angle=angle, - parameters=parameters, - name=name, - limit_amplitude=limit_amplitude, - envelope=envelope_expr, - constraints=consts_expr, - valid_amp_conditions=valid_amp_conditions_expr, - ) - - @deprecate_pulse_func - def __init__(self): - pass - - -@deprecate_pulse_func -def GaussianSquareDrag( - duration: int | ParameterExpression, - amp: float | ParameterExpression, - sigma: float | ParameterExpression, - beta: float | ParameterExpression, - width: float | ParameterExpression | None = None, - angle: float | ParameterExpression | None = 0.0, - risefall_sigma_ratio: float | ParameterExpression | None = None, - name: str | None = None, - limit_amplitude: bool | None = None, -) -> ScalableSymbolicPulse: - """A square pulse with a Drag shaped rise and fall - - This pulse shape is similar to :class:`~.GaussianSquare` but uses - :class:`~.Drag` for its rise and fall instead of :class:`~.Gaussian`. The - addition of the DRAG component of the rise and fall is sometimes helpful in - suppressing the spectral content of the pulse at frequencies near to, but - slightly offset from, the fundamental frequency of the drive. When there is - a spectator qubit close in frequency to the fundamental frequency, - suppressing the drive at the spectator's frequency can help avoid unwanted - excitation of the spectator. - - Exactly one of the ``risefall_sigma_ratio`` and ``width`` parameters has to be specified. - - If ``risefall_sigma_ratio`` is not ``None`` and ``width`` is ``None``: - - .. math:: - - \\begin{aligned} - \\text{risefall} &= \\text{risefall\\_sigma\\_ratio} \\times \\text{sigma}\\\\ - \\text{width} &= \\text{duration} - 2 \\times \\text{risefall} - \\end{aligned} - - If ``width`` is not None and ``risefall_sigma_ratio`` is None: - - .. math:: \\text{risefall} = \\frac{\\text{duration} - \\text{width}}{2} - - Gaussian :math:`g(x, c, σ)` and lifted gaussian :math:`g'(x, c, σ)` curves - can be written as: - - .. math:: - - \\begin{aligned} - g(x, c, σ) &= \\exp\\Bigl(-\\frac12 \\frac{(x - c)^2}{σ^2}\\Bigr)\\\\ - g'(x, c, σ) &= \\frac{g(x, c, σ)-g(-1, c, σ)}{1-g(-1, c, σ)} - \\end{aligned} - - From these, the lifted DRAG curve :math:`d'(x, c, σ, β)` can be written as - - .. math:: - - d'(x, c, σ, β) = g'(x, c, σ) \\times \\Bigl(1 + 1j \\times β \\times\ - \\Bigl(-\\frac{x - c}{σ^2}\\Bigr)\\Bigr) - - The lifted gaussian square drag pulse :math:`f'(x)` is defined as: - - .. math:: - - \\begin{aligned} - f'(x) &= \\begin{cases}\ - \\text{A} \\times d'(x, \\text{risefall}, \\text{sigma}, \\text{beta})\ - & x < \\text{risefall}\\\\ - \\text{A}\ - & \\text{risefall} \\le x < \\text{risefall} + \\text{width}\\\\ - \\text{A} \\times \\times d'(\ - x - (\\text{risefall} + \\text{width}),\ - \\text{risefall},\ - \\text{sigma},\ - \\text{beta}\ - )\ - & \\text{risefall} + \\text{width} \\le x\ - \\end{cases}\\\\ - \\end{aligned} - - where :math:`\\text{A} = \\text{amp} \\times - \\exp\\left(i\\times\\text{angle}\\right)`. - - Args: - duration: Pulse length in terms of the sampling period `dt`. - amp: The amplitude of the DRAG rise and fall and of the square pulse. - sigma: A measure of how wide or narrow the DRAG risefall is; see the class - docstring for more details. - beta: The DRAG correction amplitude. - width: The duration of the embedded square pulse. - angle: The angle in radians of the complex phase factor uniformly - scaling the pulse. Default value 0. - risefall_sigma_ratio: The ratio of each risefall duration to sigma. - 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: - ScalableSymbolicPulse instance. - - Raises: - PulseError: When width and risefall_sigma_ratio are both empty or both non-empty. - """ - # Convert risefall_sigma_ratio into width which is defined in OpenPulse spec - if width is None and risefall_sigma_ratio is None: - raise PulseError( - "Either the pulse width or the risefall_sigma_ratio parameter must be specified." - ) - if width is not None and risefall_sigma_ratio is not None: - raise PulseError( - "Either the pulse width or the risefall_sigma_ratio parameter can be specified" - " but not both." - ) - if width is None and risefall_sigma_ratio is not None: - width = duration - 2.0 * risefall_sigma_ratio * sigma - - parameters = {"sigma": sigma, "width": width, "beta": beta} - - # Prepare symbolic expressions - _t, _duration, _amp, _sigma, _beta, _width, _angle = sym.symbols( - "t, duration, amp, sigma, beta, width, angle" - ) - _center = _duration / 2 - - _sq_t0 = _center - _width / 2 - _sq_t1 = _center + _width / 2 - - _gaussian_ledge = _lifted_gaussian(_t, _sq_t0, -1, _sigma) - _gaussian_redge = _lifted_gaussian(_t, _sq_t1, _duration + 1, _sigma) - _deriv_ledge = -(_t - _sq_t0) / (_sigma**2) * _gaussian_ledge - _deriv_redge = -(_t - _sq_t1) / (_sigma**2) * _gaussian_redge - - envelope_expr = ( - _amp - * sym.exp(sym.I * _angle) - * sym.Piecewise( - (_gaussian_ledge + sym.I * _beta * _deriv_ledge, _t <= _sq_t0), - (_gaussian_redge + sym.I * _beta * _deriv_redge, _t >= _sq_t1), - (1, True), - ) - ) - consts_expr = sym.And(_sigma > 0, _width >= 0, _duration >= _width) - valid_amp_conditions_expr = sym.And(sym.Abs(_amp) <= 1.0, sym.Abs(_beta) < _sigma) - - return ScalableSymbolicPulse( - pulse_type="GaussianSquareDrag", - duration=duration, - amp=amp, - angle=angle, - parameters=parameters, - name=name, - limit_amplitude=limit_amplitude, - envelope=envelope_expr, - constraints=consts_expr, - valid_amp_conditions=valid_amp_conditions_expr, - ) - - -@deprecate_pulse_func -def gaussian_square_echo( - duration: int | ParameterValueType, - amp: float | ParameterExpression, - sigma: float | ParameterExpression, - width: float | ParameterExpression | None = None, - angle: float | ParameterExpression | None = 0.0, - active_amp: float | ParameterExpression | None = 0.0, - active_angle: float | ParameterExpression | None = 0.0, - risefall_sigma_ratio: float | ParameterExpression | None = None, - name: str | None = None, - limit_amplitude: bool | None = None, -) -> SymbolicPulse: - """An echoed Gaussian square pulse with an active tone overlaid on it. - - The Gaussian Square Echo pulse is composed of three pulses. First, a Gaussian Square pulse - :math:`f_{echo}(x)` with amplitude ``amp`` and phase ``angle`` playing for half duration, - followed by a second Gaussian Square pulse :math:`-f_{echo}(x)` with opposite amplitude - and same phase playing for the rest of the duration. Third a Gaussian Square pulse - :math:`f_{active}(x)` with amplitude ``active_amp`` and phase ``active_angle`` - playing for the entire duration. The Gaussian Square Echo pulse :math:`g_e()` - can be written as: - - .. math:: - - \\begin{aligned} - g_e(x) &= \\begin{cases}\ - f_{\\text{active}} + f_{\\text{echo}}(x)\ - & x < \\frac{\\text{duration}}{2}\\\\ - f_{\\text{active}} - f_{\\text{echo}}(x)\ - & \\frac{\\text{duration}}{2} < x\ - \\end{cases}\\\\ - \\end{aligned} - - One case where this pulse can be used is when implementing a direct CNOT gate with - a cross-resonance superconducting qubit architecture. When applying this pulse to - the target qubit, the active portion can be used to cancel IX terms from the - cross-resonance drive while the echo portion can reduce the impact of a static ZZ coupling. - - Exactly one of the ``risefall_sigma_ratio`` and ``width`` parameters has to be specified. - - If ``risefall_sigma_ratio`` is not ``None`` and ``width`` is ``None``: - - .. math:: - - \\begin{aligned} - \\text{risefall} &= \\text{risefall\\_sigma\\_ratio} \\times \\text{sigma}\\\\ - \\text{width} &= \\text{duration} - 2 \\times \\text{risefall} - \\end{aligned} - - If ``width`` is not None and ``risefall_sigma_ratio`` is None: - - .. math:: \\text{risefall} = \\frac{\\text{duration} - \\text{width}}{2} - - References: - 1. |citation1|_ - - .. _citation1: https://iopscience.iop.org/article/10.1088/2058-9565/abe519 - - .. |citation1| replace:: *Jurcevic, P., Javadi-Abhari, A., Bishop, L. S., - Lauer, I., Bogorin, D. F., Brink, M., Capelluto, L., G{\"u}nl{\"u}k, O., - Itoko, T., Kanazawa, N. & others - Demonstration of quantum volume 64 on a superconducting quantum - computing system. (Section V)* - Args: - duration: Pulse length in terms of the sampling period `dt`. - amp: The amplitude of the rise and fall and of the echoed pulse. - sigma: A measure of how wide or narrow the risefall is; see the class - docstring for more details. - width: The duration of the embedded square pulse. - angle: The angle in radians of the complex phase factor uniformly - scaling the echoed pulse. Default value 0. - active_amp: The amplitude of the active pulse. - active_angle: The angle in radian of the complex phase factor uniformly - scaling the active pulse. Default value 0. - risefall_sigma_ratio: The ratio of each risefall duration to sigma. - 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: - ScalableSymbolicPulse instance. - Raises: - PulseError: When width and risefall_sigma_ratio are both empty or both non-empty. - """ - # Convert risefall_sigma_ratio into width which is defined in OpenPulse spec - if width is None and risefall_sigma_ratio is None: - raise PulseError( - "Either the pulse width or the risefall_sigma_ratio parameter must be specified." - ) - if width is not None and risefall_sigma_ratio is not None: - raise PulseError( - "Either the pulse width or the risefall_sigma_ratio parameter can be specified" - " but not both." - ) - - if width is None and risefall_sigma_ratio is not None: - width = duration - 2.0 * risefall_sigma_ratio * sigma - - parameters = { - "amp": amp, - "angle": angle, - "sigma": sigma, - "width": width, - "active_amp": active_amp, - "active_angle": active_angle, - } - - # Prepare symbolic expressions - ( - _t, - _duration, - _amp, - _sigma, - _active_amp, - _width, - _angle, - _active_angle, - ) = sym.symbols("t, duration, amp, sigma, active_amp, width, angle, active_angle") - - # gaussian square echo for rotary tone - _center = _duration / 4 - - _width_echo = (_duration - 2 * (_duration - _width)) / 2 - - _sq_t0 = _center - _width_echo / 2 - _sq_t1 = _center + _width_echo / 2 - - _gaussian_ledge = _lifted_gaussian(_t, _sq_t0, -1, _sigma) - _gaussian_redge = _lifted_gaussian(_t, _sq_t1, _duration / 2 + 1, _sigma) - - envelope_expr_p = ( - _amp - * sym.exp(sym.I * _angle) - * sym.Piecewise( - (_gaussian_ledge, _t <= _sq_t0), - (_gaussian_redge, _t >= _sq_t1), - (1, True), - ) - ) - - _center_echo = _duration / 2 + _duration / 4 - - _sq_t0_echo = _center_echo - _width_echo / 2 - _sq_t1_echo = _center_echo + _width_echo / 2 - - _gaussian_ledge_echo = _lifted_gaussian(_t, _sq_t0_echo, _duration / 2 - 1, _sigma) - _gaussian_redge_echo = _lifted_gaussian(_t, _sq_t1_echo, _duration + 1, _sigma) - - envelope_expr_echo = ( - -1 - * _amp - * sym.exp(sym.I * _angle) - * sym.Piecewise( - (_gaussian_ledge_echo, _t <= _sq_t0_echo), - (_gaussian_redge_echo, _t >= _sq_t1_echo), - (1, True), - ) - ) - - envelope_expr = sym.Piecewise( - (envelope_expr_p, _t <= _duration / 2), (envelope_expr_echo, _t >= _duration / 2), (0, True) - ) - - # gaussian square for active cancellation tone - _center_active = _duration / 2 - - _sq_t0_active = _center_active - _width / 2 - _sq_t1_active = _center_active + _width / 2 - - _gaussian_ledge_active = _lifted_gaussian(_t, _sq_t0_active, -1, _sigma) - _gaussian_redge_active = _lifted_gaussian(_t, _sq_t1_active, _duration + 1, _sigma) - - envelope_expr_active = ( - _active_amp - * sym.exp(sym.I * _active_angle) - * sym.Piecewise( - (_gaussian_ledge_active, _t <= _sq_t0_active), - (_gaussian_redge_active, _t >= _sq_t1_active), - (1, True), - ) - ) - - envelop_expr_total = envelope_expr + envelope_expr_active - - consts_expr = sym.And( - _sigma > 0, _width >= 0, _duration >= _width, _duration / 2 >= _width_echo - ) - - # Check validity of amplitudes - valid_amp_conditions_expr = sym.And(sym.Abs(_amp) + sym.Abs(_active_amp) <= 1.0) - - return SymbolicPulse( - pulse_type="gaussian_square_echo", - duration=duration, - parameters=parameters, - name=name, - limit_amplitude=limit_amplitude, - envelope=envelop_expr_total, - constraints=consts_expr, - valid_amp_conditions=valid_amp_conditions_expr, - ) - - -@deprecate_pulse_func -def GaussianDeriv( - duration: int | ParameterValueType, - amp: float | ParameterExpression, - sigma: float | ParameterExpression, - angle: float | ParameterExpression | None = 0.0, - name: str | None = None, - limit_amplitude: bool | None = None, -) -> ScalableSymbolicPulse: - """An unnormalized Gaussian derivative pulse. - - The Gaussian function is centered around the halfway point of the pulse, - and the envelope of the pulse is given by: - - .. math:: - - f(x) = -\\text{A}\\frac{x-\\mu}{\\text{sigma}^{2}}\\exp - \\left[-\\left(\\frac{x-\\mu}{2\\text{sigma}}\\right)^{2}\\right] , 0 <= x < duration - - where :math:`\\text{A} = \\text{amp} \\times\\exp\\left(i\\times\\text{angle}\\right)`, - and :math:`\\mu=\\text{duration}/2`. - - Args: - duration: Pulse length in terms of the sampling period `dt`. - amp: The magnitude of the amplitude of the pulse - (the value of the corresponding Gaussian at the midpoint `duration`/2). - sigma: A measure of how wide or narrow the corresponding Gaussian peak is in terms of `dt`; - described mathematically in the class docstring. - angle: The angle in radians of the complex phase factor uniformly - scaling the pulse. Default value 0. - 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: - ScalableSymbolicPulse instance. - """ - parameters = {"sigma": sigma} - - # Prepare symbolic expressions - _t, _duration, _amp, _angle, _sigma = sym.symbols("t, duration, amp, angle, sigma") - envelope_expr = ( - -_amp - * sym.exp(sym.I * _angle) - * ((_t - (_duration / 2)) / _sigma**2) - * sym.exp(-(1 / 2) * ((_t - (_duration / 2)) / _sigma) ** 2) - ) - consts_expr = _sigma > 0 - valid_amp_conditions_expr = sym.Abs(_amp / _sigma) <= sym.exp(1 / 2) - - return ScalableSymbolicPulse( - pulse_type="GaussianDeriv", - duration=duration, - amp=amp, - angle=angle, - parameters=parameters, - name=name, - limit_amplitude=limit_amplitude, - envelope=envelope_expr, - constraints=consts_expr, - valid_amp_conditions=valid_amp_conditions_expr, - ) - - -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. - - It can be calibrated either to reduce the phase error due to virtual population of the - :math:`|2\\rangle` state during the pulse or to reduce the frequency spectrum of a - standard Gaussian pulse near the :math:`|1\\rangle\\leftrightarrow|2\\rangle` transition, - reducing the chance of leakage to the :math:`|2\\rangle` state. - - .. math:: - - \\begin{aligned} - g(x) &= \\exp\\Bigl(-\\frac12 \\frac{(x - \\text{duration}/2)^2}{\\text{sigma}^2}\\Bigr)\\\\ - g'(x) &= \\text{A}\\times\\frac{g(x)-g(-1)}{1-g(-1)}\\\\ - f(x) &= g'(x) \\times \\Bigl(1 + 1j \\times \\text{beta} \\times\ - \\Bigl(-\\frac{x - \\text{duration}/2}{\\text{sigma}^2}\\Bigr) \\Bigr), - \\quad 0 \\le x < \\text{duration} - \\end{aligned} - - where :math:`g(x)` is a standard unlifted Gaussian waveform, :math:`g'(x)` is the lifted - :class:`~qiskit.pulse.library.Gaussian` waveform, and - :math:`\\text{A} = \\text{amp} \\times \\exp\\left(i\\times\\text{angle}\\right)`. - - References: - 1. |citation1|_ - - .. _citation1: https://link.aps.org/doi/10.1103/PhysRevA.83.012308 - - .. |citation1| replace:: *Gambetta, J. M., Motzoi, F., Merkel, S. T. & Wilhelm, F. K. - Analytic control methods for high-fidelity unitary operations - in a weakly nonlinear oscillator. Phys. Rev. A 83, 012308 (2011).* - - 2. |citation2|_ - - .. _citation2: https://link.aps.org/doi/10.1103/PhysRevLett.103.110501 - - .. |citation2| replace:: *F. Motzoi, J. M. Gambetta, P. Rebentrost, and F. K. Wilhelm - Phys. Rev. Lett. 103, 110501 – Published 8 September 2009.* - """ - - alias = "Drag" - - def __new__( - cls, - duration: int | ParameterValueType, - amp: ParameterValueType, - sigma: ParameterValueType, - beta: ParameterValueType, - angle: ParameterValueType = 0.0, - name: str | None = None, - limit_amplitude: bool | None = None, - ) -> ScalableSymbolicPulse: - """Create new pulse instance. - - Args: - duration: Pulse length in terms of the sampling period `dt`. - amp: The magnitude of the amplitude of the DRAG envelope. - sigma: A measure of how wide or narrow the Gaussian peak is; described mathematically - in the class docstring. - beta: The correction amplitude. - angle: The angle of the complex amplitude of the DRAG envelope. Default value 0. - 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: - ScalableSymbolicPulse instance. - """ - parameters = {"sigma": sigma, "beta": beta} - - # Prepare symbolic expressions - _t, _duration, _amp, _sigma, _beta, _angle = sym.symbols( - "t, duration, amp, sigma, beta, angle" - ) - _center = _duration / 2 - - _gauss = _lifted_gaussian(_t, _center, _duration + 1, _sigma) - _deriv = -(_t - _center) / (_sigma**2) * _gauss - - envelope_expr = _amp * sym.exp(sym.I * _angle) * (_gauss + sym.I * _beta * _deriv) - - consts_expr = _sigma > 0 - valid_amp_conditions_expr = sym.And(sym.Abs(_amp) <= 1.0, sym.Abs(_beta) < _sigma) - - return ScalableSymbolicPulse( - pulse_type="Drag", - duration=duration, - amp=amp, - angle=angle, - parameters=parameters, - name=name, - limit_amplitude=limit_amplitude, - envelope=envelope_expr, - constraints=consts_expr, - valid_amp_conditions=valid_amp_conditions_expr, - ) - - @deprecate_pulse_func - def __init__(self): - pass - - -class Constant(metaclass=_PulseType): - """A simple constant pulse, with an amplitude value and a duration: - - .. math:: - - f(x) = \\text{amp}\\times\\exp\\left(i\\text{angle}\\right) , 0 <= x < duration - f(x) = 0 , elsewhere - """ - - alias = "Constant" - - def __new__( - cls, - duration: int | ParameterValueType, - amp: ParameterValueType, - angle: ParameterValueType = 0.0, - name: str | None = None, - limit_amplitude: bool | None = None, - ) -> ScalableSymbolicPulse: - """Create new pulse instance. - - Args: - duration: Pulse length in terms of the sampling period `dt`. - amp: The magnitude of the amplitude of the square envelope. - angle: The angle of the complex amplitude of the square envelope. Default value 0. - 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: - ScalableSymbolicPulse instance. - """ - # Prepare symbolic expressions - _t, _amp, _duration, _angle = sym.symbols("t, amp, duration, angle") - - # Note this is implemented using Piecewise instead of just returning amp - # directly because otherwise the expression has no t dependence and sympy's - # lambdify will produce a function f that for an array t returns amp - # instead of amp * np.ones(t.shape). - # - # See: https://github.com/sympy/sympy/issues/5642 - envelope_expr = ( - _amp - * sym.exp(sym.I * _angle) - * sym.Piecewise((1, sym.And(_t >= 0, _t <= _duration)), (0, True)) - ) - - valid_amp_conditions_expr = sym.Abs(_amp) <= 1.0 - - return ScalableSymbolicPulse( - pulse_type="Constant", - duration=duration, - amp=amp, - angle=angle, - name=name, - limit_amplitude=limit_amplitude, - envelope=envelope_expr, - valid_amp_conditions=valid_amp_conditions_expr, - ) - - @deprecate_pulse_func - def __init__(self): - pass - - -@deprecate_pulse_func -def Sin( - duration: int | ParameterExpression, - amp: float | ParameterExpression, - phase: float | ParameterExpression, - freq: float | ParameterExpression | None = None, - angle: float | ParameterExpression | None = 0.0, - name: str | None = None, - limit_amplitude: bool | None = None, -) -> ScalableSymbolicPulse: - """A sinusoidal pulse. - - The envelope of the pulse is given by: - - .. math:: - - f(x) = \\text{A}\\sin\\left(2\\pi\\text{freq}x+\\text{phase}\\right) , 0 <= x < duration - - where :math:`\\text{A} = \\text{amp} \\times\\exp\\left(i\\times\\text{angle}\\right)`. - - Args: - duration: Pulse length in terms of the sampling period `dt`. - amp: The magnitude of the amplitude of the sinusoidal wave. Wave range is [-`amp`,`amp`]. - phase: The phase of the sinusoidal wave (note that this is not equivalent to the angle of - the complex amplitude) - freq: The frequency of the sinusoidal wave, in terms of 1 over sampling period. - If not provided defaults to a single cycle (i.e :math:'\\frac{1}{\\text{duration}}'). - The frequency is limited to the range :math:`\\left(0,0.5\\right]` (the Nyquist frequency). - angle: The angle in radians of the complex phase factor uniformly - scaling the pulse. Default value 0. - 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: - ScalableSymbolicPulse instance. - """ - if freq is None: - freq = 1 / duration - parameters = {"freq": freq, "phase": phase} - - # Prepare symbolic expressions - _t, _duration, _amp, _angle, _freq, _phase = sym.symbols("t, duration, amp, angle, freq, phase") - - envelope_expr = _amp * sym.exp(sym.I * _angle) * sym.sin(2 * sym.pi * _freq * _t + _phase) - - consts_expr = sym.And(_freq > 0, _freq < 0.5) - - # This might fail for waves shorter than a single cycle - valid_amp_conditions_expr = sym.Abs(_amp) <= 1.0 - - return ScalableSymbolicPulse( - pulse_type="Sin", - duration=duration, - amp=amp, - angle=angle, - parameters=parameters, - name=name, - limit_amplitude=limit_amplitude, - envelope=envelope_expr, - constraints=consts_expr, - valid_amp_conditions=valid_amp_conditions_expr, - ) - - -@deprecate_pulse_func -def Cos( - duration: int | ParameterExpression, - amp: float | ParameterExpression, - phase: float | ParameterExpression, - freq: float | ParameterExpression | None = None, - angle: float | ParameterExpression | None = 0.0, - name: str | None = None, - limit_amplitude: bool | None = None, -) -> ScalableSymbolicPulse: - """A cosine pulse. - - The envelope of the pulse is given by: - - .. math:: - - f(x) = \\text{A}\\cos\\left(2\\pi\\text{freq}x+\\text{phase}\\right) , 0 <= x < duration - - where :math:`\\text{A} = \\text{amp} \\times\\exp\\left(i\\times\\text{angle}\\right)`. - - Args: - duration: Pulse length in terms of the sampling period `dt`. - amp: The magnitude of the amplitude of the cosine wave. Wave range is [-`amp`,`amp`]. - phase: The phase of the cosine wave (note that this is not equivalent to the angle - of the complex amplitude). - freq: The frequency of the cosine wave, in terms of 1 over sampling period. - If not provided defaults to a single cycle (i.e :math:'\\frac{1}{\\text{duration}}'). - The frequency is limited to the range :math:`\\left(0,0.5\\right]` (the Nyquist frequency). - angle: The angle in radians of the complex phase factor uniformly - scaling the pulse. Default value 0. - 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: - ScalableSymbolicPulse instance. - """ - if freq is None: - freq = 1 / duration - parameters = {"freq": freq, "phase": phase} - - # Prepare symbolic expressions - _t, _duration, _amp, _angle, _freq, _phase = sym.symbols("t, duration, amp, angle, freq, phase") - - envelope_expr = _amp * sym.exp(sym.I * _angle) * sym.cos(2 * sym.pi * _freq * _t + _phase) - - consts_expr = sym.And(_freq > 0, _freq < 0.5) - - # This might fail for waves shorter than a single cycle - valid_amp_conditions_expr = sym.Abs(_amp) <= 1.0 - - return ScalableSymbolicPulse( - pulse_type="Cos", - duration=duration, - amp=amp, - angle=angle, - parameters=parameters, - name=name, - limit_amplitude=limit_amplitude, - envelope=envelope_expr, - constraints=consts_expr, - valid_amp_conditions=valid_amp_conditions_expr, - ) - - -@deprecate_pulse_func -def Sawtooth( - duration: int | ParameterExpression, - amp: float | ParameterExpression, - phase: float | ParameterExpression, - freq: float | ParameterExpression | None = None, - angle: float | ParameterExpression | None = 0.0, - name: str | None = None, - limit_amplitude: bool | None = None, -) -> ScalableSymbolicPulse: - """A sawtooth pulse. - - The envelope of the pulse is given by: - - .. math:: - - f(x) = 2\\text{A}\\left[g\\left(x\\right)- - \\lfloor g\\left(x\\right)+\\frac{1}{2}\\rfloor\\right] - - where :math:`\\text{A} = \\text{amp} \\times\\exp\\left(i\\times\\text{angle}\\right)`, - :math:`g\\left(x\\right)=x\\times\\text{freq}+\\frac{\\text{phase}}{2\\pi}`, - and :math:`\\lfloor ...\\rfloor` is the floor operation. - - Args: - duration: Pulse length in terms of the sampling period `dt`. - amp: The magnitude of the amplitude of the sawtooth wave. Wave range is [-`amp`,`amp`]. - phase: The phase of the sawtooth wave (note that this is not equivalent to the angle - of the complex amplitude) - freq: The frequency of the sawtooth wave, in terms of 1 over sampling period. - If not provided defaults to a single cycle (i.e :math:'\\frac{1}{\\text{duration}}'). - The frequency is limited to the range :math:`\\left(0,0.5\\right]` (the Nyquist frequency). - angle: The angle in radians of the complex phase factor uniformly - scaling the pulse. Default value 0. - 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: - ScalableSymbolicPulse instance. - """ - if freq is None: - freq = 1 / duration - parameters = {"freq": freq, "phase": phase} - - # Prepare symbolic expressions - _t, _duration, _amp, _angle, _freq, _phase = sym.symbols("t, duration, amp, angle, freq, phase") - lin_expr = _t * _freq + _phase / (2 * sym.pi) - - envelope_expr = 2 * _amp * sym.exp(sym.I * _angle) * (lin_expr - sym.floor(lin_expr + 1 / 2)) - - consts_expr = sym.And(_freq > 0, _freq < 0.5) - - # This might fail for waves shorter than a single cycle - valid_amp_conditions_expr = sym.Abs(_amp) <= 1.0 - - return ScalableSymbolicPulse( - pulse_type="Sawtooth", - duration=duration, - amp=amp, - angle=angle, - parameters=parameters, - name=name, - limit_amplitude=limit_amplitude, - envelope=envelope_expr, - constraints=consts_expr, - valid_amp_conditions=valid_amp_conditions_expr, - ) - - -@deprecate_pulse_func -def Triangle( - duration: int | ParameterExpression, - amp: float | ParameterExpression, - phase: float | ParameterExpression, - freq: float | ParameterExpression | None = None, - angle: float | ParameterExpression | None = 0.0, - name: str | None = None, - limit_amplitude: bool | None = None, -) -> ScalableSymbolicPulse: - """A triangle wave pulse. - - The envelope of the pulse is given by: - - .. math:: - - f(x) = \\text{A}\\left[\\text{sawtooth}\\left(x\\right)\\right] , 0 <= x < duration - - where :math:`\\text{A} = \\text{amp} \\times\\exp\\left(i\\times\\text{angle}\\right)`, - and :math:`\\text{sawtooth}\\left(x\\right)` is a sawtooth wave with the same frequency - as the triangle wave, but a phase shifted by :math:`\\frac{\\pi}{2}`. - - Args: - duration: Pulse length in terms of the sampling period `dt`. - amp: The magnitude of the amplitude of the triangle wave. Wave range is [-`amp`,`amp`]. - phase: The phase of the triangle wave (note that this is not equivalent to the angle - of the complex amplitude) - freq: The frequency of the triangle wave, in terms of 1 over sampling period. - If not provided defaults to a single cycle (i.e :math:'\\frac{1}{\\text{duration}}'). - The frequency is limited to the range :math:`\\left(0,0.5\\right]` (the Nyquist frequency). - angle: The angle in radians of the complex phase factor uniformly - scaling the pulse. Default value 0. - 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: - ScalableSymbolicPulse instance. - """ - if freq is None: - freq = 1 / duration - parameters = {"freq": freq, "phase": phase} - - # Prepare symbolic expressions - _t, _duration, _amp, _angle, _freq, _phase = sym.symbols("t, duration, amp, angle, freq, phase") - lin_expr = _t * _freq + _phase / (2 * sym.pi) - 0.25 - sawtooth_expr = 2 * (lin_expr - sym.floor(lin_expr + 1 / 2)) - - envelope_expr = _amp * sym.exp(sym.I * _angle) * (-2 * sym.Abs(sawtooth_expr) + 1) - - consts_expr = sym.And(_freq > 0, _freq < 0.5) - - # This might fail for waves shorter than a single cycle - valid_amp_conditions_expr = sym.Abs(_amp) <= 1.0 - - return ScalableSymbolicPulse( - pulse_type="Triangle", - duration=duration, - amp=amp, - angle=angle, - parameters=parameters, - name=name, - limit_amplitude=limit_amplitude, - envelope=envelope_expr, - constraints=consts_expr, - valid_amp_conditions=valid_amp_conditions_expr, - ) - - -@deprecate_pulse_func -def Square( - duration: int | ParameterValueType, - amp: float | ParameterExpression, - phase: float | ParameterExpression, - freq: float | ParameterExpression | None = None, - angle: float | ParameterExpression | None = 0.0, - name: str | None = None, - limit_amplitude: bool | None = None, -) -> ScalableSymbolicPulse: - """A square wave pulse. - - The envelope of the pulse is given by: - - .. math:: - - f(x) = \\text{A}\\text{sign}\\left[\\sin - \\left(2\\pi x\\times\\text{freq}+\\text{phase}\\right)\\right] , 0 <= x < duration - - where :math:`\\text{A} = \\text{amp} \\times\\exp\\left(i\\times\\text{angle}\\right)`, - and :math:`\\text{sign}` - is the sign function with the convention :math:`\\text{sign}\\left(0\\right)=1`. - - Args: - duration: Pulse length in terms of the sampling period ``dt``. - amp: The magnitude of the amplitude of the square wave. Wave range is - :math:`\\left[-\\texttt{amp},\\texttt{amp}\\right]`. - phase: The phase of the square wave (note that this is not equivalent to the angle of - the complex amplitude). - freq: The frequency of the square wave, in terms of 1 over sampling period. - If not provided defaults to a single cycle (i.e :math:`\\frac{1}{\\text{duration}}`). - The frequency is limited to the range :math:`\\left(0,0.5\\right]` (the Nyquist frequency). - angle: The angle in radians of the complex phase factor uniformly - scaling the pulse. Default value 0. - 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: - ScalableSymbolicPulse instance. - """ - if freq is None: - freq = 1 / duration - parameters = {"freq": freq, "phase": phase} - - # Prepare symbolic expressions - _t, _duration, _amp, _angle, _freq, _phase = sym.symbols("t, duration, amp, angle, freq, phase") - _x = _freq * _t + _phase / (2 * sym.pi) - - envelope_expr = ( - _amp * sym.exp(sym.I * _angle) * (2 * (2 * sym.floor(_x) - sym.floor(2 * _x)) + 1) - ) - - consts_expr = sym.And(_freq > 0, _freq < 0.5) - - # This might fail for waves shorter than a single cycle - valid_amp_conditions_expr = sym.Abs(_amp) <= 1.0 - - return ScalableSymbolicPulse( - pulse_type="Square", - duration=duration, - amp=amp, - angle=angle, - parameters=parameters, - name=name, - limit_amplitude=limit_amplitude, - envelope=envelope_expr, - constraints=consts_expr, - valid_amp_conditions=valid_amp_conditions_expr, - ) - - -@deprecate_pulse_func -def Sech( - duration: int | ParameterValueType, - amp: float | ParameterExpression, - sigma: float | ParameterExpression, - angle: float | ParameterExpression | None = 0.0, - name: str | None = None, - zero_ends: bool | None = True, - limit_amplitude: bool | None = None, -) -> ScalableSymbolicPulse: - """An unnormalized sech pulse. - - The sech function is centered around the halfway point of the pulse, - and the envelope of the pulse is given by: - - .. math:: - - f(x) = \\text{A}\\text{sech}\\left( - \\frac{x-\\mu}{\\text{sigma}}\\right) , 0 <= x < duration - - where :math:`\\text{A} = \\text{amp} \\times\\exp\\left(i\\times\\text{angle}\\right)`, - and :math:`\\mu=\\text{duration}/2`. - - If `zero_ends` is set to `True`, the output `y` is modified: - .. math:: - - y\\left(x\\right) \\mapsto \\text{A}\\frac{y-y^{*}}{\\text{A}-y^{*}}, - - where :math:`y^{*}` is the value of :math:`y` at the endpoints (at :math:`x=-1 - and :math:`x=\\text{duration}+1`). This shifts the endpoints value to zero, while also - rescaling to preserve the amplitude at `:math:`\\text{duration}/2``. - - Args: - duration: Pulse length in terms of the sampling period `dt`. - amp: The magnitude of the amplitude of the pulse (the value at the midpoint `duration`/2). - sigma: A measure of how wide or narrow the sech peak is in terms of `dt`; - described mathematically in the class docstring. - angle: The angle in radians of the complex phase factor uniformly - scaling the pulse. Default value 0. - name: Display name for this pulse envelope. - zero_ends: If True, zeros the ends at x = -1, x = `duration` + 1, - but rescales to preserve `amp`. Default value True. - 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: - ScalableSymbolicPulse instance. - """ - parameters = {"sigma": sigma} - - # Prepare symbolic expressions - _t, _duration, _amp, _angle, _sigma = sym.symbols("t, duration, amp, angle, sigma") - complex_amp = _amp * sym.exp(sym.I * _angle) - envelope_expr = complex_amp * sym.sech((_t - (_duration / 2)) / _sigma) - - if zero_ends: - shift_val = complex_amp * sym.sech((-1 - (_duration / 2)) / _sigma) - envelope_expr = complex_amp * (envelope_expr - shift_val) / (complex_amp - shift_val) - - consts_expr = _sigma > 0 - - valid_amp_conditions_expr = sym.Abs(_amp) <= 1.0 - - return ScalableSymbolicPulse( - pulse_type="Sech", - duration=duration, - amp=amp, - angle=angle, - parameters=parameters, - name=name, - limit_amplitude=limit_amplitude, - envelope=envelope_expr, - constraints=consts_expr, - valid_amp_conditions=valid_amp_conditions_expr, - ) - - -@deprecate_pulse_func -def SechDeriv( - duration: int | ParameterValueType, - amp: float | ParameterExpression, - sigma: float | ParameterExpression, - angle: float | ParameterExpression | None = 0.0, - name: str | None = None, - limit_amplitude: bool | None = None, -) -> ScalableSymbolicPulse: - """An unnormalized sech derivative pulse. - - The sech function is centered around the halfway point of the pulse, and the envelope of the - pulse is given by: - - .. math:: - - f(x) = \\text{A}\\frac{d}{dx}\\left[\\text{sech} - \\left(\\frac{x-\\mu}{\\text{sigma}}\\right)\\right] , 0 <= x < duration - - where :math:`\\text{A} = \\text{amp} \\times\\exp\\left(i\\times\\text{angle}\\right)`, - :math:`\\mu=\\text{duration}/2`, and :math:`d/dx` is a derivative with respect to `x`. - - Args: - duration: Pulse length in terms of the sampling period `dt`. - amp: The magnitude of the amplitude of the pulse (the value of the corresponding sech - function at the midpoint `duration`/2). - sigma: A measure of how wide or narrow the corresponding sech peak is, in terms of `dt`; - described mathematically in the class docstring. - angle: The angle in radians of the complex phase factor uniformly - scaling the pulse. Default value 0. - 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: - ScalableSymbolicPulse instance. - """ - parameters = {"sigma": sigma} - - # Prepare symbolic expressions - _t, _duration, _amp, _angle, _sigma = sym.symbols("t, duration, amp, angle, sigma") - time_argument = (_t - (_duration / 2)) / _sigma - sech_deriv = -sym.tanh(time_argument) * sym.sech(time_argument) / _sigma - - envelope_expr = _amp * sym.exp(sym.I * _angle) * sech_deriv - - consts_expr = _sigma > 0 - - valid_amp_conditions_expr = sym.Abs(_amp) / _sigma <= 2.0 - - return ScalableSymbolicPulse( - pulse_type="SechDeriv", - duration=duration, - amp=amp, - angle=angle, - parameters=parameters, - name=name, - limit_amplitude=limit_amplitude, - envelope=envelope_expr, - constraints=consts_expr, - valid_amp_conditions=valid_amp_conditions_expr, - ) diff --git a/qiskit/pulse/library/waveform.py b/qiskit/pulse/library/waveform.py deleted file mode 100644 index 0a31ac11a8d8..000000000000 --- a/qiskit/pulse/library/waveform.py +++ /dev/null @@ -1,136 +0,0 @@ -# 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. - -"""A pulse that is described by complex-valued sample points.""" -from __future__ import annotations -from typing import Any - -import numpy as np - -from qiskit.pulse.exceptions import PulseError -from qiskit.pulse.library.pulse import Pulse -from qiskit.utils.deprecate_pulse import deprecate_pulse_func - - -class Waveform(Pulse): - """A pulse specified completely by complex-valued samples; each sample is played for the - duration of the backend cycle-time, dt. - """ - - @deprecate_pulse_func - def __init__( - self, - samples: np.ndarray | list[complex], - name: str | None = None, - epsilon: float = 1e-7, - limit_amplitude: bool | None = None, - ): - """Create new sample pulse command. - - Args: - samples: Complex array of the samples in the pulse envelope. - name: Unique name to identify the pulse. - epsilon: Pulse sample norm tolerance for clipping. - If any sample's norm exceeds unity by less than or equal to epsilon - it will be clipped to unit norm. If the sample - norm is greater than 1+epsilon an error will be raised. - limit_amplitude: Passed to parent Pulse - """ - - super().__init__(duration=len(samples), name=name, limit_amplitude=limit_amplitude) - samples = np.asarray(samples, dtype=np.complex128) - self.epsilon = epsilon - self._samples = self._clip(samples, epsilon=epsilon) - - @property - def samples(self) -> np.ndarray: - """Return sample values.""" - return self._samples - - def _clip(self, samples: np.ndarray, epsilon: float = 1e-7) -> np.ndarray: - """If samples are within epsilon of unit norm, clip sample by reducing norm by (1-epsilon). - - If difference is greater than epsilon error is raised. - - Args: - samples: Complex array of the samples in the pulse envelope. - epsilon: Pulse sample norm tolerance for clipping. - If any sample's norm exceeds unity by less than or equal to epsilon - it will be clipped to unit norm. If the sample - norm is greater than 1+epsilon an error will be raised. - - Returns: - Clipped pulse samples. - - Raises: - PulseError: If there exists a pulse sample with a norm greater than 1+epsilon. - """ - samples_norm = np.abs(samples) - to_clip = (samples_norm > 1.0) & (samples_norm <= 1.0 + epsilon) - - if np.any(to_clip): - # first try normalizing by the abs value - clip_where = np.argwhere(to_clip) - clip_angle = np.angle(samples[clip_where]) - clipped_samples = np.exp(1j * clip_angle, dtype=np.complex128) - - # if norm still exceed one subtract epsilon - # required for some platforms - clipped_sample_norms = np.abs(clipped_samples) - to_clip_epsilon = clipped_sample_norms > 1.0 - if np.any(to_clip_epsilon): - clip_where_epsilon = np.argwhere(to_clip_epsilon) - clipped_samples_epsilon = (1 - epsilon) * np.exp( - 1j * clip_angle[clip_where_epsilon], dtype=np.complex128 - ) - clipped_samples[clip_where_epsilon] = clipped_samples_epsilon - - # update samples with clipped values - samples[clip_where] = clipped_samples - samples_norm[clip_where] = np.abs(clipped_samples) - - if np.any(samples_norm > 1.0) and self._limit_amplitude: - amp = np.max(samples_norm) - raise PulseError( - f"Pulse contains sample with norm {amp} greater than 1+epsilon." - " This can be overruled by setting Pulse.limit_amplitude." - ) - - return samples - - def is_parameterized(self) -> bool: - """Return True iff the instruction is parameterized.""" - return False - - @property - def parameters(self) -> dict[str, Any]: - """Return a dictionary containing the pulse's parameters.""" - return {} - - def __eq__(self, other: object) -> bool: - if not isinstance(other, Waveform): - return NotImplemented - return ( - super().__eq__(other) - and self.samples.shape == other.samples.shape - and np.allclose(self.samples, other.samples, rtol=0, atol=self.epsilon) - ) - - def __hash__(self) -> int: - return hash(self.samples.tobytes()) - - def __repr__(self) -> str: - opt = np.get_printoptions() - np.set_printoptions(threshold=50) - np.set_printoptions(**opt) - name_repr = f", name='{self.name}'" if self.name is not None else "" - return f"{self.__class__.__name__}({repr(self.samples)}{name_repr})" diff --git a/qiskit/pulse/macros.py b/qiskit/pulse/macros.py deleted file mode 100644 index 2d73c27e54b7..000000000000 --- a/qiskit/pulse/macros.py +++ /dev/null @@ -1,260 +0,0 @@ -# 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. - -"""Module for common pulse programming macros.""" -from __future__ import annotations - -from collections.abc import Sequence -from typing import TYPE_CHECKING - -from qiskit.pulse import channels, exceptions, instructions, utils -from qiskit.pulse.instruction_schedule_map import InstructionScheduleMap -from qiskit.pulse.schedule import Schedule -from qiskit.providers.backend import BackendV2 - - -if TYPE_CHECKING: - from qiskit.transpiler import Target - - -def measure( - qubits: Sequence[int], - backend=None, - inst_map: InstructionScheduleMap | None = None, - meas_map: list[list[int]] | dict[int, list[int]] | None = None, - qubit_mem_slots: dict[int, int] | None = None, - measure_name: str = "measure", -) -> Schedule: - """Return a schedule which measures the requested qubits according to the given - instruction mapping and measure map, or by using the defaults provided by the backend. - - .. note:: - This function internally dispatches schedule generation logic depending on input backend model. - For the :class:`.BackendV2`, it assembles calibrations of single qubit measurement - defined in the backend target to build a composite measurement schedule for `qubits`. - - By default, the measurement results for each qubit are trivially mapped to the qubit - index. This behavior is overridden by qubit_mem_slots. For instance, to measure - qubit 0 into MemorySlot(1), qubit_mem_slots can be provided as {0: 1}. - - Args: - qubits: List of qubits to be measured. - backend (Union[Backend, BaseBackend]): A backend instance, which contains - hardware-specific data required for scheduling. - inst_map: Mapping of circuit operations to pulse schedules. If None, defaults to the - ``instruction_schedule_map`` of ``backend``. - meas_map: List of sets of qubits that must be measured together. If None, defaults to - the ``meas_map`` of ``backend``. - qubit_mem_slots: Mapping of measured qubit index to classical bit index. - measure_name: Name of the measurement schedule. - - Returns: - A measurement schedule corresponding to the inputs provided. - """ - - # backend is V2. - if isinstance(backend, BackendV2): - - return _measure_v2( - qubits=qubits, - target=backend.target, - meas_map=meas_map or backend.meas_map, - qubit_mem_slots=qubit_mem_slots or dict(zip(qubits, range(len(qubits)))), - measure_name=measure_name, - ) - # backend is V1 or backend is None. - else: - try: - return _measure_v1( - qubits=qubits, - inst_map=inst_map or backend.defaults().instruction_schedule_map, - meas_map=meas_map or backend.configuration().meas_map, - qubit_mem_slots=qubit_mem_slots, - measure_name=measure_name, - ) - except AttributeError as ex: - raise exceptions.PulseError( - "inst_map or meas_map, and backend cannot be None simultaneously" - ) from ex - - -def _measure_v1( - qubits: Sequence[int], - inst_map: InstructionScheduleMap, - meas_map: list[list[int]] | dict[int, list[int]], - qubit_mem_slots: dict[int, int] | None = None, - measure_name: str = "measure", -) -> Schedule: - """Return a schedule which measures the requested qubits according to the given - instruction mapping and measure map, or by using the defaults provided by the backendV1. - - Args: - qubits: List of qubits to be measured. - backend (Union[Backend, BaseBackend]): A backend instance, which contains - hardware-specific data required for scheduling. - inst_map: Mapping of circuit operations to pulse schedules. If None, defaults to the - ``instruction_schedule_map`` of ``backend``. - meas_map: List of sets of qubits that must be measured together. If None, defaults to - the ``meas_map`` of ``backend``. - qubit_mem_slots: Mapping of measured qubit index to classical bit index. - measure_name: Name of the measurement schedule. - Returns: - A measurement schedule corresponding to the inputs provided. - Raises: - PulseError: If both ``inst_map`` or ``meas_map``, and ``backend`` is None. - """ - - schedule = Schedule(name=f"Default measurement schedule for qubits {qubits}") - - if isinstance(meas_map, list): - meas_map = utils.format_meas_map(meas_map) - - measure_groups = set() - for qubit in qubits: - measure_groups.add(tuple(meas_map[qubit])) - for measure_group_qubits in measure_groups: - - unused_mem_slots = ( - set() - if qubit_mem_slots is None - else set(measure_group_qubits) - set(qubit_mem_slots.values()) - ) - - try: - default_sched = inst_map.get(measure_name, measure_group_qubits) - except exceptions.PulseError as ex: - raise exceptions.PulseError( - f"We could not find a default measurement schedule called '{measure_name}'. " - "Please provide another name using the 'measure_name' keyword " - "argument. For assistance, the instructions which are defined are: " - f"{inst_map.instructions}" - ) from ex - for time, inst in default_sched.instructions: - if inst.channel.index not in qubits: - continue - if qubit_mem_slots and isinstance(inst, instructions.Acquire): - if inst.channel.index in qubit_mem_slots: - mem_slot = channels.MemorySlot(qubit_mem_slots[inst.channel.index]) - else: - mem_slot = channels.MemorySlot(unused_mem_slots.pop()) - inst = instructions.Acquire(inst.duration, inst.channel, mem_slot=mem_slot) - # Measurement pulses should only be added if its qubit was measured by the user - schedule = schedule.insert(time, inst) - - return schedule - - -def _measure_v2( - qubits: Sequence[int], - target: Target, - meas_map: list[list[int]] | dict[int, list[int]], - qubit_mem_slots: dict[int, int], - measure_name: str = "measure", -) -> Schedule: - """Return a schedule which measures the requested qubits according to the given - target and measure map, or by using the defaults provided by the backendV2. - - Args: - qubits: List of qubits to be measured. - target: The :class:`~.Target` representing the target backend. - meas_map: List of sets of qubits that must be measured together. - qubit_mem_slots: Mapping of measured qubit index to classical bit index. - measure_name: Name of the measurement schedule. - - Returns: - A measurement schedule corresponding to the inputs provided. - """ - schedule = Schedule(name=f"Default measurement schedule for qubits {qubits}") - - if isinstance(meas_map, list): - meas_map = utils.format_meas_map(meas_map) - meas_group = set() - for qubit in qubits: - meas_group |= set(meas_map[qubit]) - meas_group = sorted(meas_group) - - meas_group_set = set(range(max(meas_group) + 1)) - unassigned_qubit_indices = sorted(set(meas_group) - qubit_mem_slots.keys()) - unassigned_reg_indices = sorted(meas_group_set - set(qubit_mem_slots.values()), reverse=True) - if set(qubit_mem_slots.values()).issubset(meas_group_set): - for qubit in unassigned_qubit_indices: - qubit_mem_slots[qubit] = unassigned_reg_indices.pop() - - for measure_qubit in meas_group: - try: - if measure_qubit in qubits: - default_sched = target._get_calibration(measure_name, (measure_qubit,)).filter( - channels=[ - channels.MeasureChannel(measure_qubit), - channels.AcquireChannel(measure_qubit), - ] - ) - schedule += _schedule_remapping_memory_slot(default_sched, qubit_mem_slots) - except KeyError as ex: - raise exceptions.PulseError( - f"We could not find a default measurement schedule called '{measure_name}'. " - "Please provide another name using the 'measure_name' keyword " - "argument. For assistance, the instructions which are defined are: " - f"{target.instructions}" - ) from ex - return schedule - - -def measure_all(backend) -> Schedule: - """ - Return a Schedule which measures all qubits of the given backend. - - Args: - backend (Union[Backend, BaseBackend]): A backend instance, which contains - hardware-specific data required for scheduling. - - Returns: - A schedule corresponding to the inputs provided. - """ - # backend is V2. - if isinstance(backend, BackendV2): - qubits = list(range(backend.num_qubits)) - else: - qubits = list(range(backend.configuration().n_qubits)) - return measure(qubits=qubits, backend=backend) - - -def _schedule_remapping_memory_slot( - schedule: Schedule, qubit_mem_slots: dict[int, int] -) -> Schedule: - """ - A helper function to overwrite MemorySlot index of :class:`.Acquire` instruction. - - Args: - schedule: A measurement schedule. - qubit_mem_slots: Mapping of measured qubit index to classical bit index. - - Returns: - A measurement schedule with new memory slot index. - """ - new_schedule = Schedule() - for t0, inst in schedule.instructions: - if isinstance(inst, instructions.Acquire): - qubit_index = inst.channel.index - reg_index = qubit_mem_slots.get(qubit_index, qubit_index) - new_schedule.insert( - t0, - instructions.Acquire( - inst.duration, - channels.AcquireChannel(qubit_index), - mem_slot=channels.MemorySlot(reg_index), - ), - inplace=True, - ) - else: - new_schedule.insert(t0, inst, inplace=True) - return new_schedule diff --git a/qiskit/pulse/parameter_manager.py b/qiskit/pulse/parameter_manager.py deleted file mode 100644 index e5a4a1a1d2bd..000000000000 --- a/qiskit/pulse/parameter_manager.py +++ /dev/null @@ -1,445 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021. -# -# 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. - -# pylint: disable=invalid-name - -""""Management of pulse program parameters. - -Background -========== - -In contrast to ``QuantumCircuit``, in pulse programs, parameter objects can be stored in -multiple places at different layers, for example - -- program variables: ``ScheduleBlock.alignment_context._context_params`` - -- instruction operands: ``ShiftPhase.phase``, ... - -- operand parameters: ``pulse.parameters``, ``channel.index`` ... - -This complexity is due to the tight coupling of the program to an underlying device Hamiltonian, -i.e. the variance of physical parameters between qubits and their couplings. -If we want to define a program that can be used with arbitrary qubits, -we should be able to parametrize every control parameter in the program. - -Implementation -============== - -Managing parameters in each object within a program, i.e. the ``ParameterTable`` model, -makes the framework quite complicated. With the ``ParameterManager`` class within this module, -the parameter assignment operation is performed by a visitor instance. - -The visitor pattern is a way of separating data processing from the object on which it operates. -This removes the overhead of parameter management from each piece of the program. -The computational complexity of the parameter assignment operation may be increased -from the parameter table model of ~O(1), however, usually, this calculation occurs -only once before the program is executed. Thus this doesn't hurt user experience during -pulse programming. On the contrary, it removes parameter table object and associated logic -from each object, yielding smaller object creation cost and higher performance -as the data amount scales. - -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 __future__ import annotations -from copy import copy -from typing import Any, Mapping, Sequence - -from qiskit.circuit.parametervector import ParameterVector, ParameterVectorElement -from qiskit.circuit.parameter import Parameter -from qiskit.circuit.parameterexpression import ParameterExpression, ParameterValueType -from qiskit.pulse import instructions, channels -from qiskit.pulse.exceptions import PulseError -from qiskit.pulse.library import SymbolicPulse, Waveform -from qiskit.pulse.schedule import Schedule, ScheduleBlock -from qiskit.pulse.transforms.alignments import AlignmentKind -from qiskit.pulse.utils import ( - format_parameter_value, - _validate_parameter_vector, - _validate_parameter_value, -) - - -class NodeVisitor: - """A node visitor base class that walks instruction data in a pulse program and calls - visitor functions for every node. - - Though this class implementation is based on Python AST, each node doesn't have - a dedicated node class due to the lack of an abstract syntax tree for pulse programs in - Qiskit. Instead of parsing pulse programs, this visitor class finds the associated visitor - function based on class name of the instruction node, i.e. ``Play``, ``Call``, etc... - The `.visit` method recursively checks superclass of given node since some parametrized - components such as ``DriveChannel`` may share a common superclass with other subclasses. - In this example, we can just define ``visit_Channel`` method instead of defining - the same visitor function for every subclasses. - - Some instructions may have special logic or data structure to store parameter objects, - and visitor functions for these nodes should be individually defined. - - Because pulse programs can be nested into another pulse program, - the visitor function should be able to recursively call proper visitor functions. - If visitor function is not defined for a given node, ``generic_visit`` - method is called. Usually, this method is provided for operating on object defined - outside of the Qiskit Pulse module. - """ - - def visit(self, node: Any): - """Visit a node.""" - visitor = self._get_visitor(type(node)) - return visitor(node) - - def _get_visitor(self, node_class): - """A helper function to recursively investigate superclass visitor method.""" - if node_class == object: - return self.generic_visit - - try: - return getattr(self, f"visit_{node_class.__name__}") - except AttributeError: - # check super class - return self._get_visitor(node_class.__base__) - - def visit_ScheduleBlock(self, node: ScheduleBlock): - """Visit ``ScheduleBlock``. Recursively visit context blocks and overwrite. - - .. note:: ``ScheduleBlock`` can have parameters in blocks and its alignment. - """ - raise NotImplementedError - - def visit_Schedule(self, node: Schedule): - """Visit ``Schedule``. Recursively visit schedule children and overwrite.""" - raise NotImplementedError - - def generic_visit(self, node: Any): - """Called if no explicit visitor function exists for a node.""" - raise NotImplementedError - - -class ParameterSetter(NodeVisitor): - """Node visitor for parameter binding. - - This visitor is initialized with a dictionary of parameters to be assigned, - and assign values to operands of nodes found. - """ - - def __init__(self, param_map: dict[ParameterExpression, ParameterValueType]): - self._param_map = param_map - - # Top layer: Assign parameters to programs - - def visit_ScheduleBlock(self, node: ScheduleBlock): - """Visit ``ScheduleBlock``. Recursively visit context blocks and overwrite. - - .. note:: ``ScheduleBlock`` can have parameters in blocks and its alignment. - """ - node._alignment_context = self.visit_AlignmentKind(node.alignment_context) - for elm in node._blocks: - self.visit(elm) - - self._update_parameter_manager(node) - return node - - def visit_Schedule(self, node: Schedule): - """Visit ``Schedule``. Recursively visit schedule children and overwrite.""" - # accessing to private member - # TODO: consider updating Schedule to handle this more gracefully - node._Schedule__children = [(t0, self.visit(sched)) for t0, sched in node.instructions] - node._renew_timeslots() - - self._update_parameter_manager(node) - return node - - def visit_AlignmentKind(self, node: AlignmentKind): - """Assign parameters to block's ``AlignmentKind`` specification.""" - new_parameters = tuple(self.visit(param) for param in node._context_params) - node._context_params = new_parameters - - return node - - # Mid layer: Assign parameters to instructions - - def visit_Instruction(self, node: instructions.Instruction): - """Assign parameters to general pulse instruction. - - .. note:: All parametrized object should be stored in the operands. - Otherwise parameter cannot be detected. - """ - if node.is_parameterized(): - node._operands = tuple(self.visit(op) for op in node.operands) - - return node - - # Lower layer: Assign parameters to operands - - def visit_Channel(self, node: channels.Channel): - """Assign parameters to ``Channel`` object.""" - if node.is_parameterized(): - new_index = self._assign_parameter_expression(node.index) - - # validate - if not isinstance(new_index, ParameterExpression): - if not isinstance(new_index, int) or new_index < 0: - raise PulseError("Channel index must be a nonnegative integer") - - # return new instance to prevent accidentally override timeslots without evaluation - return node.__class__(index=new_index) - - return node - - def visit_SymbolicPulse(self, node: SymbolicPulse): - """Assign parameters to ``SymbolicPulse`` object.""" - if node.is_parameterized(): - # Assign duration - if isinstance(node.duration, ParameterExpression): - node.duration = self._assign_parameter_expression(node.duration) - # Assign other parameters - for name in node._params: - pval = node._params[name] - if isinstance(pval, ParameterExpression): - new_val = self._assign_parameter_expression(pval) - node._params[name] = new_val - if not node.disable_validation: - node.validate_parameters() - - return node - - def visit_Waveform(self, node: Waveform): - """Assign parameters to ``Waveform`` object. - - .. node:: No parameter can be assigned to ``Waveform`` object. - """ - return node - - def generic_visit(self, node: Any): - """Assign parameters to object that doesn't belong to Qiskit Pulse module.""" - if isinstance(node, ParameterExpression): - return self._assign_parameter_expression(node) - else: - return node - - def _assign_parameter_expression(self, param_expr: ParameterExpression): - """A helper function to assign parameter value to parameter expression.""" - new_value = copy(param_expr) - updated = param_expr.parameters & self._param_map.keys() - for param in updated: - new_value = new_value.assign(param, self._param_map[param]) - new_value = format_parameter_value(new_value) - return new_value - - def _update_parameter_manager(self, node: Schedule | ScheduleBlock): - """A helper function to update parameter manager of pulse program.""" - if not hasattr(node, "_parameter_manager"): - raise PulseError(f"Node type {node.__class__.__name__} has no parameter manager.") - - param_manager = node._parameter_manager - updated = param_manager.parameters & self._param_map.keys() - - 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): - """Node visitor for parameter finding. - - This visitor initializes empty parameter array, and recursively visits nodes - and add parameters found to the array. - """ - - def __init__(self): - self.parameters = set() - - # Top layer: Get parameters from programs - - def visit_ScheduleBlock(self, node: ScheduleBlock): - """Visit ``ScheduleBlock``. Recursively visit context blocks and search parameters. - - .. note:: ``ScheduleBlock`` can have parameters in blocks and its alignment. - """ - # 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.""" - self.parameters |= node.parameters - - def visit_AlignmentKind(self, node: AlignmentKind): - """Get parameters from block's ``AlignmentKind`` specification.""" - for param in node._context_params: - if isinstance(param, ParameterExpression): - self.parameters |= param.parameters - - # Mid layer: Get parameters from instructions - - 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. - """ - for op in node.operands: - self.visit(op) - - # Lower layer: Get parameters from operands - - def visit_Channel(self, node: channels.Channel): - """Get parameters from ``Channel`` object.""" - self.parameters |= node.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.parameters |= op_value.parameters - - def visit_Waveform(self, node: Waveform): - """Get parameters from ``Waveform`` object. - - .. node:: No parameter can be assigned to ``Waveform`` object. - """ - pass - - def generic_visit(self, node: Any): - """Get parameters from object that doesn't belong to Qiskit Pulse module.""" - if isinstance(node, ParameterExpression): - self.parameters |= node.parameters - - -class ParameterManager: - """Helper class to manage parameter objects associated with arbitrary pulse programs. - - This object is implicitly initialized with the parameter object storage - that stores parameter objects added to the parent pulse program. - - Parameter assignment logic is implemented based on the visitor pattern. - Instruction data and its location are not directly associated with this object. - """ - - def __init__(self): - """Create new parameter table for pulse programs.""" - self._parameters = set() - - @property - 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) - - 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. - - Args: - parameter_name: Name of parameter. - - Returns: - Parameter objects that have corresponding name. - """ - return [param for param in self.parameters if param.name == parameter_name] - - def assign_parameters( - self, - pulse_program: Any, - value_dict: dict[ - ParameterExpression | ParameterVector | str, - ParameterValueType | Sequence[ParameterValueType], - ], - ) -> Any: - """Modify and return program data with parameters assigned according to the input. - - Args: - pulse_program: Arbitrary pulse program associated with this manager instance. - value_dict: A mapping from Parameters to either numeric values or another - Parameter expression. - - Returns: - Updated program data. - """ - unrolled_value_dict = self._unroll_param_dict(value_dict) - valid_map = { - k: unrolled_value_dict[k] for k in unrolled_value_dict.keys() & self._parameters - } - if valid_map: - visitor = ParameterSetter(param_map=valid_map) - 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. - - Args: - new_node: A new data node to be added. - """ - visitor = ParameterGetter() - visitor.visit(new_node) - self._parameters |= visitor.parameters - - def _unroll_param_dict( - self, - parameter_binds: Mapping[ - Parameter | ParameterVector | str, ParameterValueType | Sequence[ParameterValueType] - ], - ) -> Mapping[Parameter, ParameterValueType]: - """ - Unroll parameter dictionary to a map from parameter to value. - - Args: - parameter_binds: A dictionary from parameter to value or a list of values. - - Returns: - A dictionary from parameter to value. - """ - out = {} - param_name_dict = {param.name: [] for param in self.parameters} - for param in self.parameters: - param_name_dict[param.name].append(param) - param_vec_dict = { - param.vector.name: param.vector - for param in self.parameters - if isinstance(param, ParameterVectorElement) - } - for name in param_vec_dict.keys(): - if name in param_name_dict: - param_name_dict[name].append(param_vec_dict[name]) - else: - param_name_dict[name] = [param_vec_dict[name]] - - for parameter, value in parameter_binds.items(): - if isinstance(parameter, ParameterVector): - _validate_parameter_vector(parameter, value) - out.update(zip(parameter, value)) - elif isinstance(parameter, str): - for param in param_name_dict[parameter]: - is_vec = _validate_parameter_value(param, value) - if is_vec: - out.update(zip(param, value)) - else: - out[param] = value - else: - out[parameter] = value - return out diff --git a/qiskit/pulse/parser.py b/qiskit/pulse/parser.py deleted file mode 100644 index e9cd4917a7ce..000000000000 --- a/qiskit/pulse/parser.py +++ /dev/null @@ -1,314 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2019. -# -# 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. - -# pylint: disable=invalid-name - -"""Parser for mathematical string expressions returned by backends.""" -from __future__ import annotations -import ast -import copy -import operator - -import cmath -from collections.abc import Callable -from typing import Any - -from qiskit.pulse.exceptions import PulseError -from qiskit.circuit import ParameterExpression - - -class PulseExpression(ast.NodeTransformer): - """Expression parser to evaluate parameter values.""" - - _math_ops: dict[str, Callable | float] = { - "acos": cmath.acos, - "acosh": cmath.acosh, - "asin": cmath.asin, - "asinh": cmath.asinh, - "atan": cmath.atan, - "atanh": cmath.atanh, - "cos": cmath.cos, - "cosh": cmath.cosh, - "exp": cmath.exp, - "log": cmath.log, - "log10": cmath.log10, - "sin": cmath.sin, - "sinh": cmath.sinh, - "sqrt": cmath.sqrt, - "tan": cmath.tan, - "tanh": cmath.tanh, - "pi": cmath.pi, - "e": cmath.e, - } - """Valid math functions.""" - - _binary_ops = { - ast.Add: operator.add, - ast.Sub: operator.sub, - ast.Mult: operator.mul, - ast.Div: operator.truediv, - ast.Pow: operator.pow, - } - """Valid binary operations.""" - - _unary_ops = {ast.UAdd: operator.pos, ast.USub: operator.neg} - """Valid unary operations.""" - - def __init__(self, source: str | ast.Expression, partial_binding: bool = False): - """Create new evaluator. - - Args: - source: Expression of equation to evaluate. - partial_binding: Allow partial bind of parameters. - - Raises: - PulseError: When invalid string is specified. - """ - self._partial_binding = partial_binding - self._locals_dict: dict[str, Any] = {} - self._params: set[str] = set() - - if isinstance(source, ast.Expression): - self._tree = source - else: - try: - self._tree = ast.parse(source, mode="eval") - except SyntaxError as ex: - raise PulseError(f"{source} is invalid expression.") from ex - - # parse parameters - self.visit(self._tree) - - @property - def params(self) -> list[str]: - """Get parameters. - - Returns: - A list of parameters in sorted order. - """ - return sorted(self._params.copy()) - - def __call__(self, *args, **kwargs) -> complex | ast.Expression | PulseExpression: - """Evaluate the expression with the given values of the expression's parameters. - - Args: - *args: Variable length parameter list. - **kwargs: Arbitrary parameters. - - Returns: - Evaluated value. - - Raises: - PulseError: When parameters are not bound. - """ - if isinstance(self._tree.body, ast.Constant): - return self._tree.body.value - - self._locals_dict.clear() - if args: - for key, val in zip(self.params, args): - self._locals_dict[key] = val - if kwargs: - for key, val in kwargs.items(): - if key in self.params: - if key not in self._locals_dict: - self._locals_dict[key] = val - else: - raise PulseError( - f"{self.__class__.__name__} got multiple values for argument '{key}'" - ) - else: - raise PulseError( - f"{self.__class__.__name__} got an unexpected keyword argument '{key}'" - ) - - expr = self.visit(self._tree) - - if not isinstance(expr.body, ast.Constant): - if self._partial_binding: - return PulseExpression(expr, self._partial_binding) - else: - raise PulseError(f"Parameters {self.params} are not all bound.") - return expr.body.value - - @staticmethod - def _match_ops(opr: ast.AST, opr_dict: dict, *args) -> complex: - """Helper method to apply operators. - - Args: - opr: Operator of node. - opr_dict: Mapper from ast to operator. - *args: Arguments supplied to operator. - - Returns: - Evaluated value. - - Raises: - PulseError: When unsupported operation is specified. - """ - for op_type, op_func in opr_dict.items(): - if isinstance(opr, op_type): - return op_func(*args) - raise PulseError(f"Operator {opr.__class__.__name__} is not supported.") - - def visit_Expression(self, node: ast.Expression) -> ast.Expression: - """Evaluate children nodes of expression. - - Args: - node: Expression to evaluate. - - Returns: - Evaluated value. - """ - tmp_node = copy.copy(node) - tmp_node.body = self.visit(tmp_node.body) - - return tmp_node - - def visit_Constant(self, node: ast.Constant) -> ast.Constant: - """Return constant value as it is. - - Args: - node: Constant. - - Returns: - Input node. - """ - return node - - def visit_Name(self, node: ast.Name) -> ast.Name | ast.Constant: - """Evaluate name and return ast.Constant if it is bound. - - Args: - node: Name to evaluate. - - Returns: - Evaluated value. - - Raises: - PulseError: When parameter value is not a number. - """ - if node.id in self._math_ops: - val = ast.Constant(self._math_ops[node.id]) - return ast.copy_location(val, node) - elif node.id in self._locals_dict: - _val = self._locals_dict[node.id] - if not isinstance(_val, ParameterExpression): - # check value type - try: - _val = complex(_val) - if not _val.imag: - _val = _val.real - except ValueError as ex: - raise PulseError( - f"Invalid parameter value {node.id} = {self._locals_dict[node.id]} is " - "specified." - ) from ex - val = ast.Constant(_val) - return ast.copy_location(val, node) - self._params.add(node.id) - return node - - def visit_UnaryOp(self, node: ast.UnaryOp) -> ast.UnaryOp | ast.Constant: - """Evaluate unary operation and return ast.Constant if operand is bound. - - Args: - node: Unary operation to evaluate. - - Returns: - Evaluated value. - """ - node = copy.copy(node) - node.operand = self.visit(node.operand) - if isinstance(node.operand, ast.Constant): - val = ast.Constant(self._match_ops(node.op, self._unary_ops, node.operand.value)) - return ast.copy_location(val, node) - return node - - def visit_BinOp(self, node: ast.BinOp) -> ast.BinOp | ast.Constant: - """Evaluate binary operation and return ast.Constant if operands are bound. - - Args: - node: Binary operation to evaluate. - - Returns: - Evaluated value. - """ - node = copy.copy(node) - node.left = self.visit(node.left) - node.right = self.visit(node.right) - if isinstance(node.left, ast.Constant) and isinstance(node.right, ast.Constant): - val = ast.Constant( - self._match_ops(node.op, self._binary_ops, node.left.value, node.right.value) - ) - return ast.copy_location(val, node) - return node - - def visit_Call(self, node: ast.Call) -> ast.Call | ast.Constant: - """Evaluate function and return ast.Constant if all arguments are bound. - - Args: - node: Function to evaluate. - - Returns: - Evaluated value. - - Raises: - PulseError: When unsupported or unsafe function is specified. - """ - if not isinstance(node.func, ast.Name): - raise PulseError("Unsafe expression is detected.") - node = copy.copy(node) - node.args = [self.visit(arg) for arg in node.args] - if all(isinstance(arg, ast.Constant) for arg in node.args): - if node.func.id not in self._math_ops: - raise PulseError(f"Function {node.func.id} is not supported.") - _args = [arg.value for arg in node.args] - _val = self._math_ops[node.func.id](*_args) - if not _val.imag: - _val = _val.real - val = ast.Constant(_val) - return ast.copy_location(val, node) - return node - - def generic_visit(self, node): - raise PulseError(f"Unsupported node: {node.__class__.__name__}") - - -def parse_string_expr(source: str, partial_binding: bool = False) -> PulseExpression: - """Safe parsing of string expression. - - Args: - source: String expression to parse. - partial_binding: Allow partial bind of parameters. - - Returns: - PulseExpression: Returns a expression object. - - Example: - - expr = 'P1 + P2 + P3' - parsed_expr = parse_string_expr(expr, partial_binding=True) - - # create new PulseExpression - bound_two = parsed_expr(P1=1, P2=2) - # evaluate expression - value1 = bound_two(P3=3) - value2 = bound_two(P3=4) - value3 = bound_two(P3=5) - - """ - subs = [("numpy.", ""), ("np.", ""), ("math.", ""), ("cmath.", "")] - for match, sub in subs: - source = source.replace(match, sub) - - return PulseExpression(source, partial_binding) diff --git a/qiskit/pulse/reference_manager.py b/qiskit/pulse/reference_manager.py deleted file mode 100644 index 9016fa7efaec..000000000000 --- a/qiskit/pulse/reference_manager.py +++ /dev/null @@ -1,58 +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. - -"""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 deleted file mode 100644 index a5df8989a96d..000000000000 --- a/qiskit/pulse/schedule.py +++ /dev/null @@ -1,1910 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2019. -# -# 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. - -# pylint: disable=cyclic-import - -""" -========= -Schedules -========= - -.. currentmodule:: qiskit.pulse - -Schedules are Pulse programs. They describe instruction sequences for the control hardware. -The Schedule is one of the most fundamental objects to this pulse-level programming module. -A ``Schedule`` is a representation of a *program* in Pulse. Each schedule tracks the time of each -instruction occuring in parallel over multiple signal *channels*. - -.. autosummary:: - :toctree: ../stubs/ - - Schedule - ScheduleBlock -""" -from __future__ import annotations -import abc -import copy -import functools -import itertools -import multiprocessing as mp -import sys -import warnings -from collections.abc import Callable, Iterable -from typing import List, Tuple, Union, Dict, Any, Sequence - -import numpy as np -import rustworkx as rx - -from qiskit.circuit import ParameterVector -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, 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 -from qiskit.utils import deprecate_arg -from qiskit.utils.deprecate_pulse import deprecate_pulse_func - - -Interval = Tuple[int, int] -"""An interval type is a tuple of a start time (inclusive) and an end time (exclusive).""" - -TimeSlots = Dict[Channel, List[Interval]] -"""List of timeslots occupied by instructions for each channel.""" - - -class Schedule: - """A quantum program *schedule* with exact time constraints for its instructions, operating - over all input signal *channels* and supporting special syntaxes for building. - - Pulse program representation for the original Qiskit Pulse model [1]. - Instructions are not allowed to overlap in time - on the same channel. This overlap constraint is immediately - evaluated when a new instruction is added to the ``Schedule`` object. - - It is necessary to specify the absolute start time and duration - for each instruction so as to deterministically fix its execution time. - - The ``Schedule`` program supports some syntax sugar for easier programming. - - - Appending an instruction to the end of a channel - - .. plot:: - :include-source: - :nofigs: - :context: reset - - from qiskit.pulse import Schedule, Gaussian, DriveChannel, Play - sched = Schedule() - sched += Play(Gaussian(160, 0.1, 40), DriveChannel(0)) - - - Appending an instruction shifted in time by a given amount - - .. plot:: - :include-source: - :nofigs: - :context: - - sched = Schedule() - sched += Play(Gaussian(160, 0.1, 40), DriveChannel(0)) << 30 - - - Merge two schedules - - .. plot:: - :include-source: - :nofigs: - :context: - - sched1 = Schedule() - sched1 += Play(Gaussian(160, 0.1, 40), DriveChannel(0)) - - sched2 = Schedule() - sched2 += Play(Gaussian(160, 0.1, 40), DriveChannel(1)) - sched2 = sched1 | sched2 - - A :obj:`.PulseError` is immediately raised when the overlap constraint is violated. - - In the schedule representation, we cannot parametrize the duration of instructions. - Thus, we need to create a new schedule object for each duration. - To parametrize an instruction's duration, the :class:`~qiskit.pulse.ScheduleBlock` - representation may be used instead. - - References: - [1]: https://arxiv.org/abs/2004.06755 - - """ - - # Prefix to use for auto naming. - prefix = "sched" - - # Counter to count instance number. - instances_counter = itertools.count() - - @deprecate_pulse_func - def __init__( - self, - *schedules: "ScheduleComponent" | tuple[int, "ScheduleComponent"], - name: str | None = None, - metadata: dict | None = None, - ): - """Create an empty schedule. - - Args: - *schedules: Child Schedules of this parent Schedule. May either be passed as - the list of schedules, or a list of ``(start_time, schedule)`` pairs. - name: Name of this schedule. Defaults to an autogenerated string if not provided. - metadata: Arbitrary key value metadata to associate with the schedule. This gets - stored as free-form data in a dict in the - :attr:`~qiskit.pulse.Schedule.metadata` attribute. It will not be directly - used in the schedule. - Raises: - TypeError: if metadata is not a dict. - """ - from qiskit.pulse.parameter_manager import ParameterManager - - if name is None: - name = self.prefix + str(next(self.instances_counter)) - if sys.platform != "win32" and not is_main_process(): - name += f"-{mp.current_process().pid}" - - 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._duration = 0 - - # These attributes are populated by ``_mutable_insert`` - self._timeslots: TimeSlots = {} - self._children: list[tuple[int, "ScheduleComponent"]] = [] - for sched_pair in schedules: - try: - time, sched = sched_pair - except TypeError: - # recreate as sequence starting at 0. - time, sched = 0, sched_pair - self._mutable_insert(time, sched) - - @classmethod - def initialize_from(cls, other_program: Any, name: str | None = None) -> "Schedule": - """Create new schedule object with metadata of another schedule object. - - Args: - other_program: Qiskit program that provides metadata to new object. - name: Name of new schedule. Name of ``schedule`` is used by default. - - Returns: - New schedule object with name and metadata. - - Raises: - PulseError: When `other_program` does not provide necessary information. - """ - try: - name = name or other_program.name - - if other_program.metadata: - metadata = other_program.metadata.copy() - else: - metadata = None - - return cls(name=name, metadata=metadata) - except AttributeError as ex: - raise PulseError( - f"{cls.__name__} cannot be initialized from the program data " - f"{other_program.__class__.__name__}." - ) from ex - - @property - def name(self) -> str: - """Name of this Schedule""" - return self._name - - @property - def metadata(self) -> dict[str, Any]: - """The user provided metadata associated with the schedule. - - User provided ``dict`` of metadata for the schedule. - The metadata contents do not affect the semantics of the program - but are used to influence the execution of the schedule. It is expected - to be passed between all transforms of the schedule and that providers - will associate any schedule metadata with the results it returns from the - execution of that schedule. - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Update the schedule metadata""" - 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 {} - - @property - def timeslots(self) -> TimeSlots: - """Time keeping attribute.""" - return self._timeslots - - @property - def duration(self) -> int: - """Duration of this schedule.""" - return self._duration - - @property - def start_time(self) -> int: - """Starting time of this schedule.""" - return self.ch_start_time(*self.channels) - - @property - def stop_time(self) -> int: - """Stopping time of this schedule.""" - return self.duration - - @property - def channels(self) -> tuple[Channel, ...]: - """Returns channels that this schedule uses.""" - return tuple(self._timeslots.keys()) - - @property - def children(self) -> tuple[tuple[int, "ScheduleComponent"], ...]: - """Return the child schedule components of this ``Schedule`` in the - order they were added to the schedule. - - Notes: - Nested schedules are returned as-is. If you want to collect only instructions, - use :py:meth:`~Schedule.instructions` instead. - - Returns: - A tuple, where each element is a two-tuple containing the initial - scheduled time of each ``NamedValue`` and the component - itself. - """ - return tuple(self._children) - - @property - def instructions(self) -> tuple[tuple[int, Instruction], ...]: - """Get the time-ordered instructions from self.""" - - def key(time_inst_pair): - inst = time_inst_pair[1] - return time_inst_pair[0], inst.duration, sorted(chan.name for chan in inst.channels) - - return tuple(sorted(self._instructions(), key=key)) - - @property - def parameters(self) -> set[Parameter]: - """Parameters which determine the schedule behavior.""" - return self._parameter_manager.parameters - - def ch_duration(self, *channels: Channel) -> int: - """Return the time of the end of the last instruction over the supplied channels. - - Args: - *channels: Channels within ``self`` to include. - """ - return self.ch_stop_time(*channels) - - def ch_start_time(self, *channels: Channel) -> int: - """Return the time of the start of the first instruction over the supplied channels. - - Args: - *channels: Channels within ``self`` to include. - """ - try: - chan_intervals = (self._timeslots[chan] for chan in channels if chan in self._timeslots) - return min(intervals[0][0] for intervals in chan_intervals) - except ValueError: - # If there are no instructions over channels - return 0 - - def ch_stop_time(self, *channels: Channel) -> int: - """Return maximum start time over supplied channels. - - Args: - *channels: Channels within ``self`` to include. - """ - try: - chan_intervals = (self._timeslots[chan] for chan in channels if chan in self._timeslots) - return max(intervals[-1][1] for intervals in chan_intervals) - except ValueError: - # If there are no instructions over channels - return 0 - - def _instructions(self, time: int = 0): - """Iterable for flattening Schedule tree. - - Args: - time: Shifted time due to parent. - - Yields: - Iterable[Tuple[int, Instruction]]: Tuple containing the time each - :class:`~qiskit.pulse.Instruction` - starts at and the flattened :class:`~qiskit.pulse.Instruction` s. - """ - for insert_time, child_sched in self.children: - yield from child_sched._instructions(time + insert_time) - - def shift(self, time: int, name: str | None = None, inplace: bool = False) -> "Schedule": - """Return a schedule shifted forward by ``time``. - - Args: - time: Time to shift by. - name: Name of the new schedule. Defaults to the name of self. - inplace: Perform operation inplace on this schedule. Otherwise - return a new ``Schedule``. - """ - if inplace: - return self._mutable_shift(time) - return self._immutable_shift(time, name=name) - - def _immutable_shift(self, time: int, name: str | None = None) -> "Schedule": - """Return a new schedule shifted forward by `time`. - - Args: - time: Time to shift by - name: Name of the new schedule if call was mutable. Defaults to name of self - """ - shift_sched = Schedule.initialize_from(self, name) - shift_sched.insert(time, self, inplace=True) - - return shift_sched - - def _mutable_shift(self, time: int) -> "Schedule": - """Return this schedule shifted forward by `time`. - - Args: - time: Time to shift by - - Raises: - PulseError: if ``time`` is not an integer. - """ - if not isinstance(time, int): - raise PulseError("Schedule start time must be an integer.") - - timeslots = {} - for chan, ch_timeslots in self._timeslots.items(): - timeslots[chan] = [(ts[0] + time, ts[1] + time) for ts in ch_timeslots] - - _check_nonnegative_timeslot(timeslots) - - self._duration = self._duration + time - self._timeslots = timeslots - self._children = [(orig_time + time, child) for orig_time, child in self.children] - return self - - def insert( - self, - start_time: int, - schedule: "ScheduleComponent", - name: str | None = None, - inplace: bool = False, - ) -> "Schedule": - """Return a new schedule with ``schedule`` inserted into ``self`` at ``start_time``. - - Args: - start_time: Time to insert the schedule. - schedule: Schedule to insert. - name: Name of the new schedule. Defaults to the name of self. - inplace: Perform operation inplace on this schedule. Otherwise - return a new ``Schedule``. - """ - if inplace: - return self._mutable_insert(start_time, schedule) - return self._immutable_insert(start_time, schedule, name=name) - - def _mutable_insert(self, start_time: int, schedule: "ScheduleComponent") -> "Schedule": - """Mutably insert `schedule` into `self` at `start_time`. - - Args: - start_time: Time to insert the second schedule. - schedule: Schedule to mutably insert. - """ - self._add_timeslots(start_time, schedule) - self._children.append((start_time, schedule)) - self._parameter_manager.update_parameter_table(schedule) - return self - - def _immutable_insert( - self, - start_time: int, - schedule: "ScheduleComponent", - name: str | None = None, - ) -> "Schedule": - """Return a new schedule with ``schedule`` inserted into ``self`` at ``start_time``. - Args: - start_time: Time to insert the schedule. - schedule: Schedule to insert. - name: Name of the new ``Schedule``. Defaults to name of ``self``. - """ - new_sched = Schedule.initialize_from(self, name) - new_sched._mutable_insert(0, self) - new_sched._mutable_insert(start_time, schedule) - return new_sched - - def append( - self, schedule: "ScheduleComponent", name: str | None = None, inplace: bool = False - ) -> "Schedule": - r"""Return a new schedule with ``schedule`` inserted at the maximum time over - all channels shared between ``self`` and ``schedule``. - - .. math:: - - t = \textrm{max}(\texttt{x.stop_time} |\texttt{x} \in - \texttt{self.channels} \cap \texttt{schedule.channels}) - - Args: - schedule: Schedule to be appended. - name: Name of the new ``Schedule``. Defaults to name of ``self``. - inplace: Perform operation inplace on this schedule. Otherwise - return a new ``Schedule``. - """ - common_channels = set(self.channels) & set(schedule.channels) - time = self.ch_stop_time(*common_channels) - return self.insert(time, schedule, name=name, inplace=inplace) - - def filter( - self, - *filter_funcs: Callable, - channels: Iterable[Channel] | None = None, - instruction_types: Iterable[abc.ABCMeta] | abc.ABCMeta = None, - time_ranges: Iterable[tuple[int, int]] | None = None, - intervals: Iterable[Interval] | None = None, - check_subroutine: bool = True, - ) -> "Schedule": - """Return a new ``Schedule`` with only the instructions from this ``Schedule`` which pass - though the provided filters; i.e. an instruction will be retained iff every function in - ``filter_funcs`` returns ``True``, the instruction occurs on a channel type contained in - ``channels``, the instruction type is contained in ``instruction_types``, and the period - over which the instruction operates is *fully* contained in one specified in - ``time_ranges`` or ``intervals``. - - If no arguments are provided, ``self`` is returned. - - Args: - filter_funcs: A list of Callables which take a (int, Union['Schedule', Instruction]) - tuple and return a bool. - channels: For example, ``[DriveChannel(0), AcquireChannel(0)]``. - 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 - defined by the :py:class:`~qiskit.pulse.instructions.Call` instruction. - """ - from qiskit.pulse.filters import composite_filter, filter_instructions - - filters = composite_filter(channels, instruction_types, time_ranges, intervals) - filters.extend(filter_funcs) - - return filter_instructions( - self, filters=filters, negate=False, recurse_subroutines=check_subroutine - ) - - def exclude( - self, - *filter_funcs: Callable, - channels: Iterable[Channel] | None = None, - instruction_types: Iterable[abc.ABCMeta] | abc.ABCMeta = None, - time_ranges: Iterable[tuple[int, int]] | None = None, - intervals: Iterable[Interval] | None = None, - check_subroutine: bool = True, - ) -> "Schedule": - """Return a ``Schedule`` with only the instructions from this Schedule *failing* - at least one of the provided filters. - This method is the complement of :py:meth:`~Schedule.filter`, so that:: - - self.filter(args) | self.exclude(args) == self - - Args: - filter_funcs: A list of Callables which take a (int, Union['Schedule', Instruction]) - tuple and return a bool. - channels: For example, ``[DriveChannel(0), AcquireChannel(0)]``. - 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 - defined by the :py:class:`~qiskit.pulse.instructions.Call` instruction. - """ - from qiskit.pulse.filters import composite_filter, filter_instructions - - filters = composite_filter(channels, instruction_types, time_ranges, intervals) - filters.extend(filter_funcs) - - return filter_instructions( - self, filters=filters, negate=True, recurse_subroutines=check_subroutine - ) - - def _add_timeslots(self, time: int, schedule: "ScheduleComponent") -> None: - """Update all time tracking within this schedule based on the given schedule. - - Args: - time: The time to insert the schedule into self. - schedule: The schedule to insert into self. - - Raises: - PulseError: If timeslots overlap or an invalid start time is provided. - """ - if not np.issubdtype(type(time), np.integer): - raise PulseError("Schedule start time must be an integer.") - - other_timeslots = _get_timeslots(schedule) - self._duration = max(self._duration, time + schedule.duration) - - for channel in schedule.channels: - if channel not in self._timeslots: - if time == 0: - self._timeslots[channel] = copy.copy(other_timeslots[channel]) - else: - self._timeslots[channel] = [ - (i[0] + time, i[1] + time) for i in other_timeslots[channel] - ] - continue - - for idx, interval in enumerate(other_timeslots[channel]): - if interval[0] + time >= self._timeslots[channel][-1][1]: - # Can append the remaining intervals - self._timeslots[channel].extend( - [(i[0] + time, i[1] + time) for i in other_timeslots[channel][idx:]] - ) - break - - try: - interval = (interval[0] + time, interval[1] + time) - index = _find_insertion_index(self._timeslots[channel], interval) - self._timeslots[channel].insert(index, interval) - except PulseError as ex: - raise PulseError( - f"Schedule(name='{schedule.name or ''}') cannot be inserted into " - f"Schedule(name='{self.name or ''}') at " - f"time {time} because its instruction on channel {channel} scheduled from time " - f"{interval[0]} to {interval[1]} overlaps with an existing instruction." - ) from ex - - _check_nonnegative_timeslot(self._timeslots) - - def _remove_timeslots(self, time: int, schedule: "ScheduleComponent"): - """Delete the timeslots if present for the respective schedule component. - - Args: - time: The time to remove the timeslots for the ``schedule`` component. - schedule: The schedule to insert into self. - - Raises: - PulseError: If timeslots overlap or an invalid start time is provided. - """ - if not isinstance(time, int): - raise PulseError("Schedule start time must be an integer.") - - for channel in schedule.channels: - - if channel not in self._timeslots: - raise PulseError(f"The channel {channel} is not present in the schedule") - - channel_timeslots = self._timeslots[channel] - other_timeslots = _get_timeslots(schedule) - - for interval in other_timeslots[channel]: - if channel_timeslots: - interval = (interval[0] + time, interval[1] + time) - index = _interval_index(channel_timeslots, interval) - if channel_timeslots[index] == interval: - channel_timeslots.pop(index) - continue - - raise PulseError( - f"Cannot find interval ({interval[0]}, {interval[1]}) to remove from " - f"channel {channel} in Schedule(name='{schedule.name}')." - ) - - if not channel_timeslots: - self._timeslots.pop(channel) - - def _replace_timeslots(self, time: int, old: "ScheduleComponent", new: "ScheduleComponent"): - """Replace the timeslots of ``old`` if present with the timeslots of ``new``. - - Args: - time: The time to remove the timeslots for the ``schedule`` component. - old: Instruction to replace. - new: Instruction to replace with. - """ - self._remove_timeslots(time, old) - self._add_timeslots(time, new) - - def _renew_timeslots(self): - """Regenerate timeslots based on current instructions.""" - self._timeslots.clear() - for t0, inst in self.instructions: - self._add_timeslots(t0, inst) - - def replace( - self, - old: "ScheduleComponent", - new: "ScheduleComponent", - inplace: bool = False, - ) -> "Schedule": - """Return a ``Schedule`` with the ``old`` instruction replaced with a ``new`` - instruction. - - The replacement matching is based on an instruction equality check. - - .. plot:: - :include-source: - :nofigs: - :context: reset - - from qiskit import pulse - - d0 = pulse.DriveChannel(0) - - sched = pulse.Schedule() - - old = pulse.Play(pulse.Constant(100, 1.0), d0) - new = pulse.Play(pulse.Constant(100, 0.1), d0) - - sched += old - - sched = sched.replace(old, new) - - assert sched == pulse.Schedule(new) - - Only matches at the top-level of the schedule tree. If you wish to - perform this replacement over all instructions in the schedule tree. - Flatten the schedule prior to running: - - .. plot:: - :include-source: - :nofigs: - :context: - - sched = pulse.Schedule() - - sched += pulse.Schedule(old) - - sched = sched.replace(old, new) - - assert sched == pulse.Schedule(new) - - Args: - old: Instruction to replace. - new: Instruction to replace with. - inplace: Replace instruction by mutably modifying this ``Schedule``. - - Returns: - The modified schedule with ``old`` replaced by ``new``. - - Raises: - PulseError: If the ``Schedule`` after replacements will has a timing overlap. - """ - from qiskit.pulse.parameter_manager import ParameterManager - - new_children = [] - new_parameters = ParameterManager() - - for time, child in self.children: - if child == old: - new_children.append((time, new)) - new_parameters.update_parameter_table(new) - else: - new_children.append((time, child)) - new_parameters.update_parameter_table(child) - - if inplace: - self._children = new_children - self._parameter_manager = new_parameters - self._renew_timeslots() - return self - else: - try: - new_sched = Schedule.initialize_from(self) - for time, inst in new_children: - new_sched.insert(time, inst, inplace=True) - return new_sched - except PulseError as err: - raise PulseError( - f"Replacement of {old} with {new} results in overlapping instructions." - ) from err - - def is_parameterized(self) -> bool: - """Return True iff the instruction is parameterized.""" - return self._parameter_manager.is_parameterized() - - def assign_parameters( - self, - value_dict: dict[ - ParameterExpression | ParameterVector | str, - ParameterValueType | Sequence[ParameterValueType], - ], - inplace: bool = True, - ) -> "Schedule": - """Assign the parameters in this schedule according to the input. - - Args: - value_dict: A mapping from parameters or parameter names (parameter vector - or parameter vector name) to either numeric values (list of numeric values) - or another parameter expression (list of parameter expressions). - inplace: Set ``True`` to override this instance with new parameter. - - Returns: - Schedule with updated parameters. - """ - 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. - - Because different ``Parameter`` objects can have the same name, - this method returns a list of ``Parameter`` s for the provided name. - - Args: - parameter_name: Name of parameter. - - Returns: - Parameter objects that have corresponding name. - """ - return self._parameter_manager.get_parameters(parameter_name) - - def __len__(self) -> int: - """Return number of instructions in the schedule.""" - return len(self.instructions) - - def __add__(self, other: "ScheduleComponent") -> "Schedule": - """Return a new schedule with ``other`` inserted within ``self`` at ``start_time``.""" - return self.append(other) - - def __or__(self, other: "ScheduleComponent") -> "Schedule": - """Return a new schedule which is the union of `self` and `other`.""" - return self.insert(0, other) - - def __lshift__(self, time: int) -> "Schedule": - """Return a new schedule which is shifted forward by ``time``.""" - return self.shift(time) - - def __eq__(self, other: object) -> bool: - """Test if two Schedule are equal. - - Equality is checked by verifying there is an equal instruction at every time - in ``other`` for every instruction in this ``Schedule``. - - .. warning:: - - This does not check for logical equivalency. Ie., - - ```python - >>> Delay(10, DriveChannel(0)) + Delay(10, DriveChannel(0)) - == Delay(20, DriveChannel(0)) - False - ``` - """ - # 0. type check, we consider Instruction is a subtype of schedule - if not isinstance(other, (type(self), Instruction)): - return False - - # 1. channel check - if set(self.channels) != set(other.channels): - return False - - # 2. size check - if len(self.instructions) != len(other.instructions): - return False - - # 3. instruction check - return all( - self_inst == other_inst - for self_inst, other_inst in zip(self.instructions, other.instructions) - ) - - def __repr__(self) -> str: - name = format(self._name) if self._name else "" - instructions = ", ".join([repr(instr) for instr in self.instructions[:50]]) - if len(self.instructions) > 25: - instructions += ", ..." - return f'{self.__class__.__name__}({instructions}, name="{name}")' - - -def _require_schedule_conversion(function: Callable) -> Callable: - """A method decorator to convert schedule block to pulse schedule. - - This conversation is performed for backward compatibility only if all durations are assigned. - """ - - @functools.wraps(function) - def wrapper(self, *args, **kwargs): - from qiskit.pulse.transforms import block_to_schedule - - return function(block_to_schedule(self), *args, **kwargs) - - return wrapper - - -class ScheduleBlock: - """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. - - One way to reference a subroutine in a schedule is to use the pulse - builder's :func:`~qiskit.pulse.builder.reference` function to declare an - unassigned reference. In this example, the program is called with the - reference key "grand_child". You can call a subroutine without specifying - a substantial program. - - .. plot:: - :include-source: - :nofigs: - :context: reset - - from qiskit import pulse - from qiskit.circuit.parameter import Parameter - - amp1 = Parameter("amp1") - amp2 = Parameter("amp2") - - with pulse.build() as sched_inner: - pulse.play(pulse.Constant(100, amp1), pulse.DriveChannel(0)) - - with pulse.build() as sched_outer: - with pulse.align_right(): - pulse.reference("grand_child") - pulse.play(pulse.Constant(200, amp2), pulse.DriveChannel(0)) - - # Now assign the inner pulse program to this reference - sched_outer.assign_references({("grand_child",): sched_inner}) - print(sched_outer.parameters) - - .. code-block:: text - - {Parameter(amp1), Parameter(amp2)} - - The outer program now has the parameter ``amp2`` from the inner program, - indicating that the inner program's data has been made available to the - outer program. - The program calling the "grand_child" has a reference program description - which is accessed through :attr:`ScheduleBlock.references`. - - .. plot:: - :include-source: - :nofigs: - :context: - - print(sched_outer.references) - - .. code-block:: text - - ReferenceManager: - - ('grand_child',): ScheduleBlock(Play(Constant(duration=100, amp=amp1,... - - 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``. - - .. plot:: - :include-source: - :nofigs: - :context: - - amp3 = Parameter("amp3") - - with pulse.build() as main: - pulse.play(pulse.Constant(300, amp3), pulse.DriveChannel(0)) - pulse.call(sched_outer, name="child") - - print(main.parameters) - - .. code-block:: text - - {Parameter(amp1), Parameter(amp2), Parameter(amp3} - - This implicitly creates a reference named "child" within - the root program and assigns ``sched_outer`` to it. - - Note that the root program is only aware of its direct references. - - .. plot:: - :include-source: - :nofigs: - :context: - - print(main.references) - - .. code-block:: text - - ReferenceManager: - - ('child',): ScheduleBlock(ScheduleBlock(ScheduleBlock(Play(Con... - - 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. - - .. plot:: - :include-source: - :nofigs: - :context: - - main.references[("child", )].references[("grand_child", )] - - Note that :attr:`ScheduleBlock.parameters` still collects all parameters - also from the subroutine once it's assigned. - """ - - __slots__ = ( - "_parent", - "_name", - "_reference_manager", - "_parameter_manager", - "_alignment_context", - "_blocks", - "_metadata", - ) - - # Prefix to use for auto naming. - prefix = "block" - - # Counter to count instance number. - instances_counter = itertools.count() - - @deprecate_pulse_func - def __init__( - self, name: str | None = None, metadata: dict | None = None, alignment_context=None - ): - """Create an empty schedule block. - - Args: - name: Name of this schedule. Defaults to an autogenerated string if not provided. - metadata: Arbitrary key value metadata to associate with the schedule. This gets - stored as free-form data in a dict in the - :attr:`~qiskit.pulse.ScheduleBlock.metadata` attribute. It will not be directly - 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. - """ - from qiskit.pulse.parameter_manager import ParameterManager - from qiskit.pulse.transforms import AlignLeft - - if name is None: - name = self.prefix + str(next(self.instances_counter)) - 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: ScheduleBlock | None = None - - self._name = name - self._parameter_manager = ParameterManager() - self._reference_manager = ReferenceManager() - self._alignment_context = alignment_context or AlignLeft() - self._blocks: list["BlockComponent"] = [] - - # 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: str | None = None) -> "ScheduleBlock": - """Create new schedule object with metadata of another schedule object. - - Args: - other_program: Qiskit program that provides metadata to new object. - name: Name of new schedule. Name of ``block`` is used by default. - - Returns: - New block object with name and metadata. - - Raises: - PulseError: When ``other_program`` does not provide necessary information. - """ - try: - name = name or other_program.name - - if other_program.metadata: - metadata = other_program.metadata.copy() - else: - metadata = None - - try: - alignment_context = other_program.alignment_context - except AttributeError: - alignment_context = None - - return cls(name=name, metadata=metadata, alignment_context=alignment_context) - except AttributeError as ex: - raise PulseError( - f"{cls.__name__} cannot be initialized from the program data " - f"{other_program.__class__.__name__}." - ) from ex - - @property - def name(self) -> str: - """Return name of this schedule""" - return self._name - - @property - def metadata(self) -> dict[str, Any]: - """The user provided metadata associated with the schedule. - - User provided ``dict`` of metadata for the schedule. - The metadata contents do not affect the semantics of the program - but are used to influence the execution of the schedule. It is expected - to be passed between all transforms of the schedule and that providers - will associate any schedule metadata with the results it returns from the - execution of that schedule. - """ - return self._metadata - - @metadata.setter - def metadata(self, metadata): - """Update the schedule metadata""" - 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 {} - - @property - def alignment_context(self): - """Return alignment instance that allocates block component to generate schedule.""" - return self._alignment_context - - def is_schedulable(self) -> bool: - """Return ``True`` if all durations are assigned.""" - # check context assignment - for context_param in self._alignment_context._context_params: - if isinstance(context_param, ParameterExpression): - return False - - # check duration assignment - for elm in self.blocks: - if isinstance(elm, ScheduleBlock): - if not elm.is_schedulable(): - return False - else: - try: - if not isinstance(elm.duration, int): - return False - except UnassignedReferenceError: - return False - return True - - @property - @_require_schedule_conversion - def duration(self) -> int: - """Duration of this schedule block.""" - return self.duration - - @property - def channels(self) -> tuple[Channel, ...]: - """Returns channels that this schedule block uses.""" - chans: set[Channel] = set() - 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 - @_require_schedule_conversion - def instructions(self) -> tuple[tuple[int, Instruction]]: - """Get the time-ordered instructions from self.""" - return self.instructions - - @property - def blocks(self) -> tuple["BlockComponent", ...]: - """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[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 - - @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: - """Return the time of the end of the last instruction over the supplied channels. - - Args: - *channels: Channels within ``self`` to include. - """ - return self.ch_duration(*channels) - - def append( - self, block: "BlockComponent", name: str | None = None, inplace: bool = True - ) -> "ScheduleBlock": - """Return a new schedule block with ``block`` appended to the context block. - The execution time is automatically assigned when the block is converted into schedule. - - 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, - return a new ``Schedule``. - - Returns: - Schedule block with appended schedule. - - Raises: - PulseError: When invalid schedule type is specified. - """ - if not isinstance(block, (ScheduleBlock, Instruction)): - raise PulseError( - f"Appended `schedule` {block.__class__.__name__} is invalid type. " - "Only `Instruction` and `ScheduleBlock` can be accepted." - ) - - if not inplace: - 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 - - self._blocks.append(block) - self._parameter_manager.update_parameter_table(block) - - return self - - def filter( - self, - *filter_funcs: Callable[..., bool], - channels: Iterable[Channel] | None = None, - instruction_types: Iterable[abc.ABCMeta] | abc.ABCMeta = None, - check_subroutine: bool = True, - ): - """Return a new ``ScheduleBlock`` with only the instructions from this ``ScheduleBlock`` - which pass though the provided filters; i.e. an instruction will be retained if - every function in ``filter_funcs`` returns ``True``, the instruction occurs on - a channel type contained in ``channels``, and the instruction type is contained - in ``instruction_types``. - - .. warning:: - Because ``ScheduleBlock`` is not aware of the execution time of - the context instructions, filtering out some instructions may - change the execution time of the remaining instructions. - - If no arguments are provided, ``self`` is returned. - - Args: - filter_funcs: A list of Callables which take a ``Instruction`` and return a bool. - channels: For example, ``[DriveChannel(0), AcquireChannel(0)]``. - instruction_types: For example, ``[PulseInstruction, AcquireInstruction]``. - check_subroutine: Set `True` to individually filter instructions inside a subroutine - defined by the :py:class:`~qiskit.pulse.instructions.Call` instruction. - - Returns: - ``ScheduleBlock`` consisting of instructions that matches with filtering condition. - """ - from qiskit.pulse.filters import composite_filter, filter_instructions - - filters = composite_filter(channels, instruction_types) - filters.extend(filter_funcs) - - return filter_instructions( - self, filters=filters, negate=False, recurse_subroutines=check_subroutine - ) - - def exclude( - self, - *filter_funcs: Callable[..., bool], - channels: Iterable[Channel] | None = None, - instruction_types: Iterable[abc.ABCMeta] | abc.ABCMeta = None, - check_subroutine: bool = True, - ): - """Return a new ``ScheduleBlock`` with only the instructions from this ``ScheduleBlock`` - *failing* at least one of the provided filters. - This method is the complement of :py:meth:`~ScheduleBlock.filter`, so that:: - - self.filter(args) + self.exclude(args) == self in terms of instructions included. - - .. warning:: - Because ``ScheduleBlock`` is not aware of the execution time of - the context instructions, excluding some instructions may - change the execution time of the remaining instructions. - - Args: - filter_funcs: A list of Callables which take a ``Instruction`` and return a bool. - channels: For example, ``[DriveChannel(0), AcquireChannel(0)]``. - instruction_types: For example, ``[PulseInstruction, AcquireInstruction]``. - check_subroutine: Set `True` to individually filter instructions inside of a subroutine - defined by the :py:class:`~qiskit.pulse.instructions.Call` instruction. - - Returns: - ``ScheduleBlock`` consisting of instructions that do not match with - at least one of filtering conditions. - """ - from qiskit.pulse.filters import composite_filter, filter_instructions - - filters = composite_filter(channels, instruction_types) - filters.extend(filter_funcs) - - return filter_instructions( - self, filters=filters, negate=True, recurse_subroutines=check_subroutine - ) - - def replace( - self, - old: "BlockComponent", - new: "BlockComponent", - inplace: bool = True, - ) -> "ScheduleBlock": - """Return a ``ScheduleBlock`` with the ``old`` component replaced with a ``new`` - component. - - Args: - old: Schedule block component to replace. - new: Schedule block component to replace with. - inplace: Replace instruction by mutably modifying this ``ScheduleBlock``. - - Returns: - The modified schedule block with ``old`` replaced by ``new``. - """ - if not inplace: - schedule = copy.deepcopy(self) - return schedule.replace(old, new, inplace=True) - - if old not in self._blocks: - # Avoid unnecessary update of reference and parameter manager - return self - - # 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 - - # 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 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 | ParameterVector | str, - ParameterValueType | Sequence[ParameterValueType], - ], - inplace: bool = True, - ) -> "ScheduleBlock": - """Assign the parameters in this schedule according to the input. - - Args: - value_dict: A mapping from parameters or parameter names (parameter vector - or parameter vector name) to either numeric values (list of numeric values) - or another parameter expression (list of parameter expressions). - inplace: Set ``True`` to override this instance with new parameter. - - Returns: - Schedule with updated parameters. - - Raises: - PulseError: When the block is nested into another block. - """ - 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[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: - - .. plot:: - :include-source: - :nofigs: - :context: reset - - from qiskit import pulse - - with pulse.build() as nested_prog: - 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``. - - .. plot:: - :include-source: - :nofigs: - :context: - - sub_prog.assign_references({("A", ): nested_prog}, inplace=True) - main_prog.assign_references({("B", ): sub_prog}, inplace=True) - - Alternatively, you can also write - - .. plot:: - :nofigs: - :context: reset - - # This code is hidden from readers - # It resets the variables so the following code example runs correctly - from qiskit import pulse - with pulse.build() as nested_prog: - pulse.delay(10, pulse.DriveChannel(0)) - with pulse.build() as sub_prog: - pulse.reference("A") - with pulse.build() as main_prog: - pulse.reference("B") - - - .. plot:: - :include-source: - :nofigs: - :context: - - 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. - - Note that we can define different parameter objects with the same name, - because these different objects are identified by their unique uuid. - For example, - - .. plot:: - :include-source: - :nofigs: - - 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. - - Returns: - Parameter objects that have corresponding name. - """ - matched = [p for p in self.parameters if p.name == parameter_name] - return matched - - def __len__(self) -> int: - """Return number of instructions in the schedule.""" - return len(self.blocks) - - def __eq__(self, other: object) -> bool: - """Test if two ScheduleBlocks are equal. - - Equality is checked by verifying there is an equal instruction at every time - in ``other`` for every instruction in this ``ScheduleBlock``. This check is - performed by converting the instruction representation into directed acyclic graph, - in which execution order of every instruction is evaluated correctly across all channels. - Also ``self`` and ``other`` should have the same alignment context. - - .. warning:: - - This does not check for logical equivalency. Ie., - - ```python - >>> Delay(10, DriveChannel(0)) + Delay(10, DriveChannel(0)) - == Delay(20, DriveChannel(0)) - False - ``` - """ - # 0. type check - if not isinstance(other, type(self)): - return False - - # 1. transformation check - if self.alignment_context != other.alignment_context: - return False - - # 2. size check - if len(self) != len(other): - return False - - # 3. instruction check with alignment - from qiskit.pulse.transforms.dag import block_to_dag as dag - - 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 "" - blocks = ", ".join([repr(instr) for instr in self.blocks[:50]]) - if len(self.blocks) > 25: - blocks += ", ..." - return ( - f'{self.__class__.__name__}({blocks}, name="{name}",' - f" transform={repr(self.alignment_context)})" - ) - - def __add__(self, other: "BlockComponent") -> "ScheduleBlock": - """Return a new schedule with ``other`` inserted within ``self`` at ``start_time``.""" - return self.append(other) - - -def _common_method(*classes): - """A function decorator to attach the function to specified classes as a method. - - .. note:: For developer: A method attached through this decorator may hurt readability - of the codebase, because the method may not be detected by a code editor. - Thus, this decorator should be used to a limited extent, i.e. huge helper method. - By using this decorator wisely, we can reduce code maintenance overhead without - losing readability of the codebase. - """ - - def decorator(method): - @functools.wraps(method) - def wrapper(*args, **kwargs): - return method(*args, **kwargs) - - for cls in classes: - setattr(cls, method.__name__, wrapper) - return method - - return decorator - - -@deprecate_arg("show_barriers", new_alias="plot_barriers", since="1.1.0", pending=True) -@_common_method(Schedule, ScheduleBlock) -def draw( - self, - style: dict[str, Any] | None = None, - backend=None, # importing backend causes cyclic import - time_range: tuple[int, int] | None = None, - time_unit: str = "dt", - disable_channels: list[Channel] | None = None, - show_snapshot: bool = True, - show_framechange: bool = True, - show_waveform_info: bool = True, - plot_barrier: bool = True, - plotter: str = "mpl2d", - axis: Any | None = None, - show_barrier: bool = True, -): - """Plot the schedule. - - Args: - style: Stylesheet options. This can be dictionary or preset stylesheet classes. See - :py:class:`~qiskit.visualization.pulse_v2.stylesheets.IQXStandard`, - :py:class:`~qiskit.visualization.pulse_v2.stylesheets.IQXSimple`, and - :py:class:`~qiskit.visualization.pulse_v2.stylesheets.IQXDebugging` for details of - preset stylesheets. - backend (Optional[BaseBackend]): Backend object to play the input pulse program. - If provided, the plotter may use to make the visualization hardware aware. - time_range: Set horizontal axis limit. Tuple ``(tmin, tmax)``. - time_unit: The unit of specified time range either ``dt`` or ``ns``. - The unit of `ns` is available only when ``backend`` object is provided. - disable_channels: A control property to show specific pulse channel. - Pulse channel instances provided as a list are not shown in the output image. - show_snapshot: Show snapshot instructions. - show_framechange: Show frame change instructions. The frame change represents - instructions that modulate phase or frequency of pulse channels. - show_waveform_info: Show additional information about waveforms such as their name. - plot_barrier: Show barrier lines. - plotter: Name of plotter API to generate an output image. - One of following APIs should be specified:: - - mpl2d: Matplotlib API for 2D image generation. - Matplotlib API to generate 2D image. Charts are placed along y axis with - vertical offset. This API takes matplotlib.axes.Axes as ``axis`` input. - - ``axis`` and ``style`` kwargs may depend on the plotter. - axis: Arbitrary object passed to the plotter. If this object is provided, - the plotters use a given ``axis`` instead of internally initializing - a figure object. This object format depends on the plotter. - See plotter argument for details. - show_barrier: DEPRECATED. Show barrier lines. - - Returns: - Visualization output data. - The returned data type depends on the ``plotter``. - If matplotlib family is specified, this will be a ``matplotlib.pyplot.Figure`` data. - """ - # pylint: disable=cyclic-import - from qiskit.visualization import pulse_drawer - - del show_barrier - return pulse_drawer( - program=self, - style=style, - backend=backend, - time_range=time_range, - time_unit=time_unit, - disable_channels=disable_channels, - show_snapshot=show_snapshot, - show_framechange=show_framechange, - show_waveform_info=show_waveform_info, - plot_barrier=plot_barrier, - plotter=plotter, - axis=axis, - ) - - -def _interval_index(intervals: list[Interval], interval: Interval) -> int: - """Find the index of an interval. - - Args: - intervals: A sorted list of non-overlapping Intervals. - interval: The interval for which the index into intervals will be found. - - Returns: - The index of the interval. - - Raises: - PulseError: If the interval does not exist. - """ - index = _locate_interval_index(intervals, interval) - found_interval = intervals[index] - if found_interval != interval: - raise PulseError(f"The interval: {interval} does not exist in intervals: {intervals}") - return index - - -def _locate_interval_index(intervals: list[Interval], interval: Interval, index: int = 0) -> int: - """Using binary search on start times, find an interval. - - Args: - intervals: A sorted list of non-overlapping Intervals. - interval: The interval for which the index into intervals will be found. - index: A running tally of the index, for recursion. The user should not pass a value. - - Returns: - The index into intervals that new_interval would be inserted to maintain - a sorted list of intervals. - """ - if not intervals or len(intervals) == 1: - return index - - mid_idx = len(intervals) // 2 - mid = intervals[mid_idx] - if interval[1] <= mid[0] and (interval != mid): - return _locate_interval_index(intervals[:mid_idx], interval, index=index) - else: - return _locate_interval_index(intervals[mid_idx:], interval, index=index + mid_idx) - - -def _find_insertion_index(intervals: list[Interval], new_interval: Interval) -> int: - """Using binary search on start times, return the index into `intervals` where the new interval - belongs, or raise an error if the new interval overlaps with any existing ones. - Args: - intervals: A sorted list of non-overlapping Intervals. - new_interval: The interval for which the index into intervals will be found. - Returns: - The index into intervals that new_interval should be inserted to maintain a sorted list - of intervals. - Raises: - PulseError: If new_interval overlaps with the given intervals. - """ - index = _locate_interval_index(intervals, new_interval) - if index < len(intervals): - if _overlaps(intervals[index], new_interval): - raise PulseError("New interval overlaps with existing.") - return index if new_interval[1] <= intervals[index][0] else index + 1 - return index - - -def _overlaps(first: Interval, second: Interval) -> bool: - """Return True iff first and second overlap. - Note: first.stop may equal second.start, since Interval stop times are exclusive. - """ - if first[0] == second[0] == second[1]: - # They fail to overlap if one of the intervals has duration 0 - return False - if first[0] > second[0]: - first, second = second, first - return second[0] < first[1] - - -def _check_nonnegative_timeslot(timeslots: TimeSlots): - """Test that a channel has no negative timeslots. - - Raises: - PulseError: If a channel timeslot is negative. - """ - for chan, chan_timeslots in timeslots.items(): - if chan_timeslots: - if chan_timeslots[0][0] < 0: - raise PulseError(f"An instruction on {chan} has a negative starting time.") - - -def _get_timeslots(schedule: "ScheduleComponent") -> TimeSlots: - """Generate timeslots from given schedule component. - - Args: - schedule: Input schedule component. - - Raises: - PulseError: When invalid schedule type is specified. - """ - if isinstance(schedule, Instruction): - duration = schedule.duration - instruction_duration_validation(duration) - timeslots = {channel: [(0, duration)] for channel in schedule.channels} - elif isinstance(schedule, Schedule): - timeslots = schedule.timeslots - else: - raise PulseError(f"Invalid schedule type {type(schedule)} is specified.") - - 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 - - -# 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 -# issues when the aliases are imported into different scopes, in which the `ForwardRef` instances -# would no longer resolve. Instead, we only use forward references in the annotations of _this_ -# file to reference the aliases, which are guaranteed to resolve in scope, so the aliases can all be -# concrete. - -ScheduleComponent = Union[Schedule, Instruction] -"""An element that composes a pulse schedule.""" - -BlockComponent = Union[ScheduleBlock, Instruction] -"""An element that composes a pulse schedule block.""" diff --git a/qiskit/pulse/transforms/__init__.py b/qiskit/pulse/transforms/__init__.py deleted file mode 100644 index 4fb4bf40e9ef..000000000000 --- a/qiskit/pulse/transforms/__init__.py +++ /dev/null @@ -1,106 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021. -# -# 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. -r""" -================================================= -Pulse Transforms (:mod:`qiskit.pulse.transforms`) -================================================= - -The pulse transforms provide transformation routines to reallocate and optimize -pulse programs for backends. - -.. _pulse_alignments: - -Alignments -========== - -The alignment transforms define alignment policies of instructions in :obj:`.ScheduleBlock`. -These transformations are called to create :obj:`.Schedule`\ s from :obj:`.ScheduleBlock`\ s. - -.. autosummary:: - :toctree: ../stubs/ - - AlignEquispaced - AlignFunc - AlignLeft - AlignRight - AlignSequential - -These are all subtypes of the abstract base class :class:`AlignmentKind`. - -.. autoclass:: AlignmentKind - - -.. _pulse_canonical_transform: - -Canonicalization -================ - -The canonicalization transforms convert schedules to a form amenable for execution on -OpenPulse backends. - -.. autofunction:: add_implicit_acquires -.. autofunction:: align_measures -.. autofunction:: block_to_schedule -.. autofunction:: compress_pulses -.. autofunction:: flatten -.. autofunction:: inline_subroutines -.. autofunction:: pad -.. autofunction:: remove_directives -.. autofunction:: remove_trivial_barriers - - -.. _pulse_dag: - -DAG -=== - -The DAG transforms create DAG representation of input program. This can be used for -optimization of instructions and equality checks. - -.. autofunction:: block_to_dag - - -.. _pulse_transform_chain: - -Composite transform -=================== - -A sequence of transformations to generate a target code. - -.. autofunction:: target_qobj_transform - -""" - -from .alignments import ( - AlignEquispaced, - AlignFunc, - AlignLeft, - AlignRight, - AlignSequential, - AlignmentKind, -) - -from .base_transforms import target_qobj_transform - -from .canonicalization import ( - add_implicit_acquires, - align_measures, - block_to_schedule, - compress_pulses, - flatten, - inline_subroutines, - pad, - remove_directives, - remove_trivial_barriers, -) - -from .dag import block_to_dag diff --git a/qiskit/pulse/transforms/alignments.py b/qiskit/pulse/transforms/alignments.py deleted file mode 100644 index b0983ea80c4e..000000000000 --- a/qiskit/pulse/transforms/alignments.py +++ /dev/null @@ -1,408 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021. -# -# 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. -"""A collection of passes to reallocate the timeslots of instructions according to context.""" -from __future__ import annotations -import abc -from typing import Callable, Tuple - -import numpy as np - -from qiskit.circuit.parameterexpression import ParameterExpression, ParameterValueType -from qiskit.pulse.exceptions import PulseError -from qiskit.pulse.schedule import Schedule, ScheduleComponent -from qiskit.pulse.utils import instruction_duration_validation - - -class AlignmentKind(abc.ABC): - """An abstract class for schedule alignment.""" - - def __init__(self, context_params: Tuple[ParameterValueType, ...]): - """Create new context.""" - self._context_params = tuple(context_params) - - @abc.abstractmethod - def align(self, schedule: Schedule) -> Schedule: - """Reallocate instructions according to the policy. - - Only top-level sub-schedules are aligned. If sub-schedules are nested, - nested schedules are not recursively aligned. - - Args: - schedule: Schedule to align. - - Returns: - Schedule with reallocated instructions. - """ - pass - - @property - @abc.abstractmethod - def is_sequential(self) -> bool: - """Return ``True`` if this is sequential alignment context. - - This information is used to evaluate DAG equivalency of two :class:`.ScheduleBlock`s. - When the context has two pulses in different channels, - a sequential context subtype intends to return following scheduling outcome. - - .. code-block:: text - - ┌────────┐ - D0: ┤ pulse1 ├──────────── - └────────┘ ┌────────┐ - D1: ────────────┤ pulse2 ├ - └────────┘ - - On the other hand, parallel context with ``is_sequential=False`` returns - - .. code-block:: text - - ┌────────┐ - D0: ┤ pulse1 ├ - ├────────┤ - D1: ┤ pulse2 ├ - └────────┘ - - All subclasses must implement this method according to scheduling strategy. - """ - pass - - def __eq__(self, other: object) -> bool: - """Check equality of two transforms.""" - if type(self) is not type(other): - return False - if self._context_params != other._context_params: - return False - return True - - def __repr__(self): - return f"{self.__class__.__name__}({', '.join(self._context_params)})" - - -class AlignLeft(AlignmentKind): - """Align instructions in as-soon-as-possible manner. - - Instructions are placed at earliest available timeslots. - """ - - def __init__(self): - """Create new left-justified context.""" - super().__init__(context_params=()) - - @property - def is_sequential(self) -> bool: - return False - - def align(self, schedule: Schedule) -> Schedule: - """Reallocate instructions according to the policy. - - Only top-level sub-schedules are aligned. If sub-schedules are nested, - nested schedules are not recursively aligned. - - Args: - schedule: Schedule to align. - - Returns: - Schedule with reallocated instructions. - """ - aligned = Schedule.initialize_from(schedule) - for _, child in schedule.children: - self._push_left_append(aligned, child) - - return aligned - - @staticmethod - def _push_left_append(this: Schedule, other: ScheduleComponent) -> Schedule: - """Return ``this`` with ``other`` inserted at the maximum time over - all channels shared between ```this`` and ``other``. - - Args: - this: Input schedule to which ``other`` will be inserted. - other: Other schedule to insert. - - Returns: - Push left appended schedule. - """ - this_channels = set(this.channels) - other_channels = set(other.channels) - shared_channels = list(this_channels & other_channels) - ch_slacks = [ - this.stop_time - this.ch_stop_time(channel) + other.ch_start_time(channel) - for channel in shared_channels - ] - - if ch_slacks: - slack_chan = shared_channels[np.argmin(ch_slacks)] - shared_insert_time = this.ch_stop_time(slack_chan) - other.ch_start_time(slack_chan) - else: - shared_insert_time = 0 - - # Handle case where channels not common to both might actually start - # after ``this`` has finished. - other_only_insert_time = other.ch_start_time(*(other_channels - this_channels)) - # Choose whichever is greatest. - insert_time = max(shared_insert_time, other_only_insert_time) - - return this.insert(insert_time, other, inplace=True) - - -class AlignRight(AlignmentKind): - """Align instructions in as-late-as-possible manner. - - Instructions are placed at latest available timeslots. - """ - - def __init__(self): - """Create new right-justified context.""" - super().__init__(context_params=()) - - @property - def is_sequential(self) -> bool: - return False - - def align(self, schedule: Schedule) -> Schedule: - """Reallocate instructions according to the policy. - - Only top-level sub-schedules are aligned. If sub-schedules are nested, - nested schedules are not recursively aligned. - - Args: - schedule: Schedule to align. - - Returns: - Schedule with reallocated instructions. - """ - aligned = Schedule.initialize_from(schedule) - for _, child in reversed(schedule.children): - aligned = self._push_right_prepend(aligned, child) - - return aligned - - @staticmethod - def _push_right_prepend(this: Schedule, other: ScheduleComponent) -> Schedule: - """Return ``this`` with ``other`` inserted at the latest possible time - such that ``other`` ends before it overlaps with any of ``this``. - - If required ``this`` is shifted to start late enough so that there is room - to insert ``other``. - - Args: - this: Input schedule to which ``other`` will be inserted. - other: Other schedule to insert. - - Returns: - Push right prepended schedule. - """ - this_channels = set(this.channels) - other_channels = set(other.channels) - shared_channels = list(this_channels & other_channels) - ch_slacks = [ - this.ch_start_time(channel) - other.ch_stop_time(channel) for channel in shared_channels - ] - - if ch_slacks: - insert_time = min(ch_slacks) + other.start_time - else: - insert_time = this.stop_time - other.stop_time + other.start_time - - if insert_time < 0: - this.shift(-insert_time, inplace=True) - this.insert(0, other, inplace=True) - else: - this.insert(insert_time, other, inplace=True) - - return this - - -class AlignSequential(AlignmentKind): - """Align instructions sequentially. - - Instructions played on different channels are also arranged in a sequence. - No buffer time is inserted in between instructions. - """ - - def __init__(self): - """Create new sequential context.""" - super().__init__(context_params=()) - - @property - def is_sequential(self) -> bool: - return True - - def align(self, schedule: Schedule) -> Schedule: - """Reallocate instructions according to the policy. - - Only top-level sub-schedules are aligned. If sub-schedules are nested, - nested schedules are not recursively aligned. - - Args: - schedule: Schedule to align. - - Returns: - Schedule with reallocated instructions. - """ - aligned = Schedule.initialize_from(schedule) - for _, child in schedule.children: - aligned.insert(aligned.duration, child, inplace=True) - - return aligned - - -class AlignEquispaced(AlignmentKind): - """Align instructions with equispaced interval within a specified duration. - - Instructions played on different channels are also arranged in a sequence. - This alignment is convenient to create dynamical decoupling sequences such as PDD. - """ - - def __init__(self, duration: int | ParameterExpression): - """Create new equispaced context. - - Args: - duration: Duration of this context. This should be larger than the schedule duration. - If the specified duration is shorter than the schedule duration, - no alignment is performed and the input schedule is just returned. - This duration can be parametrized. - """ - super().__init__(context_params=(duration,)) - - @property - def is_sequential(self) -> bool: - return True - - @property - def duration(self): - """Return context duration.""" - return self._context_params[0] - - def align(self, schedule: Schedule) -> Schedule: - """Reallocate instructions according to the policy. - - Only top-level sub-schedules are aligned. If sub-schedules are nested, - nested schedules are not recursively aligned. - - Args: - schedule: Schedule to align. - - Returns: - Schedule with reallocated instructions. - """ - instruction_duration_validation(self.duration) - - total_duration = sum(child.duration for _, child in schedule.children) - if self.duration < total_duration: - return schedule - - total_delay = self.duration - total_duration - - if len(schedule.children) > 1: - # Calculate the interval in between sub-schedules. - # If the duration cannot be divided by the number of sub-schedules, - # the modulo is appended and prepended to the input schedule. - interval, mod = np.divmod(total_delay, len(schedule.children) - 1) - else: - interval = 0 - mod = total_delay - - # Calculate pre schedule delay - delay, mod = np.divmod(mod, 2) - - aligned = Schedule.initialize_from(schedule) - # Insert sub-schedules with interval - _t0 = int(aligned.stop_time + delay + mod) - for _, child in schedule.children: - aligned.insert(_t0, child, inplace=True) - _t0 = int(aligned.stop_time + interval) - - return aligned - - -class AlignFunc(AlignmentKind): - """Allocate instructions at position specified by callback function. - - The position is specified for each instruction of index ``j`` as a - fractional coordinate in [0, 1] within the specified duration. - - Instructions played on different channels are also arranged in a sequence. - This alignment is convenient to create dynamical decoupling sequences such as UDD. - - For example, UDD sequence with 10 pulses can be specified with following function. - - .. plot:: - :include-source: - :nofigs: - - import numpy as np - - def udd10_pos(j): - return np.sin(np.pi*j/(2*10 + 2))**2 - - .. note:: - - This context cannot be QPY serialized because of the callable. If you use this context, - your program cannot be saved in QPY format. - - """ - - def __init__(self, duration: int | ParameterExpression, func: Callable): - """Create new equispaced context. - - Args: - duration: Duration of this context. This should be larger than the schedule duration. - If the specified duration is shorter than the schedule duration, - no alignment is performed and the input schedule is just returned. - This duration can be parametrized. - func: A function that takes an index of sub-schedule and returns the - fractional coordinate of of that sub-schedule. The returned value should be - defined within [0, 1]. The pulse index starts from 1. - """ - super().__init__(context_params=(duration, func)) - - @property - def is_sequential(self) -> bool: - return True - - @property - def duration(self): - """Return context duration.""" - return self._context_params[0] - - @property - def func(self): - """Return context alignment function.""" - return self._context_params[1] - - def align(self, schedule: Schedule) -> Schedule: - """Reallocate instructions according to the policy. - - Only top-level sub-schedules are aligned. If sub-schedules are nested, - nested schedules are not recursively aligned. - - Args: - schedule: Schedule to align. - - Returns: - Schedule with reallocated instructions. - """ - instruction_duration_validation(self.duration) - - if self.duration < schedule.duration: - return schedule - - aligned = Schedule.initialize_from(schedule) - for ind, (_, child) in enumerate(schedule.children): - _t_center = self.duration * self.func(ind + 1) - _t0 = int(_t_center - 0.5 * child.duration) - if _t0 < 0 or _t0 > self.duration: - raise PulseError(f"Invalid schedule position t={_t0} is specified at index={ind}") - aligned.insert(_t0, child, inplace=True) - - return aligned diff --git a/qiskit/pulse/transforms/base_transforms.py b/qiskit/pulse/transforms/base_transforms.py deleted file mode 100644 index 011c050f578a..000000000000 --- a/qiskit/pulse/transforms/base_transforms.py +++ /dev/null @@ -1,71 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021. -# -# 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. -"""A collection of set of transforms.""" - -# TODO: replace this with proper pulse transformation passes. Qiskit-terra/#6121 - -from typing import Union, Iterable, Tuple - -from qiskit.pulse.instructions import Instruction -from qiskit.pulse.schedule import ScheduleBlock, Schedule -from qiskit.pulse.transforms import canonicalization - -InstructionSched = Union[Tuple[int, Instruction], Instruction] - - -def target_qobj_transform( - sched: Union[ScheduleBlock, Schedule, InstructionSched, Iterable[InstructionSched]], - remove_directives: bool = True, -) -> Schedule: - """A basic pulse program transformation for OpenPulse API execution. - - Args: - sched: Input program to transform. - remove_directives: Set `True` to remove compiler directives. - - Returns: - Transformed program for execution. - """ - if not isinstance(sched, Schedule): - # convert into schedule representation - if isinstance(sched, ScheduleBlock): - sched = canonicalization.block_to_schedule(sched) - else: - sched = Schedule(*_format_schedule_component(sched)) - - # remove subroutines, i.e. Call instructions - sched = canonicalization.inline_subroutines(sched) - - # inline nested schedules - sched = canonicalization.flatten(sched) - - # remove directives, e.g. barriers - if remove_directives: - sched = canonicalization.remove_directives(sched) - - return sched - - -def _format_schedule_component(sched: Union[InstructionSched, Iterable[InstructionSched]]): - """A helper function to convert instructions into list of instructions.""" - # TODO remove schedule initialization with *args, Qiskit-terra/#5093 - - try: - sched = list(sched) - # (t0, inst), or list of it - if isinstance(sched[0], int): - # (t0, inst) tuple - return [tuple(sched)] - else: - return sched - except TypeError: - return [sched] diff --git a/qiskit/pulse/transforms/canonicalization.py b/qiskit/pulse/transforms/canonicalization.py deleted file mode 100644 index 6d4c3cb3af7b..000000000000 --- a/qiskit/pulse/transforms/canonicalization.py +++ /dev/null @@ -1,504 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021. -# -# 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. -"""Basic rescheduling functions which take schedule or instructions and return new schedules.""" -from __future__ import annotations -import typing -import warnings -from collections import defaultdict -from collections.abc import Iterable -from typing import Type - -import numpy as np - -from qiskit.pulse import channels as chans, exceptions, instructions -from qiskit.pulse.channels import ClassicalIOChannel -from qiskit.pulse.exceptions import PulseError -from qiskit.pulse.exceptions import UnassignedDurationError -from qiskit.pulse.instruction_schedule_map import InstructionScheduleMap -from qiskit.pulse.instructions import directives -from qiskit.pulse.schedule import Schedule, ScheduleBlock, ScheduleComponent - -if typing.TYPE_CHECKING: - from qiskit.pulse.library import Pulse # pylint: disable=cyclic-import - - -def block_to_schedule(block: ScheduleBlock) -> Schedule: - """Convert ``ScheduleBlock`` to ``Schedule``. - - Args: - block: A ``ScheduleBlock`` to convert. - - Returns: - Scheduled pulse program. - - Raises: - UnassignedDurationError: When any instruction duration is not assigned. - PulseError: When the alignment context duration is shorter than the schedule duration. - - .. note:: This transform may insert barriers in between contexts. - """ - if not block.is_schedulable(): - raise UnassignedDurationError( - "All instruction durations should be assigned before creating `Schedule`." - "Please check `.parameters` to find unassigned parameter objects." - ) - - schedule = Schedule.initialize_from(block) - - for op_data in block.blocks: - if isinstance(op_data, ScheduleBlock): - context_schedule = block_to_schedule(op_data) - if hasattr(op_data.alignment_context, "duration"): - # context may have local scope duration, e.g. EquispacedAlignment for 1000 dt - post_buffer = op_data.alignment_context.duration - context_schedule.duration - if post_buffer < 0: - raise PulseError( - f"ScheduleBlock {op_data.name} has longer duration than " - "the specified context duration " - f"{context_schedule.duration} > {op_data.duration}." - ) - else: - post_buffer = 0 - schedule.append(context_schedule, inplace=True) - - # prevent interruption by following instructions. - # padding with delay instructions is no longer necessary, thanks to alignment context. - if post_buffer > 0: - context_boundary = instructions.RelativeBarrier(*op_data.channels) - schedule.append(context_boundary.shift(post_buffer), inplace=True) - else: - schedule.append(op_data, inplace=True) - - # transform with defined policy - return block.alignment_context.align(schedule) - - -def compress_pulses(schedules: list[Schedule]) -> list[Schedule]: - """Optimization pass to replace identical pulses. - - Args: - schedules: Schedules to compress. - - Returns: - Compressed schedules. - """ - existing_pulses: list[Pulse] = [] - new_schedules = [] - - for schedule in schedules: - new_schedule = Schedule.initialize_from(schedule) - - for time, inst in schedule.instructions: - if isinstance(inst, instructions.Play): - if inst.pulse in existing_pulses: - idx = existing_pulses.index(inst.pulse) - identical_pulse = existing_pulses[idx] - new_schedule.insert( - time, - instructions.Play(identical_pulse, inst.channel, inst.name), - inplace=True, - ) - else: - existing_pulses.append(inst.pulse) - new_schedule.insert(time, inst, inplace=True) - else: - new_schedule.insert(time, inst, inplace=True) - - new_schedules.append(new_schedule) - - return new_schedules - - -def flatten(program: Schedule) -> Schedule: - """Flatten (inline) any called nodes into a Schedule tree with no nested children. - - Args: - program: Pulse program to remove nested structure. - - Returns: - Flatten pulse program. - - Raises: - PulseError: When invalid data format is given. - """ - if isinstance(program, Schedule): - flat_sched = Schedule.initialize_from(program) - for time, inst in program.instructions: - flat_sched.insert(time, inst, inplace=True) - return flat_sched - else: - raise PulseError(f"Invalid input program {program.__class__.__name__} is specified.") - - -def inline_subroutines(program: Schedule | ScheduleBlock) -> Schedule | ScheduleBlock: - """Recursively remove call instructions and inline the respective subroutine instructions. - - Assigned parameter values, which are stored in the parameter table, are also applied. - The subroutine is copied before the parameter assignment to avoid mutation problem. - - Args: - program: A program which may contain the subroutine, i.e. ``Call`` instruction. - - Returns: - A schedule without subroutine. - - Raises: - PulseError: When input program is not valid data format. - """ - if isinstance(program, Schedule): - return _inline_schedule(program) - elif isinstance(program, ScheduleBlock): - return _inline_block(program) - else: - raise PulseError(f"Invalid program {program.__class__.__name__} is specified.") - - -def _inline_schedule(schedule: Schedule) -> Schedule: - """A helper function to inline subroutine of schedule. - - .. note:: If subroutine is ``ScheduleBlock`` it is converted into Schedule to get ``t0``. - """ - ret_schedule = Schedule.initialize_from(schedule) - for t0, inst in schedule.children: - # note that schedule.instructions unintentionally flatten the nested schedule. - # this should be performed by another transformer node. - if isinstance(inst, Schedule): - # recursively inline the program - inline_schedule = _inline_schedule(inst) - ret_schedule.insert(t0, inline_schedule, inplace=True) - else: - ret_schedule.insert(t0, inst, inplace=True) - return ret_schedule - - -def _inline_block(block: ScheduleBlock) -> ScheduleBlock: - """A helper function to inline subroutine of schedule block. - - .. note:: If subroutine is ``Schedule`` the function raises an error. - """ - ret_block = ScheduleBlock.initialize_from(block) - for inst in block.blocks: - if isinstance(inst, ScheduleBlock): - # recursively inline the program - inline_block = _inline_block(inst) - ret_block.append(inline_block, inplace=True) - else: - ret_block.append(inst, inplace=True) - return ret_block - - -def remove_directives(schedule: Schedule) -> Schedule: - """Remove directives. - - Args: - schedule: A schedule to remove compiler directives. - - Returns: - A schedule without directives. - """ - return schedule.exclude(instruction_types=[directives.Directive]) - - -def remove_trivial_barriers(schedule: Schedule) -> Schedule: - """Remove trivial barriers with 0 or 1 channels. - - Args: - schedule: A schedule to remove trivial barriers. - - Returns: - schedule: A schedule without trivial barriers - """ - - def filter_func(inst): - return isinstance(inst[1], directives.RelativeBarrier) and len(inst[1].channels) < 2 - - return schedule.exclude(filter_func) - - -def align_measures( - schedules: Iterable[ScheduleComponent], - inst_map: InstructionScheduleMap | None = None, - cal_gate: str = "u3", - max_calibration_duration: int | None = None, - align_time: int | None = None, - align_all: bool | None = True, -) -> list[Schedule]: - """Return new schedules where measurements occur at the same physical time. - - This transformation will align the first :class:`.Acquire` on - every channel to occur at the same time. - - Minimum measurement wait time (to allow for calibration pulses) is enforced - and may be set with ``max_calibration_duration``. - - By default only instructions containing a :class:`.AcquireChannel` or :class:`.MeasureChannel` - will be shifted. If you wish to keep the relative timing of all instructions in the schedule set - ``align_all=True``. - - This method assumes that ``MeasureChannel(i)`` and ``AcquireChannel(i)`` - correspond to the same qubit and the acquire/play instructions - should be shifted together on these channels. - - .. plot:: - :include-source: - :nofigs: - :context: reset - - from qiskit import pulse - from qiskit.pulse import transforms - - d0 = pulse.DriveChannel(0) - m0 = pulse.MeasureChannel(0) - a0 = pulse.AcquireChannel(0) - mem0 = pulse.MemorySlot(0) - - sched = pulse.Schedule() - sched.append(pulse.Play(pulse.Constant(10, 0.5), d0), inplace=True) - sched.append(pulse.Play(pulse.Constant(10, 1.), m0).shift(sched.duration), inplace=True) - sched.append(pulse.Acquire(20, a0, mem0).shift(sched.duration), inplace=True) - - sched_shifted = sched << 20 - - aligned_sched, aligned_sched_shifted = transforms.align_measures([sched, sched_shifted]) - - assert aligned_sched == aligned_sched_shifted - - If it is desired to only shift acquisition and measurement stimulus instructions - set the flag ``align_all=False``: - - .. plot:: - :include-source: - :nofigs: - :context: - - aligned_sched, aligned_sched_shifted = transforms.align_measures( - [sched, sched_shifted], - align_all=False, - ) - - assert aligned_sched != aligned_sched_shifted - - - Args: - schedules: Collection of schedules to be aligned together - inst_map: Mapping of circuit operations to pulse schedules - cal_gate: The name of the gate to inspect for the calibration time - max_calibration_duration: If provided, inst_map and cal_gate will be ignored - align_time: If provided, this will be used as final align time. - align_all: Shift all instructions in the schedule such that they maintain - their relative alignment with the shifted acquisition instruction. - If ``False`` only the acquisition and measurement pulse instructions - will be shifted. - Returns: - The input list of schedules transformed to have their measurements aligned. - - Raises: - PulseError: If the provided alignment time is negative. - """ - - def get_first_acquire_times(schedules): - """Return a list of first acquire times for each schedule.""" - acquire_times = [] - for schedule in schedules: - visited_channels = set() - qubit_first_acquire_times: dict[int, int] = defaultdict(lambda: None) - - for time, inst in schedule.instructions: - if isinstance(inst, instructions.Acquire) and inst.channel not in visited_channels: - visited_channels.add(inst.channel) - qubit_first_acquire_times[inst.channel.index] = time - - acquire_times.append(qubit_first_acquire_times) - return acquire_times - - def get_max_calibration_duration(inst_map, cal_gate): - """Return the time needed to allow for readout discrimination calibration pulses.""" - # TODO (qiskit-terra #5472): fix behavior of this. - max_calibration_duration = 0 - for qubits in inst_map.qubits_with_instruction(cal_gate): - cmd = inst_map.get(cal_gate, qubits, np.pi, 0, np.pi) - max_calibration_duration = max(cmd.duration, max_calibration_duration) - return max_calibration_duration - - if align_time is not None and align_time < 0: - raise exceptions.PulseError("Align time cannot be negative.") - - first_acquire_times = get_first_acquire_times(schedules) - # Extract the maximum acquire in every schedule across all acquires in the schedule. - # If there are no acquires in the schedule default to 0. - max_acquire_times = [max(0, *times.values()) for times in first_acquire_times] - if align_time is None: - if max_calibration_duration is None: - if inst_map: - max_calibration_duration = get_max_calibration_duration(inst_map, cal_gate) - else: - max_calibration_duration = 0 - align_time = max(max_calibration_duration, *max_acquire_times) - - # Shift acquires according to the new scheduled time - new_schedules = [] - for sched_idx, schedule in enumerate(schedules): - new_schedule = Schedule.initialize_from(schedule) - stop_time = schedule.stop_time - - if align_all: - if first_acquire_times[sched_idx]: - shift = align_time - max_acquire_times[sched_idx] - else: - shift = align_time - stop_time - else: - shift = 0 - - for time, inst in schedule.instructions: - measurement_channels = { - chan.index - for chan in inst.channels - if isinstance(chan, (chans.MeasureChannel, chans.AcquireChannel)) - } - if measurement_channels: - sched_first_acquire_times = first_acquire_times[sched_idx] - max_start_time = max( - sched_first_acquire_times[chan] - for chan in measurement_channels - if chan in sched_first_acquire_times - ) - shift = align_time - max_start_time - - if shift < 0: - warnings.warn( - "The provided alignment time is scheduling an acquire instruction " - "earlier than it was scheduled for in the original Schedule. " - "This may result in an instruction being scheduled before t=0 and " - "an error being raised." - ) - new_schedule.insert(time + shift, inst, inplace=True) - - new_schedules.append(new_schedule) - - return new_schedules - - -def add_implicit_acquires(schedule: ScheduleComponent, meas_map: list[list[int]]) -> Schedule: - """Return a new schedule with implicit acquires from the measurement mapping replaced by - explicit ones. - - .. warning:: Since new acquires are being added, Memory Slots will be set to match the - qubit index. This may overwrite your specification. - - Args: - schedule: Schedule to be aligned. - meas_map: List of lists of qubits that are measured together. - - Returns: - A ``Schedule`` with the additional acquisition instructions. - """ - new_schedule = Schedule.initialize_from(schedule) - acquire_map = {} - - for time, inst in schedule.instructions: - if isinstance(inst, instructions.Acquire): - if inst.mem_slot and inst.mem_slot.index != inst.channel.index: - warnings.warn( - "One of your acquires was mapped to a memory slot which didn't match" - " the qubit index. I'm relabeling them to match." - ) - - # Get the label of all qubits that are measured with the qubit(s) in this instruction - all_qubits = [] - for sublist in meas_map: - if inst.channel.index in sublist: - all_qubits.extend(sublist) - # Replace the old acquire instruction by a new one explicitly acquiring all qubits in - # the measurement group. - for i in all_qubits: - explicit_inst = instructions.Acquire( - inst.duration, - chans.AcquireChannel(i), - mem_slot=chans.MemorySlot(i), - kernel=inst.kernel, - discriminator=inst.discriminator, - ) - if time not in acquire_map: - new_schedule.insert(time, explicit_inst, inplace=True) - acquire_map = {time: {i}} - elif i not in acquire_map[time]: - new_schedule.insert(time, explicit_inst, inplace=True) - acquire_map[time].add(i) - else: - new_schedule.insert(time, inst, inplace=True) - - return new_schedule - - -def pad( - schedule: Schedule, - channels: Iterable[chans.Channel] | None = None, - until: int | None = None, - inplace: bool = False, - pad_with: Type[instructions.Instruction] | None = None, -) -> Schedule: - """Pad the input Schedule with ``Delay``s on all unoccupied timeslots until - ``schedule.duration`` or ``until`` if not ``None``. - - Args: - schedule: Schedule to pad. - channels: Channels to pad. Defaults to all channels in - ``schedule`` if not provided. If the supplied channel is not a member - of ``schedule`` it will be added. - until: Time to pad until. Defaults to ``schedule.duration`` if not provided. - inplace: Pad this schedule by mutating rather than returning a new schedule. - pad_with: Pulse ``Instruction`` subclass to be used for padding. - Default to :class:`~qiskit.pulse.instructions.Delay` instruction. - - Returns: - The padded schedule. - - Raises: - PulseError: When non pulse instruction is set to `pad_with`. - """ - until = until or schedule.duration - channels = channels or schedule.channels - - if pad_with: - if issubclass(pad_with, instructions.Instruction): - pad_cls = pad_with - else: - raise PulseError( - f"'{pad_with.__class__.__name__}' is not valid pulse instruction to pad with." - ) - else: - pad_cls = instructions.Delay - - for channel in channels: - if isinstance(channel, ClassicalIOChannel): - continue - - if channel not in schedule.channels: - schedule = schedule.insert(0, instructions.Delay(until, channel), inplace=inplace) - continue - - prev_time = 0 - timeslots = iter(schedule.timeslots[channel]) - to_pad = [] - while prev_time < until: - try: - t0, t1 = next(timeslots) - except StopIteration: - to_pad.append((prev_time, until - prev_time)) - break - if prev_time < t0: - to_pad.append((prev_time, min(t0, until) - prev_time)) - prev_time = t1 - for t0, duration in to_pad: - schedule = schedule.insert(t0, pad_cls(duration, channel), inplace=inplace) - - return schedule diff --git a/qiskit/pulse/transforms/dag.py b/qiskit/pulse/transforms/dag.py deleted file mode 100644 index 92e346b0f00b..000000000000 --- a/qiskit/pulse/transforms/dag.py +++ /dev/null @@ -1,128 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021. -# -# 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. -"""A collection of functions to convert ScheduleBlock to DAG representation.""" -from __future__ import annotations - -import typing - -import rustworkx as rx - - -from qiskit.pulse.channels import Channel -from qiskit.pulse.exceptions import UnassignedReferenceError - -if typing.TYPE_CHECKING: - from qiskit.pulse import ScheduleBlock # pylint: disable=cyclic-import - - -def block_to_dag(block: ScheduleBlock) -> rx.PyDAG: - """Convert schedule block instruction into DAG. - - ``ScheduleBlock`` can be represented as a DAG as needed. - For example, equality of two programs are efficiently checked on DAG representation. - - .. plot:: - :include-source: - :nofigs: - :context: reset - - from qiskit import pulse - - my_gaussian0 = pulse.Gaussian(100, 0.5, 20) - my_gaussian1 = pulse.Gaussian(100, 0.3, 10) - - with pulse.build() as sched1: - with pulse.align_left(): - pulse.play(my_gaussian0, pulse.DriveChannel(0)) - pulse.shift_phase(1.57, pulse.DriveChannel(2)) - pulse.play(my_gaussian1, pulse.DriveChannel(1)) - - with pulse.build() as sched2: - with pulse.align_left(): - pulse.shift_phase(1.57, pulse.DriveChannel(2)) - pulse.play(my_gaussian1, pulse.DriveChannel(1)) - pulse.play(my_gaussian0, pulse.DriveChannel(0)) - - Here the ``sched1 `` and ``sched2`` are different implementations of the same program, - but it is difficult to confirm on the list representation. - - Another example is instruction optimization. - - .. plot:: - :include-source: - :nofigs: - :context: - - from qiskit import pulse - - with pulse.build() as sched: - with pulse.align_left(): - pulse.shift_phase(1.57, pulse.DriveChannel(1)) - pulse.play(my_gaussian0, pulse.DriveChannel(0)) - pulse.shift_phase(-1.57, pulse.DriveChannel(1)) - - In above program two ``shift_phase`` instructions can be cancelled out because - they are consecutive on the same drive channel. - This can be easily found on the DAG representation. - - Args: - block ("ScheduleBlock"): A schedule block to be converted. - - Returns: - Instructions in DAG representation. - - Raises: - PulseError: When the context is invalid subclass. - """ - if block.alignment_context.is_sequential: - return _sequential_allocation(block) - return _parallel_allocation(block) - - -def _sequential_allocation(block) -> rx.PyDAG: - """A helper function to create a DAG of a sequential alignment context.""" - dag = rx.PyDAG() - - edges: list[tuple[int, int]] = [] - 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 - - -def _parallel_allocation(block) -> rx.PyDAG: - """A helper function to create a DAG of a parallel alignment context.""" - dag = rx.PyDAG() - - slots: dict[Channel, int] = {} - edges: set[tuple[int, int]] = 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/qiskit/pulse/utils.py b/qiskit/pulse/utils.py deleted file mode 100644 index 5f345917761e..000000000000 --- a/qiskit/pulse/utils.py +++ /dev/null @@ -1,149 +0,0 @@ -# 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. - -"""Module for common pulse programming utilities.""" -from typing import List, Dict, Union, Sequence -import warnings - -import numpy as np - -from qiskit.circuit import ParameterVector, Parameter -from qiskit.circuit.parameterexpression import ParameterExpression -from qiskit.pulse.exceptions import UnassignedDurationError, QiskitError, PulseError - - -def format_meas_map(meas_map: List[List[int]]) -> Dict[int, List[int]]: - """ - Return a mapping from qubit label to measurement group given the nested list meas_map returned - by a backend configuration. (Qubits can not always be measured independently.) Sorts the - measurement group for consistency. - - Args: - meas_map: Groups of qubits that get measured together, for example: [[0, 1], [2, 3, 4]] - Returns: - Measure map in map format - """ - qubit_mapping = {} - for sublist in meas_map: - sublist.sort() - for q in sublist: - qubit_mapping[q] = sublist - return qubit_mapping - - -def format_parameter_value( - operand: ParameterExpression, - decimal: int = 10, -) -> Union[ParameterExpression, complex]: - """Convert ParameterExpression into the most suitable data type. - - Args: - operand: Operand value in arbitrary data type including ParameterExpression. - decimal: Number of digit to round returned value. - - Returns: - Value casted to non-parameter data type, when possible. - """ - if isinstance(operand, ParameterExpression): - try: - operand = operand.numeric() - except TypeError: - # Unassigned expression - return operand - - # Return integer before calling the numpy round function. - # The input value is multiplied by 10**decimals, rounds to an integer - # and divided by 10**decimals. For a large enough integer, - # this operation may introduce a rounding error in the float operations - # and accidentally returns a float number. - if isinstance(operand, int): - return operand - - # Remove truncation error and convert the result into Python builtin type. - # Value could originally contain a rounding error, e.g. 1.00000000001 - # which may occur during the parameter expression evaluation. - evaluated = np.round(operand, decimals=decimal).item() - - if isinstance(evaluated, complex): - if np.isclose(evaluated.imag, 0.0): - evaluated = evaluated.real - else: - warnings.warn( - "Assignment of complex values to ParameterExpression in Qiskit Pulse objects is " - "now pending deprecation. This will align the Pulse module with other modules " - "where such assignment wasn't possible to begin with. The typical use case for complex " - "parameters in the module was the SymbolicPulse library. As of Qiskit-Terra " - "0.23.0 all library pulses were converted from complex amplitude representation" - " to real representation using two floats (amp,angle), as used in the " - "ScalableSymbolicPulse class. This eliminated the need for complex parameters. " - "Any use of complex parameters (and particularly custom-built pulses) should be " - "converted in a similar fashion to avoid the use of complex parameters.", - PendingDeprecationWarning, - ) - return evaluated - # Type cast integer-like float into Python builtin integer, after rounding. - if evaluated.is_integer(): - return int(evaluated) - return evaluated - - -def instruction_duration_validation(duration: int): - """Validate instruction duration. - - Args: - duration: Instruction duration value to validate. - - Raises: - UnassignedDurationError: When duration is unassigned. - QiskitError: When invalid duration is assigned. - """ - if isinstance(duration, ParameterExpression): - raise UnassignedDurationError( - f"Instruction duration {repr(duration)} is not assigned. " - "Please bind all durations to an integer value before playing in the Schedule, " - "or use ScheduleBlock to align instructions with unassigned duration." - ) - - if not isinstance(duration, (int, np.integer)) or duration < 0: - raise QiskitError( - f"Instruction duration must be a non-negative integer, got {duration} instead." - ) - - -def _validate_parameter_vector(parameter: ParameterVector, value): - """Validate parameter vector and its value.""" - if not isinstance(value, Sequence): - raise PulseError( - f"Parameter vector '{parameter.name}' has length {len(parameter)}," - f" but was assigned to {value}." - ) - if len(parameter) != len(value): - raise PulseError( - f"Parameter vector '{parameter.name}' has length {len(parameter)}," - f" but was assigned to {len(value)} values." - ) - - -def _validate_single_parameter(parameter: Parameter, value): - """Validate single parameter and its value.""" - if not isinstance(value, (int, float, complex, ParameterExpression)): - raise PulseError(f"Parameter '{parameter.name}' is not assignable to {value}.") - - -def _validate_parameter_value(parameter, value): - """Validate parameter and its value.""" - if isinstance(parameter, ParameterVector): - _validate_parameter_vector(parameter, value) - return True - else: - _validate_single_parameter(parameter, value) - return False diff --git a/qiskit/result/result.py b/qiskit/result/result.py index f9cc0af22330..2ae1528e45d5 100644 --- a/qiskit/result/result.py +++ b/qiskit/result/result.py @@ -16,7 +16,6 @@ import warnings from qiskit.circuit.quantumcircuit import QuantumCircuit -from qiskit.pulse.schedule import Schedule from qiskit.exceptions import QiskitError from qiskit.quantum_info.states import statevector from qiskit.result.models import ExperimentResult, MeasLevel @@ -344,8 +343,8 @@ def _get_experiment(self, key=None): ) key = 0 - # Key is a QuantumCircuit/Schedule or str: retrieve result by name. - if isinstance(key, (QuantumCircuit, Schedule)): + # Key is a QuantumCircuit or str: retrieve result by name. + if isinstance(key, QuantumCircuit): key = key.name # Key is an integer: return result by index. if isinstance(key, int): diff --git a/qiskit/transpiler/passes/optimization/normalize_rx_angle.py b/qiskit/transpiler/passes/optimization/normalize_rx_angle.py index 9272c1e5dea6..b6f36e07de36 100644 --- a/qiskit/transpiler/passes/optimization/normalize_rx_angle.py +++ b/qiskit/transpiler/passes/optimization/normalize_rx_angle.py @@ -25,7 +25,6 @@ from qiskit.circuit.library.standard_gates import RXGate, RZGate, SXGate, XGate -# TODO: do we still need this pass?? class NormalizeRXAngle(TransformationPass): """Normalize theta parameter of RXGate instruction. diff --git a/qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py b/qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py index b00e4c9e5112..5930dc17b986 100644 --- a/qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +++ b/qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py @@ -63,7 +63,6 @@ class Optimize1qGatesDecomposition(TransformationPass): The decision to replace the original chain with a new re-synthesis depends on: - whether the original chain was out of basis: replace - whether the original chain was in basis but re-synthesis is lower error: replace - - whether the original chain contains a pulse gate: do not replace - whether the original chain amounts to identity: replace with null Error is computed as a multiplication of the errors of individual gates on that qubit. diff --git a/qiskit/transpiler/passes/scheduling/alignments/__init__.py b/qiskit/transpiler/passes/scheduling/alignments/__init__.py index ca8658fff21a..1080ae860b29 100644 --- a/qiskit/transpiler/passes/scheduling/alignments/__init__.py +++ b/qiskit/transpiler/passes/scheduling/alignments/__init__.py @@ -33,7 +33,6 @@ value in units of dt, thus circuits involving delays may violate the constraints, which may result in failure in the circuit execution on the backend. -TODO: mentions pulse gates below. Do we want to keep these passes? There are two alignment constraint values reported by your quantum backend. In addition, if you want to define a custom instruction as a pulse gate, i.e. calibration, the underlying pulse instruction should satisfy other two waveform constraints. diff --git a/qiskit/transpiler/passes/scheduling/alignments/check_durations.py b/qiskit/transpiler/passes/scheduling/alignments/check_durations.py index 134f1c116a08..1f3e1c375299 100644 --- a/qiskit/transpiler/passes/scheduling/alignments/check_durations.py +++ b/qiskit/transpiler/passes/scheduling/alignments/check_durations.py @@ -22,7 +22,7 @@ class InstructionDurationCheck(AnalysisPass): This pass investigates the input quantum circuit and checks if the circuit requires rescheduling for execution. Note that this pass can be triggered without scheduling. - This pass only checks the duration of delay instructions and user defined pulse gates, + This pass only checks the duration of delay instructions, which report duration values without pre-scheduling. This pass assumes backend supported instructions, i.e. basis gates, have no violation diff --git a/qiskit/transpiler/passes/scheduling/base_scheduler.py b/qiskit/transpiler/passes/scheduling/base_scheduler.py index 6a97329083c2..e8bd8c022d31 100644 --- a/qiskit/transpiler/passes/scheduling/base_scheduler.py +++ b/qiskit/transpiler/passes/scheduling/base_scheduler.py @@ -235,7 +235,7 @@ def __init__( and discriminated into quantum state. The interval ``[t0, t0 + clbit_write_latency]`` is regarded as idle time for clbits associated with the measure instruction. - This defaults to 0 dt which is identical to Qiskit Pulse scheduler. + This defaults to 0 dt. conditional_latency: A control flow constraints. This value represents a latency of reading a classical register for the conditional operation. The gate operation occurs after this latency. This appears as a delay diff --git a/qiskit/transpiler/preset_passmanagers/level3.py b/qiskit/transpiler/preset_passmanagers/level3.py index 89b8b73c1415..ab01cc95bbf0 100644 --- a/qiskit/transpiler/preset_passmanagers/level3.py +++ b/qiskit/transpiler/preset_passmanagers/level3.py @@ -31,7 +31,6 @@ def level_3_pass_manager(pass_manager_config: PassManagerConfig) -> StagedPassMa This pass manager applies the user-given initial layout. If none is given, a search for a perfect layout (i.e. one that satisfies all 2-qubit interactions) is conducted. If no such layout is found, and device calibration information is available, the - # TODO: what does device calibration mean in this context? circuit is mapped to the qubits with best readouts and to CX gates with highest fidelity. The pass manager then transforms the circuit to match the coupling constraints. diff --git a/qiskit/transpiler/target.py b/qiskit/transpiler/target.py index fb25cc908909..7f23efe6bf4c 100644 --- a/qiskit/transpiler/target.py +++ b/qiskit/transpiler/target.py @@ -20,7 +20,6 @@ from __future__ import annotations import itertools -import warnings from typing import Optional, List, Any from collections.abc import Mapping diff --git a/qiskit/utils/deprecate_pulse.py b/qiskit/utils/deprecate_pulse.py deleted file mode 100644 index 376e3e06c8f1..000000000000 --- a/qiskit/utils/deprecate_pulse.py +++ /dev/null @@ -1,119 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2024 -# -# 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. - -""" -Deprecation functions for Qiskit Pulse. To be removed in Qiskit 2.0. -""" - -import warnings -import functools - -from qiskit.utils.deprecation import deprecate_func, deprecate_arg - - -def deprecate_pulse_func(func): - """Deprecation message for functions and classes""" - return deprecate_func( - since="1.3", - package_name="Qiskit", - removal_timeline="in Qiskit 2.0", - additional_msg="The entire Qiskit Pulse package is being deprecated " - "and will be moved to the Qiskit Dynamics repository: " - "https://github.com/qiskit-community/qiskit-dynamics", - )(func) - - -def deprecate_pulse_dependency(*args, moving_to_dynamics: bool = False, **kwargs): - # pylint: disable=missing-param-doc - """Deprecation message for functions and classes which use or depend on Pulse - - Args: - moving_to_dynamics: set to True if the dependency is moving to Qiskit Dynamics. This affects - the deprecation message being printed, namely saying explicitly whether the dependency will - be moved to Qiskit Dynamics or whether it will just be removed without an alternative. - """ - - def msg_handler(func): - fully_qual_name = format(f"{func.__module__}.{func.__qualname__}") - if ".__init__" in fully_qual_name: # Deprecating a class' vis it __init__ method - fully_qual_name = fully_qual_name[:-9] - elif "is_property" not in kwargs: # Deprecating either a function or a method - fully_qual_name += "()" - - message = ( - "The entire Qiskit Pulse package is being deprecated and will be moved to the Qiskit " - "Dynamics repository: https://github.com/qiskit-community/qiskit-dynamics." - + ( - format(f" Note that ``{fully_qual_name}`` will be moved as well.") - if moving_to_dynamics - else format( - f" Note that once removed, ``{fully_qual_name}`` will have no alternative in Qiskit." - ) - ) - ) - - decorator = deprecate_func( - since="1.3", - package_name="Qiskit", - removal_timeline="in Qiskit 2.0", - additional_msg=message, - **kwargs, - )(func) - - # Taken when `deprecate_pulse_dependency` is used with no arguments and with empty parentheses, - # in which case the decorated function is passed - - return decorator - - if args: - return msg_handler(args[0]) - return msg_handler - - -def deprecate_pulse_arg(arg_name: str, **kwargs): - """Deprecation message for arguments related to Pulse""" - return deprecate_arg( - name=arg_name, - since="1.3", - package_name="Qiskit", - removal_timeline="in Qiskit 2.0", - additional_msg="The entire Qiskit Pulse package is being deprecated " - "and this argument uses a dependency on the package.", - **kwargs, - ) - - -def ignore_pulse_deprecation_warnings(func): - """Ignore deprecation warnings emitted from the pulse package""" - - @functools.wraps(func) - def wrapper(*args, **kwargs): - with warnings.catch_warnings(): - warnings.filterwarnings( - "ignore", category=DeprecationWarning, message="The (.*) ``qiskit.pulse" - ) - return func(*args, **kwargs) - - return wrapper - - -def decorate_test_methods(decorator): - """Put a given decorator on all the decorated class methods whose name starts with `test_`""" - - def cls_wrapper(cls): - for attr in dir(cls): - if attr.startswith("test_") and callable(object.__getattribute__(cls, attr)): - setattr(cls, attr, decorator(object.__getattribute__(cls, attr))) - - return cls - - return cls_wrapper diff --git a/qiskit/visualization/__init__.py b/qiskit/visualization/__init__.py index 6d1b4e86622d..654cf2b583a9 100644 --- a/qiskit/visualization/__init__.py +++ b/qiskit/visualization/__init__.py @@ -18,7 +18,7 @@ .. currentmodule:: qiskit.visualization The visualization module contain functions that visualizes measurement outcome counts, quantum -states, circuits, pulses, devices and more. +states, circuits, devices and more. To use visualization functions, you are required to install visualization optionals to your development environment: @@ -281,8 +281,6 @@ from .pass_manager_visualization import pass_manager_drawer from .pass_manager_visualization import staged_pass_manager_drawer -from .pulse_v2 import draw as pulse_drawer - from .timeline import draw as timeline_drawer from .exceptions import VisualizationError @@ -290,7 +288,3 @@ # These modules aren't part of the public interface, and were moved in Terra 0.22. They're # re-imported here to allow a backwards compatible path, and should be deprecated in Terra 0.23. from .circuit import text, matplotlib, latex - -# Prepare for migration of old versioned name to unversioned name. The `pulse_drawer_v2` name can -# be deprecated in Terra 0.24, as `pulse_drawer` became available by that name in Terra 0.23. -pulse_drawer_v2 = pulse_drawer diff --git a/qiskit/visualization/pulse_v2/__init__.py b/qiskit/visualization/pulse_v2/__init__.py deleted file mode 100644 index 169341f9b896..000000000000 --- a/qiskit/visualization/pulse_v2/__init__.py +++ /dev/null @@ -1,21 +0,0 @@ -# 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. - -""" -Pulse visualization module. -""" - -# interface -from qiskit.visualization.pulse_v2.interface import draw - -# stylesheets -from qiskit.visualization.pulse_v2.stylesheet import IQXStandard, IQXSimple, IQXDebugging diff --git a/qiskit/visualization/pulse_v2/core.py b/qiskit/visualization/pulse_v2/core.py deleted file mode 100644 index 20686f6fb4f6..000000000000 --- a/qiskit/visualization/pulse_v2/core.py +++ /dev/null @@ -1,901 +0,0 @@ -# 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. - -""" -Core module of the pulse drawer. - -This module provides the `DrawerCanvas` which is a collection of `Chart` object. -The `Chart` object is a collection of drawings. A user can assign multiple channels -to a single chart instance. For example, we can define a chart for specific qubit -and assign all related channels to the chart. This chart-channel mapping is defined by -the function specified by ``layout.chart_channel_map`` of the stylesheet. - -Because this chart instance is decoupled from the coordinate system of the plotter, -we can arbitrarily place charts on the plotter canvas, i.e. if we want to create 3D plot, -each chart may be placed on the X-Z plane and charts are arranged along the Y-axis. -Thus this data model maximizes the flexibility to generate an output image. - -The chart instance is not just a container of drawings, as it also performs -data processing like binding abstract coordinates and truncating long pulses for an axis break. -Each chart object has `.parent` which points to the `DrawerCanvas` instance so that -each child chart can refer to the global figure settings such as time range and axis break. - - -Initialization -~~~~~~~~~~~~~~ -The `DataCanvas` and `Chart` are not exposed to users as they are implicitly -initialized in the interface function. It is noteworthy that the data canvas is agnostic -to plotters. This means once the canvas instance is initialized we can reuse this data -among multiple plotters. The canvas is initialized with a stylesheet and quantum backend -information :py:class:`~qiskit.visualization.pulse_v2.device_info.DrawerBackendInfo`. -Chart instances are automatically generated when pulse program is loaded. - - ```python - canvas = DrawerCanvas(stylesheet=stylesheet, device=device) - canvas.load_program(sched) - canvas.update() - ``` - -Once all properties are set, `.update` method is called to apply changes to drawings. -If the `DrawDataContainer` is initialized without backend information, the output shows -the time in units of the system cycle time `dt` and the frequencies are initialized to zero. - -Update -~~~~~~ -To update the image, a user can set new values to canvas and then call the `.update` method. - - ```python - canvas.set_time_range(2000, 3000, seconds=False) - canvas.update() - ``` - -All stored drawings are updated accordingly. The plotter API can access to -drawings with `.collections` property of chart instance. This returns -an iterator of drawing with the unique data key. -If a plotter provides object handler for plotted shapes, the plotter API can manage -the lookup table of the handler and the drawing by using this data key. -""" - -from __future__ import annotations - -from collections.abc import Iterator, Sequence -from copy import deepcopy -from enum import Enum -from functools import partial -from itertools import chain - -import numpy as np -from qiskit import pulse -from qiskit.pulse.transforms import target_qobj_transform -from qiskit.visualization.exceptions import VisualizationError -from qiskit.visualization.pulse_v2 import events, types, drawings, device_info -from qiskit.visualization.pulse_v2.stylesheet import QiskitPulseStyle - - -class DrawerCanvas: - """Collection of `Chart` and configuration data. - - Pulse channels are associated with some `Chart` instance and - drawing data object are stored in the `Chart` instance. - - Device, stylesheet, and some user generators are stored in the `DrawingCanvas` - and `Chart` instances are also attached to the `DrawerCanvas` as children. - Global configurations are accessed by those children to modify - the appearance of the `Chart` output. - """ - - def __init__(self, stylesheet: QiskitPulseStyle, device: device_info.DrawerBackendInfo): - """Create new data container with backend system information. - - Args: - stylesheet: Stylesheet to decide appearance of output image. - device: Backend information to run the program. - """ - # stylesheet - self.formatter = stylesheet.formatter - self.generator = stylesheet.generator - self.layout = stylesheet.layout - - # device info - self.device = device - - # chart - self.global_charts = Chart(parent=self, name="global") - self.charts: list[Chart] = [] - - # visible controls - self.disable_chans: set[pulse.channels.Channel] = set() - self.disable_types: set[str] = set() - - # data scaling - self.chan_scales: dict[ - pulse.channels.DriveChannel - | pulse.channels.MeasureChannel - | pulse.channels.ControlChannel - | pulse.channels.AcquireChannel, - float, - ] = {} - - # global time - self._time_range = (0, 0) - self._time_breaks: list[tuple[int, int]] = [] - - # title - self.fig_title = "" - - @property - def time_range(self) -> tuple[int, int]: - """Return current time range to draw. - - Calculate net duration and add side margin to edge location. - - Returns: - Time window considering side margin. - """ - t0, t1 = self._time_range - - total_time_elimination = 0 - for t0b, t1b in self.time_breaks: - if t1b > t0 and t0b < t1: - total_time_elimination += t1b - t0b - net_duration = t1 - t0 - total_time_elimination - - new_t0 = t0 - net_duration * self.formatter["margin.left_percent"] - new_t1 = t1 + net_duration * self.formatter["margin.right_percent"] - - return new_t0, new_t1 - - @time_range.setter - def time_range(self, new_range: tuple[int, int]): - """Update time range to draw.""" - self._time_range = new_range - - @property - def time_breaks(self) -> list[tuple[int, int]]: - """Return time breaks with time range. - - If an edge of time range is in the axis break period, - the axis break period is recalculated. - - Raises: - VisualizationError: When axis break is greater than time window. - - Returns: - List of axis break periods considering the time window edges. - """ - t0, t1 = self._time_range - - axis_breaks = [] - for t0b, t1b in self._time_breaks: - if t0b >= t1 or t1b <= t0: - # skip because break period is outside of time window - continue - - if t0b < t0 and t1b > t1: - raise VisualizationError( - "Axis break is greater than time window. Nothing will be drawn." - ) - if t0b < t0 < t1b: - if t1b - t0 > self.formatter["axis_break.length"]: - new_t0 = t0 + 0.5 * self.formatter["axis_break.max_length"] - axis_breaks.append((new_t0, t1b)) - continue - if t0b < t1 < t1b: - if t1 - t0b > self.formatter["axis_break.length"]: - new_t1 = t1 - 0.5 * self.formatter["axis_break.max_length"] - axis_breaks.append((t0b, new_t1)) - continue - axis_breaks.append((t0b, t1b)) - - return axis_breaks - - @time_breaks.setter - def time_breaks(self, new_breaks: list[tuple[int, int]]): - """Set new time breaks.""" - self._time_breaks = sorted(new_breaks, key=lambda x: x[0]) - - def load_program( - self, - program: pulse.Waveform | pulse.SymbolicPulse | pulse.Schedule | pulse.ScheduleBlock, - ): - """Load a program to draw. - - Args: - program: Pulse program or waveform to draw. - - Raises: - VisualizationError: When input program is invalid data format. - """ - if isinstance(program, (pulse.Schedule, pulse.ScheduleBlock)): - self._schedule_loader(program) - elif isinstance(program, (pulse.Waveform, pulse.SymbolicPulse)): - self._waveform_loader(program) - else: - raise VisualizationError(f"Data type {type(program)} is not supported.") - - # update time range - self.set_time_range(0, program.duration, seconds=False) - - # set title - self.fig_title = self.layout["figure_title"](program=program, device=self.device) - - def _waveform_loader( - self, - program: pulse.Waveform | pulse.SymbolicPulse, - ): - """Load Waveform instance. - - This function is sub-routine of py:method:`load_program`. - - Args: - program: `Waveform` to draw. - """ - chart = Chart(parent=self) - - # add waveform data - fake_inst = pulse.Play(program, types.WaveformChannel()) - inst_data = types.PulseInstruction( - t0=0, - dt=self.device.dt, - frame=types.PhaseFreqTuple(phase=0, freq=0), - inst=fake_inst, - is_opaque=program.is_parameterized(), - ) - for gen in self.generator["waveform"]: - obj_generator = partial(gen, formatter=self.formatter, device=self.device) - for data in obj_generator(inst_data): - chart.add_data(data) - - self.charts.append(chart) - - def _schedule_loader(self, program: pulse.Schedule | pulse.ScheduleBlock): - """Load Schedule instance. - - This function is sub-routine of py:method:`load_program`. - - Args: - program: `Schedule` to draw. - """ - program = target_qobj_transform(program, remove_directives=False) - - # initialize scale values - self.chan_scales = {} - for chan in program.channels: - if isinstance(chan, pulse.channels.DriveChannel): - self.chan_scales[chan] = self.formatter["channel_scaling.drive"] - elif isinstance(chan, pulse.channels.MeasureChannel): - self.chan_scales[chan] = self.formatter["channel_scaling.measure"] - elif isinstance(chan, pulse.channels.ControlChannel): - self.chan_scales[chan] = self.formatter["channel_scaling.control"] - elif isinstance(chan, pulse.channels.AcquireChannel): - self.chan_scales[chan] = self.formatter["channel_scaling.acquire"] - else: - self.chan_scales[chan] = 1.0 - - # create charts - mapper = self.layout["chart_channel_map"] - for name, chans in mapper( - channels=program.channels, formatter=self.formatter, device=self.device - ): - - chart = Chart(parent=self, name=name) - - # add standard pulse instructions - for chan in chans: - chart.load_program(program=program, chan=chan) - - # add barriers - barrier_sched = program.filter( - instruction_types=[pulse.instructions.RelativeBarrier], channels=chans - ) - for t0, _ in barrier_sched.instructions: - inst_data = types.BarrierInstruction(t0, self.device.dt, chans) - for gen in self.generator["barrier"]: - obj_generator = partial(gen, formatter=self.formatter, device=self.device) - for data in obj_generator(inst_data): - chart.add_data(data) - - # add chart axis - chart_axis = types.ChartAxis(name=chart.name, channels=chart.channels) - for gen in self.generator["chart"]: - obj_generator = partial(gen, formatter=self.formatter, device=self.device) - for data in obj_generator(chart_axis): - chart.add_data(data) - - self.charts.append(chart) - - # add snapshot data to global - snapshot_sched = program.filter(instruction_types=[pulse.instructions.Snapshot]) - for t0, inst in snapshot_sched.instructions: - inst_data = types.SnapshotInstruction(t0, self.device.dt, inst.label, inst.channels) - for gen in self.generator["snapshot"]: - obj_generator = partial(gen, formatter=self.formatter, device=self.device) - for data in obj_generator(inst_data): - self.global_charts.add_data(data) - - # calculate axis break - self.time_breaks = self._calculate_axis_break(program) - - def _calculate_axis_break(self, program: pulse.Schedule) -> list[tuple[int, int]]: - """A helper function to calculate axis break of long pulse sequence. - - Args: - program: A schedule to calculate axis break. - - Returns: - List of axis break periods. - """ - axis_breaks = [] - - edges = set() - for t0, t1 in chain.from_iterable(program.timeslots.values()): - if t1 - t0 > 0: - edges.add(t0) - edges.add(t1) - edges = sorted(edges) - - for t0, t1 in zip(edges[:-1], edges[1:]): - if t1 - t0 > self.formatter["axis_break.length"]: - t_l = t0 + 0.5 * self.formatter["axis_break.max_length"] - t_r = t1 - 0.5 * self.formatter["axis_break.max_length"] - axis_breaks.append((t_l, t_r)) - - return axis_breaks - - def set_time_range(self, t_start: float, t_end: float, seconds: bool = True): - """Set time range to draw. - - All child chart instances are updated when time range is updated. - - Args: - t_start: Left boundary of drawing in units of cycle time or real time. - t_end: Right boundary of drawing in units of cycle time or real time. - seconds: Set `True` if times are given in SI unit rather than dt. - - Raises: - VisualizationError: When times are given in float without specifying dt. - """ - # convert into nearest cycle time - if seconds: - if self.device.dt is not None: - t_start = int(np.round(t_start / self.device.dt)) - t_end = int(np.round(t_end / self.device.dt)) - else: - raise VisualizationError( - "Setting time range with SI units requires backend `dt` information." - ) - self.time_range = (t_start, t_end) - - def set_disable_channel(self, channel: pulse.channels.Channel, remove: bool = True): - """Interface method to control visibility of pulse channels. - - Specified object in the blocked list will not be shown. - - Args: - channel: A pulse channel object to disable. - remove: Set `True` to disable, set `False` to enable. - """ - if remove: - self.disable_chans.add(channel) - else: - self.disable_chans.discard(channel) - - def set_disable_type(self, data_type: types.DataTypes, remove: bool = True): - """Interface method to control visibility of data types. - - Specified object in the blocked list will not be shown. - - Args: - data_type: A drawing data type to disable. - remove: Set `True` to disable, set `False` to enable. - """ - if isinstance(data_type, Enum): - data_type_str = str(data_type.value) - else: - data_type_str = data_type - - if remove: - self.disable_types.add(data_type_str) - else: - self.disable_types.discard(data_type_str) - - def update(self): - """Update all associated charts and generate actual drawing data from template object. - - This method should be called before the canvas is passed to the plotter. - """ - for chart in self.charts: - chart.update() - - -class Chart: - """A collection of drawing to be shown on the same line. - - Multiple pulse channels can be assigned to a single `Chart`. - The parent `DrawerCanvas` should be specified to refer to the current user preference. - - The vertical value of each `Chart` should be in the range [-1, 1]. - This truncation should be performed in the plotter interface. - """ - - # unique index of chart - chart_index = 0 - - # list of waveform type names - waveform_types = [ - str(types.WaveformType.REAL.value), - str(types.WaveformType.IMAG.value), - str(types.WaveformType.OPAQUE.value), - ] - - def __init__(self, parent: DrawerCanvas, name: str | None = None): - """Create new chart. - - Args: - parent: `DrawerCanvas` that this `Chart` instance belongs to. - name: Name of this `Chart` instance. - """ - self.parent = parent - - # data stored in this channel - self._collections: dict[str, drawings.ElementaryData] = {} - self._output_dataset: dict[str, drawings.ElementaryData] = {} - - # channel metadata - self.index = self._cls_index() - self.name = name or "" - self._channels: set[pulse.channels.Channel] = set() - - # vertical axis information - self.vmax = 0 - self.vmin = 0 - self.scale = 1.0 - - self._increment_cls_index() - - def add_data(self, data: drawings.ElementaryData): - """Add drawing to collections. - - If the given object already exists in the collections, - this interface replaces the old object instead of adding new entry. - - Args: - data: New drawing to add. - """ - self._collections[data.data_key] = data - - def load_program(self, program: pulse.Schedule, chan: pulse.channels.Channel): - """Load pulse schedule. - - This method internally generates `ChannelEvents` to parse the program - for the specified pulse channel. This method is called once - - Args: - program: Pulse schedule to load. - chan: A pulse channels associated with this instance. - """ - chan_events = events.ChannelEvents.load_program(program, chan) - chan_events.set_config( - dt=self.parent.device.dt, - init_frequency=self.parent.device.get_channel_frequency(chan), - init_phase=0, - ) - - # create objects associated with waveform - for gen in self.parent.generator["waveform"]: - waveforms = chan_events.get_waveforms() - obj_generator = partial(gen, formatter=self.parent.formatter, device=self.parent.device) - drawing_items = [obj_generator(waveform) for waveform in waveforms] - for drawing_item in list(chain.from_iterable(drawing_items)): - self.add_data(drawing_item) - - # create objects associated with frame change - for gen in self.parent.generator["frame"]: - frames = chan_events.get_frame_changes() - obj_generator = partial(gen, formatter=self.parent.formatter, device=self.parent.device) - drawing_items = [obj_generator(frame) for frame in frames] - for drawing_item in list(chain.from_iterable(drawing_items)): - self.add_data(drawing_item) - - self._channels.add(chan) - - def update(self): - """Update vertical data range and scaling factor of this chart. - - Those parameters are updated based on current time range in the parent canvas. - """ - self._output_dataset.clear() - self.vmax = 0 - self.vmin = 0 - - # waveform - for key, data in self._collections.items(): - if data.data_type not in Chart.waveform_types: - continue - - # truncate, assume no abstract coordinate in waveform sample - trunc_x, trunc_y = self._truncate_data(data) - - # no available data points - if trunc_x.size == 0 or trunc_y.size == 0: - continue - - # update y range - scale = min(self.parent.chan_scales.get(chan, 1.0) for chan in data.channels) - self.vmax = max(scale * np.max(trunc_y), self.vmax) - self.vmin = min(scale * np.min(trunc_y), self.vmin) - - # generate new data - new_data = deepcopy(data) - new_data.xvals = trunc_x - new_data.yvals = trunc_y - - self._output_dataset[key] = new_data - - # calculate chart level scaling factor - if self.parent.formatter["control.auto_chart_scaling"]: - max_val = max( - abs(self.vmax), abs(self.vmin), self.parent.formatter["general.vertical_resolution"] - ) - self.scale = min(1.0 / max_val, self.parent.formatter["general.max_scale"]) - else: - self.scale = 1.0 - - # update vertical range with scaling and limitation - self.vmax = max( - self.scale * self.vmax, self.parent.formatter["channel_scaling.pos_spacing"] - ) - - self.vmin = min( - self.scale * self.vmin, self.parent.formatter["channel_scaling.neg_spacing"] - ) - - # other data - for key, data in self._collections.items(): - if data.data_type in Chart.waveform_types: - continue - - # truncate - trunc_x, trunc_y = self._truncate_data(data) - - # no available data points - if trunc_x.size == 0 or trunc_y.size == 0: - continue - - # generate new data - new_data = deepcopy(data) - new_data.xvals = trunc_x - new_data.yvals = trunc_y - - self._output_dataset[key] = new_data - - @property - def is_active(self) -> bool: - """Check if there is any active waveform data in this entry. - - Returns: - Return `True` if there is any visible waveform in this chart. - """ - for data in self._output_dataset.values(): - if data.data_type in Chart.waveform_types and self._check_visible(data): - return True - return False - - @property - def collections(self) -> Iterator[tuple[str, drawings.ElementaryData]]: - """Return currently active entries from drawing data collection. - - The object is returned with unique name as a key of an object handler. - When the horizontal coordinate contains `AbstractCoordinate`, - the value is substituted by current time range preference. - """ - for name, data in self._output_dataset.items(): - # prepare unique name - unique_id = f"chart{self.index:d}_{name}" - if self._check_visible(data): - yield unique_id, data - - @property - def channels(self) -> list[pulse.channels.Channel]: - """Return a list of channels associated with this chart. - - Returns: - List of channels associated with this chart. - """ - return list(self._channels) - - def _truncate_data(self, data: drawings.ElementaryData) -> tuple[np.ndarray, np.ndarray]: - """A helper function to truncate drawings according to time breaks. - - # TODO: move this function to common module to support axis break for timeline. - - Args: - data: Drawing object to truncate. - - Returns: - Set of truncated numpy arrays for x and y coordinate. - """ - xvals = self._bind_coordinate(data.xvals) - yvals = self._bind_coordinate(data.yvals) - - if isinstance(data, drawings.BoxData): - # truncate box data. these object don't require interpolation at axis break. - return self._truncate_boxes(xvals, yvals) - elif data.data_type in [types.LabelType.PULSE_NAME, types.LabelType.OPAQUE_BOXTEXT]: - # truncate pulse labels. these objects are not removed by truncation. - return self._truncate_pulse_labels(xvals, yvals) - else: - # other objects - return self._truncate_vectors(xvals, yvals) - - def _truncate_pulse_labels( - self, xvals: np.ndarray, yvals: np.ndarray - ) -> tuple[np.ndarray, np.ndarray]: - """A helper function to remove text according to time breaks. - - Args: - xvals: Time points. - yvals: Data points. - - Returns: - Set of truncated numpy arrays for x and y coordinate. - """ - xpos = xvals[0] - t0, t1 = self.parent.time_range - - if xpos < t0 or xpos > t1: - return np.array([]), np.array([]) - offset_accumulation = 0 - for tl, tr in self.parent.time_breaks: - if xpos < tl: - return np.array([xpos - offset_accumulation]), yvals - if tl < xpos < tr: - return np.array([tl - offset_accumulation]), yvals - else: - offset_accumulation += tr - tl - return np.array([xpos - offset_accumulation]), yvals - - def _truncate_boxes( - self, xvals: np.ndarray, yvals: np.ndarray - ) -> tuple[np.ndarray, np.ndarray]: - """A helper function to clip box object according to time breaks. - - Args: - xvals: Time points. - yvals: Data points. - - Returns: - Set of truncated numpy arrays for x and y coordinate. - """ - x0, x1 = xvals - t0, t1 = self.parent.time_range - - if x1 < t0 or x0 > t1: - # out of drawing range - return np.array([]), np.array([]) - - # clip outside - x0 = max(t0, x0) - x1 = min(t1, x1) - - offset_accumulate = 0 - for tl, tr in self.parent.time_breaks: - tl -= offset_accumulate - tr -= offset_accumulate - - # - # truncate, there are 5 patterns wrt the relative position of truncation and xvals - # - if x1 < tl: - break - - if tl < x0 and tr > x1: - # case 1: all data points are truncated - # : +-----+ : - # : |/////| : - # -----:---+-----+---:----- - # l 0 1 r - return np.array([]), np.array([]) - elif tl < x1 < tr: - # case 2: t < tl, right side is truncated - # +---:-----+ : - # | ://///| : - # -----+---:-----+---:----- - # 0 l 1 r - x1 = tl - elif tl < x0 < tr: - # case 3: tr > t, left side is truncated - # : +-----:---+ - # : |/////: | - # -----:---+-----:---+----- - # l 0 r 1 - x0 = tl - x1 = tl + t1 - tr - elif tl > x0 and tr < x1: - # case 4: tr > t > tl, middle part is truncated - # +---:-----:---+ - # | ://///: | - # -----+---:-----:---+----- - # 0 l r 1 - x1 -= tr - tl - elif tr < x0: - # case 5: tr > t > tl, nothing truncated but need time shift - # : : +---+ - # : : | | - # -----:---:-----+---+----- - # l r 0 1 - x0 -= tr - tl - x1 -= tr - tl - - offset_accumulate += tr - tl - - return np.asarray([x0, x1], dtype=float), yvals - - def _truncate_vectors( - self, xvals: np.ndarray, yvals: np.ndarray - ) -> tuple[np.ndarray, np.ndarray]: - """A helper function to remove sequential data points according to time breaks. - - Args: - xvals: Time points. - yvals: Data points. - - Returns: - Set of truncated numpy arrays for x and y coordinate. - """ - xvals = np.asarray(xvals, dtype=float) - yvals = np.asarray(yvals, dtype=float) - t0, t1 = self.parent.time_range - - if max(xvals) < t0 or min(xvals) > t1: - # out of drawing range - return np.array([]), np.array([]) - - if min(xvals) < t0: - # truncate x less than left limit - inds = xvals > t0 - yvals = np.append(np.interp(t0, xvals, yvals), yvals[inds]) - xvals = np.append(t0, xvals[inds]) - - if max(xvals) > t1: - # truncate x larger than right limit - inds = xvals < t1 - yvals = np.append(yvals[inds], np.interp(t1, xvals, yvals)) - xvals = np.append(xvals[inds], t1) - - # time breaks - trunc_xvals = [xvals] - trunc_yvals = [yvals] - offset_accumulate = 0 - for tl, tr in self.parent.time_breaks: - sub_xs = trunc_xvals.pop() - sub_ys = trunc_yvals.pop() - tl -= offset_accumulate - tr -= offset_accumulate - - # - # truncate, there are 5 patterns wrt the relative position of truncation and xvals - # - min_xs = min(sub_xs) - max_xs = max(sub_xs) - if max_xs < tl: - trunc_xvals.append(sub_xs) - trunc_yvals.append(sub_ys) - break - - if tl < min_xs and tr > max_xs: - # case 1: all data points are truncated - # : +-----+ : - # : |/////| : - # -----:---+-----+---:----- - # l min max r - return np.array([]), np.array([]) - elif tl < max_xs < tr: - # case 2: t < tl, right side is truncated - # +---:-----+ : - # | ://///| : - # -----+---:-----+---:----- - # min l max r - inds = sub_xs > tl - trunc_xvals.append(np.append(tl, sub_xs[inds]) - (tl - min_xs)) - trunc_yvals.append(np.append(np.interp(tl, sub_xs, sub_ys), sub_ys[inds])) - elif tl < min_xs < tr: - # case 3: tr > t, left side is truncated - # : +-----:---+ - # : |/////: | - # -----:---+-----:---+----- - # l min r max - inds = sub_xs < tr - trunc_xvals.append(np.append(sub_xs[inds], tr)) - trunc_yvals.append(np.append(sub_ys[inds], np.interp(tr, sub_xs, sub_ys))) - elif tl > min_xs and tr < max_xs: - # case 4: tr > t > tl, middle part is truncated - # +---:-----:---+ - # | ://///: | - # -----+---:-----:---+----- - # min l r max - inds0 = sub_xs < tl - trunc_xvals.append(np.append(sub_xs[inds0], tl)) - trunc_yvals.append(np.append(sub_ys[inds0], np.interp(tl, sub_xs, sub_ys))) - inds1 = sub_xs > tr - trunc_xvals.append(np.append(tr, sub_xs[inds1]) - (tr - tl)) - trunc_yvals.append(np.append(np.interp(tr, sub_xs, sub_ys), sub_ys[inds1])) - elif tr < min_xs: - # case 5: tr > t > tl, nothing truncated but need time shift - # : : +---+ - # : : | | - # -----:---:-----+---+----- - # l r 0 1 - trunc_xvals.append(sub_xs - (tr - tl)) - trunc_yvals.append(sub_ys) - else: - # no need to truncate - trunc_xvals.append(sub_xs) - trunc_yvals.append(sub_ys) - offset_accumulate += tr - tl - - new_x = np.concatenate(trunc_xvals) - new_y = np.concatenate(trunc_yvals) - - return np.asarray(new_x, dtype=float), np.asarray(new_y, dtype=float) - - def _bind_coordinate(self, vals: Sequence[types.Coordinate] | np.ndarray) -> np.ndarray: - """A helper function to bind actual coordinates to an `AbstractCoordinate`. - - Args: - vals: Sequence of coordinate objects associated with a drawing. - - Returns: - Numpy data array with substituted values. - """ - - def substitute(val: types.Coordinate): - if val == types.AbstractCoordinate.LEFT: - return self.parent.time_range[0] - if val == types.AbstractCoordinate.RIGHT: - return self.parent.time_range[1] - if val == types.AbstractCoordinate.TOP: - return self.vmax - if val == types.AbstractCoordinate.BOTTOM: - return self.vmin - raise VisualizationError(f"Coordinate {val} is not supported.") - - try: - return np.asarray(vals, dtype=float) - except (TypeError, ValueError): - return np.asarray(list(map(substitute, vals)), dtype=float) - - def _check_visible(self, data: drawings.ElementaryData) -> bool: - """A helper function to check if the data is visible. - - Args: - data: Drawing object to test. - - Returns: - Return `True` if the data is visible. - """ - is_active_type = data.data_type not in self.parent.disable_types - is_active_chan = any(chan not in self.parent.disable_chans for chan in data.channels) - if not (is_active_type and is_active_chan): - return False - - return True - - @classmethod - def _increment_cls_index(cls): - """Increment counter of the chart.""" - cls.chart_index += 1 - - @classmethod - def _cls_index(cls) -> int: - """Return counter index of the chart.""" - return cls.chart_index diff --git a/qiskit/visualization/pulse_v2/device_info.py b/qiskit/visualization/pulse_v2/device_info.py deleted file mode 100644 index 3a3f2688db59..000000000000 --- a/qiskit/visualization/pulse_v2/device_info.py +++ /dev/null @@ -1,137 +0,0 @@ -# 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. - -"""A collection of backend information formatted to generate drawing data. - -This instance will be provided to generator functions. The module provides an abstract -class :py:class:``DrawerBackendInfo`` with necessary methods to generate drawing objects. - -Because the data structure of backend class may depend on providers, this abstract class -has an abstract factory method `create_from_backend`. Each subclass should provide -the factory method which conforms to the associated provider. By default we provide -:py:class:``OpenPulseBackendInfo`` class that has the factory method taking backends -satisfying OpenPulse specification [1]. - -This class can be also initialized without the factory method by manually specifying -required information. This may be convenient for visualizing a pulse program for simulator -backend that only has a device Hamiltonian information. This requires two mapping objects -for channel/qubit and channel/frequency along with the system cycle time. - -If those information are not provided, this class will be initialized with a set of -empty data and the drawer illustrates a pulse program without any specific information. - -Reference: -- [1] Qiskit Backend Specifications for OpenQASM and OpenPulse Experiments, - https://arxiv.org/abs/1809.03452 -""" - -from abc import ABC, abstractmethod -from collections import defaultdict -from typing import Dict, List, Union, Optional - -from qiskit import pulse -from qiskit.providers.backend import Backend, BackendV2 - - -class DrawerBackendInfo(ABC): - """Backend information to be used for the drawing data generation.""" - - def __init__( - self, - name: Optional[str] = None, - dt: Optional[float] = None, - channel_frequency_map: Optional[Dict[pulse.channels.Channel, float]] = None, - qubit_channel_map: Optional[Dict[int, List[pulse.channels.Channel]]] = None, - ): - """Create new backend information. - - Args: - name: Name of the backend. - dt: System cycle time. - channel_frequency_map: Mapping of channel and associated frequency. - qubit_channel_map: Mapping of qubit and associated channels. - """ - self.backend_name = name or "no-backend" - self._dt = dt - self._chan_freq_map = channel_frequency_map or {} - self._qubit_channel_map = qubit_channel_map or {} - - @classmethod - @abstractmethod - def create_from_backend(cls, backend: Backend): - """Initialize a class with backend information provided by provider. - - Args: - backend: Backend object. - """ - raise NotImplementedError - - @property - def dt(self): - """Return cycle time.""" - return self._dt - - def get_qubit_index(self, chan: pulse.channels.Channel) -> Union[int, None]: - """Get associated qubit index of given channel object.""" - for qind, chans in self._qubit_channel_map.items(): - if chan in chans: - return qind - return chan.index - - def get_channel_frequency(self, chan: pulse.channels.Channel) -> Union[float, None]: - """Get frequency of given channel object.""" - return self._chan_freq_map.get(chan, None) - - -class OpenPulseBackendInfo(DrawerBackendInfo): - """Drawing information of backend that conforms to OpenPulse specification.""" - - @classmethod - def create_from_backend(cls, backend: Backend): - """Initialize a class with backend information provided by provider. - - Args: - backend: Backend object. - - Returns: - OpenPulseBackendInfo: New configured instance. - """ - chan_freqs = {} - qubit_channel_map = defaultdict(list) - - if isinstance(backend, BackendV2): - # Pure V2 model doesn't contain channel frequency information. - name = backend.name - dt = backend.dt - - # load qubit channel mapping - for qind in range(backend.num_qubits): - # channels are NotImplemented by default so we must catch arbitrary error. - try: - qubit_channel_map[qind].append(backend.drive_channel(qind)) - except Exception: # pylint: disable=broad-except - pass - try: - qubit_channel_map[qind].append(backend.measure_channel(qind)) - except Exception: # pylint: disable=broad-except - pass - for tind in range(backend.num_qubits): - try: - qubit_channel_map[qind].extend(backend.control_channel(qubits=(qind, tind))) - except Exception: # pylint: disable=broad-except - pass - else: - raise RuntimeError("Backend object not yet supported") - - return OpenPulseBackendInfo( - name=name, dt=dt, channel_frequency_map=chan_freqs, qubit_channel_map=qubit_channel_map - ) diff --git a/qiskit/visualization/pulse_v2/drawings.py b/qiskit/visualization/pulse_v2/drawings.py deleted file mode 100644 index e5a61512a6cd..000000000000 --- a/qiskit/visualization/pulse_v2/drawings.py +++ /dev/null @@ -1,253 +0,0 @@ -# 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. - -""" -Drawing objects for pulse drawer. - -Drawing objects play two important roles: - - Allowing unittests of visualization module. Usually it is hard for image files to be tested. - - Removing program parser from each plotter interface. We can easily add new plotter. - -This module is based on the structure of matplotlib as it is the primary plotter -of the pulse drawer. However this interface is agnostic to the actual plotter. - -Design concept -~~~~~~~~~~~~~~ -When we think about dynamically updating drawings, it will be most efficient to -update only the changed properties of drawings rather than regenerating entirely from scratch. -Thus the core :py:class:`qiskit.visualization.pulse_v2.core.DrawerCanvas` generates -all possible drawings in the beginning and then the canvas instance manages -visibility of each drawing according to the end-user request. - -Data key -~~~~~~~~ -In the abstract class ``ElementaryData`` common attributes to represent a drawing are -specified. In addition, drawings have the `data_key` property that returns an -unique hash of the object for comparison. -This key is generated from a data type and the location of the drawing in the canvas. -See py:mod:`qiskit.visualization.pulse_v2.types` for detail on the data type. -If a data key cannot distinguish two independent objects, you need to add a new data type. -The data key may be used in the plotter interface to identify the object. - -Drawing objects -~~~~~~~~~~~~~~~ -To support not only `matplotlib` but also multiple plotters, those drawings should be -universal and designed without strong dependency on modules in `matplotlib`. -This means drawings that represent primitive geometries are preferred. -It should be noted that there will be no unittest for each plotter API, which takes -drawings and outputs image data, we should avoid adding a complicated geometry -that has a context of the pulse program. - -For example, a pulse envelope is complex valued number array and may be represented -by two lines with different colors associated with the real and the imaginary component. -We can use two line-type objects rather than defining a new drawing that takes -complex value. As many plotters don't support an API that visualizes complex-valued -data arrays, if we introduced such a drawing and wrote a custom wrapper function -on top of the existing API, it could be difficult to prevent bugs with the CI tools -due to lack of the effective unittest. -""" -from __future__ import annotations - -from abc import ABC -from enum import Enum -from typing import Any - -import numpy as np - -from qiskit.pulse.channels import Channel -from qiskit.visualization.pulse_v2 import types -from qiskit.visualization.exceptions import VisualizationError - - -class ElementaryData(ABC): - """Base class of the pulse visualization interface.""" - - __hash__ = None - - def __init__( - self, - data_type: str | Enum, - xvals: np.ndarray, - yvals: np.ndarray, - channels: Channel | list[Channel] | None = None, - meta: dict[str, Any] | None = None, - ignore_scaling: bool = False, - styles: dict[str, Any] | None = None, - ): - """Create new drawing. - - Args: - data_type: String representation of this drawing. - xvals: Series of horizontal coordinate that the object is drawn. - yvals: Series of vertical coordinate that the object is drawn. - channels: Pulse channel object bound to this drawing. - meta: Meta data dictionary of the object. - ignore_scaling: Set ``True`` to disable scaling. - styles: Style keyword args of the object. This conforms to `matplotlib`. - """ - if channels and isinstance(channels, Channel): - channels = [channels] - - if isinstance(data_type, Enum): - data_type = data_type.value - - self.data_type = str(data_type) - self.xvals = np.array(xvals, dtype=object) - self.yvals = np.array(yvals, dtype=object) - self.channels: list[Channel] = channels or [] - self.meta = meta or {} - self.ignore_scaling = ignore_scaling - self.styles = styles or {} - - @property - def data_key(self): - """Return unique hash of this object.""" - return str( - hash((self.__class__.__name__, self.data_type, tuple(self.xvals), tuple(self.yvals))) - ) - - def __repr__(self): - return f"{self.__class__.__name__}(type={self.data_type}, key={self.data_key})" - - def __eq__(self, other): - return isinstance(other, self.__class__) and self.data_key == other.data_key - - -class LineData(ElementaryData): - """Drawing object to represent object appears as a line. - - This is the counterpart of `matplotlib.pyplot.plot`. - """ - - def __init__( - self, - data_type: str | Enum, - xvals: np.ndarray | list[types.Coordinate], - yvals: np.ndarray | list[types.Coordinate], - fill: bool = False, - channels: Channel | list[Channel] | None = None, - meta: dict[str, Any] | None = None, - ignore_scaling: bool = False, - styles: dict[str, Any] | None = None, - ): - """Create new drawing. - - Args: - data_type: String representation of this drawing. - channels: Pulse channel object bound to this drawing. - xvals: Series of horizontal coordinate that the object is drawn. - yvals: Series of vertical coordinate that the object is drawn. - fill: Set ``True`` to fill the area under curve. - meta: Meta data dictionary of the object. - ignore_scaling: Set ``True`` to disable scaling. - styles: Style keyword args of the object. This conforms to `matplotlib`. - """ - self.fill = fill - - super().__init__( - data_type=data_type, - xvals=xvals, - yvals=yvals, - channels=channels, - meta=meta, - ignore_scaling=ignore_scaling, - styles=styles, - ) - - -class TextData(ElementaryData): - """Drawing object to represent object appears as a text. - - This is the counterpart of `matplotlib.pyplot.text`. - """ - - def __init__( - self, - data_type: str | Enum, - xvals: np.ndarray | list[types.Coordinate], - yvals: np.ndarray | list[types.Coordinate], - text: str, - latex: str | None = None, - channels: Channel | list[Channel] | None = None, - meta: dict[str, Any] | None = None, - ignore_scaling: bool = False, - styles: dict[str, Any] | None = None, - ): - """Create new drawing. - - Args: - data_type: String representation of this drawing. - channels: Pulse channel object bound to this drawing. - xvals: Series of horizontal coordinate that the object is drawn. - yvals: Series of vertical coordinate that the object is drawn. - text: String to show in the canvas. - latex: Latex representation of the text (if backend supports latex drawing). - meta: Meta data dictionary of the object. - ignore_scaling: Set ``True`` to disable scaling. - styles: Style keyword args of the object. This conforms to `matplotlib`. - """ - self.text = text - self.latex = latex or "" - - super().__init__( - data_type=data_type, - xvals=xvals, - yvals=yvals, - channels=channels, - meta=meta, - ignore_scaling=ignore_scaling, - styles=styles, - ) - - -class BoxData(ElementaryData): - """Drawing object that represents box shape. - - This is the counterpart of `matplotlib.patches.Rectangle`. - """ - - def __init__( - self, - data_type: str | Enum, - xvals: np.ndarray | list[types.Coordinate], - yvals: np.ndarray | list[types.Coordinate], - channels: Channel | list[Channel] | None = None, - meta: dict[str, Any] | None = None, - ignore_scaling: bool = False, - styles: dict[str, Any] | None = None, - ): - """Create new box. - - Args: - data_type: String representation of this drawing. - xvals: Left and right coordinate that the object is drawn. - yvals: Top and bottom coordinate that the object is drawn. - channels: Pulse channel object bound to this drawing. - meta: Meta data dictionary of the object. - ignore_scaling: Set ``True`` to disable scaling. - styles: Style keyword args of the object. This conforms to `matplotlib`. - - Raises: - VisualizationError: When number of data points are not equals to 2. - """ - if len(xvals) != 2 or len(yvals) != 2: - raise VisualizationError("Length of data points are not equals to 2.") - - super().__init__( - data_type=data_type, - xvals=xvals, - yvals=yvals, - channels=channels, - meta=meta, - ignore_scaling=ignore_scaling, - styles=styles, - ) diff --git a/qiskit/visualization/pulse_v2/events.py b/qiskit/visualization/pulse_v2/events.py deleted file mode 100644 index 8830d8e7a1db..000000000000 --- a/qiskit/visualization/pulse_v2/events.py +++ /dev/null @@ -1,260 +0,0 @@ -# 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. - -r""" -Channel event manager for pulse schedules. - -This module provides a `ChannelEvents` class that manages a series of instructions for a -pulse channel. Channel-wise filtering of the pulse program makes -the arrangement of channels easier in the core drawer function. -The `ChannelEvents` class is expected to be called by other programs (not by end-users). - -The `ChannelEvents` class instance is created with the class method ``load_program``: - -.. plot:: - :include-source: - :nofigs: - - event = ChannelEvents.load_program(sched, DriveChannel(0)) - -The `ChannelEvents` is created for a specific pulse channel and loosely assorts pulse -instructions within the channel with different visualization purposes. - -Phase and frequency related instructions are loosely grouped as frame changes. -The instantaneous value of those operands are combined and provided as ``PhaseFreqTuple``. -Instructions that have finite duration are grouped as waveforms. - -The grouped instructions are returned as an iterator by the corresponding method call: - -.. plot:: - :include-source: - :nofigs: - - for t0, frame, instruction in event.get_waveforms(): - ... - - for t0, frame_change, instructions in event.get_frame_changes(): - ... - -The class method ``get_waveforms`` returns the iterator of waveform type instructions with -the ``PhaseFreqTuple`` (frame) at the time when instruction is issued. -This is because a pulse envelope of ``Waveform`` may be modulated with a -phase factor $exp(-i \omega t - \phi)$ with frequency $\omega$ and phase $\phi$ and -appear on the canvas. Thus, it is better to tell users in which phase and frequency -the pulse envelope is modulated from a viewpoint of program debugging. - -On the other hand, the class method ``get_frame_changes`` returns a ``PhaseFreqTuple`` that -represents a total amount of change at that time because it is convenient to know -the operand value itself when we debug a program. - -Because frame change type instructions are usually zero duration, multiple instructions -can be issued at the same time and those operand values should be appropriately -combined. In Qiskit Pulse we have set and shift type instructions for the frame control, -the set type instruction will be converted into the relevant shift amount for visualization. -Note that these instructions are not interchangeable and the order should be kept. -For example: - -.. plot:: - :include-source: - :nofigs: - - sched1 = Schedule() - sched1 = sched1.insert(0, ShiftPhase(-1.57, DriveChannel(0)) - sched1 = sched1.insert(0, SetPhase(3.14, DriveChannel(0)) - - sched2 = Schedule() - sched2 = sched2.insert(0, SetPhase(3.14, DriveChannel(0)) - sched2 = sched2.insert(0, ShiftPhase(-1.57, DriveChannel(0)) - -In this example, ``sched1`` and ``sched2`` will have different frames. -On the drawer canvas, the total frame change amount of +3.14 should be shown for ``sched1``, -while ``sched2`` is +1.57. Since the `SetPhase` and the `ShiftPhase` instruction behave -differently, we cannot simply sum up the operand values in visualization output. - -It should be also noted that zero duration instructions issued at the same time will be -overlapped on the canvas. Thus it is convenient to plot a total frame change amount rather -than plotting each operand value bound to the instruction. -""" -from __future__ import annotations -from collections import defaultdict -from collections.abc import Iterator - -from qiskit import pulse, circuit -from qiskit.visualization.pulse_v2.types import PhaseFreqTuple, PulseInstruction - - -class ChannelEvents: - """Channel event manager.""" - - _waveform_group = ( - pulse.instructions.Play, - pulse.instructions.Delay, - pulse.instructions.Acquire, - ) - _frame_group = ( - pulse.instructions.SetFrequency, - pulse.instructions.ShiftFrequency, - pulse.instructions.SetPhase, - pulse.instructions.ShiftPhase, - ) - - def __init__( - self, - waveforms: dict[int, pulse.Instruction], - frames: dict[int, list[pulse.Instruction]], - channel: pulse.channels.Channel, - ): - """Create new event manager. - - Args: - waveforms: List of waveforms shown in this channel. - frames: List of frame change type instructions shown in this channel. - channel: Channel object associated with this manager. - """ - self._waveforms = waveforms - self._frames = frames - self.channel = channel - - # initial frame - self._init_phase = 0.0 - self._init_frequency = 0.0 - - # time resolution - self._dt = 0.0 - - @classmethod - def load_program(cls, program: pulse.Schedule, channel: pulse.channels.Channel): - """Load a pulse program represented by ``Schedule``. - - Args: - program: Target ``Schedule`` to visualize. - channel: The channel managed by this instance. - - Returns: - ChannelEvents: The channel event manager for the specified channel. - """ - waveforms = {} - frames = defaultdict(list) - - # parse instructions - for t0, inst in program.filter(channels=[channel]).instructions: - if isinstance(inst, cls._waveform_group): - if inst.duration == 0: - # special case, duration of delay can be zero - continue - waveforms[t0] = inst - elif isinstance(inst, cls._frame_group): - frames[t0].append(inst) - - return ChannelEvents(waveforms, frames, channel) - - def set_config(self, dt: float, init_frequency: float, init_phase: float): - """Setup system status. - - Args: - dt: Time resolution in sec. - init_frequency: Modulation frequency in Hz. - init_phase: Initial phase in rad. - """ - self._dt = dt or 1.0 - self._init_frequency = init_frequency or 0.0 - self._init_phase = init_phase or 0.0 - - def get_waveforms(self) -> Iterator[PulseInstruction]: - """Return waveform type instructions with frame.""" - sorted_frame_changes = sorted(self._frames.items(), key=lambda x: x[0], reverse=True) - sorted_waveforms = sorted(self._waveforms.items(), key=lambda x: x[0]) - - # bind phase and frequency with instruction - phase = self._init_phase - frequency = self._init_frequency - for t0, inst in sorted_waveforms: - is_opaque = False - - while len(sorted_frame_changes) > 0 and sorted_frame_changes[-1][0] <= t0: - _, frame_changes = sorted_frame_changes.pop() - phase, frequency = ChannelEvents._calculate_current_frame( - frame_changes=frame_changes, phase=phase, frequency=frequency - ) - - # Convert parameter expression into float - if isinstance(phase, circuit.ParameterExpression): - phase = float(phase.bind({param: 0 for param in phase.parameters})) - if isinstance(frequency, circuit.ParameterExpression): - frequency = float(frequency.bind({param: 0 for param in frequency.parameters})) - - frame = PhaseFreqTuple(phase, frequency) - - # Check if pulse has unbound parameters - if isinstance(inst, pulse.Play): - is_opaque = inst.pulse.is_parameterized() - - yield PulseInstruction(t0, self._dt, frame, inst, is_opaque) - - def get_frame_changes(self) -> Iterator[PulseInstruction]: - """Return frame change type instructions with total frame change amount.""" - # TODO parse parametrized FCs correctly - - sorted_frame_changes = sorted(self._frames.items(), key=lambda x: x[0]) - - phase = self._init_phase - frequency = self._init_frequency - for t0, frame_changes in sorted_frame_changes: - is_opaque = False - - pre_phase = phase - pre_frequency = frequency - phase, frequency = ChannelEvents._calculate_current_frame( - frame_changes=frame_changes, phase=phase, frequency=frequency - ) - - # keep parameter expression to check either phase or frequency is parameterized - frame = PhaseFreqTuple(phase - pre_phase, frequency - pre_frequency) - - # remove parameter expressions to find if next frame is parameterized - if isinstance(phase, circuit.ParameterExpression): - phase = float(phase.bind({param: 0 for param in phase.parameters})) - is_opaque = True - if isinstance(frequency, circuit.ParameterExpression): - frequency = float(frequency.bind({param: 0 for param in frequency.parameters})) - is_opaque = True - - yield PulseInstruction(t0, self._dt, frame, frame_changes, is_opaque) - - @classmethod - def _calculate_current_frame( - cls, frame_changes: list[pulse.instructions.Instruction], phase: float, frequency: float - ) -> tuple[float, float]: - """Calculate the current frame from the previous frame. - - If parameter is unbound phase or frequency accumulation with this instruction is skipped. - - Args: - frame_changes: List of frame change instructions at a specific time. - phase: Phase of previous frame. - frequency: Frequency of previous frame. - - Returns: - Phase and frequency of new frame. - """ - - for frame_change in frame_changes: - if isinstance(frame_change, pulse.instructions.SetFrequency): - frequency = frame_change.frequency - elif isinstance(frame_change, pulse.instructions.ShiftFrequency): - frequency += frame_change.frequency - elif isinstance(frame_change, pulse.instructions.SetPhase): - phase = frame_change.phase - elif isinstance(frame_change, pulse.instructions.ShiftPhase): - phase += frame_change.phase - - return phase, frequency diff --git a/qiskit/visualization/pulse_v2/generators/__init__.py b/qiskit/visualization/pulse_v2/generators/__init__.py deleted file mode 100644 index fd671857eb90..000000000000 --- a/qiskit/visualization/pulse_v2/generators/__init__.py +++ /dev/null @@ -1,40 +0,0 @@ -# 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. - -""" -Customizable object generators for pulse drawer. -""" - -from qiskit.visualization.pulse_v2.generators.barrier import gen_barrier - -from qiskit.visualization.pulse_v2.generators.chart import ( - gen_baseline, - gen_channel_freqs, - gen_chart_name, - gen_chart_scale, -) - -from qiskit.visualization.pulse_v2.generators.frame import ( - gen_formatted_frame_values, - gen_formatted_freq_mhz, - gen_formatted_phase, - gen_frame_symbol, - gen_raw_operand_values_compact, -) - -from qiskit.visualization.pulse_v2.generators.snapshot import gen_snapshot_name, gen_snapshot_symbol - -from qiskit.visualization.pulse_v2.generators.waveform import ( - gen_filled_waveform_stepwise, - gen_ibmq_latex_waveform_name, - gen_waveform_max_value, -) diff --git a/qiskit/visualization/pulse_v2/generators/barrier.py b/qiskit/visualization/pulse_v2/generators/barrier.py deleted file mode 100644 index 85f8271cf142..000000000000 --- a/qiskit/visualization/pulse_v2/generators/barrier.py +++ /dev/null @@ -1,76 +0,0 @@ -# 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. - -# pylint: disable=unused-argument - -"""Barrier generators. - -A collection of functions that generate drawings from formatted input data. -See py:mod:`qiskit.visualization.pulse_v2.types` for more info on the required data. - -In this module the input data is `types.BarrierInstruction`. - -An end-user can write arbitrary functions that generate custom drawings. -Generators in this module are called with the `formatter` and `device` kwargs. -These data provides stylesheet configuration and backend system configuration. - -The format of generator is restricted to: - - ```python - - def my_object_generator(data: BarrierInstruction, - formatter: Dict[str, Any], - device: DrawerBackendInfo) -> List[ElementaryData]: - pass - ``` - -Arbitrary generator function satisfying the above format can be accepted. -Returned `ElementaryData` can be arbitrary subclasses that are implemented in -the plotter API. -""" -from typing import Dict, Any, List - -from qiskit.visualization.pulse_v2 import drawings, types, device_info - - -def gen_barrier( - data: types.BarrierInstruction, formatter: Dict[str, Any], device: device_info.DrawerBackendInfo -) -> List[drawings.LineData]: - """Generate the barrier from provided relative barrier instruction. - - Stylesheets: - - The `barrier` style is applied. - - Args: - data: Barrier instruction data to draw. - formatter: Dictionary of stylesheet settings. - device: Backend configuration. - Returns: - List of `LineData` drawings. - """ - style = { - "alpha": formatter["alpha.barrier"], - "zorder": formatter["layer.barrier"], - "linewidth": formatter["line_width.barrier"], - "linestyle": formatter["line_style.barrier"], - "color": formatter["color.barrier"], - } - - line = drawings.LineData( - data_type=types.LineType.BARRIER, - channels=data.channels, - xvals=[data.t0, data.t0], - yvals=[types.AbstractCoordinate.BOTTOM, types.AbstractCoordinate.TOP], - styles=style, - ) - - return [line] diff --git a/qiskit/visualization/pulse_v2/generators/chart.py b/qiskit/visualization/pulse_v2/generators/chart.py deleted file mode 100644 index 26a92fe3695e..000000000000 --- a/qiskit/visualization/pulse_v2/generators/chart.py +++ /dev/null @@ -1,208 +0,0 @@ -# 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. - -# pylint: disable=unused-argument - -"""Chart axis generators. - -A collection of functions that generate drawings from formatted input data. -See py:mod:`qiskit.visualization.pulse_v2.types` for more info on the required data. - -In this module the input data is `types.ChartAxis`. - -An end-user can write arbitrary functions that generate custom drawings. -Generators in this module are called with the `formatter` and `device` kwargs. -These data provides stylesheet configuration and backend system configuration. - -The format of generator is restricted to: - - ```python - - def my_object_generator(data: ChartAxis, - formatter: Dict[str, Any], - device: DrawerBackendInfo) -> List[ElementaryData]: - pass - ``` - -Arbitrary generator function satisfying the above format can be accepted. -Returned `ElementaryData` can be arbitrary subclasses that are implemented in -the plotter API. -""" -from typing import Dict, Any, List - -from qiskit.visualization.pulse_v2 import drawings, types, device_info - - -def gen_baseline( - data: types.ChartAxis, formatter: Dict[str, Any], device: device_info.DrawerBackendInfo -) -> List[drawings.LineData]: - """Generate the baseline associated with the chart. - - Stylesheets: - - The `baseline` style is applied. - - Args: - data: Chart axis data to draw. - formatter: Dictionary of stylesheet settings. - device: Backend configuration. - - Returns: - List of `LineData` drawings. - """ - style = { - "alpha": formatter["alpha.baseline"], - "zorder": formatter["layer.baseline"], - "linewidth": formatter["line_width.baseline"], - "linestyle": formatter["line_style.baseline"], - "color": formatter["color.baseline"], - } - - baseline = drawings.LineData( - data_type=types.LineType.BASELINE, - channels=data.channels, - xvals=[types.AbstractCoordinate.LEFT, types.AbstractCoordinate.RIGHT], - yvals=[0, 0], - ignore_scaling=True, - styles=style, - ) - - return [baseline] - - -def gen_chart_name( - data: types.ChartAxis, formatter: Dict[str, Any], device: device_info.DrawerBackendInfo -) -> List[drawings.TextData]: - """Generate the name of chart. - - Stylesheets: - - The `axis_label` style is applied. - - Args: - data: Chart axis data to draw. - formatter: Dictionary of stylesheet settings. - device: Backend configuration. - - Returns: - List of `TextData` drawings. - """ - style = { - "zorder": formatter["layer.axis_label"], - "color": formatter["color.axis_label"], - "size": formatter["text_size.axis_label"], - "va": "center", - "ha": "right", - } - - text = drawings.TextData( - data_type=types.LabelType.CH_NAME, - channels=data.channels, - xvals=[types.AbstractCoordinate.LEFT], - yvals=[0], - text=data.name, - ignore_scaling=True, - styles=style, - ) - - return [text] - - -def gen_chart_scale( - data: types.ChartAxis, formatter: Dict[str, Any], device: device_info.DrawerBackendInfo -) -> List[drawings.TextData]: - """Generate the current scaling value of the chart. - - Stylesheets: - - The `axis_label` style is applied. - - The `annotate` style is partially applied for the font size. - - Args: - data: Chart axis data to draw. - formatter: Dictionary of stylesheet settings. - device: Backend configuration. - - Returns: - List of `TextData` drawings. - """ - style = { - "zorder": formatter["layer.axis_label"], - "color": formatter["color.axis_label"], - "size": formatter["text_size.annotate"], - "va": "center", - "ha": "right", - } - - scale_val = f"x{types.DynamicString.SCALE}" - - text = drawings.TextData( - data_type=types.LabelType.CH_INFO, - channels=data.channels, - xvals=[types.AbstractCoordinate.LEFT], - yvals=[-formatter["label_offset.chart_info"]], - text=scale_val, - ignore_scaling=True, - styles=style, - ) - - return [text] - - -def gen_channel_freqs( - data: types.ChartAxis, formatter: Dict[str, Any], device: device_info.DrawerBackendInfo -) -> List[drawings.TextData]: - """Generate the frequency values of associated channels. - - Stylesheets: - - The `axis_label` style is applied. - - The `annotate` style is partially applied for the font size. - - Args: - data: Chart axis data to draw. - formatter: Dictionary of stylesheet settings. - device: Backend configuration. - - Returns: - List of `TextData` drawings. - """ - style = { - "zorder": formatter["layer.axis_label"], - "color": formatter["color.axis_label"], - "size": formatter["text_size.annotate"], - "va": "center", - "ha": "right", - } - - if len(data.channels) > 1: - sources = [] - for chan in data.channels: - freq = device.get_channel_frequency(chan) - if not freq: - continue - sources.append(f"{chan.name.upper()}: {freq / 1e9:.2f} GHz") - freq_text = ", ".join(sources) - else: - freq = device.get_channel_frequency(data.channels[0]) - if freq: - freq_text = f"{freq / 1e9:.2f} GHz" - else: - freq_text = "" - - text = drawings.TextData( - data_type=types.LabelType.CH_INFO, - channels=data.channels, - xvals=[types.AbstractCoordinate.LEFT], - yvals=[-formatter["label_offset.chart_info"]], - text=freq_text or "no freq.", - ignore_scaling=True, - styles=style, - ) - - return [text] diff --git a/qiskit/visualization/pulse_v2/generators/frame.py b/qiskit/visualization/pulse_v2/generators/frame.py deleted file mode 100644 index 8b71b8596bb4..000000000000 --- a/qiskit/visualization/pulse_v2/generators/frame.py +++ /dev/null @@ -1,436 +0,0 @@ -# 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. - -# pylint: disable=unused-argument - -"""Frame change generators. - -A collection of functions that generate drawings from formatted input data. -See py:mod:`qiskit.visualization.pulse_v2.types` for more info on the required data. - -In this module the input data is `types.PulseInstruction`. - -An end-user can write arbitrary functions that generate custom drawings. -Generators in this module are called with the `formatter` and `device` kwargs. -These data provides stylesheet configuration and backend system configuration. - -The format of generator is restricted to: - - ```python - - def my_object_generator(data: PulseInstruction, - formatter: Dict[str, Any], - device: DrawerBackendInfo) -> List[ElementaryData]: - pass - ``` - -Arbitrary generator function satisfying the above format can be accepted. -Returned `ElementaryData` can be arbitrary subclasses that are implemented in -the plotter API. -""" -from fractions import Fraction -from typing import Dict, Any, List, Tuple - -import numpy as np -from qiskit.pulse import instructions -from qiskit.visualization.exceptions import VisualizationError -from qiskit.visualization.pulse_v2 import drawings, types, device_info - - -def gen_formatted_phase( - data: types.PulseInstruction, formatter: Dict[str, Any], device: device_info.DrawerBackendInfo -) -> List[drawings.TextData]: - """Generate the formatted virtual Z rotation label from provided frame instruction. - - Rotation angle is expressed in units of pi. - If the denominator of fraction is larger than 10, the angle is expressed in units of radian. - - For example: - - A value -3.14 is converted into `VZ(\\pi)` - - A value 1.57 is converted into `VZ(-\\frac{\\pi}{2})` - - A value 0.123 is converted into `VZ(-0.123 rad.)` - - Stylesheets: - - The `frame_change` style is applied. - - The `annotate` style is applied for font size. - - Notes: - The phase operand of `PhaseShift` instruction has opposite sign to the Z gate definition. - Thus the sign of rotation angle is inverted. - - Args: - data: Frame change instruction data to draw. - formatter: Dictionary of stylesheet settings. - device: Backend configuration. - - Returns: - List of `TextData` drawings. - """ - _max_denom = 10 - - style = { - "zorder": formatter["layer.frame_change"], - "color": formatter["color.frame_change"], - "size": formatter["text_size.annotate"], - "va": "center", - "ha": "center", - } - - plain_phase, latex_phase = _phase_to_text( - formatter=formatter, phase=data.frame.phase, max_denom=_max_denom, flip=True - ) - - text = drawings.TextData( - data_type=types.LabelType.FRAME, - channels=data.inst[0].channel, - xvals=[data.t0], - yvals=[formatter["label_offset.frame_change"]], - text=f"VZ({plain_phase})", - latex=rf"{{\rm VZ}}({latex_phase})", - ignore_scaling=True, - styles=style, - ) - - return [text] - - -def gen_formatted_freq_mhz( - data: types.PulseInstruction, formatter: Dict[str, Any], device: device_info.DrawerBackendInfo -) -> List[drawings.TextData]: - """Generate the formatted frequency change label from provided frame instruction. - - Frequency change is expressed in units of MHz. - - For example: - - A value 1,234,567 is converted into `\\Delta f = 1.23 MHz` - - Stylesheets: - - The `frame_change` style is applied. - - The `annotate` style is applied for font size. - - Args: - data: Frame change instruction data to draw. - formatter: Dictionary of stylesheet settings. - device: Backend configuration. - - Returns: - List of `TextData` drawings. - """ - _unit = "MHz" - - style = { - "zorder": formatter["layer.frame_change"], - "color": formatter["color.frame_change"], - "size": formatter["text_size.annotate"], - "va": "center", - "ha": "center", - } - - plain_freq, latex_freq = _freq_to_text(formatter=formatter, freq=data.frame.freq, unit=_unit) - - text = drawings.TextData( - data_type=types.LabelType.FRAME, - channels=data.inst[0].channel, - xvals=[data.t0], - yvals=[formatter["label_offset.frame_change"]], - text=f"\u0394f = {plain_freq}", - latex=rf"\Delta f = {latex_freq}", - ignore_scaling=True, - styles=style, - ) - - return [text] - - -def gen_formatted_frame_values( - data: types.PulseInstruction, formatter: Dict[str, Any], device: device_info.DrawerBackendInfo -) -> List[drawings.TextData]: - """Generate the formatted virtual Z rotation label and the frequency change label - from provided frame instruction. - - Phase value is placed on top of the symbol, and frequency value is placed below the symbol. - See :py:func:`gen_formatted_phase` and :py:func:`gen_formatted_freq_mhz` for details. - - Stylesheets: - - The `frame_change` style is applied. - - The `annotate` style is applied for font size. - - Args: - data: Frame change instruction data to draw. - formatter: Dictionary of stylesheet settings. - device: Backend configuration. - - Returns: - List of `TextData` drawings. - """ - texts = [] - - _max_denom = 10 - _unit = "MHz" - - style = { - "zorder": formatter["layer.frame_change"], - "color": formatter["color.frame_change"], - "size": formatter["text_size.annotate"], - "ha": "center", - } - - # phase value - if data.frame.phase != 0: - plain_phase, latex_phase = _phase_to_text( - formatter=formatter, phase=data.frame.phase, max_denom=_max_denom, flip=True - ) - phase_style = {"va": "center"} - phase_style.update(style) - - phase = drawings.TextData( - data_type=types.LabelType.FRAME, - channels=data.inst[0].channel, - xvals=[data.t0], - yvals=[formatter["label_offset.frame_change"]], - text=f"VZ({plain_phase})", - latex=rf"{{\rm VZ}}({latex_phase})", - ignore_scaling=True, - styles=phase_style, - ) - texts.append(phase) - - # frequency value - if data.frame.freq != 0: - plain_freq, latex_freq = _freq_to_text( - formatter=formatter, freq=data.frame.freq, unit=_unit - ) - freq_style = {"va": "center"} - freq_style.update(style) - - freq = drawings.TextData( - data_type=types.LabelType.FRAME, - channels=data.inst[0].channel, - xvals=[data.t0], - yvals=[2 * formatter["label_offset.frame_change"]], - text=f"\u0394f = {plain_freq}", - latex=rf"\Delta f = {latex_freq}", - ignore_scaling=True, - styles=freq_style, - ) - texts.append(freq) - - return texts - - -def gen_raw_operand_values_compact( - data: types.PulseInstruction, formatter: Dict[str, Any], device: device_info.DrawerBackendInfo -) -> List[drawings.TextData]: - """Generate the formatted virtual Z rotation label and the frequency change label - from provided frame instruction. - - Raw operand values are shown in compact form. Frequency change is expressed - in scientific notation. Values are shown in two lines. - - For example: - - A phase change 1.57 and frequency change 1,234,567 are written by `1.57\\n1.2e+06` - - Stylesheets: - - The `frame_change` style is applied. - - The `annotate` style is applied for font size. - - Args: - data: Frame change instruction data to draw. - formatter: Dictionary of stylesheet settings. - device: Backend configuration. - - Returns: - List of `TextData` drawings. - """ - - style = { - "zorder": formatter["layer.frame_change"], - "color": formatter["color.frame_change"], - "size": formatter["text_size.annotate"], - "va": "center", - "ha": "center", - } - - if data.frame.freq == 0: - freq_sci_notation = "0.0" - else: - abs_freq = np.abs(data.frame.freq) - base = data.frame.freq / (10 ** int(np.floor(np.log10(abs_freq)))) - exponent = int(np.floor(np.log10(abs_freq))) - freq_sci_notation = f"{base:.1f}e{exponent:d}" - frame_info = f"{data.frame.phase:.2f}\n{freq_sci_notation}" - - text = drawings.TextData( - data_type=types.LabelType.FRAME, - channels=data.inst[0].channel, - xvals=[data.t0], - yvals=[1.2 * formatter["label_offset.frame_change"]], - text=frame_info, - ignore_scaling=True, - styles=style, - ) - - return [text] - - -def gen_frame_symbol( - data: types.PulseInstruction, formatter: Dict[str, Any], device: device_info.DrawerBackendInfo -) -> List[drawings.TextData]: - """Generate a frame change symbol with instruction meta data from provided frame instruction. - - Stylesheets: - - The `frame_change` style is applied. - - The symbol type in unicode is specified in `formatter.unicode_symbol.frame_change`. - - The symbol type in latex is specified in `formatter.latex_symbol.frame_change`. - - Args: - data: Frame change instruction data to draw. - formatter: Dictionary of stylesheet settings. - device: Backend configuration. - - Returns: - List of `TextData` drawings. - """ - if data.frame.phase == 0 and data.frame.freq == 0: - return [] - - style = { - "zorder": formatter["layer.frame_change"], - "color": formatter["color.frame_change"], - "size": formatter["text_size.frame_change"], - "va": "center", - "ha": "center", - } - - program = [] - for inst in data.inst: - if isinstance(inst, (instructions.SetFrequency, instructions.ShiftFrequency)): - try: - program.append(f"{inst.__class__.__name__}({inst.frequency:.2e} Hz)") - except TypeError: - # parameter expression - program.append(f"{inst.__class__.__name__}({inst.frequency})") - elif isinstance(inst, (instructions.SetPhase, instructions.ShiftPhase)): - try: - program.append(f"{inst.__class__.__name__}({inst.phase:.2f} rad.)") - except TypeError: - # parameter expression - program.append(f"{inst.__class__.__name__}({inst.phase})") - - meta = { - "total phase change": data.frame.phase, - "total frequency change": data.frame.freq, - "program": ", ".join(program), - "t0 (cycle time)": data.t0, - "t0 (sec)": data.t0 * data.dt if data.dt else "N/A", - } - - text = drawings.TextData( - data_type=types.SymbolType.FRAME, - channels=data.inst[0].channel, - xvals=[data.t0], - yvals=[0], - text=formatter["unicode_symbol.frame_change"], - latex=formatter["latex_symbol.frame_change"], - ignore_scaling=True, - meta=meta, - styles=style, - ) - - return [text] - - -def _phase_to_text( - formatter: Dict[str, Any], phase: float, max_denom: int = 10, flip: bool = True -) -> Tuple[str, str]: - """A helper function to convert a float value to text with pi. - - Args: - formatter: Dictionary of stylesheet settings. - phase: A phase value in units of rad. - max_denom: Maximum denominator. Return raw value if exceed. - flip: Set `True` to flip the sign. - - Returns: - Standard text and latex text of phase value. - """ - try: - phase = float(phase) - except TypeError: - # unbound parameter - return ( - formatter["unicode_symbol.phase_parameter"], - formatter["latex_symbol.phase_parameter"], - ) - - frac = Fraction(np.abs(phase) / np.pi) - - if phase == 0: - return "0", r"0" - - num = frac.numerator - denom = frac.denominator - if denom > max_denom: - # denominator is too large - latex = rf"{np.abs(phase):.2f}" - plain = f"{np.abs(phase):.2f}" - else: - if num == 1: - if denom == 1: - latex = r"\pi" - plain = "pi" - else: - latex = rf"\pi/{denom:d}" - plain = f"pi/{denom:d}" - else: - latex = rf"{num:d}/{denom:d} \pi" - plain = f"{num:d}/{denom:d} pi" - - if flip: - sign = "-" if phase > 0 else "" - else: - sign = "-" if phase < 0 else "" - - return sign + plain, sign + latex - - -def _freq_to_text(formatter: Dict[str, Any], freq: float, unit: str = "MHz") -> Tuple[str, str]: - """A helper function to convert a freq value to text with supplementary unit. - - Args: - formatter: Dictionary of stylesheet settings. - freq: A frequency value in units of Hz. - unit: Supplementary unit. THz, GHz, MHz, kHz, Hz are supported. - - Returns: - Standard text and latex text of phase value. - - Raises: - VisualizationError: When unsupported unit is specified. - """ - try: - freq = float(freq) - except TypeError: - # unbound parameter - return formatter["unicode_symbol.freq_parameter"], formatter["latex_symbol.freq_parameter"] - - unit_table = {"THz": 1e12, "GHz": 1e9, "MHz": 1e6, "kHz": 1e3, "Hz": 1} - - try: - value = freq / unit_table[unit] - except KeyError as ex: - raise VisualizationError(f"Unit {unit} is not supported.") from ex - - latex = rf"{value:.2f}~{{\rm {unit}}}" - plain = f"{value:.2f} {unit}" - - return plain, latex diff --git a/qiskit/visualization/pulse_v2/generators/snapshot.py b/qiskit/visualization/pulse_v2/generators/snapshot.py deleted file mode 100644 index d86c89997a02..000000000000 --- a/qiskit/visualization/pulse_v2/generators/snapshot.py +++ /dev/null @@ -1,133 +0,0 @@ -# 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. - -# pylint: disable=unused-argument - -"""Snapshot generators. - -A collection of functions that generate drawings from formatted input data. -See py:mod:`qiskit.visualization.pulse_v2.types` for more info on the required data. - -In this module the input data is `types.SnapshotInstruction`. - -An end-user can write arbitrary functions that generate custom drawings. -Generators in this module are called with the `formatter` and `device` kwargs. -These data provides stylesheet configuration and backend system configuration. - -The format of generator is restricted to: - - ```python - - def my_object_generator(data: SnapshotInstruction, - formatter: Dict[str, Any], - device: DrawerBackendInfo) -> List[ElementaryData]: - pass - ``` - -Arbitrary generator function satisfying the above format can be accepted. -Returned `ElementaryData` can be arbitrary subclasses that are implemented in -the plotter API. -""" -from typing import Dict, Any, List - -from qiskit.visualization.pulse_v2 import drawings, types, device_info - - -def gen_snapshot_name( - data: types.SnapshotInstruction, - formatter: Dict[str, Any], - device: device_info.DrawerBackendInfo, -) -> List[drawings.TextData]: - """Generate the name of snapshot. - - Stylesheets: - - The `snapshot` style is applied for snapshot symbol. - - The `annotate` style is applied for label font size. - - Args: - data: Snapshot instruction data to draw. - formatter: Dictionary of stylesheet settings. - device: Backend configuration. - - Returns: - List of `TextData` drawings. - """ - style = { - "zorder": formatter["layer.snapshot"], - "color": formatter["color.snapshot"], - "size": formatter["text_size.annotate"], - "va": "center", - "ha": "center", - } - - text = drawings.TextData( - data_type=types.LabelType.SNAPSHOT, - channels=data.inst.channel, - xvals=[data.t0], - yvals=[formatter["label_offset.snapshot"]], - text=data.inst.name, - ignore_scaling=True, - styles=style, - ) - - return [text] - - -def gen_snapshot_symbol( - data: types.SnapshotInstruction, - formatter: Dict[str, Any], - device: device_info.DrawerBackendInfo, -) -> List[drawings.TextData]: - """Generate a snapshot symbol with instruction meta data from provided snapshot instruction. - - Stylesheets: - - The `snapshot` style is applied for snapshot symbol. - - The symbol type in unicode is specified in `formatter.unicode_symbol.snapshot`. - - The symbol type in latex is specified in `formatter.latex_symbol.snapshot`. - - Args: - data: Snapshot instruction data to draw. - formatter: Dictionary of stylesheet settings. - device: Backend configuration. - - Returns: - List of `TextData` drawings. - """ - style = { - "zorder": formatter["layer.snapshot"], - "color": formatter["color.snapshot"], - "size": formatter["text_size.snapshot"], - "va": "bottom", - "ha": "center", - } - - meta = { - "snapshot type": data.inst.type, - "t0 (cycle time)": data.t0, - "t0 (sec)": data.t0 * data.dt if data.dt else "N/A", - "name": data.inst.name, - "label": data.inst.label, - } - - text = drawings.TextData( - data_type=types.SymbolType.SNAPSHOT, - channels=data.inst.channel, - xvals=[data.t0], - yvals=[0], - text=formatter["unicode_symbol.snapshot"], - latex=formatter["latex_symbol.snapshot"], - ignore_scaling=True, - meta=meta, - styles=style, - ) - - return [text] diff --git a/qiskit/visualization/pulse_v2/generators/waveform.py b/qiskit/visualization/pulse_v2/generators/waveform.py deleted file mode 100644 index e770f271c454..000000000000 --- a/qiskit/visualization/pulse_v2/generators/waveform.py +++ /dev/null @@ -1,645 +0,0 @@ -# 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. - -# pylint: disable=unused-argument - -"""Waveform generators. - -A collection of functions that generate drawings from formatted input data. -See py:mod:`qiskit.visualization.pulse_v2.types` for more info on the required data. - -In this module the input data is `types.PulseInstruction`. - -An end-user can write arbitrary functions that generate custom drawings. -Generators in this module are called with the `formatter` and `device` kwargs. -These data provides stylesheet configuration and backend system configuration. - -The format of generator is restricted to: - - ```python - - def my_object_generator(data: PulseInstruction, - formatter: Dict[str, Any], - device: DrawerBackendInfo) -> List[ElementaryData]: - pass - ``` - -Arbitrary generator function satisfying the above format can be accepted. -Returned `ElementaryData` can be arbitrary subclasses that are implemented in -the plotter API. -""" - -from __future__ import annotations -import re -from fractions import Fraction -from typing import Any - -import numpy as np - -from qiskit import pulse, circuit -from qiskit.pulse import instructions, library -from qiskit.visualization.exceptions import VisualizationError -from qiskit.visualization.pulse_v2 import drawings, types, device_info - - -def gen_filled_waveform_stepwise( - data: types.PulseInstruction, formatter: dict[str, Any], device: device_info.DrawerBackendInfo -) -> list[drawings.LineData | drawings.BoxData | drawings.TextData]: - """Generate filled area objects of the real and the imaginary part of waveform envelope. - - The curve of envelope is not interpolated nor smoothed and presented - as stepwise function at each data point. - - Stylesheets: - - The `fill_waveform` style is applied. - - Args: - data: Waveform instruction data to draw. - formatter: Dictionary of stylesheet settings. - device: Backend configuration. - - Returns: - List of `LineData`, `BoxData`, or `TextData` drawings. - - Raises: - VisualizationError: When the instruction parser returns invalid data format. - """ - # generate waveform data - waveform_data = _parse_waveform(data) - channel = data.inst.channel - - # update metadata - meta = waveform_data.meta - qind = device.get_qubit_index(channel) - meta.update({"qubit": qind if qind is not None else "N/A"}) - - if isinstance(waveform_data, types.ParsedInstruction): - # Draw waveform with fixed shape - - xdata = waveform_data.xvals - ydata = waveform_data.yvals - - # phase modulation - if formatter["control.apply_phase_modulation"]: - ydata = np.asarray(ydata, dtype=complex) * np.exp(1j * data.frame.phase) - else: - ydata = np.asarray(ydata, dtype=complex) - - return _draw_shaped_waveform( - xdata=xdata, ydata=ydata, meta=meta, channel=channel, formatter=formatter - ) - - elif isinstance(waveform_data, types.OpaqueShape): - # Draw parametric pulse with unbound parameters - - # parameter name - unbound_params = [] - for pname, pval in data.inst.pulse.parameters.items(): - if isinstance(pval, circuit.ParameterExpression): - unbound_params.append(pname) - - pulse_data = data.inst.pulse - if isinstance(pulse_data, library.SymbolicPulse): - pulse_shape = pulse_data.pulse_type - else: - pulse_shape = "Waveform" - - return _draw_opaque_waveform( - init_time=data.t0, - duration=waveform_data.duration, - pulse_shape=pulse_shape, - pnames=unbound_params, - meta=meta, - channel=channel, - formatter=formatter, - ) - - else: - raise VisualizationError("Invalid data format is provided.") - - -def gen_ibmq_latex_waveform_name( - data: types.PulseInstruction, formatter: dict[str, Any], device: device_info.DrawerBackendInfo -) -> list[drawings.TextData]: - r"""Generate the formatted instruction name associated with the waveform. - - Channel name and ID string are removed and the rotation angle is expressed in units of pi. - The controlled rotation angle associated with the CR pulse name is divided by 2. - - Note that in many scientific articles the controlled rotation angle implies - the actual rotation angle, but in IQX backend the rotation angle represents - the difference between rotation angles with different control qubit states. - - For example: - - 'X90p_d0_abcdefg' is converted into 'X(\frac{\pi}{2})' - - 'CR90p_u0_abcdefg` is converted into 'CR(\frac{\pi}{4})' - - Stylesheets: - - The `annotate` style is applied. - - Notes: - This generator can convert pulse names used in the IQX backends. - If pulses are provided by the third party providers or the user defined, - the generator output may be the as-is pulse name. - - Args: - data: Waveform instruction data to draw. - formatter: Dictionary of stylesheet settings. - device: Backend configuration. - - Returns: - List of `TextData` drawings. - """ - if data.is_opaque: - return [] - - style = { - "zorder": formatter["layer.annotate"], - "color": formatter["color.annotate"], - "size": formatter["text_size.annotate"], - "va": "center", - "ha": "center", - } - - if isinstance(data.inst, pulse.instructions.Acquire): - systematic_name = "Acquire" - latex_name = None - elif isinstance(data.inst, instructions.Delay): - systematic_name = data.inst.name or "Delay" - latex_name = None - else: - 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) - if match_result is not None: - match_dict = match_result.groupdict() - sign = "" if match_dict["sign"] == "p" else "-" - if match_dict["op"] == "CR": - # cross resonance - if match_dict["ch"] == "u": - op_name = r"{\rm CR}" - else: - op_name = r"\overline{\rm CR}" - # IQX name def is not standard. Echo CR is annotated with pi/4 rather than pi/2 - angle_val = match_dict["angle"] - frac = Fraction(int(int(angle_val) / 2), 180) - if frac.numerator == 1: - angle = rf"\pi/{frac.denominator:d}" - else: - angle = rf"{frac.numerator:d}/{frac.denominator:d} \pi" - else: - # single qubit pulse - # pylint: disable-next=consider-using-f-string - op_name = r"{{\rm {}}}".format(match_dict["op"]) - angle_val = match_dict["angle"] - if angle_val is None: - angle = r"\pi" - else: - frac = Fraction(int(angle_val), 180) - if frac.numerator == 1: - angle = rf"\pi/{frac.denominator:d}" - else: - angle = rf"{frac.numerator:d}/{frac.denominator:d} \pi" - latex_name = rf"{op_name}({sign}{angle})" - else: - latex_name = None - - text = drawings.TextData( - data_type=types.LabelType.PULSE_NAME, - channels=data.inst.channel, - xvals=[data.t0 + 0.5 * data.inst.duration], - yvals=[-formatter["label_offset.pulse_name"]], - text=systematic_name, - latex=latex_name, - ignore_scaling=True, - styles=style, - ) - - return [text] - - -def gen_waveform_max_value( - data: types.PulseInstruction, formatter: dict[str, Any], device: device_info.DrawerBackendInfo -) -> list[drawings.TextData]: - """Generate the annotation for the maximum waveform height for - the real and the imaginary part of the waveform envelope. - - Maximum values smaller than the vertical resolution limit is ignored. - - Stylesheets: - - The `annotate` style is applied. - - Args: - data: Waveform instruction data to draw. - formatter: Dictionary of stylesheet settings. - device: Backend configuration. - - Returns: - List of `TextData` drawings. - """ - if data.is_opaque: - return [] - - style = { - "zorder": formatter["layer.annotate"], - "color": formatter["color.annotate"], - "size": formatter["text_size.annotate"], - "ha": "center", - } - - # only pulses. - if isinstance(data.inst, instructions.Play): - # pulse - operand = data.inst.pulse - if isinstance(operand, pulse.SymbolicPulse): - pulse_data = operand.get_waveform() - else: - pulse_data = operand - xdata = np.arange(pulse_data.duration) + data.t0 - ydata = pulse_data.samples - else: - return [] - - # phase modulation - if formatter["control.apply_phase_modulation"]: - ydata = np.asarray(ydata, dtype=complex) * np.exp(1j * data.frame.phase) - else: - ydata = np.asarray(ydata, dtype=complex) - - texts = [] - - # max of real part - re_maxind = np.argmax(np.abs(ydata.real)) - if np.abs(ydata.real[re_maxind]) > 0.01: - # generator shows only 2 digits after the decimal point. - if ydata.real[re_maxind] > 0: - max_val = f"{ydata.real[re_maxind]:.2f}\n\u25BE" - re_style = {"va": "bottom"} - else: - max_val = f"\u25B4\n{ydata.real[re_maxind]:.2f}" - re_style = {"va": "top"} - re_style.update(style) - re_text = drawings.TextData( - data_type=types.LabelType.PULSE_INFO, - channels=data.inst.channel, - xvals=[xdata[re_maxind]], - yvals=[ydata.real[re_maxind]], - text=max_val, - styles=re_style, - ) - texts.append(re_text) - - # max of imag part - im_maxind = np.argmax(np.abs(ydata.imag)) - if np.abs(ydata.imag[im_maxind]) > 0.01: - # generator shows only 2 digits after the decimal point. - if ydata.imag[im_maxind] > 0: - max_val = f"{ydata.imag[im_maxind]:.2f}\n\u25BE" - im_style = {"va": "bottom"} - else: - max_val = f"\u25B4\n{ydata.imag[im_maxind]:.2f}" - im_style = {"va": "top"} - im_style.update(style) - im_text = drawings.TextData( - data_type=types.LabelType.PULSE_INFO, - channels=data.inst.channel, - xvals=[xdata[im_maxind]], - yvals=[ydata.imag[im_maxind]], - text=max_val, - styles=im_style, - ) - texts.append(im_text) - - return texts - - -def _draw_shaped_waveform( - xdata: np.ndarray, - ydata: np.ndarray, - meta: dict[str, Any], - channel: pulse.channels.PulseChannel, - formatter: dict[str, Any], -) -> list[drawings.LineData | drawings.BoxData | drawings.TextData]: - """A private function that generates drawings of stepwise pulse lines. - - Args: - xdata: Array of horizontal coordinate of waveform envelope. - ydata: Array of vertical coordinate of waveform envelope. - meta: Metadata dictionary of the waveform. - channel: Channel associated with the waveform to draw. - formatter: Dictionary of stylesheet settings. - - Returns: - List of drawings. - - Raises: - VisualizationError: When the waveform color for channel is not defined. - """ - fill_objs: list[drawings.LineData | drawings.BoxData | drawings.TextData] = [] - - resolution = formatter["general.vertical_resolution"] - - # stepwise interpolation - xdata: np.ndarray = np.concatenate((xdata, [xdata[-1] + 1])) - ydata = np.repeat(ydata, 2) - re_y = np.real(ydata) - im_y = np.imag(ydata) - time: np.ndarray = np.concatenate(([xdata[0]], np.repeat(xdata[1:-1], 2), [xdata[-1]])) - - # setup style options - style = { - "alpha": formatter["alpha.fill_waveform"], - "zorder": formatter["layer.fill_waveform"], - "linewidth": formatter["line_width.fill_waveform"], - "linestyle": formatter["line_style.fill_waveform"], - } - - try: - color_real, color_imag = formatter["color.waveforms"][channel.prefix.upper()] - except KeyError as ex: - raise VisualizationError( - f"Waveform color for channel type {channel.prefix} is not defined" - ) from ex - - # create real part - if np.any(re_y): - # data compression - re_valid_inds = _find_consecutive_index(re_y, resolution) - # stylesheet - re_style = {"color": color_real} - re_style.update(style) - # metadata - re_meta = {"data": "real"} - re_meta.update(meta) - # active xy data - re_xvals = time[re_valid_inds] - re_yvals = re_y[re_valid_inds] - - # object - real = drawings.LineData( - data_type=types.WaveformType.REAL, - channels=channel, - xvals=re_xvals, - yvals=re_yvals, - fill=formatter["control.fill_waveform"], - meta=re_meta, - styles=re_style, - ) - fill_objs.append(real) - - # create imaginary part - if np.any(im_y): - # data compression - im_valid_inds = _find_consecutive_index(im_y, resolution) - # stylesheet - im_style = {"color": color_imag} - im_style.update(style) - # metadata - im_meta = {"data": "imag"} - im_meta.update(meta) - # active xy data - im_xvals = time[im_valid_inds] - im_yvals = im_y[im_valid_inds] - - # object - imag = drawings.LineData( - data_type=types.WaveformType.IMAG, - channels=channel, - xvals=im_xvals, - yvals=im_yvals, - fill=formatter["control.fill_waveform"], - meta=im_meta, - styles=im_style, - ) - fill_objs.append(imag) - - return fill_objs - - -def _draw_opaque_waveform( - init_time: int, - duration: int, - pulse_shape: str, - pnames: list[str], - meta: dict[str, Any], - channel: pulse.channels.PulseChannel, - formatter: dict[str, Any], -) -> list[drawings.LineData | drawings.BoxData | drawings.TextData]: - """A private function that generates drawings of stepwise pulse lines. - - Args: - init_time: Time when the opaque waveform starts. - duration: Duration of opaque waveform. This can be None or ParameterExpression. - pulse_shape: String that represents pulse shape. - pnames: List of parameter names. - meta: Metadata dictionary of the waveform. - channel: Channel associated with the waveform to draw. - formatter: Dictionary of stylesheet settings. - - Returns: - List of drawings. - """ - fill_objs: list[drawings.LineData | drawings.BoxData | drawings.TextData] = [] - - fc, ec = formatter["color.opaque_shape"] - # setup style options - box_style = { - "zorder": formatter["layer.fill_waveform"], - "alpha": formatter["alpha.opaque_shape"], - "linewidth": formatter["line_width.opaque_shape"], - "linestyle": formatter["line_style.opaque_shape"], - "facecolor": fc, - "edgecolor": ec, - } - - if duration is None or isinstance(duration, circuit.ParameterExpression): - duration = formatter["box_width.opaque_shape"] - - box_obj = drawings.BoxData( - data_type=types.WaveformType.OPAQUE, - channels=channel, - xvals=[init_time, init_time + duration], - yvals=[ - -0.5 * formatter["box_height.opaque_shape"], - 0.5 * formatter["box_height.opaque_shape"], - ], - meta=meta, - ignore_scaling=True, - styles=box_style, - ) - fill_objs.append(box_obj) - - # parameter name - func_repr = f"{pulse_shape}({', '.join(pnames)})" - - text_style = { - "zorder": formatter["layer.annotate"], - "color": formatter["color.annotate"], - "size": formatter["text_size.annotate"], - "va": "bottom", - "ha": "center", - } - - text_obj = drawings.TextData( - data_type=types.LabelType.OPAQUE_BOXTEXT, - channels=channel, - xvals=[init_time + 0.5 * duration], - yvals=[0.5 * formatter["box_height.opaque_shape"]], - text=func_repr, - ignore_scaling=True, - styles=text_style, - ) - - fill_objs.append(text_obj) - - return fill_objs - - -def _find_consecutive_index(data_array: np.ndarray, resolution: float) -> np.ndarray: - """A helper function to return non-consecutive index from the given list. - - This drastically reduces memory footprint to represent a drawing, - especially for samples of very long flat-topped Gaussian pulses. - Tiny value fluctuation smaller than `resolution` threshold is removed. - - Args: - data_array: The array of numbers. - resolution: Minimum resolution of sample values. - - Returns: - The compressed data array. - """ - try: - vector = np.asarray(data_array, dtype=float) - diff = np.diff(vector) - diff[np.where(np.abs(diff) < resolution)] = 0 - # keep left and right edges - consecutive_l = np.insert(diff.astype(bool), 0, True) - consecutive_r = np.append(diff.astype(bool), True) - return consecutive_l | consecutive_r - - except ValueError: - return np.ones_like(data_array).astype(bool) - - -def _parse_waveform( - data: types.PulseInstruction, -) -> types.ParsedInstruction | types.OpaqueShape: - """A helper function that generates an array for the waveform with - instruction metadata. - - Args: - data: Instruction data set - - Raises: - VisualizationError: When invalid instruction type is loaded. - - Returns: - A data source to generate a drawing. - """ - inst = data.inst - - meta: dict[str, Any] = {} - if isinstance(inst, instructions.Play): - # pulse - operand = inst.pulse - if isinstance(operand, pulse.SymbolicPulse): - # parametric pulse - params = operand.parameters - duration = params.pop("duration", None) - if isinstance(duration, circuit.Parameter): - duration = None - - if isinstance(operand, library.SymbolicPulse): - pulse_shape = operand.pulse_type - else: - pulse_shape = "Waveform" - meta["waveform shape"] = pulse_shape - - meta.update( - { - key: val.name if isinstance(val, circuit.Parameter) else val - for key, val in params.items() - } - ) - if data.is_opaque: - # parametric pulse with unbound parameter - if duration: - meta.update( - { - "duration (cycle time)": inst.duration, - "duration (sec)": inst.duration * data.dt if data.dt else "N/A", - } - ) - else: - meta.update({"duration (cycle time)": "N/A", "duration (sec)": "N/A"}) - - meta.update( - { - "t0 (cycle time)": data.t0, - "t0 (sec)": data.t0 * data.dt if data.dt else "N/A", - "phase": data.frame.phase, - "frequency": data.frame.freq, - "name": inst.name, - } - ) - - return types.OpaqueShape(duration=duration, meta=meta) - else: - # fixed shape parametric pulse - pulse_data = operand.get_waveform() - else: - # waveform - pulse_data = operand - xdata = np.arange(pulse_data.duration) + data.t0 - ydata = pulse_data.samples - elif isinstance(inst, instructions.Delay): - # delay - xdata = np.arange(inst.duration) + data.t0 - ydata = np.zeros(inst.duration) - elif isinstance(inst, instructions.Acquire): - # acquire - xdata = np.arange(inst.duration) + data.t0 - ydata = np.ones(inst.duration) - acq_data = { - "memory slot": inst.mem_slot.name, - "register slot": inst.reg_slot.name if inst.reg_slot else "N/A", - "discriminator": inst.discriminator.name if inst.discriminator else "N/A", - "kernel": inst.kernel.name if inst.kernel else "N/A", - } - meta.update(acq_data) - else: - raise VisualizationError( - f"Unsupported instruction {inst.__class__.__name__} by " "filled envelope." - ) - - meta.update( - { - "duration (cycle time)": inst.duration, - "duration (sec)": inst.duration * data.dt if data.dt else "N/A", - "t0 (cycle time)": data.t0, - "t0 (sec)": data.t0 * data.dt if data.dt else "N/A", - "phase": data.frame.phase, - "frequency": data.frame.freq, - "name": inst.name, - } - ) - - return types.ParsedInstruction(xvals=xdata, yvals=ydata, meta=meta) diff --git a/qiskit/visualization/pulse_v2/interface.py b/qiskit/visualization/pulse_v2/interface.py deleted file mode 100644 index b879c73224dd..000000000000 --- a/qiskit/visualization/pulse_v2/interface.py +++ /dev/null @@ -1,463 +0,0 @@ -# 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. - -"""Qiskit pulse drawer. - -This module provides a common user interface for the pulse drawer. -The `draw` function takes a pulse program to visualize with a stylesheet and -backend information along with several control arguments. -The drawer canvas object is internally initialized from the input data and -the configured canvas is passed to the one of plotter APIs to generate visualization data. -""" - -from typing import Union, Optional, Dict, Any, Tuple, List - -from qiskit.providers import Backend -from qiskit.pulse import Waveform, SymbolicPulse, Schedule, ScheduleBlock -from qiskit.pulse.channels import Channel -from qiskit.visualization.exceptions import VisualizationError -from qiskit.visualization.pulse_v2 import core, device_info, stylesheet, types -from qiskit.exceptions import MissingOptionalLibraryError -from qiskit.utils import deprecate_arg -from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency - - -@deprecate_pulse_dependency(moving_to_dynamics=True) -@deprecate_arg("show_barrier", new_alias="plot_barrier", since="1.1.0", pending=True) -def draw( - program: Union[Waveform, SymbolicPulse, Schedule, ScheduleBlock], - style: Optional[Dict[str, Any]] = None, - backend: Optional[Backend] = None, - time_range: Optional[Tuple[int, int]] = None, - time_unit: str = types.TimeUnits.CYCLES.value, - disable_channels: Optional[List[Channel]] = None, - show_snapshot: bool = True, - show_framechange: bool = True, - show_waveform_info: bool = True, - plot_barrier: bool = True, - plotter: str = types.Plotter.Mpl2D.value, - axis: Optional[Any] = None, - show_barrier: bool = True, -): - """Generate visualization data for pulse programs. - - Args: - program: Program to visualize. This program can be arbitrary Qiskit Pulse program, - such as :py:class:`~qiskit.pulse.Waveform`, :py:class:`~qiskit.pulse.SymbolicPulse`, - :py:class:`~qiskit.pulse.Schedule` and :py:class:`~qiskit.pulse.ScheduleBlock`. - style: Stylesheet options. This can be dictionary or preset stylesheet classes. See - :py:class:`~qiskit.visualization.pulse_v2.stylesheets.IQXStandard`, - :py:class:`~qiskit.visualization.pulse_v2.stylesheets.IQXSimple`, and - :py:class:`~qiskit.visualization.pulse_v2.stylesheets.IQXDebugging` for details of - preset stylesheets. See also the stylesheet section for details of configuration keys. - backend: Backend object to play the input pulse program. If provided, the plotter - may use to make the visualization hardware aware. - time_range: Set horizontal axis limit. Tuple ``(tmin, tmax)``. - time_unit: The unit of specified time range either ``dt`` or ``ns``. - The unit of ``ns`` is available only when ``backend`` object is provided. - disable_channels: A control property to show specific pulse channel. - Pulse channel instances provided as a list is not shown in the output image. - show_snapshot: Show snapshot instructions. - show_framechange: Show frame change instructions. The frame change represents - instructions that modulate phase or frequency of pulse channels. - show_waveform_info: Show waveform annotations, i.e. name, of waveforms. - Set ``True`` to show additional information about waveforms. - plot_barrier: Show barrier lines. - plotter: Name of plotter API to generate an output image. - One of following APIs should be specified:: - - mpl2d: Matplotlib API for 2D image generation. - Matplotlib API to generate 2D image. Charts are placed along y axis with - vertical offset. This API takes matplotlib.axes.Axes as `axis` input. - - `axis` and `style` kwargs may depend on the plotter. - axis: Arbitrary object passed to the plotter. If this object is provided, - the plotters use a given ``axis`` instead of internally initializing - a figure object. This object format depends on the plotter. - See plotter argument for details. - show_barrier: DEPRECATED. Show barrier lines. - - Returns: - Visualization output data. - The returned data type depends on the `plotter`. - If matplotlib family is specified, this will be a `matplotlib.pyplot.Figure` data. - The returned data is generated by the :meth:`get_image` method of the specified plotter API. - - .. _style-dict-doc: - - **Style Dict Details** - - The stylesheet kwarg contains numerous options that define the style of the - output pulse visualization. - The stylesheet options can be classified into `formatter`, `generator` and `layout`. - Those options available in the stylesheet are defined below: - - Args: - formatter.general.fig_width: Width of output image (default `13`). - formatter.general.fig_chart_height: Height of output image per chart. - The height of each chart is multiplied with this factor and the - sum of all chart heights becomes the height of output image (default `1.5`). - formatter.general.vertical_resolution: Vertical resolution of the pulse envelope. - The change of data points below this limit is ignored (default `1e-6`). - formatter.general.max_scale: Maximum scaling factor of each chart. This factor is - considered when chart auto-scaling is enabled (default `100`). - formatter.color.waveforms: A dictionary of the waveform colors to use for - each element type in the output visualization. The default values are:: - - { - 'W': `['#648fff', '#002999']`, - 'D': `['#648fff', '#002999']`, - 'U': `['#ffb000', '#994A00']`, - 'M': `['#dc267f', '#760019']`, - 'A': `['#dc267f', '#760019']` - } - - formatter.color.baseline: Color code of lines of zero line of each chart - (default `'#000000'`). - formatter.color.barrier: Color code of lines of barrier (default `'#222222'`). - formatter.color.background: Color code of the face color of canvas - (default `'#f2f3f4'`). - formatter.color.fig_title: Color code of the figure title text - (default `'#000000'`). - formatter.color.annotate: Color code of annotation texts in the canvas - (default `'#222222'`). - formatter.color.frame_change: Color code of the symbol for frame changes - (default `'#000000'`). - formatter.color.snapshot: Color code of the symbol for snapshot - (default `'#000000'`) - formatter.color.opaque_shape: Color code of the face and edge of opaque shape box - (default `['#fffacd', '#000000']`) - formatter.color.axis_label: Color code of axis labels (default `'#000000'`). - formatter.alpha.fill_waveform: Transparency of waveforms. A value in the range from - `0` to `1`. The value `0` gives completely transparent waveforms (default `0.3`). - formatter.alpha.baseline: Transparency of base lines. A value in the range from - `0` to `1`. The value `0` gives completely transparent base lines (default `1.0`). - formatter.alpha.barrier: Transparency of barrier lines. A value in the range from - `0` to `1`. The value `0` gives completely transparent barrier lines (default `0.7`). - formatter.alpha.opaque_shape: Transparency of opaque shape box. A value in the range from - `0` to `1`. The value `0` gives completely transparent barrier lines (default `0.7`). - formatter.layer.fill_waveform: Layer index of waveforms. Larger number comes - in the front of the output image (default `2`). - formatter.layer.baseline: Layer index of baselines. Larger number comes - in the front of the output image (default `1`). - formatter.layer.barrier: Layer index of barrier lines. Larger number comes - in the front of the output image (default `1`). - formatter.layer.annotate: Layer index of annotations. Larger number comes - in the front of the output image (default `5`). - formatter.layer.axis_label: Layer index of axis labels. Larger number comes - in the front of the output image (default `5`). - formatter.layer.frame_change: Layer index of frame change symbols. Larger number comes - in the front of the output image (default `4`). - formatter.layer.snapshot: Layer index of snapshot symbols. Larger number comes - in the front of the output image (default `3`). - formatter.layer.fig_title: Layer index of the figure title. Larger number comes - in the front of the output image (default `6`). - formatter.margin.top: Margin from the top boundary of the figure canvas to - the surface of the first chart (default `0.5`). - formatter.margin.bottom: Margin from the bottom boundary of the figure canvas to - the surface of the last chart (default `0.5`). - formatter.margin.left_percent: Margin from the left boundary of the figure canvas to - the zero point of the horizontal axis. The value is in units of percentage of - the whole program duration. If the duration is 100 and the value of 0.5 is set, - this keeps left margin of 5 (default `0.05`). - formatter.margin.right_percent: Margin from the right boundary of the figure canvas to - the left limit of the horizontal axis. The value is in units of percentage of - the whole program duration. If the duration is 100 and the value of 0.5 is set, - this keeps right margin of 5 (default `0.05`). - formatter.margin.between_channel: Vertical margin between charts (default `0.2`). - formatter.label_offset.pulse_name: Offset of pulse name annotations from the - chart baseline (default `0.3`). - formatter.label_offset.chart_info: Offset of chart info annotations from the - chart baseline (default `0.3`). - formatter.label_offset.frame_change: Offset of frame change annotations from the - chart baseline (default `0.3`). - formatter.label_offset.snapshot: Offset of snapshot annotations from the - chart baseline (default `0.3`). - formatter.text_size.axis_label: Text size of axis labels (default `15`). - formatter.text_size.annotate: Text size of annotations (default `12`). - formatter.text_size.frame_change: Text size of frame change symbols (default `20`). - formatter.text_size.snapshot: Text size of snapshot symbols (default `20`). - formatter.text_size.fig_title: Text size of the figure title (default `15`). - formatter.text_size.axis_break_symbol: Text size of axis break symbols (default `15`). - formatter.line_width.fill_waveform: Line width of the fringe of filled waveforms - (default `0`). - formatter.line_width.axis_break: Line width of axis breaks. - The axis break line paints over other drawings with the background - face color (default `6`). - formatter.line_width.baseline: Line width of base lines (default `1`) - formatter.line_width.barrier: Line width of barrier lines (default `1`). - formatter.line_width.opaque_shape: Line width of opaque shape box (default `1`). - formatter.line_style.fill_waveform: Line style of the fringe of filled waveforms. This - conforms to the line style spec of matplotlib (default `'-'`). - formatter.line_style.baseline: Line style of base lines. This - conforms to the line style spec of matplotlib (default `'-'`). - formatter.line_style.barrier: Line style of barrier lines. This - conforms to the line style spec of matplotlib (default `':'`). - formatter.line_style.opaque_shape: Line style of opaque shape box. This - conforms to the line style spec of matplotlib (default `'--'`). - formatter.channel_scaling.drive: Default scaling value of drive channel - waveforms (default `1.0`). - formatter.channel_scaling.control: Default scaling value of control channel - waveforms (default `1.0`). - formatter.channel_scaling.measure: Default scaling value of measure channel - waveforms (default `1.0`). - formatter.channel_scaling.acquire: Default scaling value of acquire channel - waveforms (default `1.0`). - formatter.channel_scaling.pos_spacing: Minimum height of chart above the baseline. - Chart top is determined based on the maximum height of waveforms associated - with the chart. If the maximum height is below this value, this value is set - as the chart top (default 0.1). - formatter.channel_scaling.neg_spacing: Minimum height of chart below the baseline. - Chart bottom is determined based on the minimum height of waveforms associated - with the chart. If the minimum height is above this value, this value is set - as the chart bottom (default -0.1). - formatter.box_width.opaque_shape: Default box length of the waveform representation - when the instruction is parameterized and duration is not bound or not defined. - Value is units in dt (default: 150). - formatter.box_height.opaque_shape: Default box height of the waveform representation - when the instruction is parameterized (default: 0.4). - formatter.axis_break.length: Waveform or idle time duration that axis break is - applied. Intervals longer than this value are truncated. - The value is in units of data points (default `3000`). - formatter.axis_break.max_length: Length of new waveform or idle time duration - after axis break is applied. Longer intervals are truncated to this length - (default `1000`). - formatter.control.fill_waveform: Set `True` to fill waveforms with face color - (default `True`). When you disable this option, you should set finite line width - to `formatter.line_width.fill_waveform`, otherwise nothing will appear in the graph. - formatter.control.apply_phase_modulation: Set `True` to apply phase modulation - to the waveforms (default `True`). - formatter.control.show_snapshot_channel: Set `True` to show snapshot instructions - (default `True`). - formatter.control.show_acquire_channel: Set `True` to show acquire channels - (default `True`). - formatter.control.show_empty_channel: Set `True` to show charts without any waveforms - (default `True`). - formatter.control.auto_chart_scaling: Set `True` to apply auto-scaling to charts - (default `True`). - formatter.control.axis_break: Set `True` to apply axis break for long intervals - (default `True`). - formatter.unicode_symbol.frame_change: Text that represents the symbol of - frame change. This text is used when the plotter doesn't support latex - (default u'\u21BA'). - formatter.unicode_symbol.snapshot: Text that represents the symbol of - snapshot. This text is used when the plotter doesn't support latex - (default u'\u21AF'). - formatter.unicode_symbol.phase_parameter: Text that represents the symbol of - parameterized phase value. This text is used when the plotter doesn't support latex - (default u'\u03b8'). - formatter.unicode_symbol.freq_parameter: Text that represents the symbol of - parameterized frequency value. This text is used when the plotter doesn't support latex - (default 'f'). - formatter.latex_symbol.frame_change: Latex text that represents the symbol of - frame change (default r'\\circlearrowleft'). - formatter.latex_symbol.snapshot: Latex text that represents the symbol of - snapshot (default ''). - formatter.latex_symbol.phase_parameter: Latex text that represents the symbol of - parameterized phase value (default r'\theta'). - formatter.latex_symbol.freq_parameter: Latex text that represents the symbol of - parameterized frequency value (default 'f'). - generator.waveform: List of callback functions that generates drawing - for waveforms. Arbitrary callback functions satisfying the generator format - can be set here. There are some default generators in the pulse drawer. - See :py:mod:`~qiskit.visualization.pulse_v2.generators.waveform` for more details. - No default generator is set. - generator.frame: List of callback functions that generates drawing - for frame changes. Arbitrary callback functions satisfying the generator format - can be set here. There are some default generators in the pulse drawer. - See :py:mod:`~qiskit.visualization.pulse_v2.generators.frame` for more details. - No default generator is set. - generator.chart: List of callback functions that generates drawing - for charts. Arbitrary callback functions satisfying the generator format - can be set here. There are some default generators in the pulse drawer. - See :py:mod:`~qiskit.visualization.pulse_v2.generators.chart` for more details. - No default generator is set. - generator.snapshot: List of callback functions that generates drawing - for snapshots. Arbitrary callback functions satisfying the generator format - can be set here. There are some default generators in the pulse drawer. - See :py:mod:`~qiskit.visualization.pulse_v2.generators.snapshot` for more details. - No default generator is set. - generator.barrier: List of callback functions that generates drawing - for barriers. Arbitrary callback functions satisfying the generator format - can be set here. There are some default generators in the pulse drawer. - See :py:mod:`~qiskit.visualization.pulse_v2.generators.barrier` for more details. - No default generator is set. - layout.chart_channel_map: Callback function that determines the relationship - between pulse channels and charts. - See :py:mod:`~qiskit.visualization.pulse_v2.layout` for more details. - No default layout is set. - layout.time_axis_map: Callback function that determines the layout of - horizontal axis labels. - See :py:mod:`~qiskit.visualization.pulse_v2.layout` for more details. - No default layout is set. - layout.figure_title: Callback function that generates a string for - the figure title. - See :py:mod:`~qiskit.visualization.pulse_v2.layout` for more details. - No default layout is set. - - Examples: - To visualize a pulse program, you can call this function with set of - control arguments. Most of the appearance of the output image can be controlled by the - stylesheet. - - Drawing with the default stylesheet. - - .. plot:: - :alt: Output from the previous code. - :include-source: - - from qiskit import QuantumCircuit, transpile, schedule - from qiskit.visualization.pulse_v2 import draw - from qiskit.providers.fake_provider import GenericBackendV2 - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - qc = transpile(qc, GenericBackendV2(5), layout_method='trivial') - sched = schedule(qc, GenericBackendV2(5)) - - draw(sched, backend=GenericBackendV2(5)) - - Drawing with the stylesheet suited for publication. - - .. plot:: - :alt: Output from the previous code. - :include-source: - - from qiskit import QuantumCircuit, transpile, schedule - from qiskit.visualization.pulse_v2 import draw, IQXSimple - from qiskit.providers.fake_provider import GenericBackendV2 - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - qc = transpile(qc, GenericBackendV2(5), layout_method='trivial') - sched = schedule(qc, GenericBackendV2(5)) - - draw(sched, style=IQXSimple(), backend=GenericBackendV2(5)) - - Drawing with the stylesheet suited for program debugging. - - .. plot:: - :alt: Output from the previous code. - :include-source: - - from qiskit import QuantumCircuit, transpile, schedule - from qiskit.visualization.pulse_v2 import draw, IQXDebugging - from qiskit.providers.fake_provider import GenericBackendV2 - - qc = QuantumCircuit(2) - qc.h(0) - qc.cx(0, 1) - qc.measure_all() - qc = transpile(qc, GenericBackendV2(5), layout_method='trivial') - sched = schedule(qc, GenericBackendV2(5)) - - draw(sched, style=IQXDebugging(), backend=GenericBackendV2(5)) - - You can partially customize a preset stylesheet when initializing it. - - .. plot:: - :include-source: - :nofigs: - - my_style = { - 'formatter.channel_scaling.drive': 5, - 'formatter.channel_scaling.control': 1, - 'formatter.channel_scaling.measure': 5 - } - style = IQXStandard(**my_style) - # draw - draw(sched, style=style, backend=GenericBackendV2(5)) - - In the same way as above, you can create custom generator or layout functions - and update the existing stylesheet with custom functions. - This feature enables you to customize most of the appearance of the output image - without modifying the codebase. - - Raises: - MissingOptionalLibraryError: When required visualization package is not installed. - VisualizationError: When invalid plotter API or invalid time range is specified. - """ - del show_barrier - temp_style = stylesheet.QiskitPulseStyle() - temp_style.update(style or stylesheet.IQXStandard()) - - if backend: - device = device_info.OpenPulseBackendInfo.create_from_backend(backend) - else: - device = device_info.OpenPulseBackendInfo() - - # create empty canvas and load program - canvas = core.DrawerCanvas(stylesheet=temp_style, device=device) - canvas.load_program(program=program) - - # - # update configuration - # - - # time range - if time_range: - if time_unit == types.TimeUnits.CYCLES.value: - canvas.set_time_range(*time_range, seconds=False) - elif time_unit == types.TimeUnits.NS.value: - canvas.set_time_range(*time_range, seconds=True) - else: - raise VisualizationError(f"Invalid time unit {time_unit} is specified.") - - # channels not shown - if disable_channels: - for chan in disable_channels: - canvas.set_disable_channel(chan, remove=True) - - # show snapshots - if not show_snapshot: - canvas.set_disable_type(types.SymbolType.SNAPSHOT, remove=True) - canvas.set_disable_type(types.LabelType.SNAPSHOT, remove=True) - - # show frame changes - if not show_framechange: - canvas.set_disable_type(types.SymbolType.FRAME, remove=True) - canvas.set_disable_type(types.LabelType.FRAME, remove=True) - - # show waveform info - if not show_waveform_info: - canvas.set_disable_type(types.LabelType.PULSE_INFO, remove=True) - canvas.set_disable_type(types.LabelType.PULSE_NAME, remove=True) - - # show barrier - if not plot_barrier: - canvas.set_disable_type(types.LineType.BARRIER, remove=True) - - canvas.update() - - # - # Call plotter API and generate image - # - - if plotter == types.Plotter.Mpl2D.value: - try: - from qiskit.visualization.pulse_v2.plotters import Mpl2DPlotter - except ImportError as ex: - raise MissingOptionalLibraryError( - libname="Matplotlib", - name="plot_histogram", - pip_install="pip install matplotlib", - ) from ex - plotter_api = Mpl2DPlotter(canvas=canvas, axis=axis) - plotter_api.draw() - else: - raise VisualizationError(f"Plotter API {plotter} is not supported.") - - return plotter_api.get_image() diff --git a/qiskit/visualization/pulse_v2/layouts.py b/qiskit/visualization/pulse_v2/layouts.py deleted file mode 100644 index 13b42e394e94..000000000000 --- a/qiskit/visualization/pulse_v2/layouts.py +++ /dev/null @@ -1,387 +0,0 @@ -# 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. - -# pylint: disable=unused-argument - -""" -A collection of functions that decide the layout of an output image. -See :py:mod:`~qiskit.visualization.pulse_v2.types` for more info on the required data. - -There are 3 types of layout functions in this module. - -1. layout.chart_channel_map - -An end-user can write arbitrary functions that output the custom channel ordering -associated with group name. Layout function in this module are called with the -`formatter` and `device` kwargs. These data provides stylesheet configuration -and backend system configuration. - -The layout function is restricted to: - - - ```python - def my_channel_layout(channels: List[pulse.channels.Channel], - formatter: Dict[str, Any], - device: DrawerBackendInfo - ) -> Iterator[Tuple[str, List[pulse.channels.Channel]]]: - ordered_channels = [] - # arrange order of channels - - for key, channels in my_ordering_dict.items(): - yield key, channels - ``` - -2. layout.time_axis_map - -An end-user can write arbitrary functions that output the `HorizontalAxis` data set that -will be later consumed by the plotter API to update the horizontal axis appearance. -Layout function in this module are called with the `time_window`, `axis_breaks`, and `dt` kwargs. -These data provides horizontal axis limit, axis break position, and time resolution, respectively. - -See py:mod:`qiskit.visualization.pulse_v2.types` for more info on the required -data. - - ```python - def my_horizontal_axis(time_window: Tuple[int, int], - axis_breaks: List[Tuple[int, int]], - dt: Optional[float] = None) -> HorizontalAxis: - # write horizontal axis configuration - - return horizontal_axis - ``` - -3. layout.figure_title - -An end-user can write arbitrary functions that output the string data that -will be later consumed by the plotter API to output the figure title. -Layout functions in this module are called with the `program` and `device` kwargs. -This data provides input program and backend system configurations. - - ```python - def my_figure_title(program: Union[pulse.Waveform, pulse.Schedule], - device: DrawerBackendInfo) -> str: - - return 'title' - ``` - -An arbitrary layout function satisfying the above format can be accepted. -""" - -from collections import defaultdict -from typing import List, Dict, Any, Tuple, Iterator, Optional, Union - -import numpy as np -from qiskit import pulse -from qiskit.visualization.pulse_v2 import types -from qiskit.visualization.pulse_v2.device_info import DrawerBackendInfo - - -def channel_type_grouped_sort( - channels: List[pulse.channels.Channel], formatter: Dict[str, Any], device: DrawerBackendInfo -) -> Iterator[Tuple[str, List[pulse.channels.Channel]]]: - """Layout function for the channel assignment to the chart instance. - - Assign single channel per chart. Channels are grouped by type and - sorted by index in ascending order. - - Stylesheet key: - `chart_channel_map` - - For example: - [D0, D2, C0, C2, M0, M2, A0, A2] -> [D0, D2, C0, C2, M0, M2, A0, A2] - - Args: - channels: Channels to show. - formatter: Dictionary of stylesheet settings. - device: Backend configuration. - - Yields: - Tuple of chart name and associated channels. - """ - chan_type_dict = defaultdict(list) - - for chan in channels: - chan_type_dict[type(chan)].append(chan) - - ordered_channels = [] - - # drive channels - d_chans = chan_type_dict.get(pulse.DriveChannel, []) - ordered_channels.extend(sorted(d_chans, key=lambda x: x.index)) - - # control channels - c_chans = chan_type_dict.get(pulse.ControlChannel, []) - ordered_channels.extend(sorted(c_chans, key=lambda x: x.index)) - - # measure channels - m_chans = chan_type_dict.get(pulse.MeasureChannel, []) - ordered_channels.extend(sorted(m_chans, key=lambda x: x.index)) - - # acquire channels - if formatter["control.show_acquire_channel"]: - a_chans = chan_type_dict.get(pulse.AcquireChannel, []) - ordered_channels.extend(sorted(a_chans, key=lambda x: x.index)) - - for chan in ordered_channels: - yield chan.name.upper(), [chan] - - -def channel_index_grouped_sort( - channels: List[pulse.channels.Channel], formatter: Dict[str, Any], device: DrawerBackendInfo -) -> Iterator[Tuple[str, List[pulse.channels.Channel]]]: - """Layout function for the channel assignment to the chart instance. - - Assign single channel per chart. Channels are grouped by the same index and - sorted by type. - - Stylesheet key: - `chart_channel_map` - - For example: - [D0, D2, C0, C2, M0, M2, A0, A2] -> [D0, D2, C0, C2, M0, M2, A0, A2] - - Args: - channels: Channels to show. - formatter: Dictionary of stylesheet settings. - device: Backend configuration. - - Yields: - Tuple of chart name and associated channels. - """ - chan_type_dict = defaultdict(list) - inds = set() - - for chan in channels: - chan_type_dict[type(chan)].append(chan) - inds.add(chan.index) - - d_chans = chan_type_dict.get(pulse.DriveChannel, []) - d_chans = sorted(d_chans, key=lambda x: x.index, reverse=True) - - u_chans = chan_type_dict.get(pulse.ControlChannel, []) - u_chans = sorted(u_chans, key=lambda x: x.index, reverse=True) - - m_chans = chan_type_dict.get(pulse.MeasureChannel, []) - m_chans = sorted(m_chans, key=lambda x: x.index, reverse=True) - - a_chans = chan_type_dict.get(pulse.AcquireChannel, []) - a_chans = sorted(a_chans, key=lambda x: x.index, reverse=True) - - ordered_channels = [] - - for ind in sorted(inds): - # drive channel - if len(d_chans) > 0 and d_chans[-1].index == ind: - ordered_channels.append(d_chans.pop()) - # control channel - if len(u_chans) > 0 and u_chans[-1].index == ind: - ordered_channels.append(u_chans.pop()) - # measure channel - if len(m_chans) > 0 and m_chans[-1].index == ind: - ordered_channels.append(m_chans.pop()) - # acquire channel - if formatter["control.show_acquire_channel"]: - if len(a_chans) > 0 and a_chans[-1].index == ind: - ordered_channels.append(a_chans.pop()) - - for chan in ordered_channels: - yield chan.name.upper(), [chan] - - -def channel_index_grouped_sort_u( - channels: List[pulse.channels.Channel], formatter: Dict[str, Any], device: DrawerBackendInfo -) -> Iterator[Tuple[str, List[pulse.channels.Channel]]]: - """Layout function for the channel assignment to the chart instance. - - Assign single channel per chart. Channels are grouped by the same index and - sorted by type except for control channels. Control channels are added to the - end of other channels. - - Stylesheet key: - `chart_channel_map` - - For example: - [D0, D2, C0, C2, M0, M2, A0, A2] -> [D0, D2, C0, C2, M0, M2, A0, A2] - - Args: - channels: Channels to show. - formatter: Dictionary of stylesheet settings. - device: Backend configuration. - - Yields: - Tuple of chart name and associated channels. - """ - chan_type_dict = defaultdict(list) - inds = set() - - for chan in channels: - chan_type_dict[type(chan)].append(chan) - inds.add(chan.index) - - d_chans = chan_type_dict.get(pulse.DriveChannel, []) - d_chans = sorted(d_chans, key=lambda x: x.index, reverse=True) - - m_chans = chan_type_dict.get(pulse.MeasureChannel, []) - m_chans = sorted(m_chans, key=lambda x: x.index, reverse=True) - - a_chans = chan_type_dict.get(pulse.AcquireChannel, []) - a_chans = sorted(a_chans, key=lambda x: x.index, reverse=True) - - u_chans = chan_type_dict.get(pulse.ControlChannel, []) - u_chans = sorted(u_chans, key=lambda x: x.index) - - ordered_channels = [] - - for ind in sorted(inds): - # drive channel - if len(d_chans) > 0 and d_chans[-1].index == ind: - ordered_channels.append(d_chans.pop()) - # measure channel - if len(m_chans) > 0 and m_chans[-1].index == ind: - ordered_channels.append(m_chans.pop()) - # acquire channel - if formatter["control.show_acquire_channel"]: - if len(a_chans) > 0 and a_chans[-1].index == ind: - ordered_channels.append(a_chans.pop()) - - # control channels - ordered_channels.extend(u_chans) - - for chan in ordered_channels: - yield chan.name.upper(), [chan] - - -def qubit_index_sort( - channels: List[pulse.channels.Channel], formatter: Dict[str, Any], device: DrawerBackendInfo -) -> Iterator[Tuple[str, List[pulse.channels.Channel]]]: - """Layout function for the channel assignment to the chart instance. - - Assign multiple channels per chart. Channels associated with the same qubit - are grouped in the same chart and sorted by qubit index in ascending order. - - Acquire channels are not shown. - - Stylesheet key: - `chart_channel_map` - - For example: - [D0, D2, C0, C2, M0, M2, A0, A2] -> [Q0, Q1, Q2] - - Args: - channels: Channels to show. - formatter: Dictionary of stylesheet settings. - device: Backend configuration. - - Yields: - Tuple of chart name and associated channels. - """ - _removed = ( - pulse.channels.AcquireChannel, - pulse.channels.MemorySlot, - pulse.channels.RegisterSlot, - ) - - qubit_channel_map = defaultdict(list) - - for chan in channels: - if isinstance(chan, _removed): - continue - qubit_channel_map[device.get_qubit_index(chan)].append(chan) - - sorted_map = sorted(qubit_channel_map.items(), key=lambda x: x[0]) - - for qind, chans in sorted_map: - yield f"Q{qind:d}", chans - - -def time_map_in_ns( - time_window: Tuple[int, int], axis_breaks: List[Tuple[int, int]], dt: Optional[float] = None -) -> types.HorizontalAxis: - """Layout function for the horizontal axis formatting. - - Calculate axis break and map true time to axis labels. Generate equispaced - 6 horizontal axis ticks. Convert into seconds if ``dt`` is provided. - - Args: - time_window: Left and right edge of this graph. - axis_breaks: List of axis break period. - dt: Time resolution of system. - - Returns: - Axis formatter object. - """ - # shift time axis - t0, t1 = time_window - t0_shift = t0 - t1_shift = t1 - - axis_break_pos = [] - offset_accumulation = 0 - for t0b, t1b in axis_breaks: - if t1b < t0 or t0b > t1: - continue - if t0 > t1b: - t0_shift -= t1b - t0b - if t1 > t1b: - t1_shift -= t1b - t0b - axis_break_pos.append(t0b - offset_accumulation) - offset_accumulation += t1b - t0b - - # axis label - axis_loc = np.linspace(max(t0_shift, 0), t1_shift, 6) - axis_label = axis_loc.copy() - - for t0b, t1b in axis_breaks: - offset = t1b - t0b - axis_label = np.where(axis_label > t0b, axis_label + offset, axis_label) - - # consider time resolution - if dt: - label = "Time (ns)" - axis_label *= dt * 1e9 - else: - label = "System cycle time (dt)" - - formatted_label = [f"{val:.0f}" for val in axis_label] - - return types.HorizontalAxis( - window=(t0_shift, t1_shift), - axis_map=dict(zip(axis_loc, formatted_label)), - axis_break_pos=axis_break_pos, - label=label, - ) - - -def detail_title(program: Union[pulse.Waveform, pulse.Schedule], device: DrawerBackendInfo) -> str: - """Layout function for generating figure title. - - This layout writes program name, program duration, and backend name in the title. - """ - title_str = [] - - # add program name - title_str.append(f"Name: {program.name}") - - # add program duration - dt = device.dt * 1e9 if device.dt else 1.0 - title_str.append(f"Duration: {program.duration * dt:.1f} {'ns' if device.dt else 'dt'}") - - # add device name - if device.backend_name != "no-backend": - title_str.append(f"Backend: {device.backend_name}") - - return ", ".join(title_str) - - -def empty_title(program: Union[pulse.Waveform, pulse.Schedule], device: DrawerBackendInfo) -> str: - """Layout function for generating an empty figure title.""" - return "" diff --git a/qiskit/visualization/pulse_v2/plotters/__init__.py b/qiskit/visualization/pulse_v2/plotters/__init__.py deleted file mode 100644 index 90c67065efa3..000000000000 --- a/qiskit/visualization/pulse_v2/plotters/__init__.py +++ /dev/null @@ -1,17 +0,0 @@ -# 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. - -""" -Plotter API for pulse drawer. -""" - -from qiskit.visualization.pulse_v2.plotters.matplotlib import Mpl2DPlotter diff --git a/qiskit/visualization/pulse_v2/plotters/base_plotter.py b/qiskit/visualization/pulse_v2/plotters/base_plotter.py deleted file mode 100644 index ee6f79235145..000000000000 --- a/qiskit/visualization/pulse_v2/plotters/base_plotter.py +++ /dev/null @@ -1,53 +0,0 @@ -# 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. - -"""Base plotter API.""" - -from abc import ABC, abstractmethod -from typing import Any - -from qiskit.visualization.pulse_v2 import core - - -class BasePlotter(ABC): - """Base class of Qiskit plotter.""" - - def __init__(self, canvas: core.DrawerCanvas): - """Create new plotter. - - Args: - canvas: Configured drawer canvas object. - """ - self.canvas = canvas - - @abstractmethod - def initialize_canvas(self): - """Format appearance of the canvas.""" - raise NotImplementedError - - @abstractmethod - def draw(self): - """Output drawing objects stored in canvas object.""" - raise NotImplementedError - - @abstractmethod - def get_image(self, interactive: bool = False) -> Any: - """Get image data to return. - - Args: - interactive: When set `True` show the circuit in a new window. - This depends on the matplotlib backend being used supporting this. - - Returns: - Image data. This depends on the plotter API. - """ - raise NotImplementedError diff --git a/qiskit/visualization/pulse_v2/plotters/matplotlib.py b/qiskit/visualization/pulse_v2/plotters/matplotlib.py deleted file mode 100644 index 1788a1254894..000000000000 --- a/qiskit/visualization/pulse_v2/plotters/matplotlib.py +++ /dev/null @@ -1,201 +0,0 @@ -# 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. - -"""Matplotlib plotter API.""" - -from typing import Optional - -import matplotlib -import matplotlib.pyplot as plt -import numpy as np -from matplotlib.patches import Rectangle - -from qiskit.visualization.exceptions import VisualizationError -from qiskit.visualization.pulse_v2 import core, drawings, types -from qiskit.visualization.pulse_v2.plotters.base_plotter import BasePlotter -from qiskit.visualization.utils import matplotlib_close_if_inline - - -class Mpl2DPlotter(BasePlotter): - """Matplotlib API for pulse drawer. - - This plotter places canvas charts along y axis of 2D canvas with vertical offset. - Each chart is map to X-Y axis of the canvas. - """ - - def __init__(self, canvas: core.DrawerCanvas, axis: Optional[plt.Axes] = None): - """Create new plotter. - - Args: - canvas: Configured drawer canvas object. Canvas object should be updated - with `.update` method before set to the plotter API. - axis: Matplotlib axis object. When `axis` is provided, the plotter updates - given axis instead of creating and returning new matplotlib figure. - """ - super().__init__(canvas=canvas) - - # calculate height of all charts - canvas_height = 0 - for chart in self.canvas.charts: - if not chart.is_active and not self.canvas.formatter["control.show_empty_channel"]: - continue - canvas_height += chart.vmax - chart.vmin - # set min canvas_height size - canvas_height = max(canvas_height, 0.1) - - if axis is None: - fig_h = canvas_height * self.canvas.formatter["general.fig_chart_height"] - fig_w = self.canvas.formatter["general.fig_width"] - - self.figure = plt.figure(figsize=(fig_w, fig_h)) - self.ax = self.figure.add_subplot(1, 1, 1) - else: - self.figure = axis.figure - self.ax = axis - - self.initialize_canvas() - - def initialize_canvas(self): - """Format appearance of matplotlib canvas.""" - self.ax.set_facecolor(self.canvas.formatter["color.background"]) - - # axis labels - self.ax.set_yticklabels([]) - self.ax.yaxis.set_tick_params(left=False) - - def draw(self): - """Output drawings stored in canvas object.""" - # axis configuration - axis_config = self.canvas.layout["time_axis_map"]( - time_window=self.canvas.time_range, - axis_breaks=self.canvas.time_breaks, - dt=self.canvas.device.dt, - ) - - current_y = 0 - margin_y = self.canvas.formatter["margin.between_channel"] - for chart in self.canvas.charts: - if not chart.is_active and not self.canvas.formatter["control.show_empty_channel"]: - continue - current_y -= chart.vmax - for _, data in chart.collections: - # calculate scaling factor - if not data.ignore_scaling: - # product of channel-wise scaling and chart level scaling - scale = max(self.canvas.chan_scales.get(chan, 1.0) for chan in data.channels) - scale *= chart.scale - else: - scale = 1.0 - - x = data.xvals - y = scale * data.yvals + current_y - - if isinstance(data, drawings.LineData): - # line object - if data.fill: - self.ax.fill_between(x, y1=y, y2=current_y * np.ones_like(y), **data.styles) - else: - self.ax.plot(x, y, **data.styles) - elif isinstance(data, drawings.TextData): - # text object - text = rf"${data.latex}$" if data.latex else data.text - # replace dynamic text - text = text.replace(types.DynamicString.SCALE, f"{chart.scale:.1f}") - self.ax.text(x=x[0], y=y[0], s=text, **data.styles) - elif isinstance(data, drawings.BoxData): - xy = x[0], y[0] - box = Rectangle( - xy, width=x[1] - x[0], height=y[1] - y[0], fill=True, **data.styles - ) - self.ax.add_patch(box) - else: - raise VisualizationError( - f"Data {data} is not supported " f"by {self.__class__.__name__}" - ) - # axis break - for pos in axis_config.axis_break_pos: - self.ax.text( - x=pos, - y=current_y, - s="//", - ha="center", - va="center", - zorder=self.canvas.formatter["layer.axis_label"], - fontsize=self.canvas.formatter["text_size.axis_break_symbol"], - rotation=180, - ) - - # shift chart position - current_y += chart.vmin - margin_y - - # remove the last margin - current_y += margin_y - - y_max = self.canvas.formatter["margin.top"] - y_min = current_y - self.canvas.formatter["margin.bottom"] - - # plot axis break line - for pos in axis_config.axis_break_pos: - self.ax.plot( - [pos, pos], - [y_min, y_max], - zorder=self.canvas.formatter["layer.fill_waveform"] + 1, - linewidth=self.canvas.formatter["line_width.axis_break"], - color=self.canvas.formatter["color.background"], - ) - - # label - self.ax.set_xticks(list(axis_config.axis_map.keys())) - self.ax.set_xticklabels( - list(axis_config.axis_map.values()), - fontsize=self.canvas.formatter["text_size.axis_label"], - ) - self.ax.set_xlabel( - axis_config.label, fontsize=self.canvas.formatter["text_size.axis_label"] - ) - - # boundary - if axis_config.window == (0, 0): - self.ax.set_xlim(0, 1) - else: - self.ax.set_xlim(*axis_config.window) - self.ax.set_ylim(y_min, y_max) - - # title - if self.canvas.fig_title: - self.ax.text( - x=axis_config.window[0], - y=y_max, - s=self.canvas.fig_title, - ha="left", - va="bottom", - zorder=self.canvas.formatter["layer.fig_title"], - color=self.canvas.formatter["color.fig_title"], - size=self.canvas.formatter["text_size.fig_title"], - ) - - def get_image(self, interactive: bool = False) -> matplotlib.pyplot.Figure: - """Get image data to return. - - Args: - interactive: When set `True` show the circuit in a new window. - This depends on the matplotlib backend being used supporting this. - - Returns: - Matplotlib figure data. - """ - matplotlib_close_if_inline(self.figure) - - if self.figure and interactive: - self.figure.show() - - return self.figure diff --git a/qiskit/visualization/pulse_v2/stylesheet.py b/qiskit/visualization/pulse_v2/stylesheet.py deleted file mode 100644 index 1a37756f4baa..000000000000 --- a/qiskit/visualization/pulse_v2/stylesheet.py +++ /dev/null @@ -1,312 +0,0 @@ -# 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. - -r""" -Stylesheet for pulse drawer. - -The stylesheet `QiskitPulseStyle` is initialized with the hard-corded default values in -`default_style`. This instance is generated when the pulse drawer module is loaded so that -every lower modules can access to the information. - -The `QiskitPulseStyle` is a wrapper class of python dictionary with the structured keys -such as `formatter.color.fill_waveform_d` to represent a color code of the drive channel. -This key representation and initialization framework are the imitative of -`rcParams` of `matplotlib`. However, the `QiskitPulseStyle` is not compatible with the `rcParams` -because the pulse stylesheet is heavily specialized to the context of the pulse program. - -The settings of stylesheet are broadly separated into `formatter`, `generator` and `layout`. -The formatter is a nested dictionary of drawing parameters to control the appearance of -each visualization element. This takes similar data structure to the `rcParams` of `matplotlib`. -The generator is a list of callback functions that generates drawing objects from -given program and device data. The layout is a callback function that determines -the appearance of the output image. -""" - -from typing import Dict, Any, Mapping -from qiskit.visualization.pulse_v2 import generators, layouts - - -class QiskitPulseStyle(dict): - """Stylesheet for pulse drawer.""" - - def __init__(self): - super().__init__() - # to inform which stylesheet is applied. some plotter may not support specific style. - self.stylesheet = None - self.update(default_style()) - - def update(self, __m: Mapping[str, Any], **kwargs) -> None: - super().update(__m, **kwargs) - for key, value in __m.items(): - self.__setitem__(key, value) - self.stylesheet = __m.__class__.__name__ - - @property - def formatter(self): - """Return formatter field of style dictionary.""" - sub_dict = {} - for key, value in self.items(): - sub_keys = key.split(".") - if sub_keys[0] == "formatter": - sub_dict[".".join(sub_keys[1:])] = value - return sub_dict - - @property - def generator(self): - """Return generator field of style dictionary.""" - sub_dict = {} - for key, value in self.items(): - sub_keys = key.split(".") - if sub_keys[0] == "generator": - sub_dict[".".join(sub_keys[1:])] = value - return sub_dict - - @property - def layout(self): - """Return layout field of style dictionary.""" - sub_dict = {} - for key, value in self.items(): - sub_keys = key.split(".") - if sub_keys[0] == "layout": - sub_dict[".".join(sub_keys[1:])] = value - return sub_dict - - -class IQXStandard(dict): - """Standard pulse stylesheet. - - - Generate stepwise waveform envelope with latex pulse names. - - Apply phase modulation to waveforms. - - Plot frame change symbol with formatted operand values. - - Show chart name with scaling factor. - - Show snapshot and barrier. - - Do not show acquire channels. - - Channels are sorted by index and control channels are added to the end. - """ - - def __init__(self, **kwargs): - super().__init__() - style = { - "formatter.control.apply_phase_modulation": True, - "formatter.control.show_snapshot_channel": True, - "formatter.control.show_acquire_channel": False, - "formatter.control.show_empty_channel": False, - "formatter.control.auto_chart_scaling": True, - "formatter.control.axis_break": True, - "generator.waveform": [ - generators.gen_filled_waveform_stepwise, - generators.gen_ibmq_latex_waveform_name, - ], - "generator.frame": [generators.gen_frame_symbol, generators.gen_formatted_frame_values], - "generator.chart": [ - generators.gen_chart_name, - generators.gen_baseline, - generators.gen_channel_freqs, - ], - "generator.snapshot": [generators.gen_snapshot_symbol], - "generator.barrier": [generators.gen_barrier], - "layout.chart_channel_map": layouts.channel_index_grouped_sort_u, - "layout.time_axis_map": layouts.time_map_in_ns, - "layout.figure_title": layouts.detail_title, - } - style.update(**kwargs) - self.update(style) - - def __repr__(self): - return "Standard Pulse style sheet." - - -class IQXSimple(dict): - """Simple pulse stylesheet without channel notation. - - - Generate stepwise waveform envelope with latex pulse names. - - Apply phase modulation to waveforms. - - Do not show frame changes. - - Show chart name. - - Do not show snapshot and barrier. - - Do not show acquire channels. - - Channels are sorted by qubit index. - """ - - def __init__(self, **kwargs): - super().__init__() - style = { - "formatter.general.fig_chart_height": 5, - "formatter.control.apply_phase_modulation": True, - "formatter.control.show_snapshot_channel": True, - "formatter.control.show_acquire_channel": False, - "formatter.control.show_empty_channel": False, - "formatter.control.auto_chart_scaling": False, - "formatter.control.axis_break": True, - "generator.waveform": [ - generators.gen_filled_waveform_stepwise, - generators.gen_ibmq_latex_waveform_name, - ], - "generator.frame": [], - "generator.chart": [generators.gen_chart_name, generators.gen_baseline], - "generator.snapshot": [], - "generator.barrier": [], - "layout.chart_channel_map": layouts.qubit_index_sort, - "layout.time_axis_map": layouts.time_map_in_ns, - "layout.figure_title": layouts.empty_title, - } - style.update(**kwargs) - self.update(style) - - def __repr__(self): - return "Simple pulse style sheet for publication." - - -class IQXDebugging(dict): - """Pulse stylesheet for pulse programmers. Show details of instructions. - - # TODO: add more generators - - - Generate stepwise waveform envelope with latex pulse names. - - Generate annotation for waveform height. - - Apply phase modulation to waveforms. - - Plot frame change symbol with raw operand values. - - Show chart name and channel frequency. - - Show snapshot and barrier. - - Show acquire channels. - - Channels are sorted by index and control channels are added to the end. - """ - - def __init__(self, **kwargs): - super().__init__() - style = { - "formatter.control.apply_phase_modulation": True, - "formatter.control.show_snapshot_channel": True, - "formatter.control.show_acquire_channel": True, - "formatter.control.show_empty_channel": False, - "formatter.control.auto_chart_scaling": True, - "formatter.control.axis_break": True, - "generator.waveform": [ - generators.gen_filled_waveform_stepwise, - generators.gen_ibmq_latex_waveform_name, - generators.gen_waveform_max_value, - ], - "generator.frame": [ - generators.gen_frame_symbol, - generators.gen_raw_operand_values_compact, - ], - "generator.chart": [ - generators.gen_chart_name, - generators.gen_baseline, - generators.gen_channel_freqs, - ], - "generator.snapshot": [generators.gen_snapshot_symbol, generators.gen_snapshot_name], - "generator.barrier": [generators.gen_barrier], - "layout.chart_channel_map": layouts.channel_index_grouped_sort_u, - "layout.time_axis_map": layouts.time_map_in_ns, - "layout.figure_title": layouts.detail_title, - } - style.update(**kwargs) - self.update(style) - - def __repr__(self): - return "Pulse style sheet for pulse programmers." - - -def default_style() -> Dict[str, Any]: - """Define default values of the pulse stylesheet.""" - return { - "formatter.general.fig_width": 13, - "formatter.general.fig_chart_height": 1.5, - "formatter.general.vertical_resolution": 1e-6, - "formatter.general.max_scale": 100, - "formatter.color.waveforms": { - "W": ["#648fff", "#002999"], - "D": ["#648fff", "#002999"], - "U": ["#ffb000", "#994A00"], - "M": ["#dc267f", "#760019"], - "A": ["#dc267f", "#760019"], - }, - "formatter.color.baseline": "#000000", - "formatter.color.barrier": "#222222", - "formatter.color.background": "#f2f3f4", - "formatter.color.fig_title": "#000000", - "formatter.color.annotate": "#222222", - "formatter.color.frame_change": "#000000", - "formatter.color.snapshot": "#000000", - "formatter.color.axis_label": "#000000", - "formatter.color.opaque_shape": ["#f2f3f4", "#000000"], - "formatter.alpha.fill_waveform": 0.3, - "formatter.alpha.baseline": 1.0, - "formatter.alpha.barrier": 0.7, - "formatter.alpha.opaque_shape": 0.7, - "formatter.layer.fill_waveform": 2, - "formatter.layer.baseline": 1, - "formatter.layer.barrier": 1, - "formatter.layer.annotate": 5, - "formatter.layer.axis_label": 5, - "formatter.layer.frame_change": 4, - "formatter.layer.snapshot": 3, - "formatter.layer.fig_title": 6, - "formatter.margin.top": 0.5, - "formatter.margin.bottom": 0.5, - "formatter.margin.left_percent": 0.05, - "formatter.margin.right_percent": 0.05, - "formatter.margin.between_channel": 0.5, - "formatter.label_offset.pulse_name": 0.3, - "formatter.label_offset.chart_info": 0.3, - "formatter.label_offset.frame_change": 0.3, - "formatter.label_offset.snapshot": 0.3, - "formatter.text_size.axis_label": 15, - "formatter.text_size.annotate": 12, - "formatter.text_size.frame_change": 20, - "formatter.text_size.snapshot": 20, - "formatter.text_size.fig_title": 15, - "formatter.text_size.axis_break_symbol": 15, - "formatter.line_width.fill_waveform": 0, - "formatter.line_width.axis_break": 6, - "formatter.line_width.baseline": 1, - "formatter.line_width.barrier": 1, - "formatter.line_width.opaque_shape": 1, - "formatter.line_style.fill_waveform": "-", - "formatter.line_style.baseline": "-", - "formatter.line_style.barrier": ":", - "formatter.line_style.opaque_shape": "--", - "formatter.channel_scaling.drive": 1.0, - "formatter.channel_scaling.control": 1.0, - "formatter.channel_scaling.measure": 1.0, - "formatter.channel_scaling.acquire": 1.0, - "formatter.channel_scaling.pos_spacing": 0.1, - "formatter.channel_scaling.neg_spacing": -0.1, - "formatter.box_width.opaque_shape": 150, - "formatter.box_height.opaque_shape": 0.5, - "formatter.axis_break.length": 3000, - "formatter.axis_break.max_length": 1000, - "formatter.control.fill_waveform": True, - "formatter.control.apply_phase_modulation": True, - "formatter.control.show_snapshot_channel": True, - "formatter.control.show_acquire_channel": True, - "formatter.control.show_empty_channel": True, - "formatter.control.auto_chart_scaling": True, - "formatter.control.axis_break": True, - "formatter.unicode_symbol.frame_change": "\u21BA", - "formatter.unicode_symbol.snapshot": "\u21AF", - "formatter.unicode_symbol.phase_parameter": "\u03b8", - "formatter.unicode_symbol.freq_parameter": "f", - "formatter.latex_symbol.frame_change": r"\circlearrowleft", - "formatter.latex_symbol.snapshot": "", - "formatter.latex_symbol.phase_parameter": r"\theta", - "formatter.latex_symbol.freq_parameter": "f", - "generator.waveform": [], - "generator.frame": [], - "generator.chart": [], - "generator.snapshot": [], - "generator.barrier": [], - "layout.chart_channel_map": None, - "layout.time_axis_map": None, - "layout.figure_title": None, - } diff --git a/qiskit/visualization/pulse_v2/types.py b/qiskit/visualization/pulse_v2/types.py deleted file mode 100644 index 44cf52615870..000000000000 --- a/qiskit/visualization/pulse_v2/types.py +++ /dev/null @@ -1,242 +0,0 @@ -# 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. - -# pylint: disable=invalid-name - -""" -Special data types. -""" -from __future__ import annotations - -from enum import Enum -from typing import NamedTuple, Union, Optional, NewType, Any, List - -import numpy as np -from qiskit import pulse - - -class PhaseFreqTuple(NamedTuple): - phase: float - freq: float - - -PhaseFreqTuple.__doc__ = "Data to represent a set of frequency and phase values." -PhaseFreqTuple.phase.__doc__ = "Phase value in rad." -PhaseFreqTuple.freq.__doc__ = "Frequency value in Hz." - - -PulseInstruction = NamedTuple( - "InstructionTuple", - [ - ("t0", int), - ("dt", Union[float, None]), - ("frame", PhaseFreqTuple), - ("inst", Union[pulse.Instruction, List[pulse.Instruction]]), - ("is_opaque", bool), - ], -) -PulseInstruction.__doc__ = "Data to represent pulse instruction for visualization." -PulseInstruction.t0.__doc__ = "A time when the instruction is issued." -PulseInstruction.dt.__doc__ = "System cycle time." -PulseInstruction.frame.__doc__ = "A reference frame to run instruction." -PulseInstruction.inst.__doc__ = "Pulse instruction." -PulseInstruction.is_opaque.__doc__ = "If there is any unbound parameters." - - -BarrierInstruction = NamedTuple( - "Barrier", [("t0", int), ("dt", Optional[float]), ("channels", List[pulse.channels.Channel])] -) -BarrierInstruction.__doc__ = "Data to represent special pulse instruction of barrier." -BarrierInstruction.t0.__doc__ = "A time when the instruction is issued." -BarrierInstruction.dt.__doc__ = "System cycle time." -BarrierInstruction.channels.__doc__ = "A list of channel associated with this barrier." - - -SnapshotInstruction = NamedTuple( - "Snapshots", [("t0", int), ("dt", Optional[float]), ("inst", pulse.instructions.Snapshot)] -) -SnapshotInstruction.__doc__ = "Data to represent special pulse instruction of snapshot." -SnapshotInstruction.t0.__doc__ = "A time when the instruction is issued." -SnapshotInstruction.dt.__doc__ = "System cycle time." -SnapshotInstruction.inst.__doc__ = "Snapshot instruction." - - -class ChartAxis(NamedTuple): - name: str - channels: list[pulse.channels.Channel] - - -ChartAxis.__doc__ = "Data to represent an axis information of chart." -ChartAxis.name.__doc__ = "Name of chart." -ChartAxis.channels.__doc__ = "Channels associated with chart." - - -class ParsedInstruction(NamedTuple): - xvals: np.ndarray - yvals: np.ndarray - meta: dict[str, Any] - - -ParsedInstruction.__doc__ = "Data to represent a parsed pulse instruction for object generation." -ParsedInstruction.xvals.__doc__ = "Numpy array of x axis data." -ParsedInstruction.yvals.__doc__ = "Numpy array of y axis data." -ParsedInstruction.meta.__doc__ = "Dictionary containing instruction details." - - -class OpaqueShape(NamedTuple): - duration: np.ndarray - meta: dict[str, Any] - - -OpaqueShape.__doc__ = "Data to represent a pulse instruction with parameterized shape." -OpaqueShape.duration.__doc__ = "Duration of instruction." -OpaqueShape.meta.__doc__ = "Dictionary containing instruction details." - - -class HorizontalAxis(NamedTuple): - window: tuple[int, int] - axis_map: dict[float, float | str] - axis_break_pos: list[int] - label: str - - -HorizontalAxis.__doc__ = "Data to represent configuration of horizontal axis." -HorizontalAxis.window.__doc__ = "Left and right edge of graph." -HorizontalAxis.axis_map.__doc__ = "Mapping of apparent coordinate system and actual location." -HorizontalAxis.axis_break_pos.__doc__ = "Locations of axis break." -HorizontalAxis.label.__doc__ = "Label of horizontal axis." - - -class WaveformType(str, Enum): - """ - Waveform data type. - - REAL: Assigned to objects that represent real part of waveform. - IMAG: Assigned to objects that represent imaginary part of waveform. - OPAQUE: Assigned to objects that represent waveform with unbound parameters. - """ - - REAL = "Waveform.Real" - IMAG = "Waveform.Imag" - OPAQUE = "Waveform.Opaque" - - -class LabelType(str, Enum): - """ - Label data type. - - PULSE_NAME: Assigned to objects that represent name of waveform. - PULSE_INFO: Assigned to objects that represent extra info about waveform. - OPAQUE_BOXTEXT: Assigned to objects that represent box text of opaque shapes. - CH_NAME: Assigned to objects that represent name of channel. - CH_SCALE: Assigned to objects that represent scaling factor of channel. - FRAME: Assigned to objects that represent value of frame. - SNAPSHOT: Assigned to objects that represent label of snapshot. - """ - - PULSE_NAME = "Label.Pulse.Name" - PULSE_INFO = "Label.Pulse.Info" - OPAQUE_BOXTEXT = "Label.Opaque.Boxtext" - CH_NAME = "Label.Channel.Name" - CH_INFO = "Label.Channel.Info" - FRAME = "Label.Frame.Value" - SNAPSHOT = "Label.Snapshot" - - -class SymbolType(str, Enum): - """ - Symbol data type. - - FRAME: Assigned to objects that represent symbol of frame. - SNAPSHOT: Assigned to objects that represent symbol of snapshot. - """ - - FRAME = "Symbol.Frame" - SNAPSHOT = "Symbol.Snapshot" - - -class LineType(str, Enum): - """ - Line data type. - - BASELINE: Assigned to objects that represent zero line of channel. - BARRIER: Assigned to objects that represent barrier line. - """ - - BASELINE = "Line.Baseline" - BARRIER = "Line.Barrier" - - -class AbstractCoordinate(str, Enum): - """Abstract coordinate that the exact value depends on the user preference. - - RIGHT: The horizontal coordinate at t0 shifted by the left margin. - LEFT: The horizontal coordinate at tf shifted by the right margin. - TOP: The vertical coordinate at the top of chart. - BOTTOM: The vertical coordinate at the bottom of chart. - """ - - RIGHT = "RIGHT" - LEFT = "LEFT" - TOP = "TOP" - BOTTOM = "BOTTOM" - - -class DynamicString(str, Enum): - """The string which is dynamically updated at the time of drawing. - - SCALE: A temporal value of chart scaling factor. - """ - - SCALE = "@scale" - - -class WaveformChannel(pulse.channels.PulseChannel): - """Dummy channel that doesn't belong to specific pulse channel.""" - - prefix = "w" - - def __init__(self): - """Create new waveform channel.""" - super().__init__(0) - - -class Plotter(str, Enum): - """Name of pulse plotter APIs. - - Mpl2D: Matplotlib plotter interface. Show charts in 2D canvas. - """ - - Mpl2D = "mpl2d" - - -class TimeUnits(str, Enum): - """Representation of time units. - - SYSTEM_CYCLE_TIME: System time dt. - NANO_SEC: Nano seconds. - """ - - CYCLES = "dt" - NS = "ns" - - -# convenient type to represent union of drawing data -# TODO: https://github.com/Qiskit/qiskit-terra/issues/9591 -# NewType means that a value of type Original cannot be used in places -# where a value of type Derived is expected -# (see https://docs.python.org/3/library/typing.html#newtype) -# This breaks a lot of type checking. -DataTypes = NewType("DataType", Union[WaveformType, LabelType, LineType, SymbolType]) - -# convenient type to represent union of values to represent a coordinate -Coordinate = NewType("Coordinate", Union[float, AbstractCoordinate]) diff --git a/qiskit_bot.yaml b/qiskit_bot.yaml index 73422179c8cb..5b217101c169 100644 --- a/qiskit_bot.yaml +++ b/qiskit_bot.yaml @@ -5,14 +5,8 @@ notifications: ".*": - "`@Qiskit/terra-core`" - "visualization/pulse_v2": - - "`@nkanazawa1989`" "visualization/timeline": - "`@nkanazawa1989`" - "pulse": - - "`@nkanazawa1989`" - "scheduler": - - "`@nkanazawa1989`" "qpy": - "`@mtreinish`" - "`@nkanazawa1989`" @@ -25,7 +19,7 @@ notifications: - "`@t-imamichi`" - "`@ajavadia`" - "`@levbishop`" - "(?!.*pulse.*)\\bvisualization\\b": + "visualization": - "@enavarro51" "^docs/": - "@Eric-Arellano" diff --git a/test/python/pulse/__init__.py b/test/python/pulse/__init__.py deleted file mode 100644 index d3a35c2bafeb..000000000000 --- a/test/python/pulse/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2019. -# -# 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. - -"""Qiskit pulse tests.""" - -# TODO pulse unittest reorganization Qiskit-terra/#6106 diff --git a/test/python/pulse/test_block.py b/test/python/pulse/test_block.py deleted file mode 100644 index 4a6a879e00cc..000000000000 --- a/test/python/pulse/test_block.py +++ /dev/null @@ -1,930 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021. -# -# 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. - -# pylint: disable=invalid-name - -"""Test cases for the pulse schedule block.""" -import re -from typing import List, Any -from qiskit import pulse, circuit -from qiskit.pulse import transforms -from qiskit.pulse.exceptions import PulseError -from test import QiskitTestCase # pylint: disable=wrong-import-order -from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class BaseTestBlock(QiskitTestCase): - """ScheduleBlock tests.""" - - @ignore_pulse_deprecation_warnings - def setUp(self): - super().setUp() - - self.test_waveform0 = pulse.Constant(100, 0.1) - self.test_waveform1 = pulse.Constant(200, 0.1) - - self.d0 = pulse.DriveChannel(0) - self.d1 = pulse.DriveChannel(1) - - self.left_context = transforms.AlignLeft() - self.right_context = transforms.AlignRight() - self.sequential_context = transforms.AlignSequential() - self.equispaced_context = transforms.AlignEquispaced(duration=1000) - - def _align_func(j): - return {1: 0.1, 2: 0.25, 3: 0.7, 4: 0.85}.get(j) - - self.func_context = transforms.AlignFunc(duration=1000, func=_align_func) - - def assertScheduleEqual(self, target, reference): - """Check if two block are equal schedule representation.""" - self.assertEqual(transforms.target_qobj_transform(target), reference) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestTransformation(BaseTestBlock): - """Test conversion of ScheduleBlock to Schedule.""" - - def test_left_alignment(self): - """Test left alignment context.""" - block = pulse.ScheduleBlock(alignment_context=self.left_context) - block = block.append(pulse.Play(self.test_waveform0, self.d0)) - block = block.append(pulse.Play(self.test_waveform1, self.d1)) - - ref_sched = pulse.Schedule() - ref_sched = ref_sched.insert(0, pulse.Play(self.test_waveform0, self.d0)) - ref_sched = ref_sched.insert(0, pulse.Play(self.test_waveform1, self.d1)) - - self.assertScheduleEqual(block, ref_sched) - - def test_right_alignment(self): - """Test right alignment context.""" - block = pulse.ScheduleBlock(alignment_context=self.right_context) - block = block.append(pulse.Play(self.test_waveform0, self.d0)) - block = block.append(pulse.Play(self.test_waveform1, self.d1)) - - ref_sched = pulse.Schedule() - ref_sched = ref_sched.insert(100, pulse.Play(self.test_waveform0, self.d0)) - ref_sched = ref_sched.insert(0, pulse.Play(self.test_waveform1, self.d1)) - - self.assertScheduleEqual(block, ref_sched) - - def test_sequential_alignment(self): - """Test sequential alignment context.""" - block = pulse.ScheduleBlock(alignment_context=self.sequential_context) - block = block.append(pulse.Play(self.test_waveform0, self.d0)) - block = block.append(pulse.Play(self.test_waveform1, self.d1)) - - ref_sched = pulse.Schedule() - ref_sched = ref_sched.insert(0, pulse.Play(self.test_waveform0, self.d0)) - ref_sched = ref_sched.insert(100, pulse.Play(self.test_waveform1, self.d1)) - - self.assertScheduleEqual(block, ref_sched) - - def test_equispace_alignment(self): - """Test equispace alignment context.""" - block = pulse.ScheduleBlock(alignment_context=self.equispaced_context) - for _ in range(4): - block = block.append(pulse.Play(self.test_waveform0, self.d0)) - - ref_sched = pulse.Schedule() - ref_sched = ref_sched.insert(0, pulse.Play(self.test_waveform0, self.d0)) - ref_sched = ref_sched.insert(300, pulse.Play(self.test_waveform0, self.d0)) - ref_sched = ref_sched.insert(600, pulse.Play(self.test_waveform0, self.d0)) - ref_sched = ref_sched.insert(900, pulse.Play(self.test_waveform0, self.d0)) - - self.assertScheduleEqual(block, ref_sched) - - def test_func_alignment(self): - """Test func alignment context.""" - block = pulse.ScheduleBlock(alignment_context=self.func_context) - for _ in range(4): - block = block.append(pulse.Play(self.test_waveform0, self.d0)) - - ref_sched = pulse.Schedule() - ref_sched = ref_sched.insert(50, pulse.Play(self.test_waveform0, self.d0)) - ref_sched = ref_sched.insert(200, pulse.Play(self.test_waveform0, self.d0)) - ref_sched = ref_sched.insert(650, pulse.Play(self.test_waveform0, self.d0)) - ref_sched = ref_sched.insert(800, pulse.Play(self.test_waveform0, self.d0)) - - self.assertScheduleEqual(block, ref_sched) - - def test_nested_alignment(self): - """Test nested block scheduling.""" - block_sub = pulse.ScheduleBlock(alignment_context=self.right_context) - block_sub = block_sub.append(pulse.Play(self.test_waveform0, self.d0)) - block_sub = block_sub.append(pulse.Play(self.test_waveform1, self.d1)) - - block_main = pulse.ScheduleBlock(alignment_context=self.sequential_context) - block_main = block_main.append(block_sub) - block_main = block_main.append(pulse.Delay(10, self.d0)) - block_main = block_main.append(block_sub) - - ref_sched = pulse.Schedule() - ref_sched = ref_sched.insert(0, pulse.Play(self.test_waveform1, self.d1)) - ref_sched = ref_sched.insert(100, pulse.Play(self.test_waveform0, self.d0)) - ref_sched = ref_sched.insert(200, pulse.Delay(10, self.d0)) - ref_sched = ref_sched.insert(210, pulse.Play(self.test_waveform1, self.d1)) - ref_sched = ref_sched.insert(310, pulse.Play(self.test_waveform0, self.d0)) - - self.assertScheduleEqual(block_main, ref_sched) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestBlockOperation(BaseTestBlock): - """Test fundamental operation on schedule block. - - Because ScheduleBlock adapts to the lazy scheduling, no uniitest for - overlap constraints is necessary. Test scheme becomes simpler than the schedule. - - Some tests have dependency on schedule conversion. - This operation should be tested in `test.python.pulse.test_block.TestTransformation`. - """ - - @ignore_pulse_deprecation_warnings - def setUp(self): - super().setUp() - - self.test_blocks = [ - pulse.Play(self.test_waveform0, self.d0), - pulse.Play(self.test_waveform1, self.d1), - pulse.Delay(50, self.d0), - pulse.Play(self.test_waveform1, self.d0), - ] - - def test_append_an_instruction_to_empty_block(self): - """Test append instructions to an empty block.""" - block = pulse.ScheduleBlock() - block = block.append(pulse.Play(self.test_waveform0, self.d0)) - - self.assertEqual(block.blocks[0], pulse.Play(self.test_waveform0, self.d0)) - - def test_append_an_instruction_to_empty_block_sugar(self): - """Test append instructions to an empty block with syntax sugar.""" - block = pulse.ScheduleBlock() - block += pulse.Play(self.test_waveform0, self.d0) - - self.assertEqual(block.blocks[0], pulse.Play(self.test_waveform0, self.d0)) - - def test_append_an_instruction_to_empty_block_inplace(self): - """Test append instructions to an empty block with inplace.""" - block = pulse.ScheduleBlock() - block.append(pulse.Play(self.test_waveform0, self.d0), inplace=True) - - self.assertEqual(block.blocks[0], pulse.Play(self.test_waveform0, self.d0)) - - def test_append_a_block_to_empty_block(self): - """Test append another ScheduleBlock to empty block.""" - block = pulse.ScheduleBlock() - block.append(pulse.Play(self.test_waveform0, self.d0), inplace=True) - - block_main = pulse.ScheduleBlock() - block_main = block_main.append(block) - - self.assertEqual(block_main.blocks[0], block) - - def test_append_an_instruction_to_block(self): - """Test append instructions to a non-empty block.""" - block = pulse.ScheduleBlock() - block = block.append(pulse.Delay(100, self.d0)) - - block = block.append(pulse.Delay(100, self.d0)) - - self.assertEqual(len(block.blocks), 2) - - def test_append_an_instruction_to_block_inplace(self): - """Test append instructions to a non-empty block with inplace.""" - block = pulse.ScheduleBlock() - block = block.append(pulse.Delay(100, self.d0)) - - block.append(pulse.Delay(100, self.d0), inplace=True) - - self.assertEqual(len(block.blocks), 2) - - def test_duration(self): - """Test if correct duration is returned with implicit scheduling.""" - block = pulse.ScheduleBlock() - for inst in self.test_blocks: - block.append(inst) - - self.assertEqual(block.duration, 350) - - def test_channels(self): - """Test if all channels are returned.""" - block = pulse.ScheduleBlock() - for inst in self.test_blocks: - block.append(inst) - - self.assertEqual(len(block.channels), 2) - - def test_instructions(self): - """Test if all instructions are returned.""" - block = pulse.ScheduleBlock() - for inst in self.test_blocks: - block.append(inst) - - self.assertEqual(block.blocks, tuple(self.test_blocks)) - - def test_channel_duraction(self): - """Test if correct durations is calculated for each channel.""" - block = pulse.ScheduleBlock() - for inst in self.test_blocks: - block.append(inst) - - self.assertEqual(block.ch_duration(self.d0), 350) - self.assertEqual(block.ch_duration(self.d1), 200) - - def test_cannot_append_schedule(self): - """Test schedule cannot be appended. Schedule should be input as Call instruction.""" - block = pulse.ScheduleBlock() - - sched = pulse.Schedule() - sched += pulse.Delay(10, self.d0) - - with self.assertRaises(PulseError): - block.append(sched) - - def test_replace(self): - """Test replacing specific instruction.""" - block = pulse.ScheduleBlock() - for inst in self.test_blocks: - block.append(inst) - - replaced = pulse.Play(pulse.Constant(300, 0.1), self.d1) - target = pulse.Delay(50, self.d0) - - block_replaced = block.replace(target, replaced, inplace=False) - - # original schedule is not destroyed - self.assertListEqual(list(block.blocks), self.test_blocks) - - ref_sched = pulse.Schedule() - ref_sched = ref_sched.insert(0, pulse.Play(self.test_waveform0, self.d0)) - ref_sched = ref_sched.insert(0, pulse.Play(self.test_waveform1, self.d1)) - ref_sched = ref_sched.insert(200, replaced) - ref_sched = ref_sched.insert(100, pulse.Play(self.test_waveform1, self.d0)) - - self.assertScheduleEqual(block_replaced, ref_sched) - - def test_replace_inplace(self): - """Test replacing specific instruction with inplace.""" - block = pulse.ScheduleBlock() - for inst in self.test_blocks: - block.append(inst) - - replaced = pulse.Play(pulse.Constant(300, 0.1), self.d1) - target = pulse.Delay(50, self.d0) - - block.replace(target, replaced, inplace=True) - - ref_sched = pulse.Schedule() - ref_sched = ref_sched.insert(0, pulse.Play(self.test_waveform0, self.d0)) - ref_sched = ref_sched.insert(0, pulse.Play(self.test_waveform1, self.d1)) - ref_sched = ref_sched.insert(200, replaced) - ref_sched = ref_sched.insert(100, pulse.Play(self.test_waveform1, self.d0)) - - self.assertScheduleEqual(block, ref_sched) - - def test_replace_block_by_instruction(self): - """Test replacing block with instruction.""" - sub_block1 = pulse.ScheduleBlock() - sub_block1 = sub_block1.append(pulse.Delay(50, self.d0)) - sub_block1 = sub_block1.append(pulse.Play(self.test_waveform0, self.d0)) - - sub_block2 = pulse.ScheduleBlock() - sub_block2 = sub_block2.append(pulse.Delay(50, self.d0)) - sub_block2 = sub_block2.append(pulse.Play(self.test_waveform1, self.d1)) - - main_block = pulse.ScheduleBlock() - main_block = main_block.append(pulse.Delay(50, self.d0)) - main_block = main_block.append(pulse.Play(self.test_waveform0, self.d0)) - main_block = main_block.append(sub_block1) - main_block = main_block.append(sub_block2) - main_block = main_block.append(pulse.Play(self.test_waveform0, self.d1)) - - replaced = main_block.replace(sub_block1, pulse.Delay(100, self.d0)) - - ref_blocks = [ - pulse.Delay(50, self.d0), - pulse.Play(self.test_waveform0, self.d0), - pulse.Delay(100, self.d0), - sub_block2, - pulse.Play(self.test_waveform0, self.d1), - ] - - self.assertListEqual(list(replaced.blocks), ref_blocks) - - def test_replace_instruction_by_block(self): - """Test replacing instruction with block.""" - sub_block1 = pulse.ScheduleBlock() - sub_block1 = sub_block1.append(pulse.Delay(50, self.d0)) - sub_block1 = sub_block1.append(pulse.Play(self.test_waveform0, self.d0)) - - sub_block2 = pulse.ScheduleBlock() - sub_block2 = sub_block2.append(pulse.Delay(50, self.d0)) - sub_block2 = sub_block2.append(pulse.Play(self.test_waveform1, self.d1)) - - main_block = pulse.ScheduleBlock() - main_block = main_block.append(pulse.Delay(50, self.d0)) - main_block = main_block.append(pulse.Play(self.test_waveform0, self.d0)) - main_block = main_block.append(pulse.Delay(100, self.d0)) - main_block = main_block.append(sub_block2) - main_block = main_block.append(pulse.Play(self.test_waveform0, self.d1)) - - replaced = main_block.replace(pulse.Delay(100, self.d0), sub_block1) - - ref_blocks = [ - pulse.Delay(50, self.d0), - pulse.Play(self.test_waveform0, self.d0), - sub_block1, - sub_block2, - pulse.Play(self.test_waveform0, self.d1), - ] - - self.assertListEqual(list(replaced.blocks), ref_blocks) - - def test_len(self): - """Test __len__ method""" - block = pulse.ScheduleBlock() - self.assertEqual(len(block), 0) - - for j in range(1, 10): - block = block.append(pulse.Delay(10, self.d0)) - self.assertEqual(len(block), j) - - def test_inherit_from(self): - """Test creating schedule with another schedule.""" - ref_metadata = {"test": "value"} - ref_name = "test" - - base_sched = pulse.ScheduleBlock(name=ref_name, metadata=ref_metadata) - new_sched = pulse.ScheduleBlock.initialize_from(base_sched) - - self.assertEqual(new_sched.name, ref_name) - self.assertDictEqual(new_sched.metadata, ref_metadata) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestBlockEquality(BaseTestBlock): - """Test equality of blocks. - - Equality of instruction ordering is compared on DAG representation. - This should be tested for each transform. - """ - - def test_different_channels(self): - """Test equality is False if different channels.""" - block1 = pulse.ScheduleBlock() - block1 += pulse.Delay(10, self.d0) - - block2 = pulse.ScheduleBlock() - block2 += pulse.Delay(10, self.d1) - - self.assertNotEqual(block1, block2) - - def test_different_transform(self): - """Test equality is False if different transforms.""" - block1 = pulse.ScheduleBlock(alignment_context=self.left_context) - block1 += pulse.Delay(10, self.d0) - - block2 = pulse.ScheduleBlock(alignment_context=self.right_context) - block2 += pulse.Delay(10, self.d0) - - self.assertNotEqual(block1, block2) - - def test_different_transform_opts(self): - """Test equality is False if different transform options.""" - context1 = transforms.AlignEquispaced(duration=100) - context2 = transforms.AlignEquispaced(duration=500) - - block1 = pulse.ScheduleBlock(alignment_context=context1) - block1 += pulse.Delay(10, self.d0) - - block2 = pulse.ScheduleBlock(alignment_context=context2) - block2 += pulse.Delay(10, self.d0) - - self.assertNotEqual(block1, block2) - - def test_instruction_out_of_order_left(self): - """Test equality is True if two blocks have instructions in different order.""" - block1 = pulse.ScheduleBlock(alignment_context=self.left_context) - block1 += pulse.Play(self.test_waveform0, self.d0) - block1 += pulse.Play(self.test_waveform0, self.d1) - - block2 = pulse.ScheduleBlock(alignment_context=self.left_context) - block2 += pulse.Play(self.test_waveform0, self.d1) - block2 += pulse.Play(self.test_waveform0, self.d0) - - self.assertEqual(block1, block2) - - def test_instruction_in_order_left(self): - """Test equality is True if two blocks have instructions in same order.""" - block1 = pulse.ScheduleBlock(alignment_context=self.left_context) - block1 += pulse.Play(self.test_waveform0, self.d0) - block1 += pulse.Play(self.test_waveform0, self.d1) - - block2 = pulse.ScheduleBlock(alignment_context=self.left_context) - block2 += pulse.Play(self.test_waveform0, self.d0) - block2 += pulse.Play(self.test_waveform0, self.d1) - - self.assertEqual(block1, block2) - - def test_instruction_out_of_order_right(self): - """Test equality is True if two blocks have instructions in different order.""" - block1 = pulse.ScheduleBlock(alignment_context=self.right_context) - block1 += pulse.Play(self.test_waveform0, self.d0) - block1 += pulse.Play(self.test_waveform0, self.d1) - - block2 = pulse.ScheduleBlock(alignment_context=self.right_context) - block2 += pulse.Play(self.test_waveform0, self.d1) - block2 += pulse.Play(self.test_waveform0, self.d0) - - self.assertEqual(block1, block2) - - def test_instruction_in_order_right(self): - """Test equality is True if two blocks have instructions in same order.""" - block1 = pulse.ScheduleBlock(alignment_context=self.right_context) - block1 += pulse.Play(self.test_waveform0, self.d0) - block1 += pulse.Play(self.test_waveform0, self.d1) - - block2 = pulse.ScheduleBlock(alignment_context=self.right_context) - block2 += pulse.Play(self.test_waveform0, self.d0) - block2 += pulse.Play(self.test_waveform0, self.d1) - - self.assertEqual(block1, block2) - - def test_instruction_out_of_order_sequential(self): - """Test equality is False if two blocks have instructions in different order.""" - block1 = pulse.ScheduleBlock(alignment_context=self.sequential_context) - 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.d1) - block2 += pulse.Play(self.test_waveform0, self.d0) - - 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) - 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) - - self.assertEqual(block1, block2) - - def test_instruction_out_of_order_equispaced(self): - """Test equality is False if two blocks have instructions in different order.""" - block1 = pulse.ScheduleBlock(alignment_context=self.equispaced_context) - block1 += pulse.Play(self.test_waveform0, self.d0) - block1 += pulse.Play(self.test_waveform0, self.d1) - - block2 = pulse.ScheduleBlock(alignment_context=self.equispaced_context) - 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_equispaced(self): - """Test equality is True if two blocks have instructions in same order.""" - block1 = pulse.ScheduleBlock(alignment_context=self.equispaced_context) - block1 += pulse.Play(self.test_waveform0, self.d0) - block1 += pulse.Play(self.test_waveform0, self.d1) - - block2 = pulse.ScheduleBlock(alignment_context=self.equispaced_context) - block2 += pulse.Play(self.test_waveform0, self.d0) - block2 += pulse.Play(self.test_waveform0, self.d1) - - self.assertEqual(block1, block2) - - def test_instruction_out_of_order_func(self): - """Test equality is False if two blocks have instructions in different order.""" - block1 = pulse.ScheduleBlock(alignment_context=self.func_context) - block1 += pulse.Play(self.test_waveform0, self.d0) - block1 += pulse.Play(self.test_waveform0, self.d1) - - block2 = pulse.ScheduleBlock(alignment_context=self.func_context) - 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_func(self): - """Test equality is True if two blocks have instructions in same order.""" - block1 = pulse.ScheduleBlock(alignment_context=self.func_context) - block1 += pulse.Play(self.test_waveform0, self.d0) - block1 += pulse.Play(self.test_waveform0, self.d1) - - block2 = pulse.ScheduleBlock(alignment_context=self.func_context) - block2 += pulse.Play(self.test_waveform0, self.d0) - block2 += pulse.Play(self.test_waveform0, self.d1) - - self.assertEqual(block1, block2) - - def test_instrution_in_oder_but_different_node(self): - """Test equality is False if two blocks have different instructions.""" - block1 = pulse.ScheduleBlock(alignment_context=self.left_context) - block1 += pulse.Play(self.test_waveform0, self.d0) - block1 += pulse.Play(self.test_waveform1, self.d1) - - block2 = pulse.ScheduleBlock(alignment_context=self.left_context) - block2 += pulse.Play(self.test_waveform0, self.d0) - block2 += pulse.Play(self.test_waveform0, self.d1) - - self.assertNotEqual(block1, block2) - - def test_instruction_out_of_order_complex_equal(self): - """Test complex schedule equality can be correctly evaluated.""" - block1_a = pulse.ScheduleBlock(alignment_context=self.left_context) - block1_a += pulse.Delay(10, self.d0) - block1_a += pulse.Play(self.test_waveform1, self.d1) - block1_a += pulse.Play(self.test_waveform0, self.d0) - - block1_b = pulse.ScheduleBlock(alignment_context=self.left_context) - block1_b += pulse.Play(self.test_waveform1, self.d1) - block1_b += pulse.Delay(10, self.d0) - block1_b += pulse.Play(self.test_waveform0, self.d0) - - block2_a = pulse.ScheduleBlock(alignment_context=self.right_context) - block2_a += block1_a - block2_a += block1_b - block2_a += block1_a - - block2_b = pulse.ScheduleBlock(alignment_context=self.right_context) - block2_b += block1_a - block2_b += block1_a - block2_b += block1_b - - self.assertEqual(block2_a, block2_b) - - def test_instruction_out_of_order_complex_not_equal(self): - """Test complex schedule equality can be correctly evaluated.""" - block1_a = pulse.ScheduleBlock(alignment_context=self.left_context) - block1_a += pulse.Play(self.test_waveform0, self.d0) - block1_a += pulse.Play(self.test_waveform1, self.d1) - block1_a += pulse.Delay(10, self.d0) - - block1_b = pulse.ScheduleBlock(alignment_context=self.left_context) - block1_b += pulse.Play(self.test_waveform1, self.d1) - block1_b += pulse.Delay(10, self.d0) - block1_b += pulse.Play(self.test_waveform0, self.d0) - - block2_a = pulse.ScheduleBlock(alignment_context=self.right_context) - block2_a += block1_a - block2_a += block1_b - block2_a += block1_a - - block2_b = pulse.ScheduleBlock(alignment_context=self.right_context) - block2_b += block1_a - block2_b += block1_a - block2_b += block1_b - - self.assertNotEqual(block2_a, block2_b) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestParametrizedBlockOperation(BaseTestBlock): - """Test fundamental operation with parametrization.""" - - @ignore_pulse_deprecation_warnings - def setUp(self): - super().setUp() - - self.amp0 = circuit.Parameter("amp0") - self.amp1 = circuit.Parameter("amp1") - self.dur0 = circuit.Parameter("dur0") - self.dur1 = circuit.Parameter("dur1") - - self.test_par_waveform0 = pulse.Constant(self.dur0, self.amp0) - self.test_par_waveform1 = pulse.Constant(self.dur1, self.amp1) - - def test_report_parameter_assignment(self): - """Test duration assignment check.""" - block = pulse.ScheduleBlock() - block += pulse.Play(self.test_par_waveform0, self.d0) - - # check parameter evaluation mechanism - self.assertTrue(block.is_parameterized()) - self.assertFalse(block.is_schedulable()) - - # assign duration - block = block.assign_parameters({self.dur0: 200}) - self.assertTrue(block.is_parameterized()) - self.assertTrue(block.is_schedulable()) - - def test_cannot_get_duration_if_not_assigned(self): - """Test raise error when duration is not assigned.""" - block = pulse.ScheduleBlock() - block += pulse.Play(self.test_par_waveform0, self.d0) - - with self.assertRaises(PulseError): - # pylint: disable=pointless-statement - block.duration - - def test_get_assigend_duration(self): - """Test duration is correctly evaluated.""" - block = pulse.ScheduleBlock() - block += pulse.Play(self.test_par_waveform0, self.d0) - block += pulse.Play(self.test_waveform0, self.d0) - - block = block.assign_parameters({self.dur0: 300}) - - self.assertEqual(block.duration, 400) - - def test_equality_of_parametrized_channels(self): - """Test check equality of blocks involving parametrized channels.""" - par_ch = circuit.Parameter("ch") - - block1 = pulse.ScheduleBlock(alignment_context=self.left_context) - block1 += pulse.Play(self.test_waveform0, pulse.DriveChannel(par_ch)) - block1 += pulse.Play(self.test_par_waveform0, self.d0) - - block2 = pulse.ScheduleBlock(alignment_context=self.left_context) - block2 += pulse.Play(self.test_par_waveform0, self.d0) - block2 += pulse.Play(self.test_waveform0, pulse.DriveChannel(par_ch)) - - self.assertEqual(block1, block2) - - block1_assigned = block1.assign_parameters({par_ch: 1}) - block2_assigned = block2.assign_parameters({par_ch: 1}) - self.assertEqual(block1_assigned, block2_assigned) - - def test_replace_parametrized_instruction(self): - """Test parametrized instruction can updated with parameter table.""" - block = pulse.ScheduleBlock() - block += pulse.Play(self.test_par_waveform0, self.d0) - block += pulse.Delay(100, self.d0) - block += pulse.Play(self.test_waveform0, self.d0) - - replaced = block.replace( - pulse.Play(self.test_par_waveform0, self.d0), - pulse.Play(self.test_par_waveform1, self.d0), - ) - self.assertTrue(replaced.is_parameterized()) - - # check assign parameters - replaced_assigned = replaced.assign_parameters({self.dur1: 100, self.amp1: 0.1}) - self.assertFalse(replaced_assigned.is_parameterized()) - - def test_parametrized_context(self): - """Test parametrize context parameter.""" - duration = circuit.Parameter("dur") - param_context = transforms.AlignEquispaced(duration=duration) - - block = pulse.ScheduleBlock(alignment_context=param_context) - block += pulse.Delay(10, self.d0) - block += pulse.Delay(10, self.d0) - block += pulse.Delay(10, self.d0) - block += pulse.Delay(10, self.d0) - self.assertTrue(block.is_parameterized()) - self.assertFalse(block.is_schedulable()) - - block.assign_parameters({duration: 100}, inplace=True) - self.assertFalse(block.is_parameterized()) - self.assertTrue(block.is_schedulable()) - - ref_sched = pulse.Schedule() - ref_sched = ref_sched.insert(0, pulse.Delay(10, self.d0)) - ref_sched = ref_sched.insert(30, pulse.Delay(10, self.d0)) - ref_sched = ref_sched.insert(60, pulse.Delay(10, self.d0)) - ref_sched = ref_sched.insert(90, pulse.Delay(10, self.d0)) - - self.assertScheduleEqual(block, ref_sched) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestBlockFilter(BaseTestBlock): - """Test ScheduleBlock filtering methods.""" - - def test_filter_channels(self): - """Test filtering over channels.""" - with pulse.build() as blk: - pulse.play(self.test_waveform0, self.d0) - pulse.delay(10, self.d0) - pulse.play(self.test_waveform1, self.d1) - - filtered_blk = self._filter_and_test_consistency(blk, channels=[self.d0]) - self.assertEqual(len(filtered_blk.channels), 1) - self.assertTrue(self.d0 in filtered_blk.channels) - with pulse.build() as ref_blk: - pulse.play(self.test_waveform0, self.d0) - pulse.delay(10, self.d0) - self.assertEqual(filtered_blk, ref_blk) - - filtered_blk = self._filter_and_test_consistency(blk, channels=[self.d1]) - self.assertEqual(len(filtered_blk.channels), 1) - self.assertTrue(self.d1 in filtered_blk.channels) - with pulse.build() as ref_blk: - pulse.play(self.test_waveform1, self.d1) - self.assertEqual(filtered_blk, ref_blk) - - filtered_blk = self._filter_and_test_consistency(blk, channels=[self.d0, self.d1]) - self.assertEqual(len(filtered_blk.channels), 2) - for ch in [self.d0, self.d1]: - self.assertTrue(ch in filtered_blk.channels) - self.assertEqual(filtered_blk, blk) - - def test_filter_inst_types(self): - """Test filtering on instruction types.""" - with pulse.build() as blk: - pulse.acquire(5, pulse.AcquireChannel(0), pulse.MemorySlot(0)) - - with pulse.build() as blk_internal: - pulse.play(self.test_waveform1, self.d1) - - pulse.call(blk_internal) - pulse.reference(name="dummy_reference") - pulse.delay(10, self.d0) - pulse.play(self.test_waveform0, self.d0) - pulse.barrier(self.d0, self.d1, pulse.AcquireChannel(0), pulse.MemorySlot(0)) - pulse.set_frequency(10, self.d0) - pulse.shift_frequency(5, self.d1) - pulse.set_phase(3.14 / 4.0, self.d0) - pulse.shift_phase(-3.14 / 2.0, self.d1) - pulse.snapshot(label="dummy_snapshot") - - # test filtering Acquire - filtered_blk = self._filter_and_test_consistency(blk, instruction_types=[pulse.Acquire]) - self.assertEqual(len(filtered_blk.blocks), 1) - self.assertIsInstance(filtered_blk.blocks[0], pulse.Acquire) - self.assertEqual(len(filtered_blk.channels), 2) - - # test filtering Reference - filtered_blk = self._filter_and_test_consistency( - blk, instruction_types=[pulse.instructions.Reference] - ) - self.assertEqual(len(filtered_blk.blocks), 1) - self.assertIsInstance(filtered_blk.blocks[0], pulse.instructions.Reference) - - # test filtering Delay - filtered_blk = self._filter_and_test_consistency(blk, instruction_types=[pulse.Delay]) - self.assertEqual(len(filtered_blk.blocks), 1) - self.assertIsInstance(filtered_blk.blocks[0], pulse.Delay) - self.assertEqual(len(filtered_blk.channels), 1) - - # test filtering Play - filtered_blk = self._filter_and_test_consistency(blk, instruction_types=[pulse.Play]) - self.assertEqual(len(filtered_blk.blocks), 2) - self.assertIsInstance(filtered_blk.blocks[0].blocks[0], pulse.Play) - self.assertIsInstance(filtered_blk.blocks[1], pulse.Play) - self.assertEqual(len(filtered_blk.channels), 2) - - # test filtering RelativeBarrier - filtered_blk = self._filter_and_test_consistency( - blk, instruction_types=[pulse.instructions.RelativeBarrier] - ) - self.assertEqual(len(filtered_blk.blocks), 1) - self.assertIsInstance(filtered_blk.blocks[0], pulse.instructions.RelativeBarrier) - self.assertEqual(len(filtered_blk.channels), 4) - - # test filtering SetFrequency - filtered_blk = self._filter_and_test_consistency( - blk, instruction_types=[pulse.SetFrequency] - ) - self.assertEqual(len(filtered_blk.blocks), 1) - self.assertIsInstance(filtered_blk.blocks[0], pulse.SetFrequency) - self.assertEqual(len(filtered_blk.channels), 1) - - # test filtering ShiftFrequency - filtered_blk = self._filter_and_test_consistency( - blk, instruction_types=[pulse.ShiftFrequency] - ) - self.assertEqual(len(filtered_blk.blocks), 1) - self.assertIsInstance(filtered_blk.blocks[0], pulse.ShiftFrequency) - self.assertEqual(len(filtered_blk.channels), 1) - - # test filtering SetPhase - filtered_blk = self._filter_and_test_consistency(blk, instruction_types=[pulse.SetPhase]) - self.assertEqual(len(filtered_blk.blocks), 1) - self.assertIsInstance(filtered_blk.blocks[0], pulse.SetPhase) - self.assertEqual(len(filtered_blk.channels), 1) - - # test filtering ShiftPhase - filtered_blk = self._filter_and_test_consistency(blk, instruction_types=[pulse.ShiftPhase]) - self.assertEqual(len(filtered_blk.blocks), 1) - self.assertIsInstance(filtered_blk.blocks[0], pulse.ShiftPhase) - self.assertEqual(len(filtered_blk.channels), 1) - - # test filtering SnapShot - filtered_blk = self._filter_and_test_consistency(blk, instruction_types=[pulse.Snapshot]) - self.assertEqual(len(filtered_blk.blocks), 1) - self.assertIsInstance(filtered_blk.blocks[0], pulse.Snapshot) - self.assertEqual(len(filtered_blk.channels), 1) - - def test_filter_functionals(self): - """Test functional filtering.""" - with pulse.build() as blk: - pulse.play(self.test_waveform0, self.d0, "play0") - pulse.delay(10, self.d0, "delay0") - - with pulse.build() as blk_internal: - pulse.play(self.test_waveform1, self.d1, "play1") - - pulse.call(blk_internal) - pulse.play(self.test_waveform1, self.d1) - - def filter_with_inst_name(inst: pulse.Instruction) -> bool: - try: - if isinstance(inst.name, str): - match_obj = re.search(pattern="play", string=inst.name) - if match_obj is not None: - return True - except AttributeError: - pass - return False - - filtered_blk = self._filter_and_test_consistency(blk, filter_with_inst_name) - self.assertEqual(len(filtered_blk.blocks), 2) - self.assertIsInstance(filtered_blk.blocks[0], pulse.Play) - self.assertIsInstance(filtered_blk.blocks[1].blocks[0], pulse.Play) - self.assertEqual(len(filtered_blk.channels), 2) - - def test_filter_multiple(self): - """Test filter composition.""" - with pulse.build() as blk: - pulse.play(pulse.Constant(100, 0.1, name="play0"), self.d0) - pulse.delay(10, self.d0, "delay0") - - with pulse.build(name="internal_blk") as blk_internal: - pulse.play(pulse.Constant(50, 0.1, name="play1"), self.d0) - - pulse.call(blk_internal) - pulse.barrier(self.d0, self.d1) - pulse.play(pulse.Constant(100, 0.1, name="play2"), self.d1) - - def filter_with_pulse_name(inst: pulse.Instruction) -> bool: - try: - if isinstance(inst.pulse.name, str): - match_obj = re.search(pattern="play", string=inst.pulse.name) - if match_obj is not None: - return True - except AttributeError: - pass - return False - - filtered_blk = self._filter_and_test_consistency( - blk, filter_with_pulse_name, channels=[self.d1], instruction_types=[pulse.Play] - ) - self.assertEqual(len(filtered_blk.blocks), 1) - self.assertIsInstance(filtered_blk.blocks[0], pulse.Play) - self.assertEqual(len(filtered_blk.channels), 1) - - def _filter_and_test_consistency( - self, sched_blk: pulse.ScheduleBlock, *args: Any, **kwargs: Any - ) -> pulse.ScheduleBlock: - """ - Returns sched_blk.filter(*args, **kwargs), - including a test that sched_blk.filter | sched_blk.exclude == sched_blk - in terms of instructions. - """ - filtered = sched_blk.filter(*args, **kwargs) - excluded = sched_blk.exclude(*args, **kwargs) - - def list_instructions(blk: pulse.ScheduleBlock) -> List[pulse.Instruction]: - insts = [] - for element in blk.blocks: - if isinstance(element, pulse.ScheduleBlock): - inner_insts = list_instructions(element) - if len(inner_insts) != 0: - insts.extend(inner_insts) - elif isinstance(element, pulse.Instruction): - insts.append(element) - return insts - - sum_insts = list_instructions(filtered) + list_instructions(excluded) - ref_insts = list_instructions(sched_blk) - self.assertEqual(len(sum_insts), len(ref_insts)) - self.assertTrue(all(inst in ref_insts for inst in sum_insts)) - return filtered diff --git a/test/python/pulse/test_calibration_entries.py b/test/python/pulse/test_calibration_entries.py deleted file mode 100644 index 166b03303704..000000000000 --- a/test/python/pulse/test_calibration_entries.py +++ /dev/null @@ -1,274 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2023. -# -# 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 for calibration entries.""" - -import numpy as np - -from qiskit.circuit.parameter import Parameter -from qiskit.pulse import ( - Schedule, - ScheduleBlock, - Play, - Constant, - DriveChannel, -) -from qiskit.pulse.calibration_entries import ( - ScheduleDef, - CallableDef, -) -from qiskit.pulse.exceptions import PulseError -from test import QiskitTestCase # pylint: disable=wrong-import-order -from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestSchedule(QiskitTestCase): - """Test case for the ScheduleDef.""" - - def test_add_schedule(self): - """Basic test pulse Schedule format.""" - program = Schedule() - program.insert( - 0, - Play(Constant(duration=10, amp=0.1, angle=0.0), DriveChannel(0)), - inplace=True, - ) - - entry = ScheduleDef() - entry.define(program) - - signature_to_test = list(entry.get_signature().parameters.keys()) - signature_ref = [] - self.assertListEqual(signature_to_test, signature_ref) - - schedule_to_test = entry.get_schedule() - schedule_ref = program - self.assertEqual(schedule_to_test, schedule_ref) - - def test_add_block(self): - """Basic test pulse Schedule format.""" - program = ScheduleBlock() - program.append( - Play(Constant(duration=10, amp=0.1, angle=0.0), DriveChannel(0)), - inplace=True, - ) - - entry = ScheduleDef() - entry.define(program) - - signature_to_test = list(entry.get_signature().parameters.keys()) - signature_ref = [] - self.assertListEqual(signature_to_test, signature_ref) - - schedule_to_test = entry.get_schedule() - schedule_ref = program - self.assertEqual(schedule_to_test, schedule_ref) - - def test_parameterized_schedule(self): - """Test adding and managing parameterized schedule.""" - param1 = Parameter("P1") - param2 = Parameter("P2") - - program = ScheduleBlock() - program.append( - Play(Constant(duration=param1, amp=param2, angle=0.0), DriveChannel(0)), - inplace=True, - ) - - entry = ScheduleDef() - entry.define(program) - - signature_to_test = list(entry.get_signature().parameters.keys()) - signature_ref = ["P1", "P2"] - self.assertListEqual(signature_to_test, signature_ref) - - schedule_to_test = entry.get_schedule(P1=10, P2=0.1) - schedule_ref = program.assign_parameters({param1: 10, param2: 0.1}, inplace=False) - self.assertEqual(schedule_to_test, schedule_ref) - - def test_parameterized_schedule_with_user_args(self): - """Test adding schedule with user signature. - - Bind parameters to a pulse schedule but expecting non-lexicographical order. - """ - theta = Parameter("theta") - lam = Parameter("lam") - phi = Parameter("phi") - - program = ScheduleBlock() - program.append( - Play(Constant(duration=10, amp=phi, angle=0.0), DriveChannel(0)), - inplace=True, - ) - program.append( - Play(Constant(duration=10, amp=theta, angle=0.0), DriveChannel(0)), - inplace=True, - ) - program.append( - Play(Constant(duration=10, amp=lam, angle=0.0), DriveChannel(0)), - inplace=True, - ) - - entry = ScheduleDef(arguments=["theta", "lam", "phi"]) - entry.define(program) - - signature_to_test = list(entry.get_signature().parameters.keys()) - signature_ref = ["theta", "lam", "phi"] - self.assertListEqual(signature_to_test, signature_ref) - - # Do not specify kwargs. This is order sensitive. - schedule_to_test = entry.get_schedule(0.1, 0.2, 0.3) - schedule_ref = program.assign_parameters( - {theta: 0.1, lam: 0.2, phi: 0.3}, - inplace=False, - ) - self.assertEqual(schedule_to_test, schedule_ref) - - def test_parameterized_schedule_with_wrong_signature(self): - """Test raising PulseError when signature doesn't match.""" - param1 = Parameter("P1") - - program = ScheduleBlock() - program.append( - Play(Constant(duration=10, amp=param1, angle=0.0), DriveChannel(0)), - inplace=True, - ) - - entry = ScheduleDef(arguments=["This_is_wrong_param_name"]) - - with self.assertRaises(PulseError): - entry.define(program) - - def test_equality(self): - """Test equality evaluation between the schedule entries.""" - program1 = Schedule() - program1.insert( - 0, - Play(Constant(duration=10, amp=0.1, angle=0.0), DriveChannel(0)), - inplace=True, - ) - - program2 = Schedule() - program2.insert( - 0, - Play(Constant(duration=10, amp=0.2, angle=0.0), DriveChannel(0)), - inplace=True, - ) - - entry1 = ScheduleDef() - entry1.define(program1) - - entry2 = ScheduleDef() - entry2.define(program2) - - entry3 = ScheduleDef() - entry3.define(program1) - - self.assertEqual(entry1, entry3) - self.assertNotEqual(entry1, entry2) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestCallable(QiskitTestCase): - """Test case for the CallableDef.""" - - def test_add_callable(self): - """Basic test callable format.""" - program = Schedule() - program.insert( - 0, - Play(Constant(duration=10, amp=0.1, angle=0.0), DriveChannel(0)), - inplace=True, - ) - - def factory(): - return program - - entry = CallableDef() - entry.define(factory) - - signature_to_test = list(entry.get_signature().parameters.keys()) - signature_ref = [] - self.assertListEqual(signature_to_test, signature_ref) - - schedule_to_test = entry.get_schedule() - schedule_ref = program - self.assertEqual(schedule_to_test, schedule_ref) - - def test_add_callable_with_argument(self): - """Basic test callable format.""" - - def factory(var1, var2): - program = Schedule() - if var1 > 0: - program.insert( - 0, - Play(Constant(duration=var2, amp=var1, angle=0.0), DriveChannel(0)), - inplace=True, - ) - else: - program.insert( - 0, - Play(Constant(duration=var2, amp=np.abs(var1), angle=np.pi), DriveChannel(0)), - inplace=True, - ) - return program - - entry = CallableDef() - entry.define(factory) - - signature_to_test = list(entry.get_signature().parameters.keys()) - signature_ref = ["var1", "var2"] - self.assertListEqual(signature_to_test, signature_ref) - - schedule_to_test = entry.get_schedule(0.1, 10) - schedule_ref = Schedule() - schedule_ref.insert( - 0, - Play(Constant(duration=10, amp=0.1, angle=0.0), DriveChannel(0)), - inplace=True, - ) - self.assertEqual(schedule_to_test, schedule_ref) - - schedule_to_test = entry.get_schedule(-0.1, 10) - schedule_ref = Schedule() - schedule_ref.insert( - 0, - Play(Constant(duration=10, amp=0.1, angle=np.pi), DriveChannel(0)), - inplace=True, - ) - self.assertEqual(schedule_to_test, schedule_ref) - - def test_equality(self): - """Test equality evaluation between the callable entries. - - This does NOT compare the code. Just object equality. - """ - - def factory1(): - return Schedule() - - def factory2(): - return Schedule() - - entry1 = CallableDef() - entry1.define(factory1) - - entry2 = CallableDef() - entry2.define(factory2) - - entry3 = CallableDef() - entry3.define(factory1) - - self.assertEqual(entry1, entry3) - self.assertNotEqual(entry1, entry2) diff --git a/test/python/pulse/test_channels.py b/test/python/pulse/test_channels.py deleted file mode 100644 index ed104bd6b3a1..000000000000 --- a/test/python/pulse/test_channels.py +++ /dev/null @@ -1,195 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2019. -# -# 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 cases for the pulse channel group.""" - -import unittest - -from qiskit.pulse.channels import ( - AcquireChannel, - Channel, - ClassicalIOChannel, - ControlChannel, - DriveChannel, - MeasureChannel, - MemorySlot, - PulseChannel, - RegisterSlot, - SnapshotChannel, - PulseError, -) -from test import QiskitTestCase # pylint: disable=wrong-import-order -from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings - - -class TestChannel(QiskitTestCase): - """Test base channel.""" - - def test_cannot_be_instantiated(self): - """Test base channel cannot be instantiated.""" - with self.assertRaises(NotImplementedError): - Channel(0) - - -class TestPulseChannel(QiskitTestCase): - """Test base pulse channel.""" - - def test_cannot_be_instantiated(self): - """Test base pulse channel cannot be instantiated.""" - with self.assertRaises(NotImplementedError): - PulseChannel(0) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestAcquireChannel(QiskitTestCase): - """AcquireChannel tests.""" - - def test_default(self): - """Test default acquire channel.""" - acquire_channel = AcquireChannel(123) - - self.assertEqual(acquire_channel.index, 123) - self.assertEqual(acquire_channel.name, "a123") - - def test_channel_hash(self): - """Test hashing for acquire channel.""" - acq_channel_1 = AcquireChannel(123) - acq_channel_2 = AcquireChannel(123) - - hash_1 = hash(acq_channel_1) - hash_2 = hash(acq_channel_2) - - self.assertEqual(hash_1, hash_2) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestClassicalIOChannel(QiskitTestCase): - """Test base classical IO channel.""" - - def test_cannot_be_instantiated(self): - """Test base classical IO channel cannot be instantiated.""" - with self.assertRaises(NotImplementedError): - ClassicalIOChannel(0) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestMemorySlot(QiskitTestCase): - """MemorySlot tests.""" - - def test_default(self): - """Test default memory slot.""" - memory_slot = MemorySlot(123) - - self.assertEqual(memory_slot.index, 123) - self.assertEqual(memory_slot.name, "m123") - self.assertTrue(isinstance(memory_slot, ClassicalIOChannel)) - - def test_validation(self): - """Test channel validation""" - with self.assertRaises(PulseError): - MemorySlot(0.5) - with self.assertRaises(PulseError): - MemorySlot(-1) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestRegisterSlot(QiskitTestCase): - """RegisterSlot tests.""" - - def test_default(self): - """Test default register slot.""" - register_slot = RegisterSlot(123) - - self.assertEqual(register_slot.index, 123) - self.assertEqual(register_slot.name, "c123") - self.assertTrue(isinstance(register_slot, ClassicalIOChannel)) - - def test_validation(self): - """Test channel validation""" - with self.assertRaises(PulseError): - RegisterSlot(0.5) - with self.assertRaises(PulseError): - RegisterSlot(-1) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestSnapshotChannel(QiskitTestCase): - """SnapshotChannel tests.""" - - def test_default(self): - """Test default snapshot channel.""" - snapshot_channel = SnapshotChannel() - - self.assertEqual(snapshot_channel.index, 0) - self.assertEqual(snapshot_channel.name, "s0") - self.assertTrue(isinstance(snapshot_channel, ClassicalIOChannel)) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestDriveChannel(QiskitTestCase): - """DriveChannel tests.""" - - def test_default(self): - """Test default drive channel.""" - drive_channel = DriveChannel(123) - - self.assertEqual(drive_channel.index, 123) - self.assertEqual(drive_channel.name, "d123") - - def test_validation(self): - """Test channel validation""" - with self.assertRaises(PulseError): - DriveChannel(0.5) - with self.assertRaises(PulseError): - DriveChannel(-1) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestControlChannel(QiskitTestCase): - """ControlChannel tests.""" - - def test_default(self): - """Test default control channel.""" - control_channel = ControlChannel(123) - - self.assertEqual(control_channel.index, 123) - self.assertEqual(control_channel.name, "u123") - - def test_validation(self): - """Test channel validation""" - with self.assertRaises(PulseError): - ControlChannel(0.5) - with self.assertRaises(PulseError): - ControlChannel(-1) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestMeasureChannel(QiskitTestCase): - """MeasureChannel tests.""" - - def test_default(self): - """Test default measure channel.""" - measure_channel = MeasureChannel(123) - - self.assertEqual(measure_channel.index, 123) - self.assertEqual(measure_channel.name, "m123") - - def test_validation(self): - """Test channel validation""" - with self.assertRaises(PulseError): - MeasureChannel(0.5) - with self.assertRaises(PulseError): - MeasureChannel(-1) - - -if __name__ == "__main__": - unittest.main() diff --git a/test/python/pulse/test_continuous_pulses.py b/test/python/pulse/test_continuous_pulses.py deleted file mode 100644 index affe949e7d9d..000000000000 --- a/test/python/pulse/test_continuous_pulses.py +++ /dev/null @@ -1,307 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2019. -# -# 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 continuous pulse functions.""" - -import numpy as np - -from qiskit.pulse.library import continuous -from test import QiskitTestCase # pylint: disable=wrong-import-order - - -class TestContinuousPulses(QiskitTestCase): - """Test continuous pulses.""" - - def test_constant(self): - """Test constant pulse.""" - amp = 0.5j - samples = 50 - times = np.linspace(0, 10, samples) - - constant_arr = continuous.constant(times, amp=amp) - - self.assertEqual(constant_arr.dtype, np.complex128) - np.testing.assert_equal(constant_arr, amp) - self.assertEqual(len(constant_arr), samples) - - def test_zero(self): - """Test constant pulse.""" - times = np.linspace(0, 10, 50) - zero_arr = continuous.zero(times) - - self.assertEqual(zero_arr.dtype, np.complex128) - np.testing.assert_equal(zero_arr, 0.0) - self.assertEqual(len(zero_arr), 50) - - def test_square(self): - """Test square wave.""" - amp = 0.5 - freq = 0.2 - samples = 100 - times = np.linspace(0, 10, samples) - square_arr = continuous.square(times, amp=amp, freq=freq) - # with new phase - square_arr_phased = continuous.square(times, amp=amp, freq=freq, phase=np.pi / 2) - - self.assertEqual(square_arr.dtype, np.complex128) - - self.assertAlmostEqual(square_arr[0], amp) - # test constant - self.assertAlmostEqual(square_arr[1] - square_arr[0], 0.0) - self.assertAlmostEqual(square_arr[25], -amp) - self.assertAlmostEqual(square_arr_phased[0], -amp) - # Assert bounded between -amp and amp - self.assertTrue(np.all((-amp <= square_arr) & (square_arr <= amp))) - self.assertEqual(len(square_arr), samples) - - def test_sawtooth(self): - """Test sawtooth wave.""" - amp = 0.5 - freq = 0.2 - samples = 101 - times, dt = np.linspace(0, 10, samples, retstep=True) - sawtooth_arr = continuous.sawtooth(times, amp=amp, freq=freq) - # with new phase - sawtooth_arr_phased = continuous.sawtooth(times, amp=amp, freq=freq, phase=np.pi / 2) - - self.assertEqual(sawtooth_arr.dtype, np.complex128) - - self.assertAlmostEqual(sawtooth_arr[0], 0.0) - # test slope - self.assertAlmostEqual((sawtooth_arr[1] - sawtooth_arr[0]) / dt, 2 * amp * freq) - self.assertAlmostEqual(sawtooth_arr[24], 0.48) - self.assertAlmostEqual(sawtooth_arr[50], 0.0) - self.assertAlmostEqual(sawtooth_arr[75], -amp) - self.assertAlmostEqual(sawtooth_arr_phased[0], -amp) - # Assert bounded between -amp and amp - self.assertTrue(np.all((-amp <= sawtooth_arr) & (sawtooth_arr <= amp))) - self.assertEqual(len(sawtooth_arr), samples) - - def test_triangle(self): - """Test triangle wave.""" - amp = 0.5 - freq = 0.2 - samples = 101 - times, dt = np.linspace(0, 10, samples, retstep=True) - triangle_arr = continuous.triangle(times, amp=amp, freq=freq) - # with new phase - triangle_arr_phased = continuous.triangle(times, amp=amp, freq=freq, phase=np.pi / 2) - - self.assertEqual(triangle_arr.dtype, np.complex128) - - self.assertAlmostEqual(triangle_arr[0], 0.0) - # test slope - self.assertAlmostEqual((triangle_arr[1] - triangle_arr[0]) / dt, 4 * amp * freq) - self.assertAlmostEqual(triangle_arr[12], 0.48) - self.assertAlmostEqual(triangle_arr[13], 0.48) - self.assertAlmostEqual(triangle_arr[50], 0.0) - self.assertAlmostEqual(triangle_arr_phased[0], amp) - # Assert bounded between -amp and amp - self.assertTrue(np.all((-amp <= triangle_arr) & (triangle_arr <= amp))) - self.assertEqual(len(triangle_arr), samples) - - def test_cos(self): - """Test cosine wave.""" - amp = 0.5 - period = 5 - freq = 1 / period - samples = 101 - times = np.linspace(0, 10, samples) - cos_arr = continuous.cos(times, amp=amp, freq=freq) - # with new phase - cos_arr_phased = continuous.cos(times, amp=amp, freq=freq, phase=np.pi / 2) - - self.assertEqual(cos_arr.dtype, np.complex128) - - # Assert starts at 1 - self.assertAlmostEqual(cos_arr[0], amp) - self.assertAlmostEqual(cos_arr[6], 0.3644, places=2) - self.assertAlmostEqual(cos_arr[25], -amp) - self.assertAlmostEqual(cos_arr[50], amp) - self.assertAlmostEqual(cos_arr_phased[0], 0.0) - # Assert bounded between -amp and amp - self.assertTrue(np.all((-amp <= cos_arr) & (cos_arr <= amp))) - self.assertEqual(len(cos_arr), samples) - - def test_sin(self): - """Test sine wave.""" - amp = 0.5 - period = 5 - freq = 1 / period - samples = 101 - times = np.linspace(0, 10, samples) - sin_arr = continuous.sin(times, amp=amp, freq=freq) - # with new phase - sin_arr_phased = continuous.sin(times, amp=0.5, freq=1 / 5, phase=np.pi / 2) - - self.assertEqual(sin_arr.dtype, np.complex128) - - # Assert starts at 1 - self.assertAlmostEqual(sin_arr[0], 0.0) - self.assertAlmostEqual(sin_arr[6], 0.3427, places=2) - self.assertAlmostEqual(sin_arr[25], 0.0) - self.assertAlmostEqual(sin_arr[13], amp, places=2) - self.assertAlmostEqual(sin_arr_phased[0], amp) - # Assert bounded between -amp and amp - self.assertTrue(np.all((-amp <= sin_arr) & (sin_arr <= amp))) - self.assertEqual(len(sin_arr), samples) - - def test_gaussian(self): - """Test gaussian pulse.""" - amp = 0.5 - duration = 20 - center = duration / 2 - sigma = 2 - times, dt = np.linspace(0, duration, 1001, retstep=True) - gaussian_arr = continuous.gaussian(times, amp, center, sigma) - gaussian_arr_zeroed = continuous.gaussian( - np.array([-1, center, duration + 1]), - amp, - center, - sigma, - zeroed_width=2 * (center + 1), - rescale_amp=True, - ) - - self.assertEqual(gaussian_arr.dtype, np.complex128) - - center_time = np.argmax(gaussian_arr) - self.assertAlmostEqual(times[center_time], center) - self.assertAlmostEqual(gaussian_arr[center_time], amp) - self.assertAlmostEqual(gaussian_arr_zeroed[0], 0.0, places=6) - self.assertAlmostEqual(gaussian_arr_zeroed[1], amp) - self.assertAlmostEqual(gaussian_arr_zeroed[2], 0.0, places=6) - self.assertAlmostEqual( - np.sum(gaussian_arr * dt), amp * np.sqrt(2 * np.pi * sigma**2), places=3 - ) - - def test_gaussian_deriv(self): - """Test gaussian derivative pulse.""" - amp = 0.5 - center = 10 - sigma = 2 - times, dt = np.linspace(0, 20, 1000, retstep=True) - deriv_prefactor = -(sigma**2) / (times - center) - - gaussian_deriv_arr = continuous.gaussian_deriv(times, amp, center, sigma) - gaussian_arr = gaussian_deriv_arr * deriv_prefactor - - self.assertEqual(gaussian_deriv_arr.dtype, np.complex128) - - self.assertAlmostEqual( - continuous.gaussian_deriv(np.array([0]), amp, center, sigma)[0], 0, places=5 - ) - self.assertAlmostEqual( - np.sum(gaussian_arr * dt), amp * np.sqrt(2 * np.pi * sigma**2), places=3 - ) - - def test_sech(self): - """Test sech pulse.""" - amp = 0.5 - duration = 40 - center = duration / 2 - sigma = 2 - times, dt = np.linspace(0, duration, 1001, retstep=True) - sech_arr = continuous.sech(times, amp, center, sigma) - sech_arr_zeroed = continuous.sech(np.array([-1, center, duration + 1]), amp, center, sigma) - - self.assertEqual(sech_arr.dtype, np.complex128) - - center_time = np.argmax(sech_arr) - self.assertAlmostEqual(times[center_time], center) - self.assertAlmostEqual(sech_arr[center_time], amp) - self.assertAlmostEqual(sech_arr_zeroed[0], 0.0, places=2) - self.assertAlmostEqual(sech_arr_zeroed[1], amp) - self.assertAlmostEqual(sech_arr_zeroed[2], 0.0, places=2) - self.assertAlmostEqual(np.sum(sech_arr * dt), amp * np.pi * sigma, places=3) - - def test_sech_deriv(self): - """Test sech derivative pulse.""" - amp = 0.5 - center = 20 - sigma = 2 - times = np.linspace(0, 40, 1000) - - sech_deriv_arr = continuous.sech_deriv(times, amp, center, sigma) - - self.assertEqual(sech_deriv_arr.dtype, np.complex128) - - self.assertAlmostEqual( - continuous.sech_deriv(np.array([0]), amp, center, sigma)[0], 0, places=3 - ) - - def test_gaussian_square(self): - """Test gaussian square pulse.""" - amp = 0.5 - center = 10 - width = 2 - sigma = 0.1 - times, dt = np.linspace(0, 20, 2001, retstep=True) - gaussian_square_arr = continuous.gaussian_square(times, amp, center, width, sigma) - - self.assertEqual(gaussian_square_arr.dtype, np.complex128) - - self.assertEqual(gaussian_square_arr[1000], amp) - # test half gaussian rise/fall - self.assertAlmostEqual( - np.sum(gaussian_square_arr[:900] * dt) * 2, - amp * np.sqrt(2 * np.pi * sigma**2), - places=2, - ) - self.assertAlmostEqual( - np.sum(gaussian_square_arr[1100:] * dt) * 2, - amp * np.sqrt(2 * np.pi * sigma**2), - places=2, - ) - # test for continuity at gaussian/square boundaries - gauss_rise_end_time = center - width / 2 - gauss_fall_start_time = center + width / 2 - epsilon = 0.01 - rise_times, dt_rise = np.linspace( - gauss_rise_end_time - epsilon, gauss_rise_end_time + epsilon, 1001, retstep=True - ) - fall_times, dt_fall = np.linspace( - gauss_fall_start_time - epsilon, gauss_fall_start_time + epsilon, 1001, retstep=True - ) - gaussian_square_rise_arr = continuous.gaussian_square(rise_times, amp, center, width, sigma) - gaussian_square_fall_arr = continuous.gaussian_square(fall_times, amp, center, width, sigma) - - # should be locally approximated by amp*dt^2/(2*sigma^2) - self.assertAlmostEqual( - amp * dt_rise**2 / (2 * sigma**2), - gaussian_square_rise_arr[500] - gaussian_square_rise_arr[499], - ) - self.assertAlmostEqual( - amp * dt_fall**2 / (2 * sigma**2), - gaussian_square_fall_arr[501] - gaussian_square_fall_arr[500], - ) - - def test_drag(self): - """Test drag pulse.""" - amp = 0.5 - center = 10 - sigma = 0.1 - beta = 0 - times = np.linspace(0, 20, 2001) - # test that we recover gaussian for beta=0 - gaussian_arr = continuous.gaussian( - times, amp, center, sigma, zeroed_width=2 * (center + 1), rescale_amp=True - ) - - drag_arr = continuous.drag( - times, amp, center, sigma, beta=beta, zeroed_width=2 * (center + 1), rescale_amp=True - ) - - self.assertEqual(drag_arr.dtype, np.complex128) - - np.testing.assert_equal(drag_arr, gaussian_arr) diff --git a/test/python/pulse/test_experiment_configurations.py b/test/python/pulse/test_experiment_configurations.py deleted file mode 100644 index 8702ba2d1cf5..000000000000 --- a/test/python/pulse/test_experiment_configurations.py +++ /dev/null @@ -1,206 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2019. -# -# 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 cases for the experimental conditions for pulse.""" -import unittest -import numpy as np - -from qiskit.pulse.channels import DriveChannel, MeasureChannel, AcquireChannel -from qiskit.pulse.exceptions import PulseError -from qiskit.pulse import LoConfig, LoRange, Kernel, Discriminator -from test import QiskitTestCase # pylint: disable=wrong-import-order -from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings - - -class TestLoRange(QiskitTestCase): - """Test LO LoRange.""" - - def test_properties_includes_and_eq(self): - """Test creation of LoRange. Test upper/lower bounds and includes. - Test __eq__ for two same and different LoRange's. - """ - lo_range_1 = LoRange(lower_bound=-0.1, upper_bound=+0.1) - - self.assertEqual(lo_range_1.lower_bound, -0.1) - self.assertEqual(lo_range_1.upper_bound, +0.1) - self.assertTrue(lo_range_1.includes(0.0)) - - lo_range_2 = LoRange(lower_bound=-0.1, upper_bound=+0.1) - lo_range_3 = LoRange(lower_bound=-0.2, upper_bound=+0.2) - - self.assertTrue(lo_range_1 == lo_range_2) - self.assertFalse(lo_range_1 == lo_range_3) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestLoConfig(QiskitTestCase): - """LoConfig tests.""" - - def test_can_create_empty_user_lo_config(self): - """Test if a LoConfig can be created without no arguments.""" - user_lo_config = LoConfig() - self.assertEqual({}, user_lo_config.qubit_los) - self.assertEqual({}, user_lo_config.meas_los) - - def test_can_create_valid_user_lo_config(self): - """Test if a LoConfig can be created with valid user_los.""" - channel1 = DriveChannel(0) - channel2 = MeasureChannel(0) - user_lo_config = LoConfig({channel1: 1.4, channel2: 3.6}) - self.assertEqual(1.4, user_lo_config.qubit_los[channel1]) - self.assertEqual(3.6, user_lo_config.meas_los[channel2]) - - def test_fail_to_create_with_out_of_range_user_lo(self): - """Test if a LoConfig cannot be created with invalid user_los.""" - channel = DriveChannel(0) - with self.assertRaises(PulseError): - LoConfig({channel: 3.3}, {channel: (1.0, 2.0)}) - - def test_fail_to_create_with_invalid_channel(self): - """Test if a LoConfig cannot be created with invalid channel.""" - channel = AcquireChannel(0) - with self.assertRaises(PulseError): - LoConfig({channel: 1.0}) - - def test_keep_dict_unchanged_after_updating_the_dict_used_in_construction(self): - """Test if a LoConfig keeps its dictionary unchanged even after - the dictionary used in construction is updated. - """ - channel = DriveChannel(0) - original = {channel: 3.4} - user_lo_config = LoConfig(original) - self.assertEqual(3.4, user_lo_config.qubit_los[channel]) - original[channel] = 5.6 - self.assertEqual(3.4, user_lo_config.qubit_los[channel]) - - def test_get_channel_lo(self): - """Test retrieving channel lo from LO config.""" - channel = DriveChannel(0) - lo_config = LoConfig({channel: 1.0}) - self.assertEqual(lo_config.channel_lo(channel), 1.0) - - channel = MeasureChannel(0) - lo_config = LoConfig({channel: 2.0}) - self.assertEqual(lo_config.channel_lo(channel), 2.0) - - with self.assertRaises(PulseError): - lo_config.channel_lo(MeasureChannel(1)) - - -class TestKernel(QiskitTestCase): - """Test Kernel.""" - - def test_eq(self): - """Test if two kernels are equal.""" - kernel_a = Kernel( - "kernel_test", - kernel={"real": np.zeros(10), "imag": np.zeros(10)}, - bias=[0, 0], - ) - kernel_b = Kernel( - "kernel_test", - kernel={"real": np.zeros(10), "imag": np.zeros(10)}, - bias=[0, 0], - ) - self.assertTrue(kernel_a == kernel_b) - - def test_neq_name(self): - """Test if two kernels with different names are not equal.""" - kernel_a = Kernel( - "kernel_test", - kernel={"real": np.zeros(10), "imag": np.zeros(10)}, - bias=[0, 0], - ) - kernel_b = Kernel( - "kernel_test_2", - kernel={"real": np.zeros(10), "imag": np.zeros(10)}, - bias=[0, 0], - ) - self.assertFalse(kernel_a == kernel_b) - - def test_neq_params(self): - """Test if two kernels with different parameters are not equal.""" - kernel_a = Kernel( - "kernel_test", - kernel={"real": np.zeros(10), "imag": np.zeros(10)}, - bias=[0, 0], - ) - kernel_b = Kernel( - "kernel_test", - kernel={"real": np.zeros(10), "imag": np.zeros(10)}, - bias=[1, 0], - ) - self.assertFalse(kernel_a == kernel_b) - - def test_neq_nested_params(self): - """Test if two kernels with different nested parameters are not equal.""" - kernel_a = Kernel( - "kernel_test", - kernel={"real": np.zeros(10), "imag": np.zeros(10)}, - bias=[0, 0], - ) - kernel_b = Kernel( - "kernel_test", - kernel={"real": np.ones(10), "imag": np.zeros(10)}, - bias=[0, 0], - ) - self.assertFalse(kernel_a == kernel_b) - - -class TestDiscriminator(QiskitTestCase): - """Test Discriminator.""" - - def test_eq(self): - """Test if two discriminators are equal.""" - discriminator_a = Discriminator( - "discriminator_test", - discriminator_type="linear", - params=[1, 0], - ) - discriminator_b = Discriminator( - "discriminator_test", - discriminator_type="linear", - params=[1, 0], - ) - self.assertTrue(discriminator_a == discriminator_b) - - def test_neq_name(self): - """Test if two discriminators with different names are not equal.""" - discriminator_a = Discriminator( - "discriminator_test", - discriminator_type="linear", - params=[1, 0], - ) - discriminator_b = Discriminator( - "discriminator_test_2", - discriminator_type="linear", - params=[1, 0], - ) - self.assertFalse(discriminator_a == discriminator_b) - - def test_neq_params(self): - """Test if two discriminators with different parameters are not equal.""" - discriminator_a = Discriminator( - "discriminator_test", - discriminator_type="linear", - params=[1, 0], - ) - discriminator_b = Discriminator( - "discriminator_test", - discriminator_type="non-linear", - params=[0, 0], - ) - self.assertFalse(discriminator_a == discriminator_b) - - -if __name__ == "__main__": - unittest.main() diff --git a/test/python/pulse/test_instructions.py b/test/python/pulse/test_instructions.py deleted file mode 100644 index 1eaf0f928499..000000000000 --- a/test/python/pulse/test_instructions.py +++ /dev/null @@ -1,336 +0,0 @@ -# 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. - -"""Unit tests for pulse instructions.""" - -import numpy as np - -from qiskit import circuit -from qiskit.pulse import channels, configuration, instructions, library, exceptions -from test import QiskitTestCase # pylint: disable=wrong-import-order -from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestAcquire(QiskitTestCase): - """Acquisition tests.""" - - def test_can_construct_valid_acquire_command(self): - """Test if valid acquire command can be constructed.""" - kernel_opts = {"start_window": 0, "stop_window": 10} - kernel = configuration.Kernel(name="boxcar", **kernel_opts) - - discriminator_opts = { - "neighborhoods": [{"qubits": 1, "channels": 1}], - "cal": "coloring", - "resample": False, - } - discriminator = configuration.Discriminator( - name="linear_discriminator", **discriminator_opts - ) - - acq = instructions.Acquire( - 10, - channels.AcquireChannel(0), - channels.MemorySlot(0), - kernel=kernel, - discriminator=discriminator, - name="acquire", - ) - - self.assertEqual(acq.duration, 10) - self.assertEqual(acq.discriminator.name, "linear_discriminator") - self.assertEqual(acq.discriminator.params, discriminator_opts) - self.assertEqual(acq.kernel.name, "boxcar") - self.assertEqual(acq.kernel.params, kernel_opts) - self.assertIsInstance(acq.id, int) - self.assertEqual(acq.name, "acquire") - self.assertEqual( - acq.operands, - ( - 10, - channels.AcquireChannel(0), - channels.MemorySlot(0), - None, - kernel, - discriminator, - ), - ) - - def test_instructions_hash(self): - """Test hashing for acquire instruction.""" - acq_1 = instructions.Acquire( - 10, - channels.AcquireChannel(0), - channels.MemorySlot(0), - name="acquire", - ) - acq_2 = instructions.Acquire( - 10, - channels.AcquireChannel(0), - channels.MemorySlot(0), - name="acquire", - ) - - hash_1 = hash(acq_1) - hash_2 = hash(acq_2) - - self.assertEqual(hash_1, hash_2) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestDelay(QiskitTestCase): - """Delay tests.""" - - def test_delay(self): - """Test delay.""" - delay = instructions.Delay(10, channels.DriveChannel(0), name="test_name") - - self.assertIsInstance(delay.id, int) - self.assertEqual(delay.name, "test_name") - self.assertEqual(delay.duration, 10) - self.assertIsInstance(delay.duration, int) - self.assertEqual(delay.operands, (10, channels.DriveChannel(0))) - self.assertEqual(delay, instructions.Delay(10, channels.DriveChannel(0))) - self.assertNotEqual(delay, instructions.Delay(11, channels.DriveChannel(1))) - self.assertEqual(repr(delay), "Delay(10, DriveChannel(0), name='test_name')") - - # Test numpy int for duration - delay = instructions.Delay(np.int32(10), channels.DriveChannel(0), name="test_name2") - self.assertEqual(delay.duration, 10) - self.assertIsInstance(delay.duration, np.integer) - - def test_operator_delay(self): - """Test Operator(delay).""" - from qiskit.circuit import QuantumCircuit - from qiskit.quantum_info import Operator - - circ = QuantumCircuit(1) - circ.delay(10) - op_delay = Operator(circ) - - expected = QuantumCircuit(1) - expected.id(0) - op_identity = Operator(expected) - self.assertEqual(op_delay, op_identity) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestSetFrequency(QiskitTestCase): - """Set frequency tests.""" - - def test_freq(self): - """Test set frequency basic functionality.""" - set_freq = instructions.SetFrequency(4.5e9, channels.DriveChannel(1), name="test") - - self.assertIsInstance(set_freq.id, int) - self.assertEqual(set_freq.duration, 0) - self.assertEqual(set_freq.frequency, 4.5e9) - self.assertEqual(set_freq.operands, (4.5e9, channels.DriveChannel(1))) - self.assertEqual( - set_freq, instructions.SetFrequency(4.5e9, channels.DriveChannel(1), name="test") - ) - self.assertNotEqual( - set_freq, instructions.SetFrequency(4.5e8, channels.DriveChannel(1), name="test") - ) - self.assertEqual(repr(set_freq), "SetFrequency(4500000000.0, DriveChannel(1), name='test')") - - def test_freq_non_pulse_channel(self): - """Test set frequency constructor with illegal channel""" - 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}) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestShiftFrequency(QiskitTestCase): - """Shift frequency tests.""" - - def test_shift_freq(self): - """Test shift frequency basic functionality.""" - shift_freq = instructions.ShiftFrequency(4.5e9, channels.DriveChannel(1), name="test") - - self.assertIsInstance(shift_freq.id, int) - self.assertEqual(shift_freq.duration, 0) - self.assertEqual(shift_freq.frequency, 4.5e9) - self.assertEqual(shift_freq.operands, (4.5e9, channels.DriveChannel(1))) - self.assertEqual( - shift_freq, instructions.ShiftFrequency(4.5e9, channels.DriveChannel(1), name="test") - ) - self.assertNotEqual( - shift_freq, instructions.ShiftFrequency(4.5e8, channels.DriveChannel(1), name="test") - ) - self.assertEqual( - repr(shift_freq), "ShiftFrequency(4500000000.0, DriveChannel(1), name='test')" - ) - - def test_freq_non_pulse_channel(self): - """Test shift frequency constructor with illegal channel""" - 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}) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestSetPhase(QiskitTestCase): - """Test the instruction construction.""" - - def test_default(self): - """Test basic SetPhase.""" - set_phase = instructions.SetPhase(1.57, channels.DriveChannel(0)) - - self.assertIsInstance(set_phase.id, int) - self.assertEqual(set_phase.name, None) - self.assertEqual(set_phase.duration, 0) - self.assertEqual(set_phase.phase, 1.57) - self.assertEqual(set_phase.operands, (1.57, channels.DriveChannel(0))) - self.assertEqual( - set_phase, instructions.SetPhase(1.57, channels.DriveChannel(0), name="test") - ) - self.assertNotEqual( - set_phase, instructions.SetPhase(1.57j, channels.DriveChannel(0), name="test") - ) - self.assertEqual(repr(set_phase), "SetPhase(1.57, DriveChannel(0))") - - def test_set_phase_non_pulse_channel(self): - """Test shift phase constructor with illegal channel""" - 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}) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestShiftPhase(QiskitTestCase): - """Test the instruction construction.""" - - def test_default(self): - """Test basic ShiftPhase.""" - shift_phase = instructions.ShiftPhase(1.57, channels.DriveChannel(0)) - - self.assertIsInstance(shift_phase.id, int) - self.assertEqual(shift_phase.name, None) - self.assertEqual(shift_phase.duration, 0) - self.assertEqual(shift_phase.phase, 1.57) - self.assertEqual(shift_phase.operands, (1.57, channels.DriveChannel(0))) - self.assertEqual( - shift_phase, instructions.ShiftPhase(1.57, channels.DriveChannel(0), name="test") - ) - self.assertNotEqual( - shift_phase, instructions.ShiftPhase(1.57j, channels.DriveChannel(0), name="test") - ) - self.assertEqual(repr(shift_phase), "ShiftPhase(1.57, DriveChannel(0))") - - def test_shift_phase_non_pulse_channel(self): - """Test shift phase constructor with illegal channel""" - 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}) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestSnapshot(QiskitTestCase): - """Snapshot tests.""" - - def test_default(self): - """Test default snapshot.""" - snapshot = instructions.Snapshot(label="test_name", snapshot_type="state") - - self.assertIsInstance(snapshot.id, int) - self.assertEqual(snapshot.name, "test_name") - self.assertEqual(snapshot.type, "state") - self.assertEqual(snapshot.duration, 0) - self.assertNotEqual(snapshot, instructions.Delay(10, channels.DriveChannel(0))) - self.assertEqual(repr(snapshot), "Snapshot(test_name, state, name='test_name')") - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestPlay(QiskitTestCase): - """Play tests.""" - - @ignore_pulse_deprecation_warnings - def setUp(self): - """Setup play tests.""" - super().setUp() - self.duration = 4 - self.pulse_op = library.Waveform([1.0] * self.duration, name="test") - - def test_play(self): - """Test basic play instruction.""" - play = instructions.Play(self.pulse_op, channels.DriveChannel(1)) - - self.assertIsInstance(play.id, int) - self.assertEqual(play.name, self.pulse_op.name) - self.assertEqual(play.duration, self.duration) - self.assertEqual( - repr(play), - "Play(Waveform(array([1.+0.j, 1.+0.j, 1.+0.j, 1.+0.j]), name='test')," - " DriveChannel(1), name='test')", - ) - - def test_play_non_pulse_ch_raises(self): - """Test that play instruction on non-pulse channel raises a pulse error.""" - with self.assertRaises(exceptions.PulseError): - instructions.Play(self.pulse_op, channels.AcquireChannel(0)) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestDirectives(QiskitTestCase): - """Test pulse directives.""" - - def test_relative_barrier(self): - """Test the relative barrier directive.""" - a0 = channels.AcquireChannel(0) - d0 = channels.DriveChannel(0) - m0 = channels.MeasureChannel(0) - u0 = channels.ControlChannel(0) - mem0 = channels.MemorySlot(0) - reg0 = channels.RegisterSlot(0) - chans = (a0, d0, m0, u0, mem0, reg0) - name = "barrier" - barrier = instructions.RelativeBarrier(*chans, name=name) - - self.assertEqual(barrier.name, name) - self.assertEqual(barrier.duration, 0) - self.assertEqual(barrier.channels, chans) - self.assertEqual(barrier.operands, chans) diff --git a/test/python/pulse/test_parameter_manager.py b/test/python/pulse/test_parameter_manager.py deleted file mode 100644 index 32c0e5a9d907..000000000000 --- a/test/python/pulse/test_parameter_manager.py +++ /dev/null @@ -1,716 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021. -# -# 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. - -# pylint: disable=invalid-name - -"""Test cases for parameter manager.""" - -from copy import deepcopy -from unittest.mock import patch - -import ddt -import numpy as np - -from qiskit import pulse -from qiskit.circuit import Parameter, ParameterVector -from qiskit.pulse.exceptions import PulseError, UnassignedDurationError -from qiskit.pulse.parameter_manager import ParameterGetter, ParameterSetter -from qiskit.pulse.transforms import AlignEquispaced, AlignLeft, inline_subroutines -from qiskit.pulse.utils import format_parameter_value -from test import QiskitTestCase # pylint: disable=wrong-import-order -from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class ParameterTestBase(QiskitTestCase): - """A base class for parameter manager unittest, providing test schedule.""" - - @ignore_pulse_deprecation_warnings - def setUp(self): - """Just some useful, reusable Parameters, constants, schedules.""" - super().setUp() - - self.amp1_1 = Parameter("amp1_1") - self.amp1_2 = Parameter("amp1_2") - self.amp2 = Parameter("amp2") - self.amp3 = Parameter("amp3") - - self.dur1 = Parameter("dur1") - self.dur2 = Parameter("dur2") - self.dur3 = Parameter("dur3") - - self.parametric_waveform1 = pulse.Gaussian( - duration=self.dur1, amp=self.amp1_1 + self.amp1_2, sigma=self.dur1 / 4 - ) - - self.parametric_waveform2 = pulse.Gaussian( - duration=self.dur2, amp=self.amp2, sigma=self.dur2 / 5 - ) - - self.parametric_waveform3 = pulse.Gaussian( - duration=self.dur3, amp=self.amp3, sigma=self.dur3 / 6 - ) - - self.ch1 = Parameter("ch1") - self.ch2 = Parameter("ch2") - self.ch3 = Parameter("ch3") - - self.d1 = pulse.DriveChannel(self.ch1) - self.d2 = pulse.DriveChannel(self.ch2) - self.d3 = pulse.DriveChannel(self.ch3) - - self.phi1 = Parameter("phi1") - self.phi2 = Parameter("phi2") - self.phi3 = Parameter("phi3") - - self.meas_dur = Parameter("meas_dur") - self.mem1 = Parameter("s1") - self.reg1 = Parameter("m1") - - self.context_dur = Parameter("context_dur") - - # schedule under test - subroutine = pulse.ScheduleBlock(alignment_context=AlignLeft()) - subroutine += pulse.ShiftPhase(self.phi1, self.d1) - subroutine += pulse.Play(self.parametric_waveform1, self.d1) - - long_schedule = pulse.ScheduleBlock( - alignment_context=AlignEquispaced(self.context_dur), name="long_schedule" - ) - - long_schedule += subroutine - long_schedule += pulse.ShiftPhase(self.phi2, self.d2) - long_schedule += pulse.Play(self.parametric_waveform2, self.d2) - long_schedule += pulse.ShiftPhase(self.phi3, self.d3) - long_schedule += pulse.Play(self.parametric_waveform3, self.d3) - - long_schedule += pulse.Acquire( - self.meas_dur, - pulse.AcquireChannel(self.ch1), - mem_slot=pulse.MemorySlot(self.mem1), - reg_slot=pulse.RegisterSlot(self.reg1), - ) - - self.test_sched = long_schedule - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestParameterGetter(ParameterTestBase): - """Test getting parameters.""" - - def test_get_parameter_from_channel(self): - """Test get parameters from channel.""" - test_obj = pulse.DriveChannel(self.ch1 + self.ch2) - - visitor = ParameterGetter() - visitor.visit(test_obj) - - ref_params = {self.ch1, self.ch2} - - self.assertSetEqual(visitor.parameters, ref_params) - - def test_get_parameter_from_pulse(self): - """Test get parameters from pulse instruction.""" - test_obj = self.parametric_waveform1 - - visitor = ParameterGetter() - visitor.visit(test_obj) - - ref_params = {self.amp1_1, self.amp1_2, self.dur1} - - self.assertSetEqual(visitor.parameters, ref_params) - - def test_get_parameter_from_acquire(self): - """Test get parameters from acquire instruction.""" - test_obj = pulse.Acquire(16000, pulse.AcquireChannel(self.ch1), pulse.MemorySlot(self.ch1)) - - visitor = ParameterGetter() - visitor.visit(test_obj) - - ref_params = {self.ch1} - - self.assertSetEqual(visitor.parameters, ref_params) - - def test_get_parameter_from_inst(self): - """Test get parameters from instruction.""" - test_obj = pulse.ShiftPhase(self.phi1 + self.phi2, pulse.DriveChannel(0)) - - visitor = ParameterGetter() - visitor.visit(test_obj) - - ref_params = {self.phi1, self.phi2} - - self.assertSetEqual(visitor.parameters, ref_params) - - def test_with_function(self): - """Test ParameterExpressions formed trivially in a function.""" - - def get_shift(variable): - return variable - 1 - - test_obj = pulse.ShiftPhase(get_shift(self.phi1), self.d1) - - visitor = ParameterGetter() - visitor.visit(test_obj) - - ref_params = {self.phi1, self.ch1} - - self.assertSetEqual(visitor.parameters, ref_params) - - def test_get_parameter_from_alignment_context(self): - """Test get parameters from alignment context.""" - test_obj = AlignEquispaced(duration=self.context_dur + self.dur1) - - visitor = ParameterGetter() - visitor.visit(test_obj) - - ref_params = {self.context_dur, self.dur1} - - self.assertSetEqual(visitor.parameters, ref_params) - - def test_get_parameter_from_complex_schedule(self): - """Test get parameters from complicated schedule.""" - test_block = deepcopy(self.test_sched) - - visitor = ParameterGetter() - visitor.visit(test_block) - - self.assertEqual(len(visitor.parameters), 17) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestParameterSetter(ParameterTestBase): - """Test setting parameters.""" - - def test_set_parameter_to_channel(self): - """Test set parameters from channel.""" - test_obj = pulse.DriveChannel(self.ch1 + self.ch2) - - value_dict = {self.ch1: 1, self.ch2: 2} - - visitor = ParameterSetter(param_map=value_dict) - assigned = visitor.visit(test_obj) - - ref_obj = pulse.DriveChannel(3) - - self.assertEqual(assigned, ref_obj) - - def test_set_parameter_to_pulse(self): - """Test set parameters from pulse instruction.""" - test_obj = self.parametric_waveform1 - - value_dict = {self.amp1_1: 0.1, self.amp1_2: 0.2, self.dur1: 160} - - visitor = ParameterSetter(param_map=value_dict) - assigned = visitor.visit(test_obj) - - ref_obj = pulse.Gaussian(duration=160, amp=0.3, sigma=40) - - self.assertEqual(assigned, ref_obj) - - def test_set_parameter_to_acquire(self): - """Test set parameters to acquire instruction.""" - test_obj = pulse.Acquire(16000, pulse.AcquireChannel(self.ch1), pulse.MemorySlot(self.ch1)) - - value_dict = {self.ch1: 2} - - visitor = ParameterSetter(param_map=value_dict) - assigned = visitor.visit(test_obj) - - ref_obj = pulse.Acquire(16000, pulse.AcquireChannel(2), pulse.MemorySlot(2)) - - self.assertEqual(assigned, ref_obj) - - def test_set_parameter_to_inst(self): - """Test get parameters from instruction.""" - test_obj = pulse.ShiftPhase(self.phi1 + self.phi2, pulse.DriveChannel(0)) - - value_dict = {self.phi1: 0.123, self.phi2: 0.456} - - visitor = ParameterSetter(param_map=value_dict) - assigned = visitor.visit(test_obj) - - ref_obj = pulse.ShiftPhase(0.579, pulse.DriveChannel(0)) - - self.assertEqual(assigned, ref_obj) - - def test_with_function(self): - """Test ParameterExpressions formed trivially in a function.""" - - def get_shift(variable): - return variable - 1 - - test_obj = pulse.ShiftPhase(get_shift(self.phi1), self.d1) - - value_dict = {self.phi1: 2.0, self.ch1: 2} - - visitor = ParameterSetter(param_map=value_dict) - assigned = visitor.visit(test_obj) - - ref_obj = pulse.ShiftPhase(1.0, pulse.DriveChannel(2)) - - self.assertEqual(assigned, ref_obj) - - def test_set_parameter_to_alignment_context(self): - """Test get parameters from alignment context.""" - test_obj = AlignEquispaced(duration=self.context_dur + self.dur1) - - value_dict = {self.context_dur: 1000, self.dur1: 100} - - visitor = ParameterSetter(param_map=value_dict) - assigned = visitor.visit(test_obj) - - ref_obj = AlignEquispaced(duration=1100) - - self.assertEqual(assigned, ref_obj) - - def test_nested_assignment_partial_bind(self): - """Test nested schedule with call instruction. - Inline the schedule and partially bind parameters.""" - context = AlignEquispaced(duration=self.context_dur) - subroutine = pulse.ScheduleBlock(alignment_context=context) - subroutine += pulse.Play(self.parametric_waveform1, self.d1) - - nested_block = pulse.ScheduleBlock() - - nested_block += subroutine - - test_obj = pulse.ScheduleBlock() - test_obj += nested_block - - test_obj = inline_subroutines(test_obj) - - value_dict = {self.context_dur: 1000, self.dur1: 200, self.ch1: 1} - - visitor = ParameterSetter(param_map=value_dict) - assigned = visitor.visit(test_obj) - - ref_context = AlignEquispaced(duration=1000) - ref_subroutine = pulse.ScheduleBlock(alignment_context=ref_context) - ref_subroutine += pulse.Play( - pulse.Gaussian(200, self.amp1_1 + self.amp1_2, 50), pulse.DriveChannel(1) - ) - - ref_nested_block = pulse.ScheduleBlock() - ref_nested_block += ref_subroutine - - ref_obj = pulse.ScheduleBlock() - ref_obj += ref_nested_block - - self.assertEqual(assigned, ref_obj) - - def test_complex_valued_parameter(self): - """Test complex valued parameter can be casted to a complex value, - but raises PendingDeprecationWarning..""" - amp = Parameter("amp") - test_obj = pulse.Constant(duration=160, amp=1j * amp) - - value_dict = {amp: 0.1} - - visitor = ParameterSetter(param_map=value_dict) - with self.assertWarns(PendingDeprecationWarning): - assigned = visitor.visit(test_obj) - - self.assertEqual(assigned.amp, 0.1j) - - def test_complex_value_to_parameter(self): - """Test complex value can be assigned to parameter object, - but raises PendingDeprecationWarning.""" - amp = Parameter("amp") - test_obj = pulse.Constant(duration=160, amp=amp) - - value_dict = {amp: 0.1j} - - visitor = ParameterSetter(param_map=value_dict) - with self.assertWarns(PendingDeprecationWarning): - assigned = visitor.visit(test_obj) - - self.assertEqual(assigned.amp, 0.1j) - - def test_complex_parameter_expression(self): - """Test assignment of complex-valued parameter expression to parameter, - but raises PendingDeprecationWarning.""" - amp = Parameter("amp") - - mag = Parameter("A") - phi = Parameter("phi") - - test_obj = pulse.Constant(duration=160, amp=amp) - test_obj_copy = deepcopy(test_obj) - # generate parameter expression - value_dict = {amp: mag * np.exp(1j * phi)} - visitor = ParameterSetter(param_map=value_dict) - assigned = visitor.visit(test_obj) - - # generate complex value - value_dict = {mag: 0.1, phi: 0.5} - visitor = ParameterSetter(param_map=value_dict) - with self.assertWarns(PendingDeprecationWarning): - assigned = visitor.visit(assigned) - - # evaluated parameter expression: 0.0877582561890373 + 0.0479425538604203*I - value_dict = {amp: 0.1 * np.exp(0.5j)} - - visitor = ParameterSetter(param_map=value_dict) - with self.assertWarns(PendingDeprecationWarning): - ref_obj = visitor.visit(test_obj_copy) - self.assertEqual(assigned, ref_obj) - - def test_invalid_pulse_amplitude(self): - """Test that invalid parameters are still checked upon assignment.""" - amp = Parameter("amp") - - test_sched = pulse.ScheduleBlock() - test_sched.append( - pulse.Play( - pulse.Constant(160, amp=2 * amp), - pulse.DriveChannel(0), - ), - inplace=True, - ) - with self.assertRaises(PulseError): - test_sched.assign_parameters({amp: 0.6}, inplace=False) - - def test_disable_validation_parameter_assignment(self): - """Test that pulse validation can be disabled on the class level. - - Tests for representative examples. - """ - sig = Parameter("sigma") - test_sched = pulse.ScheduleBlock() - test_sched.append( - pulse.Play( - pulse.Gaussian(duration=100, amp=0.5, sigma=sig, angle=0.0), pulse.DriveChannel(0) - ), - inplace=True, - ) - with self.assertRaises(PulseError): - test_sched.assign_parameters({sig: -1.0}, inplace=False) - with patch( - "qiskit.pulse.library.symbolic_pulses.SymbolicPulse.disable_validation", new=True - ): - test_sched = pulse.ScheduleBlock() - test_sched.append( - pulse.Play( - pulse.Gaussian(duration=100, amp=0.5, sigma=sig, angle=0.0), - pulse.DriveChannel(0), - ), - inplace=True, - ) - binded_sched = test_sched.assign_parameters({sig: -1.0}, inplace=False) - self.assertLess(binded_sched.instructions[0][1].pulse.sigma, 0) - - def test_set_parameter_to_complex_schedule(self): - """Test get parameters from complicated schedule.""" - test_block = deepcopy(self.test_sched) - - value_dict = { - self.amp1_1: 0.1, - self.amp1_2: 0.2, - self.amp2: 0.3, - self.amp3: 0.4, - self.dur1: 100, - self.dur2: 125, - self.dur3: 150, - self.ch1: 0, - self.ch2: 2, - self.ch3: 4, - self.phi1: 1.0, - self.phi2: 2.0, - self.phi3: 3.0, - self.meas_dur: 300, - self.mem1: 3, - self.reg1: 0, - self.context_dur: 1000, - } - - visitor = ParameterSetter(param_map=value_dict) - assigned = visitor.visit(test_block) - - # create ref schedule - subroutine = pulse.ScheduleBlock(alignment_context=AlignLeft()) - subroutine += pulse.ShiftPhase(1.0, pulse.DriveChannel(0)) - subroutine += pulse.Play(pulse.Gaussian(100, 0.3, 25), pulse.DriveChannel(0)) - - ref_obj = pulse.ScheduleBlock(alignment_context=AlignEquispaced(1000), name="long_schedule") - - ref_obj += subroutine - ref_obj += pulse.ShiftPhase(2.0, pulse.DriveChannel(2)) - ref_obj += pulse.Play(pulse.Gaussian(125, 0.3, 25), pulse.DriveChannel(2)) - ref_obj += pulse.ShiftPhase(3.0, pulse.DriveChannel(4)) - ref_obj += pulse.Play(pulse.Gaussian(150, 0.4, 25), pulse.DriveChannel(4)) - - ref_obj += pulse.Acquire( - 300, pulse.AcquireChannel(0), pulse.MemorySlot(3), pulse.RegisterSlot(0) - ) - - self.assertEqual(assigned, ref_obj) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestAssignFromProgram(QiskitTestCase): - """Test managing parameters from programs. Parameter manager is implicitly called.""" - - def test_attribute_parameters(self): - """Test the ``parameter`` attributes.""" - sigma = Parameter("sigma") - amp = Parameter("amp") - - waveform = pulse.library.Gaussian(duration=128, sigma=sigma, amp=amp) - - block = pulse.ScheduleBlock() - block += pulse.Play(waveform, pulse.DriveChannel(10)) - - ref_set = {amp, sigma} - - self.assertSetEqual(set(block.parameters), ref_set) - - def test_parametric_pulses(self): - """Test Parametric Pulses with parameters determined by ParameterExpressions - in the Play instruction.""" - sigma = Parameter("sigma") - amp = Parameter("amp") - - waveform = pulse.library.Gaussian(duration=128, sigma=sigma, amp=amp) - - block = pulse.ScheduleBlock() - block += pulse.Play(waveform, pulse.DriveChannel(10)) - block.assign_parameters({amp: 0.2, sigma: 4}, inplace=True) - - self.assertEqual(block.blocks[0].pulse.amp, 0.2) - self.assertEqual(block.blocks[0].pulse.sigma, 4.0) - - def test_parametric_pulses_with_parameter_vector(self): - """Test Parametric Pulses with parameters determined by a ParameterVector - in the Play instruction.""" - param_vec = ParameterVector("param_vec", 3) - param = Parameter("param") - - waveform = pulse.library.Gaussian(duration=128, sigma=param_vec[0], amp=param_vec[1]) - - block = pulse.ScheduleBlock() - block += pulse.Play(waveform, pulse.DriveChannel(10)) - block += pulse.ShiftPhase(param_vec[2], pulse.DriveChannel(10)) - block1 = block.assign_parameters({param_vec: [4, 0.2, 0.1]}, inplace=False) - block2 = block.assign_parameters({param_vec: [4, param, 0.1]}, inplace=False) - self.assertEqual(block1.blocks[0].pulse.amp, 0.2) - self.assertEqual(block1.blocks[0].pulse.sigma, 4.0) - self.assertEqual(block1.blocks[1].phase, 0.1) - self.assertEqual(block2.blocks[0].pulse.amp, param) - self.assertEqual(block2.blocks[0].pulse.sigma, 4.0) - self.assertEqual(block2.blocks[1].phase, 0.1) - - sched = pulse.Schedule() - sched += pulse.Play(waveform, pulse.DriveChannel(10)) - sched += pulse.ShiftPhase(param_vec[2], pulse.DriveChannel(10)) - sched1 = sched.assign_parameters({param_vec: [4, 0.2, 0.1]}, inplace=False) - sched2 = sched.assign_parameters({param_vec: [4, param, 0.1]}, inplace=False) - self.assertEqual(sched1.instructions[0][1].pulse.amp, 0.2) - self.assertEqual(sched1.instructions[0][1].pulse.sigma, 4.0) - self.assertEqual(sched1.instructions[1][1].phase, 0.1) - self.assertEqual(sched2.instructions[0][1].pulse.amp, param) - self.assertEqual(sched2.instructions[0][1].pulse.sigma, 4.0) - self.assertEqual(sched2.instructions[1][1].phase, 0.1) - - def test_pulse_assignment_with_parameter_names(self): - """Test pulse assignment with parameter names.""" - sigma = Parameter("sigma") - amp = Parameter("amp") - param_vec = ParameterVector("param_vec", 2) - - waveform = pulse.library.Gaussian(duration=128, sigma=sigma, amp=amp) - waveform2 = pulse.library.Gaussian(duration=128, sigma=40, amp=amp) - block = pulse.ScheduleBlock() - block += pulse.Play(waveform, pulse.DriveChannel(10)) - block += pulse.Play(waveform2, pulse.DriveChannel(10)) - block += pulse.ShiftPhase(param_vec[0], pulse.DriveChannel(10)) - block += pulse.ShiftPhase(param_vec[1], pulse.DriveChannel(10)) - block1 = block.assign_parameters( - {"amp": 0.2, "sigma": 4, "param_vec": [3.14, 1.57]}, inplace=False - ) - - self.assertEqual(block1.blocks[0].pulse.amp, 0.2) - self.assertEqual(block1.blocks[0].pulse.sigma, 4.0) - self.assertEqual(block1.blocks[1].pulse.amp, 0.2) - self.assertEqual(block1.blocks[2].phase, 3.14) - self.assertEqual(block1.blocks[3].phase, 1.57) - - sched = pulse.Schedule() - sched += pulse.Play(waveform, pulse.DriveChannel(10)) - sched += pulse.Play(waveform2, pulse.DriveChannel(10)) - sched += pulse.ShiftPhase(param_vec[0], pulse.DriveChannel(10)) - sched += pulse.ShiftPhase(param_vec[1], pulse.DriveChannel(10)) - sched1 = sched.assign_parameters( - {"amp": 0.2, "sigma": 4, "param_vec": [3.14, 1.57]}, inplace=False - ) - - self.assertEqual(sched1.instructions[0][1].pulse.amp, 0.2) - self.assertEqual(sched1.instructions[0][1].pulse.sigma, 4.0) - self.assertEqual(sched1.instructions[1][1].pulse.amp, 0.2) - self.assertEqual(sched1.instructions[2][1].phase, 3.14) - self.assertEqual(sched1.instructions[3][1].phase, 1.57) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestScheduleTimeslots(QiskitTestCase): - """Test for edge cases of timing overlap on parametrized channels. - - Note that this test is dedicated to `Schedule` since `ScheduleBlock` implicitly - assigns instruction time t0 that doesn't overlap with existing instructions. - """ - - def test_overlapping_pulses(self): - """Test that an error is still raised when overlapping instructions are assigned.""" - param_idx = Parameter("q") - - schedule = pulse.Schedule() - schedule |= pulse.Play(pulse.Waveform([1, 1, 1, 1]), pulse.DriveChannel(param_idx)) - with self.assertRaises(PulseError): - schedule |= pulse.Play( - pulse.Waveform([0.5, 0.5, 0.5, 0.5]), pulse.DriveChannel(param_idx) - ) - - def test_overlapping_on_assignment(self): - """Test that assignment will catch against existing instructions.""" - param_idx = Parameter("q") - - schedule = pulse.Schedule() - schedule |= pulse.Play(pulse.Waveform([1, 1, 1, 1]), pulse.DriveChannel(1)) - schedule |= pulse.Play(pulse.Waveform([1, 1, 1, 1]), pulse.DriveChannel(param_idx)) - with self.assertRaises(PulseError): - schedule.assign_parameters({param_idx: 1}) - - def test_overlapping_on_expression_assigment_to_zero(self): - """Test constant*zero expression conflict.""" - param_idx = Parameter("q") - - schedule = pulse.Schedule() - schedule |= pulse.Play(pulse.Waveform([1, 1, 1, 1]), pulse.DriveChannel(param_idx)) - schedule |= pulse.Play(pulse.Waveform([1, 1, 1, 1]), pulse.DriveChannel(2 * param_idx)) - with self.assertRaises(PulseError): - schedule.assign_parameters({param_idx: 0}) - - def test_merging_upon_assignment(self): - """Test that schedule can match instructions on a channel.""" - param_idx = Parameter("q") - - schedule = pulse.Schedule() - schedule |= pulse.Play(pulse.Waveform([1, 1, 1, 1]), pulse.DriveChannel(1)) - schedule = schedule.insert( - 4, pulse.Play(pulse.Waveform([1, 1, 1, 1]), pulse.DriveChannel(param_idx)) - ) - schedule.assign_parameters({param_idx: 1}) - - self.assertEqual(schedule.ch_duration(pulse.DriveChannel(1)), 8) - self.assertEqual(schedule.channels, (pulse.DriveChannel(1),)) - - def test_overlapping_on_multiple_assignment(self): - """Test that assigning one qubit then another raises error when overlapping.""" - param_idx1 = Parameter("q1") - param_idx2 = Parameter("q2") - - schedule = pulse.Schedule() - schedule |= pulse.Play(pulse.Waveform([1, 1, 1, 1]), pulse.DriveChannel(param_idx1)) - schedule |= pulse.Play(pulse.Waveform([1, 1, 1, 1]), pulse.DriveChannel(param_idx2)) - schedule.assign_parameters({param_idx1: 2}) - - with self.assertRaises(PulseError): - schedule.assign_parameters({param_idx2: 2}) - - def test_cannot_build_schedule_with_unassigned_duration(self): - """Test we cannot build schedule with parameterized instructions""" - dur = Parameter("dur") - ch = pulse.DriveChannel(0) - - test_play = pulse.Play(pulse.Gaussian(dur, 0.1, dur / 4), ch) - - sched = pulse.Schedule() - with self.assertRaises(UnassignedDurationError): - sched.insert(0, test_play) - - -@ddt.ddt -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestFormatParameter(QiskitTestCase): - """Test format_parameter_value function.""" - - def test_format_unassigned(self): - """Format unassigned parameter expression.""" - p1 = Parameter("P1") - p2 = Parameter("P2") - expr = p1 + p2 - - self.assertEqual(format_parameter_value(expr), expr) - - def test_partly_unassigned(self): - """Format partly assigned parameter expression.""" - p1 = Parameter("P1") - p2 = Parameter("P2") - expr = (p1 + p2).assign(p1, 3.0) - - self.assertEqual(format_parameter_value(expr), expr) - - @ddt.data(1, 1.0, 1.00000000001, np.int64(1)) - def test_integer(self, value): - """Format integer parameter expression.""" - p1 = Parameter("P1") - expr = p1.assign(p1, value) - out = format_parameter_value(expr) - self.assertIsInstance(out, int) - self.assertEqual(out, 1) - - @ddt.data(1.2, np.float64(1.2)) - def test_float(self, value): - """Format float parameter expression.""" - p1 = Parameter("P1") - expr = p1.assign(p1, value) - out = format_parameter_value(expr) - self.assertIsInstance(out, float) - self.assertEqual(out, 1.2) - - @ddt.data(1.2 + 3.4j, np.complex128(1.2 + 3.4j)) - def test_complex(self, value): - """Format float parameter expression.""" - p1 = Parameter("P1") - expr = p1.assign(p1, value) - out = format_parameter_value(expr) - self.assertIsInstance(out, complex) - self.assertEqual(out, 1.2 + 3.4j) - - def test_complex_rounding_error(self): - """Format float parameter expression.""" - p1 = Parameter("P1") - expr = p1.assign(p1, 1.2 + 1j * 1e-20) - out = format_parameter_value(expr) - self.assertIsInstance(out, float) - self.assertEqual(out, 1.2) - - def test_builtin_float(self): - """Format float parameter expression.""" - expr = 1.23 - out = format_parameter_value(expr) - self.assertIsInstance(out, float) - self.assertEqual(out, 1.23) - - @ddt.data(15482812500000, 8465625000000, 4255312500000) - def test_edge_case(self, edge_case_val): - """Format integer parameter expression with - a particular integer number that causes rounding error at typecast.""" - - # Numbers to be tested here are chosen randomly. - # These numbers had caused mis-typecast into float before qiskit/#11972. - - p1 = Parameter("P1") - expr = p1.assign(p1, edge_case_val) - out = format_parameter_value(expr) - self.assertIsInstance(out, int) - self.assertEqual(out, edge_case_val) diff --git a/test/python/pulse/test_parser.py b/test/python/pulse/test_parser.py deleted file mode 100644 index d9a3f7dd9a7a..000000000000 --- a/test/python/pulse/test_parser.py +++ /dev/null @@ -1,234 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2019. -# -# 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. - -"""Parser Test.""" - -from qiskit.pulse.parser import parse_string_expr -from qiskit.pulse.exceptions import PulseError -from test import QiskitTestCase # pylint: disable=wrong-import-order -from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestInstructionToQobjConverter(QiskitTestCase): - """Expression parser test.""" - - def test_valid_expression1(self): - """Parsing valid expression.""" - - expr = "1+1*2*3.2+8*cos(0)**2" - parsed_expr = parse_string_expr(expr) - - self.assertEqual(parsed_expr.params, []) - self.assertEqual(parsed_expr(), 15.4 + 0j) - - def test_valid_expression2(self): - """Parsing valid expression.""" - - expr = "pi*2" - parsed_expr = parse_string_expr(expr) - - self.assertEqual(parsed_expr.params, []) - self.assertEqual(parsed_expr(), 6.283185307179586 + 0j) - - def test_valid_expression3(self): - """Parsing valid expression.""" - - expr = "-P1*cos(P2)" - parsed_expr = parse_string_expr(expr) - - self.assertEqual(parsed_expr.params, ["P1", "P2"]) - self.assertEqual(parsed_expr(P1=1.0, P2=2.0), 0.4161468365471424 + 0j) - - def test_valid_expression4(self): - """Parsing valid expression.""" - - expr = "-P1*P2*P3" - parsed_expr = parse_string_expr(expr) - - self.assertEqual(parsed_expr.params, ["P1", "P2", "P3"]) - self.assertEqual(parsed_expr(P1=1.0, P2=2.0, P3=3.0), -6.0 + 0j) - - def test_valid_expression5(self): - """Parsing valid expression.""" - - expr = "-(P1)" - parsed_expr = parse_string_expr(expr) - - self.assertEqual(parsed_expr.params, ["P1"]) - self.assertEqual(parsed_expr(P1=1.0), -1.0 + 0j) - - def test_valid_expression6(self): - """Parsing valid expression.""" - - expr = "-1.*P1" - parsed_expr = parse_string_expr(expr) - - self.assertEqual(parsed_expr.params, ["P1"]) - self.assertEqual(parsed_expr(P1=1.0), -1.0 + 0j) - - def test_valid_expression7(self): - """Parsing valid expression.""" - - expr = "-1.*P1*P2" - parsed_expr = parse_string_expr(expr) - - self.assertEqual(parsed_expr.params, ["P1", "P2"]) - self.assertEqual(parsed_expr(P1=1.0, P2=2.0), -2.0 + 0j) - - def test_valid_expression8(self): - """Parsing valid expression.""" - - expr = "P3-P2*(4+P1)" - parsed_expr = parse_string_expr(expr) - - self.assertEqual(parsed_expr.params, ["P1", "P2", "P3"]) - self.assertEqual(parsed_expr(P1=1, P2=2, P3=3), -7.0 + 0j) - - def test_invalid_expressions1(self): - """Parsing invalid expressions.""" - - expr = "2***2" - with self.assertRaises(PulseError): - parsed_expr = parse_string_expr(expr) - parsed_expr() - - def test_invalid_expressions2(self): - """Parsing invalid expressions.""" - - expr = "avdfd*3" - with self.assertRaises(PulseError): - parsed_expr = parse_string_expr(expr) - parsed_expr() - - def test_invalid_expressions3(self): - """Parsing invalid expressions.""" - - expr = "Cos(1+2)" - with self.assertRaises(PulseError): - parsed_expr = parse_string_expr(expr) - parsed_expr() - - def test_invalid_expressions4(self): - """Parsing invalid expressions.""" - - expr = "hello_world" - with self.assertRaises(PulseError): - parsed_expr = parse_string_expr(expr) - parsed_expr() - - def test_invalid_expressions5(self): - """Parsing invalid expressions.""" - - expr = "1.1.1.1" - with self.assertRaises(PulseError): - parsed_expr = parse_string_expr(expr) - parsed_expr() - - def test_invalid_expressions6(self): - """Parsing invalid expressions.""" - - expr = "abc.1" - with self.assertRaises(PulseError): - parsed_expr = parse_string_expr(expr) - parsed_expr() - - def test_malicious_expressions1(self): - """Parsing malicious expressions.""" - - expr = '__import__("sys").stdout.write("unsafe input.")' - with self.assertRaises(PulseError): - parsed_expr = parse_string_expr(expr) - parsed_expr() - - def test_malicious_expressions2(self): - """Parsing malicious expressions.""" - - expr = "INSERT INTO students VALUES (?,?)" - with self.assertRaises(PulseError): - parsed_expr = parse_string_expr(expr) - parsed_expr() - - def test_malicious_expressions3(self): - """Parsing malicious expressions.""" - - expr = "import math" - with self.assertRaises(PulseError): - parsed_expr = parse_string_expr(expr) - parsed_expr() - - def test_malicious_expressions4(self): - """Parsing malicious expressions.""" - - expr = "complex" - with self.assertRaises(PulseError): - parsed_expr = parse_string_expr(expr) - parsed_expr() - - def test_malicious_expressions5(self): - """Parsing malicious expressions.""" - - expr = "print(1.0)" - with self.assertRaises(PulseError): - parsed_expr = parse_string_expr(expr) - parsed_expr() - - def test_malicious_expressions6(self): - """Parsing malicious expressions.""" - - expr = 'eval("()._" + "_class_" + "_._" + "_bases_" + "_[0]")' - with self.assertRaises(PulseError): - parsed_expr = parse_string_expr(expr) - parsed_expr() - - def test_partial_binding(self): - """Test partial binding of parameters.""" - - expr = "P1 * P2 + P3 / P4 - P5" - - parsed_expr = parse_string_expr(expr, partial_binding=True) - self.assertEqual(parsed_expr.params, ["P1", "P2", "P3", "P4", "P5"]) - - bound_three = parsed_expr(P1=1, P2=2, P3=3) - self.assertEqual(bound_three.params, ["P4", "P5"]) - - self.assertEqual(bound_three(P4=4, P5=5), -2.25) - self.assertEqual(bound_three(4, 5), -2.25) - - bound_four = bound_three(P4=4) - self.assertEqual(bound_four.params, ["P5"]) - self.assertEqual(bound_four(P5=5), -2.25) - self.assertEqual(bound_four(5), -2.25) - - bound_four_new = bound_three(P4=40) - self.assertEqual(bound_four_new.params, ["P5"]) - self.assertEqual(bound_four_new(P5=5), -2.925) - self.assertEqual(bound_four_new(5), -2.925) - - def test_argument_duplication(self): - """Test duplication of *args and **kwargs.""" - - expr = "P1+P2" - parsed_expr = parse_string_expr(expr, partial_binding=True) - - with self.assertRaises(PulseError): - parsed_expr(1, P1=1) - - self.assertEqual(parsed_expr(1, P2=2), 3.0) - - def test_unexpected_argument(self): - """Test unexpected argument error.""" - expr = "P1+P2" - parsed_expr = parse_string_expr(expr, partial_binding=True) - - with self.assertRaises(PulseError): - parsed_expr(1, 2, P3=3) diff --git a/test/python/pulse/test_pulse_lib.py b/test/python/pulse/test_pulse_lib.py deleted file mode 100644 index fa60c2adb3e5..000000000000 --- a/test/python/pulse/test_pulse_lib.py +++ /dev/null @@ -1,899 +0,0 @@ -# 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. - -"""Unit tests for pulse waveforms.""" - -import unittest -from unittest.mock import patch -import numpy as np -import symengine as sym - -from qiskit.circuit import Parameter -from qiskit.pulse.library import ( - SymbolicPulse, - ScalableSymbolicPulse, - Waveform, - Constant, - Gaussian, - GaussianSquare, - GaussianSquareDrag, - gaussian_square_echo, - GaussianDeriv, - Drag, - Sin, - Cos, - Sawtooth, - Triangle, - Square, - Sech, - SechDeriv, -) -from qiskit.pulse import functional_pulse, PulseError -from test import QiskitTestCase # pylint: disable=wrong-import-order -from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestWaveform(QiskitTestCase): - """Waveform tests.""" - - def test_sample_pulse(self): - """Test pulse initialization.""" - n_samples = 100 - samples = np.linspace(0, 1.0, n_samples, dtype=np.complex128) - name = "test" - sample_pulse = Waveform(samples, name=name) - - self.assertEqual(sample_pulse.samples.dtype, np.complex128) - np.testing.assert_almost_equal(sample_pulse.samples, samples) - - self.assertEqual(sample_pulse.duration, n_samples) - self.assertEqual(sample_pulse.name, name) - - def test_waveform_hashing(self): - """Test waveform hashing.""" - n_samples = 100 - samples = np.linspace(0, 1.0, n_samples, dtype=np.complex128) - name = "test" - sample_pulse = Waveform(samples, name=name) - sample_pulse2 = Waveform(samples, name="test2") - - self.assertEqual({sample_pulse, sample_pulse2}, {sample_pulse}) - - def test_type_casting(self): - """Test casting of input samples to numpy array.""" - n_samples = 100 - samples_f64 = np.linspace(0, 1.0, n_samples, dtype=np.float64) - - sample_pulse_f64 = Waveform(samples_f64) - self.assertEqual(sample_pulse_f64.samples.dtype, np.complex128) - - samples_c64 = np.linspace(0, 1.0, n_samples, dtype=np.complex64) - - sample_pulse_c64 = Waveform(samples_c64) - self.assertEqual(sample_pulse_c64.samples.dtype, np.complex128) - - samples_list = np.linspace(0, 1.0, n_samples).tolist() - - sample_pulse_list = Waveform(samples_list) - self.assertEqual(sample_pulse_list.samples.dtype, np.complex128) - - def test_pulse_limits(self): - """Test that limits of pulse norm of one are enforced properly.""" - - # test norm is correct for complex128 numpy data - unit_pulse_c128 = np.exp(1j * 2 * np.pi * np.linspace(0, 1, 1000), dtype=np.complex128) - # test does not raise error - try: - Waveform(unit_pulse_c128) - except PulseError: - self.fail("Waveform incorrectly failed on approximately unit norm samples.") - - invalid_const = 1.1 - with self.assertRaises(PulseError): - Waveform(invalid_const * np.exp(1j * 2 * np.pi * np.linspace(0, 1, 1000))) - - with patch("qiskit.pulse.library.pulse.Pulse.limit_amplitude", new=False): - wave = Waveform(invalid_const * np.exp(1j * 2 * np.pi * np.linspace(0, 1, 1000))) - self.assertGreater(np.max(np.abs(wave.samples)), 1.0) - - # Test case where data is converted to python types with complex as a list - # with form [re, im] and back to a numpy array. - # This is how the transport layer handles samples in the qobj so it is important - # to test. - unit_pulse_c64 = np.exp(1j * 2 * np.pi * np.linspace(0, 1, 1000), dtype=np.complex64) - sample_components = np.stack( - np.transpose([np.real(unit_pulse_c64), np.imag(unit_pulse_c64)]) - ) - pulse_list = sample_components.tolist() - recombined_pulse = [sample[0] + sample[1] * 1j for sample in pulse_list] - - # test does not raise error - try: - Waveform(recombined_pulse) - except PulseError: - self.fail("Waveform incorrectly failed to approximately unit norm samples.") - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestSymbolicPulses(QiskitTestCase): - """Tests for all subclasses of SymbolicPulse.""" - - def test_construction(self): - """Test that symbolic pulses can be constructed without error.""" - Gaussian(duration=25, sigma=4, amp=0.5, angle=np.pi / 2) - GaussianSquare(duration=150, amp=0.2, sigma=8, width=140) - GaussianSquare(duration=150, amp=0.2, sigma=8, risefall_sigma_ratio=2.5) - Constant(duration=150, amp=0.5, angle=np.pi * 0.23) - Drag(duration=25, amp=0.6, sigma=7.8, beta=4, angle=np.pi * 0.54) - GaussianDeriv(duration=150, amp=0.2, sigma=8) - Sin(duration=25, amp=0.5, freq=0.1, phase=0.5, angle=0.5) - Cos(duration=30, amp=0.5, freq=0.1, phase=-0.5) - Sawtooth(duration=40, amp=0.5, freq=0.2, phase=3.14) - Triangle(duration=50, amp=0.5, freq=0.01, phase=0.5) - Square(duration=50, amp=0.5, freq=0.01, phase=0.5) - Sech(duration=50, amp=0.5, sigma=10) - Sech(duration=50, amp=0.5, sigma=10, zero_ends=False) - SechDeriv(duration=50, amp=0.5, sigma=10) - - def test_gauss_square_extremes(self): - """Test that the gaussian square pulse can build a gaussian.""" - duration = 125 - sigma = 4 - amp = 0.5 - angle = np.pi / 2 - gaus_square = GaussianSquare(duration=duration, sigma=sigma, amp=amp, width=0, angle=angle) - gaus = Gaussian(duration=duration, sigma=sigma, amp=amp, angle=angle) - np.testing.assert_almost_equal( - gaus_square.get_waveform().samples, gaus.get_waveform().samples - ) - gaus_square = GaussianSquare( - duration=duration, sigma=sigma, amp=amp, width=121, angle=angle - ) - const = Constant(duration=duration, amp=amp, angle=angle) - np.testing.assert_almost_equal( - gaus_square.get_waveform().samples[2:-2], const.get_waveform().samples[2:-2] - ) - - def test_gauss_square_passes_validation_after_construction(self): - """Test that parameter validation is consistent before and after construction. - - This previously used to raise an exception: see gh-7882.""" - pulse = GaussianSquare(duration=125, sigma=4, amp=0.5, width=100, angle=np.pi / 2) - pulse.validate_parameters() - - def test_gaussian_square_drag_pulse(self): - """Test that GaussianSquareDrag sample pulse matches expectations. - - Test that the real part of the envelop matches GaussianSquare and that - the rise and fall match Drag. - """ - risefall = 32 - sigma = 4 - amp = 0.5 - width = 100 - beta = 1 - duration = width + 2 * risefall - - gsd = GaussianSquareDrag(duration=duration, sigma=sigma, amp=amp, width=width, beta=beta) - gsd_samples = gsd.get_waveform().samples - - gs_pulse = GaussianSquare(duration=duration, sigma=sigma, amp=amp, width=width) - np.testing.assert_almost_equal( - np.real(gsd_samples), - np.real(gs_pulse.get_waveform().samples), - ) - gsd2 = GaussianSquareDrag( - duration=duration, - sigma=sigma, - amp=amp, - beta=beta, - risefall_sigma_ratio=risefall / sigma, - ) - np.testing.assert_almost_equal( - gsd_samples, - gsd2.get_waveform().samples, - ) - - drag_pulse = Drag(duration=2 * risefall, amp=amp, sigma=sigma, beta=beta) - np.testing.assert_almost_equal( - gsd_samples[:risefall], - drag_pulse.get_waveform().samples[:risefall], - ) - np.testing.assert_almost_equal( - gsd_samples[-risefall:], - drag_pulse.get_waveform().samples[-risefall:], - ) - - def test_gauss_square_drag_extreme(self): - """Test that the gaussian square drag pulse can build a drag pulse.""" - duration = 125 - sigma = 4 - amp = 0.5 - angle = 1.5 - beta = 1 - gsd = GaussianSquareDrag( - duration=duration, sigma=sigma, amp=amp, width=0, beta=beta, angle=angle - ) - drag = Drag(duration=duration, sigma=sigma, amp=amp, beta=beta, angle=angle) - np.testing.assert_almost_equal(gsd.get_waveform().samples, drag.get_waveform().samples) - - def test_gaussian_square_drag_validation(self): - """Test drag beta parameter validation.""" - - GaussianSquareDrag(duration=50, width=0, sigma=16, amp=1, beta=2) - GaussianSquareDrag(duration=50, width=0, sigma=16, amp=1, beta=4) - GaussianSquareDrag(duration=50, width=0, sigma=16, amp=0.5, beta=20) - GaussianSquareDrag(duration=50, width=0, sigma=16, amp=-1, beta=2) - GaussianSquareDrag(duration=50, width=0, sigma=16, amp=1, beta=-2) - GaussianSquareDrag(duration=50, width=0, sigma=16, amp=1, beta=6) - GaussianSquareDrag(duration=50, width=0, sigma=16, amp=-0.5, beta=25, angle=1.5) - with self.assertRaises(PulseError): - GaussianSquareDrag(duration=50, width=0, sigma=16, amp=1, beta=20) - with self.assertRaises(PulseError): - GaussianSquareDrag(duration=50, width=0, sigma=4, amp=0.8, beta=20) - with self.assertRaises(PulseError): - GaussianSquareDrag(duration=50, width=0, sigma=4, amp=0.8, beta=-20) - - def test_gaussian_square_echo_pulse(self): - """Test that gaussian_square_echo sample pulse matches expectations. - - Test that the real part of the envelop matches GaussianSquare with - given amplitude and phase active for half duration with another - GaussianSquare active for the other half duration with opposite - amplitude and a GaussianSquare active on the entire duration with - its own amplitude and phase - """ - risefall = 32 - sigma = 4 - amp = 0.5 - width = 100 - duration = width + 2 * risefall - active_amp = 0.1 - width_echo = (duration - 2 * (duration - width)) / 2 - - gse = gaussian_square_echo( - duration=duration, sigma=sigma, amp=amp, width=width, active_amp=active_amp - ) - gse_samples = gse.get_waveform().samples - - gs_echo_pulse_pos = GaussianSquare( - duration=duration / 2, sigma=sigma, amp=amp, width=width_echo - ) - gs_echo_pulse_neg = GaussianSquare( - duration=duration / 2, sigma=sigma, amp=-amp, width=width_echo - ) - gs_active_pulse = GaussianSquare( - duration=duration, sigma=sigma, amp=active_amp, width=width - ) - gs_echo_pulse_pos_samples = np.array( - gs_echo_pulse_pos.get_waveform().samples.tolist() + [0] * int(duration / 2) - ) - gs_echo_pulse_neg_samples = np.array( - [0] * int(duration / 2) + gs_echo_pulse_neg.get_waveform().samples.tolist() - ) - gs_active_pulse_samples = gs_active_pulse.get_waveform().samples - - np.testing.assert_almost_equal( - gse_samples, - gs_echo_pulse_pos_samples + gs_echo_pulse_neg_samples + gs_active_pulse_samples, - ) - - def test_gaussian_square_echo_active_amp_validation(self): - """Test gaussian square echo active amp parameter validation.""" - - gaussian_square_echo(duration=50, width=0, sigma=16, amp=0.1, active_amp=0.2) - gaussian_square_echo(duration=50, width=0, sigma=16, amp=0.1, active_amp=0.4) - gaussian_square_echo(duration=50, width=0, sigma=16, amp=0.5, active_amp=0.3) - gaussian_square_echo(duration=50, width=0, sigma=16, amp=-0.1, active_amp=0.2) - gaussian_square_echo(duration=50, width=0, sigma=16, amp=0.1, active_amp=-0.2) - gaussian_square_echo(duration=50, width=0, sigma=16, amp=0.1, active_amp=0.6) - gaussian_square_echo(duration=50, width=0, sigma=16, amp=-0.5, angle=1.5, active_amp=0.25) - with self.assertRaises(PulseError): - gaussian_square_echo(duration=50, width=0, sigma=16, amp=0.1, active_amp=1.1) - with self.assertRaises(PulseError): - gaussian_square_echo(duration=50, width=0, sigma=4, amp=-0.8, active_amp=-0.3) - - def test_drag_validation(self): - """Test drag parameter validation, specifically the beta validation.""" - duration = 25 - sigma = 4 - amp = 0.5 - angle = np.pi / 2 - beta = 1 - wf = Drag(duration=duration, sigma=sigma, amp=amp, beta=beta, angle=angle) - samples = wf.get_waveform().samples - self.assertTrue(max(np.abs(samples)) <= 1) - with self.assertRaises(PulseError): - wf = Drag(duration=duration, sigma=sigma, amp=1.2, beta=beta) - beta = sigma**2 - with self.assertRaises(PulseError): - wf = Drag(duration=duration, sigma=sigma, amp=amp, beta=beta, angle=angle) - # If sigma is high enough, side peaks fall out of range and norm restriction is met - sigma = 100 - wf = Drag(duration=duration, sigma=sigma, amp=amp, beta=beta, angle=angle) - - def test_drag_beta_validation(self): - """Test drag beta parameter validation.""" - - def check_drag(duration, sigma, amp, beta, angle=0): - wf = Drag(duration=duration, sigma=sigma, amp=amp, beta=beta, angle=angle) - samples = wf.get_waveform().samples - self.assertTrue(max(np.abs(samples)) <= 1) - - check_drag(duration=50, sigma=16, amp=1, beta=2) - check_drag(duration=50, sigma=16, amp=1, beta=4) - check_drag(duration=50, sigma=16, amp=0.5, beta=20) - check_drag(duration=50, sigma=16, amp=-1, beta=2) - check_drag(duration=50, sigma=16, amp=1, beta=-2) - check_drag(duration=50, sigma=16, amp=1, beta=6) - check_drag(duration=50, sigma=16, amp=0.5, beta=25, angle=-np.pi / 2) - with self.assertRaises(PulseError): - check_drag(duration=50, sigma=16, amp=1, beta=20) - with self.assertRaises(PulseError): - check_drag(duration=50, sigma=4, amp=0.8, beta=20) - with self.assertRaises(PulseError): - check_drag(duration=50, sigma=4, amp=0.8, beta=-20) - - def test_sin_pulse(self): - """Test that Sin creation""" - duration = 100 - amp = 0.5 - freq = 0.1 - phase = 0 - - Sin(duration=duration, amp=amp, freq=freq, phase=phase) - - with self.assertRaises(PulseError): - Sin(duration=duration, amp=amp, freq=5, phase=phase) - - def test_cos_pulse(self): - """Test that Cos creation""" - duration = 100 - amp = 0.5 - freq = 0.1 - phase = 0 - cos_pulse = Cos(duration=duration, amp=amp, freq=freq, phase=phase) - - shifted_sin_pulse = Sin(duration=duration, amp=amp, freq=freq, phase=phase + np.pi / 2) - np.testing.assert_almost_equal( - shifted_sin_pulse.get_waveform().samples, cos_pulse.get_waveform().samples - ) - with self.assertRaises(PulseError): - Cos(duration=duration, amp=amp, freq=5, phase=phase) - - def test_square_pulse(self): - """Test that Square pulse creation""" - duration = 100 - amp = 0.5 - freq = 0.1 - phase = 0.3 - Square(duration=duration, amp=amp, freq=freq, phase=phase) - - with self.assertRaises(PulseError): - Square(duration=duration, amp=amp, freq=5, phase=phase) - - def test_sawtooth_pulse(self): - """Test that Sawtooth pulse creation""" - duration = 100 - amp = 0.5 - freq = 0.1 - phase = 0.5 - sawtooth_pulse = Sawtooth(duration=duration, amp=amp, freq=freq, phase=phase) - - sawtooth_pulse_2 = Sawtooth(duration=duration, amp=amp, freq=freq, phase=phase + 2 * np.pi) - np.testing.assert_almost_equal( - sawtooth_pulse.get_waveform().samples, sawtooth_pulse_2.get_waveform().samples - ) - - with self.assertRaises(PulseError): - Sawtooth(duration=duration, amp=amp, freq=5, phase=phase) - - def test_triangle_pulse(self): - """Test that Triangle pulse creation""" - duration = 100 - amp = 0.5 - freq = 0.1 - phase = 0.5 - triangle_pulse = Triangle(duration=duration, amp=amp, freq=freq, phase=phase) - - triangle_pulse_2 = Triangle(duration=duration, amp=amp, freq=freq, phase=phase + 2 * np.pi) - np.testing.assert_almost_equal( - triangle_pulse.get_waveform().samples, triangle_pulse_2.get_waveform().samples - ) - - with self.assertRaises(PulseError): - Triangle(duration=duration, amp=amp, freq=5, phase=phase) - - def test_gaussian_deriv_pulse(self): - """Test that GaussianDeriv pulse creation""" - duration = 300 - amp = 0.5 - sigma = 100 - GaussianDeriv(duration=duration, amp=amp, sigma=sigma) - - with self.assertRaises(PulseError): - Sech(duration=duration, amp=amp, sigma=0) - - def test_sech_pulse(self): - """Test that Sech pulse creation""" - duration = 100 - amp = 0.5 - sigma = 10 - # Zero ends = True - Sech(duration=duration, amp=amp, sigma=sigma) - - # Zero ends = False - Sech(duration=duration, amp=amp, sigma=sigma, zero_ends=False) - - with self.assertRaises(PulseError): - Sech(duration=duration, amp=amp, sigma=-5) - - def test_sech_deriv_pulse(self): - """Test that SechDeriv pulse creation""" - duration = 100 - amp = 0.5 - sigma = 10 - SechDeriv(duration=duration, amp=amp, sigma=sigma) - - with self.assertRaises(PulseError): - SechDeriv(duration=duration, amp=amp, sigma=-5) - - def test_constant_samples(self): - """Test the constant pulse and its sampled construction.""" - amp = 0.6 - angle = np.pi * 0.7 - const = Constant(duration=150, amp=amp, angle=angle) - self.assertEqual(const.get_waveform().samples[0], amp * np.exp(1j * angle)) - self.assertEqual(len(const.get_waveform().samples), 150) - - def test_parameters(self): - """Test that the parameters can be extracted as a dict through the `parameters` - attribute.""" - drag = Drag(duration=25, amp=0.2, sigma=7.8, beta=4, angle=0.2) - self.assertEqual(set(drag.parameters.keys()), {"duration", "amp", "sigma", "beta", "angle"}) - const = Constant(duration=150, amp=1) - self.assertEqual(set(const.parameters.keys()), {"duration", "amp", "angle"}) - - def test_repr(self): - """Test the repr methods for symbolic pulses.""" - gaus = Gaussian(duration=25, amp=0.7, sigma=4, angle=0.3) - self.assertEqual(repr(gaus), "Gaussian(duration=25, sigma=4, amp=0.7, angle=0.3)") - gaus_square = GaussianSquare(duration=20, sigma=30, amp=1.0, width=3) - self.assertEqual( - repr(gaus_square), "GaussianSquare(duration=20, sigma=30, width=3, amp=1.0, angle=0.0)" - ) - gaus_square = GaussianSquare( - duration=20, sigma=30, amp=1.0, angle=0.2, risefall_sigma_ratio=0.1 - ) - self.assertEqual( - repr(gaus_square), - "GaussianSquare(duration=20, sigma=30, width=14.0, amp=1.0, angle=0.2)", - ) - gsd = GaussianSquareDrag(duration=20, sigma=30, amp=1.0, width=3, beta=1) - self.assertEqual( - repr(gsd), - "GaussianSquareDrag(duration=20, sigma=30, width=3, beta=1, amp=1.0, angle=0.0)", - ) - gsd = GaussianSquareDrag(duration=20, sigma=30, amp=1.0, risefall_sigma_ratio=0.1, beta=1) - self.assertEqual( - repr(gsd), - "GaussianSquareDrag(duration=20, sigma=30, width=14.0, beta=1, amp=1.0, angle=0.0)", - ) - gse = gaussian_square_echo(duration=20, sigma=30, amp=1.0, width=3) - self.assertEqual( - repr(gse), - ( - "gaussian_square_echo(duration=20, amp=1.0, angle=0.0, sigma=30, width=3," - " active_amp=0.0, active_angle=0.0)" - ), - ) - gse = gaussian_square_echo(duration=20, sigma=30, amp=1.0, risefall_sigma_ratio=0.1) - self.assertEqual( - repr(gse), - ( - "gaussian_square_echo(duration=20, amp=1.0, angle=0.0, sigma=30, width=14.0," - " active_amp=0.0, active_angle=0.0)" - ), - ) - drag = Drag(duration=5, amp=0.5, sigma=7, beta=1) - self.assertEqual(repr(drag), "Drag(duration=5, sigma=7, beta=1, amp=0.5, angle=0.0)") - const = Constant(duration=150, amp=0.1, angle=0.3) - self.assertEqual(repr(const), "Constant(duration=150, amp=0.1, angle=0.3)") - sin_pulse = Sin(duration=150, amp=0.1, angle=0.3, freq=0.2, phase=0) - self.assertEqual( - repr(sin_pulse), "Sin(duration=150, freq=0.2, phase=0, amp=0.1, angle=0.3)" - ) - cos_pulse = Cos(duration=150, amp=0.1, angle=0.3, freq=0.2, phase=0) - self.assertEqual( - repr(cos_pulse), "Cos(duration=150, freq=0.2, phase=0, amp=0.1, angle=0.3)" - ) - triangle_pulse = Triangle(duration=150, amp=0.1, angle=0.3, freq=0.2, phase=0) - self.assertEqual( - repr(triangle_pulse), "Triangle(duration=150, freq=0.2, phase=0, amp=0.1, angle=0.3)" - ) - sawtooth_pulse = Sawtooth(duration=150, amp=0.1, angle=0.3, freq=0.2, phase=0) - self.assertEqual( - repr(sawtooth_pulse), "Sawtooth(duration=150, freq=0.2, phase=0, amp=0.1, angle=0.3)" - ) - sech_pulse = Sech(duration=150, amp=0.1, angle=0.3, sigma=10) - self.assertEqual(repr(sech_pulse), "Sech(duration=150, sigma=10, amp=0.1, angle=0.3)") - sech_deriv_pulse = SechDeriv(duration=150, amp=0.1, angle=0.3, sigma=10) - self.assertEqual( - repr(sech_deriv_pulse), "SechDeriv(duration=150, sigma=10, amp=0.1, angle=0.3)" - ) - gaussian_deriv_pulse = GaussianDeriv(duration=150, amp=0.1, angle=0.3, sigma=10) - self.assertEqual( - repr(gaussian_deriv_pulse), "GaussianDeriv(duration=150, sigma=10, amp=0.1, angle=0.3)" - ) - - def test_param_validation(self): - """Test that symbolic pulse parameters are validated when initialized.""" - with self.assertRaises(PulseError): - Gaussian(duration=25, sigma=0, amp=0.5, angle=np.pi / 2) - with self.assertRaises(PulseError): - GaussianSquare(duration=150, amp=0.2, sigma=8) - with self.assertRaises(PulseError): - GaussianSquare(duration=150, amp=0.2, sigma=8, width=100, risefall_sigma_ratio=5) - with self.assertRaises(PulseError): - GaussianSquare(duration=150, amp=0.2, sigma=8, width=160) - with self.assertRaises(PulseError): - GaussianSquare(duration=150, amp=0.2, sigma=8, risefall_sigma_ratio=10) - - with self.assertRaises(PulseError): - GaussianSquareDrag(duration=150, amp=0.2, sigma=8, beta=1) - with self.assertRaises(PulseError): - GaussianSquareDrag(duration=150, amp=0.2, sigma=8, width=160, beta=1) - with self.assertRaises(PulseError): - GaussianSquareDrag(duration=150, amp=0.2, sigma=8, risefall_sigma_ratio=10, beta=1) - - with self.assertRaises(PulseError): - gaussian_square_echo( - duration=150, - amp=0.2, - sigma=8, - ) - with self.assertRaises(PulseError): - gaussian_square_echo(duration=150, amp=0.2, sigma=8, width=160) - with self.assertRaises(PulseError): - gaussian_square_echo(duration=150, amp=0.2, sigma=8, risefall_sigma_ratio=10) - - with self.assertRaises(PulseError): - Constant(duration=150, amp=1.5, angle=np.pi * 0.8) - with self.assertRaises(PulseError): - Drag(duration=25, amp=0.5, sigma=-7.8, beta=4, angle=np.pi / 3) - - def test_class_level_limit_amplitude(self): - """Test that the check for amplitude less than or equal to 1 can - be disabled on the class level. - - Tests for representative examples. - """ - with self.assertRaises(PulseError): - Gaussian(duration=100, sigma=1.0, amp=1.7, angle=np.pi * 1.1) - - with patch("qiskit.pulse.library.pulse.Pulse.limit_amplitude", new=False): - waveform = Gaussian(duration=100, sigma=1.0, amp=1.7, angle=np.pi * 1.1) - self.assertGreater(np.abs(waveform.amp), 1.0) - waveform = GaussianSquare(duration=100, sigma=1.0, amp=1.5, width=10, angle=np.pi / 5) - self.assertGreater(np.abs(waveform.amp), 1.0) - waveform = GaussianSquareDrag(duration=100, sigma=1.0, amp=1.1, beta=0.1, width=10) - self.assertGreater(np.abs(waveform.amp), 1.0) - - def test_class_level_disable_validation(self): - """Test that pulse validation can be disabled on the class level. - - Tests for representative examples. - """ - with self.assertRaises(PulseError): - Gaussian(duration=100, sigma=-1.0, amp=0.5, angle=np.pi * 1.1) - - with patch( - "qiskit.pulse.library.symbolic_pulses.SymbolicPulse.disable_validation", new=True - ): - waveform = Gaussian(duration=100, sigma=-1.0, amp=0.5, angle=np.pi * 1.1) - self.assertLess(waveform.sigma, 0) - waveform = GaussianSquare(duration=100, sigma=1.0, amp=0.5, width=1000, angle=np.pi / 5) - self.assertGreater(waveform.width, waveform.duration) - waveform = GaussianSquareDrag(duration=100, sigma=1.0, amp=1.1, beta=0.1, width=-1) - self.assertLess(waveform.width, 0) - - def test_gaussian_limit_amplitude_per_instance(self): - """Test limit amplitude option per Gaussian instance.""" - with self.assertRaises(PulseError): - Gaussian(duration=100, sigma=1.0, amp=1.6, angle=np.pi / 2.5) - - waveform = Gaussian( - duration=100, sigma=1.0, amp=1.6, angle=np.pi / 2.5, limit_amplitude=False - ) - self.assertGreater(np.abs(waveform.amp), 1.0) - - def test_gaussian_square_limit_amplitude_per_instance(self): - """Test limit amplitude option per GaussianSquare instance.""" - with self.assertRaises(PulseError): - GaussianSquare(duration=100, sigma=1.0, amp=1.5, width=10, angle=np.pi / 3) - - waveform = GaussianSquare( - duration=100, sigma=1.0, amp=1.5, width=10, angle=np.pi / 3, limit_amplitude=False - ) - self.assertGreater(np.abs(waveform.amp), 1.0) - - def test_gaussian_square_drag_limit_amplitude_per_instance(self): - """Test limit amplitude option per GaussianSquareDrag instance.""" - with self.assertRaises(PulseError): - GaussianSquareDrag(duration=100, sigma=1.0, amp=1.1, beta=0.1, width=10) - - waveform = GaussianSquareDrag( - duration=100, sigma=1.0, amp=1.1, beta=0.1, width=10, limit_amplitude=False - ) - self.assertGreater(np.abs(waveform.amp), 1.0) - - def test_gaussian_square_echo_limit_amplitude_per_instance(self): - """Test limit amplitude option per GaussianSquareEcho instance.""" - with self.assertRaises(PulseError): - gaussian_square_echo(duration=1000, sigma=4.0, amp=1.01, width=100) - - waveform = gaussian_square_echo( - duration=1000, sigma=4.0, amp=1.01, width=100, limit_amplitude=False - ) - self.assertGreater(np.abs(waveform.amp), 1.0) - - def test_drag_limit_amplitude_per_instance(self): - """Test limit amplitude option per DRAG instance.""" - with self.assertRaises(PulseError): - Drag(duration=100, sigma=1.0, beta=1.0, amp=1.8, angle=np.pi * 0.3) - - waveform = Drag( - duration=100, sigma=1.0, beta=1.0, amp=1.8, angle=np.pi * 0.3, limit_amplitude=False - ) - self.assertGreater(np.abs(waveform.amp), 1.0) - - def test_constant_limit_amplitude_per_instance(self): - """Test limit amplitude option per Constant instance.""" - with self.assertRaises(PulseError): - Constant(duration=100, amp=1.6, angle=0.5) - - waveform = Constant(duration=100, amp=1.6, angle=0.5, limit_amplitude=False) - self.assertGreater(np.abs(waveform.amp), 1.0) - - def test_sin_limit_amplitude_per_instance(self): - """Test limit amplitude option per Sin instance.""" - with self.assertRaises(PulseError): - Sin(duration=100, amp=1.1, phase=0) - - waveform = Sin(duration=100, amp=1.1, phase=0, limit_amplitude=False) - self.assertGreater(np.abs(waveform.amp), 1.0) - - def test_sawtooth_limit_amplitude_per_instance(self): - """Test limit amplitude option per Sawtooth instance.""" - with self.assertRaises(PulseError): - Sawtooth(duration=100, amp=1.1, phase=0) - - waveform = Sawtooth(duration=100, amp=1.1, phase=0, limit_amplitude=False) - self.assertGreater(np.abs(waveform.amp), 1.0) - - def test_triangle_limit_amplitude_per_instance(self): - """Test limit amplitude option per Triangle instance.""" - with self.assertRaises(PulseError): - Triangle(duration=100, amp=1.1, phase=0) - - waveform = Triangle(duration=100, amp=1.1, phase=0, limit_amplitude=False) - self.assertGreater(np.abs(waveform.amp), 1.0) - - def test_square_limit_amplitude_per_instance(self): - """Test limit amplitude option per Square instance.""" - with self.assertRaises(PulseError): - Square(duration=100, amp=1.1, phase=0) - - waveform = Square(duration=100, amp=1.1, phase=0, limit_amplitude=False) - self.assertGreater(np.abs(waveform.amp), 1.0) - - def test_gaussian_deriv_limit_amplitude_per_instance(self): - """Test limit amplitude option per GaussianDeriv instance.""" - with self.assertRaises(PulseError): - GaussianDeriv(duration=100, amp=5, sigma=1) - - waveform = GaussianDeriv(duration=100, amp=5, sigma=1, limit_amplitude=False) - self.assertGreater(np.abs(waveform.amp / waveform.sigma), np.exp(0.5)) - - def test_sech_limit_amplitude_per_instance(self): - """Test limit amplitude option per Sech instance.""" - with self.assertRaises(PulseError): - Sech(duration=100, amp=5, sigma=1) - - waveform = Sech(duration=100, amp=5, sigma=1, limit_amplitude=False) - self.assertGreater(np.abs(waveform.amp), 1.0) - - def test_sech_deriv_limit_amplitude_per_instance(self): - """Test limit amplitude option per SechDeriv instance.""" - with self.assertRaises(PulseError): - SechDeriv(duration=100, amp=5, sigma=1) - - waveform = SechDeriv(duration=100, amp=5, sigma=1, limit_amplitude=False) - self.assertGreater(np.abs(waveform.amp) / waveform.sigma, 2.0) - - def test_get_parameters(self): - """Test getting pulse parameters as attribute.""" - drag_pulse = Drag(duration=100, amp=0.1, sigma=40, beta=3) - self.assertEqual(drag_pulse.duration, 100) - self.assertEqual(drag_pulse.amp, 0.1) - self.assertEqual(drag_pulse.sigma, 40) - self.assertEqual(drag_pulse.beta, 3) - - with self.assertRaises(AttributeError): - _ = drag_pulse.non_existing_parameter - - def test_envelope_cache(self): - """Test speed up of instantiation with lambdify envelope cache.""" - drag_instance1 = Drag(duration=100, amp=0.1, sigma=40, beta=3) - drag_instance2 = Drag(duration=100, amp=0.1, sigma=40, beta=3) - self.assertTrue(drag_instance1._envelope_lam is drag_instance2._envelope_lam) - - def test_constraints_cache(self): - """Test speed up of instantiation with lambdify constraints cache.""" - drag_instance1 = Drag(duration=100, amp=0.1, sigma=40, beta=3) - drag_instance2 = Drag(duration=100, amp=0.1, sigma=40, beta=3) - self.assertTrue(drag_instance1._constraints_lam is drag_instance2._constraints_lam) - - def test_deepcopy(self): - """Test deep copying instance.""" - import copy - - drag = Drag(duration=100, amp=0.1, sigma=40, beta=3) - drag_copied = copy.deepcopy(drag) - - self.assertNotEqual(id(drag), id(drag_copied)) - - orig_wf = drag.get_waveform() - copied_wf = drag_copied.get_waveform() - - np.testing.assert_almost_equal(orig_wf.samples, copied_wf.samples) - - def test_fully_parametrized_pulse(self): - """Test instantiating a pulse with parameters.""" - amp = Parameter("amp") - duration = Parameter("duration") - sigma = Parameter("sigma") - beta = Parameter("beta") - - # doesn't raise an error - drag = Drag(duration=duration, amp=amp, sigma=sigma, beta=beta) - - with self.assertRaises(PulseError): - drag.get_waveform() - - # pylint: disable=invalid-name - def test_custom_pulse(self): - """Test defining a custom pulse which is not in the form of amp * F(t).""" - t, t1, t2, amp1, amp2 = sym.symbols("t, t1, t2, amp1, amp2") - envelope = sym.Piecewise((amp1, sym.And(t > t1, t < t2)), (amp2, sym.true)) - - custom_pulse = SymbolicPulse( - pulse_type="Custom", - duration=100, - parameters={"t1": 30, "t2": 80, "amp1": 0.1j, "amp2": -0.1}, - envelope=envelope, - ) - waveform = custom_pulse.get_waveform() - 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_gaussian_deprecated_type_check(self): - """Test isinstance check works with deprecation.""" - gaussian_pulse = Gaussian(160, 0.1, 40) - - self.assertTrue(isinstance(gaussian_pulse, SymbolicPulse)) - 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)) - 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)) - 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)) - self.assertFalse(isinstance(constant_pulse, Gaussian)) - self.assertFalse(isinstance(constant_pulse, GaussianSquare)) - self.assertFalse(isinstance(constant_pulse, Drag)) - self.assertTrue(isinstance(constant_pulse, Constant)) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestFunctionalPulse(QiskitTestCase): - """Waveform tests.""" - - # pylint: disable=invalid-name - def test_gaussian(self): - """Test gaussian pulse.""" - - @functional_pulse - def local_gaussian(duration, amp, t0, sig): - x = np.linspace(0, duration - 1, duration) - return amp * np.exp(-((x - t0) ** 2) / sig**2) - - pulse_wf_inst = local_gaussian(duration=10, amp=1, t0=5, sig=1, name="test_pulse") - _y = 1 * np.exp(-((np.linspace(0, 9, 10) - 5) ** 2) / 1**2) - - self.assertListEqual(list(pulse_wf_inst.samples), list(_y)) - - # check name - self.assertEqual(pulse_wf_inst.name, "test_pulse") - - # check duration - self.assertEqual(pulse_wf_inst.duration, 10) - - # pylint: disable=invalid-name - def test_variable_duration(self): - """Test generation of sample pulse with variable duration.""" - - @functional_pulse - def local_gaussian(duration, amp, t0, sig): - x = np.linspace(0, duration - 1, duration) - return amp * np.exp(-((x - t0) ** 2) / sig**2) - - _durations = np.arange(10, 15, 1) - - for _duration in _durations: - pulse_wf_inst = local_gaussian(duration=_duration, amp=1, t0=5, sig=1) - self.assertEqual(len(pulse_wf_inst.samples), _duration) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestScalableSymbolicPulse(QiskitTestCase): - """ScalableSymbolicPulse tests""" - - def test_scalable_comparison(self): - """Test equating of pulses""" - # amp,angle comparison - gaussian_negamp = Gaussian(duration=25, sigma=4, amp=-0.5, angle=0) - gaussian_piphase = Gaussian(duration=25, sigma=4, amp=0.5, angle=np.pi) - self.assertEqual(gaussian_negamp, gaussian_piphase) - - # Parameterized library pulses - amp = Parameter("amp") - gaussian1 = Gaussian(duration=25, sigma=4, amp=amp, angle=0) - gaussian2 = Gaussian(duration=25, sigma=4, amp=amp, angle=0) - self.assertEqual(gaussian1, gaussian2) - - # pulses with different parameters - gaussian1._params["sigma"] = 10 - self.assertNotEqual(gaussian1, gaussian2) - - def test_complex_amp_error(self): - """Test that initializing a pulse with complex amp raises an error""" - with self.assertRaises(PulseError): - ScalableSymbolicPulse("test", duration=100, amp=0.1j, angle=0.0) - - -if __name__ == "__main__": - unittest.main() diff --git a/test/python/pulse/test_reference.py b/test/python/pulse/test_reference.py deleted file mode 100644 index 94e4215d1b58..000000000000 --- a/test/python/pulse/test_reference.py +++ /dev/null @@ -1,641 +0,0 @@ -# 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 ScheduleBlock, builder -from qiskit.pulse.transforms import inline_subroutines -from test import QiskitTestCase # pylint: disable=wrong-import-order -from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -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_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}) - - self.assertEqual(sched_z1.parameters, sched_x1.parameters) - self.assertEqual(sched_z1.parameters, sched_y1.parameters) - - def test_refer_schedule_parameter_assignment(self): - """Test assigning to parameter in referenced 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}) - - assigned_z1 = sched_z1.assign_parameters({param: 0.5}, inplace=False) - - assigned_x1 = sched_x1.assign_parameters({param: 0.5}, inplace=False) - ref_assigned_y1 = ScheduleBlock() - ref_assigned_y1.append(assigned_x1) - ref_assigned_z1 = ScheduleBlock() - ref_assigned_z1.append(ref_assigned_y1) - - # Test that assignment was successful and resolved references - self.assertEqual(assigned_z1, ref_assigned_z1) - - # Test that inplace=False for sched_z1 also did not modify sched_z1 or subroutine sched_x1 - self.assertEqual(sched_z1.parameters, {param}) - self.assertEqual(sched_x1.parameters, {param}) - self.assertEqual(assigned_z1.parameters, set()) - - # Now test inplace=True - sched_z1.assign_parameters({param: 0.5}, inplace=True) - self.assertEqual(sched_z1, assigned_z1) - # assign_references copies the subroutine, so the original subschedule - # is still not modified here: - self.assertNotEqual(sched_x1, assigned_x1) - - 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") - - self.assertEqual(sched_z1.parameters, sched_x1.parameters) - self.assertEqual(sched_z1.parameters, sched_y1.parameters) - - 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 should 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_parameter_in_multiple_scope(self): - """Test that using parameter in multiple scopes causes no error""" - 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(sched_z1.parameters, {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}) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestSubroutineWithCXGate(QiskitTestCase): - """Test called program scope with practical example of building fully parametrized CX gate.""" - - @ignore_pulse_deprecation_warnings - 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 = {p.name for p in sched.parameters} - self.assertSetEqual(params, {"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 - ref_params = {self.cr_ch} | self.cr_sched.parameters | self.xp_sched.parameters - self.assertSetEqual(sched.parameters, 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) - - def test_cnot(self): - """Integration test with CNOT schedule construction.""" - # echoed 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") - - # 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) diff --git a/test/python/pulse/test_samplers.py b/test/python/pulse/test_samplers.py deleted file mode 100644 index 59a8805c0c06..000000000000 --- a/test/python/pulse/test_samplers.py +++ /dev/null @@ -1,96 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2019. -# -# 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 pulse function samplers.""" - -import numpy as np - -from qiskit.pulse import library -from qiskit.pulse.library import samplers -from test import QiskitTestCase # pylint: disable=wrong-import-order -from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings - - -def linear(times: np.ndarray, m: float, b: float = 0.1) -> np.ndarray: - """Linear test function - Args: - times: Input times. - m: Slope. - b: Intercept - Returns: - np.ndarray - """ - return m * times + b - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestSampler(QiskitTestCase): - """Test continuous pulse function samplers.""" - - def test_left_sampler(self): - """Test left sampler.""" - m = 0.1 - b = 0.1 - duration = 2 - left_linear_pulse_fun = samplers.left(linear) - reference = np.array([0.1, 0.2], dtype=complex) - - pulse = left_linear_pulse_fun(duration, m=m, b=b) - self.assertIsInstance(pulse, library.Waveform) - np.testing.assert_array_almost_equal(pulse.samples, reference) - - def test_right_sampler(self): - """Test right sampler.""" - m = 0.1 - b = 0.1 - duration = 2 - right_linear_pulse_fun = samplers.right(linear) - reference = np.array([0.2, 0.3], dtype=complex) - - pulse = right_linear_pulse_fun(duration, m=m, b=b) - self.assertIsInstance(pulse, library.Waveform) - np.testing.assert_array_almost_equal(pulse.samples, reference) - - def test_midpoint_sampler(self): - """Test midpoint sampler.""" - m = 0.1 - b = 0.1 - duration = 2 - midpoint_linear_pulse_fun = samplers.midpoint(linear) - reference = np.array([0.15, 0.25], dtype=complex) - - pulse = midpoint_linear_pulse_fun(duration, m=m, b=b) - self.assertIsInstance(pulse, library.Waveform) - np.testing.assert_array_almost_equal(pulse.samples, reference) - - def test_sampler_name(self): - """Test that sampler setting of pulse name works.""" - m = 0.1 - b = 0.1 - duration = 2 - left_linear_pulse_fun = samplers.left(linear) - - pulse = left_linear_pulse_fun(duration, m=m, b=b, name="test") - self.assertIsInstance(pulse, library.Waveform) - self.assertEqual(pulse.name, "test") - - def test_default_arg_sampler(self): - """Test that default arguments work with sampler.""" - m = 0.1 - duration = 2 - left_linear_pulse_fun = samplers.left(linear) - reference = np.array([0.1, 0.2], dtype=complex) - - pulse = left_linear_pulse_fun(duration, m=m) - self.assertIsInstance(pulse, library.Waveform) - np.testing.assert_array_almost_equal(pulse.samples, reference) diff --git a/test/python/pulse/test_schedule.py b/test/python/pulse/test_schedule.py deleted file mode 100644 index fa59b8353c19..000000000000 --- a/test/python/pulse/test_schedule.py +++ /dev/null @@ -1,469 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2017, 2019. -# -# 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 cases for the pulse schedule.""" -import unittest -from unittest.mock import patch - -import numpy as np - -from qiskit.pulse import ( - Play, - Waveform, - ShiftPhase, - Acquire, - Snapshot, - Delay, - Gaussian, - Drag, - GaussianSquare, - Constant, - functional_pulse, -) -from qiskit.pulse.channels import ( - MemorySlot, - DriveChannel, - ControlChannel, - AcquireChannel, - SnapshotChannel, - MeasureChannel, -) -from qiskit.pulse.exceptions import PulseError -from qiskit.pulse.schedule import Schedule, _overlaps, _find_insertion_index -from test import QiskitTestCase # pylint: disable=wrong-import-order -from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class BaseTestSchedule(QiskitTestCase): - """Schedule tests.""" - - @ignore_pulse_deprecation_warnings - def setUp(self): - super().setUp() - - @functional_pulse - def linear(duration, slope, intercept): - x = np.linspace(0, duration - 1, duration) - return slope * x + intercept - - self.linear = linear - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestScheduleBuilding(BaseTestSchedule): - """Test construction of schedules.""" - - def test_empty_schedule(self): - """Test empty schedule.""" - sched = Schedule() - self.assertEqual(0, sched.start_time) - self.assertEqual(0, sched.stop_time) - self.assertEqual(0, sched.duration) - self.assertEqual(0, len(sched)) - self.assertEqual((), sched.children) - self.assertEqual({}, sched.timeslots) - self.assertEqual([], list(sched.instructions)) - self.assertFalse(sched) - - def test_overlapping_schedules(self): - """Test overlapping schedules.""" - - def my_test_make_schedule(acquire: int, memoryslot: int, shift: int): - sched1 = Acquire(acquire, AcquireChannel(0), MemorySlot(memoryslot)) - sched2 = Acquire(acquire, AcquireChannel(1), MemorySlot(memoryslot)).shift(shift) - - return Schedule(sched1, sched2) - - self.assertIsInstance(my_test_make_schedule(4, 0, 4), Schedule) - self.assertRaisesRegex( - PulseError, r".*MemorySlot\(0\).*overlaps .*", my_test_make_schedule, 4, 0, 2 - ) - self.assertRaisesRegex( - PulseError, r".*MemorySlot\(1\).*overlaps .*", my_test_make_schedule, 4, 1, 0 - ) - - @patch("qiskit.utils.is_main_process", return_value=True) - def test_auto_naming(self, is_main_process_mock): - """Test that a schedule gets a default name, incremented per instance""" - - del is_main_process_mock - - sched_0 = Schedule() - sched_0_name_count = int(sched_0.name[len("sched") :]) - - sched_1 = Schedule() - sched_1_name_count = int(sched_1.name[len("sched") :]) - self.assertEqual(sched_1_name_count, sched_0_name_count + 1) - - sched_2 = Schedule() - sched_2_name_count = int(sched_2.name[len("sched") :]) - self.assertEqual(sched_2_name_count, sched_1_name_count + 1) - - def test_parametric_commands_in_sched(self): - """Test that schedules can be built with parametric commands.""" - sched = Schedule(name="test_parametric") - sched += Play(Gaussian(duration=25, sigma=4, amp=0.5, angle=np.pi / 2), DriveChannel(0)) - sched += Play(Drag(duration=25, amp=0.4, angle=0.5, sigma=7.8, beta=4), DriveChannel(1)) - sched += Play(Constant(duration=25, amp=1), DriveChannel(2)) - sched_duration = sched.duration - sched += ( - Play(GaussianSquare(duration=1500, amp=0.2, sigma=8, width=140), MeasureChannel(0)) - << sched_duration - ) - self.assertEqual(sched.duration, 1525) - self.assertTrue("sigma" in sched.instructions[0][1].pulse.parameters) - - def test_numpy_integer_input(self): - """Test that mixed integer duration types can build a schedule (#5754).""" - sched = Schedule() - sched += Delay(np.int32(25), DriveChannel(0)) - sched += Play(Constant(duration=30, amp=0.1), DriveChannel(0)) - self.assertEqual(sched.duration, 55) - - def test_negative_time_raises(self): - """Test that a negative time will raise an error.""" - sched = Schedule() - sched += Delay(1, DriveChannel(0)) - with self.assertRaises(PulseError): - sched.shift(-10) - - def test_shift_float_time_raises(self): - """Test that a floating time will raise an error with shift.""" - sched = Schedule() - sched += Delay(1, DriveChannel(0)) - with self.assertRaises(PulseError): - sched.shift(0.1) - - def test_insert_float_time_raises(self): - """Test that a floating time will raise an error with insert.""" - sched = Schedule() - sched += Delay(1, DriveChannel(0)) - with self.assertRaises(PulseError): - sched.insert(10.1, sched) - - def test_shift_unshift(self): - """Test shift and then unshifting of schedule""" - reference_sched = Schedule() - reference_sched += Delay(10, DriveChannel(0)) - shifted_sched = reference_sched.shift(10).shift(-10) - self.assertEqual(shifted_sched, reference_sched) - - def test_duration(self): - """Test schedule.duration.""" - reference_sched = Schedule() - reference_sched = reference_sched.insert(10, Delay(10, DriveChannel(0))) - reference_sched = reference_sched.insert(10, Delay(50, DriveChannel(1))) - reference_sched = reference_sched.insert(10, ShiftPhase(0.1, DriveChannel(0))) - - reference_sched = reference_sched.insert(100, ShiftPhase(0.1, DriveChannel(1))) - - self.assertEqual(reference_sched.duration, 100) - self.assertEqual(reference_sched.duration, 100) - - def test_ch_duration(self): - """Test schedule.ch_duration.""" - reference_sched = Schedule() - reference_sched = reference_sched.insert(10, Delay(10, DriveChannel(0))) - reference_sched = reference_sched.insert(10, Delay(50, DriveChannel(1))) - reference_sched = reference_sched.insert(10, ShiftPhase(0.1, DriveChannel(0))) - - reference_sched = reference_sched.insert(100, ShiftPhase(0.1, DriveChannel(1))) - - self.assertEqual(reference_sched.ch_duration(DriveChannel(0)), 20) - self.assertEqual(reference_sched.ch_duration(DriveChannel(1)), 100) - self.assertEqual( - reference_sched.ch_duration(*reference_sched.channels), reference_sched.duration - ) - - def test_ch_start_time(self): - """Test schedule.ch_start_time.""" - reference_sched = Schedule() - reference_sched = reference_sched.insert(10, Delay(10, DriveChannel(0))) - reference_sched = reference_sched.insert(10, Delay(50, DriveChannel(1))) - reference_sched = reference_sched.insert(10, ShiftPhase(0.1, DriveChannel(0))) - - reference_sched = reference_sched.insert(100, ShiftPhase(0.1, DriveChannel(1))) - - self.assertEqual(reference_sched.ch_start_time(DriveChannel(0)), 10) - self.assertEqual(reference_sched.ch_start_time(DriveChannel(1)), 10) - - def test_ch_stop_time(self): - """Test schedule.ch_stop_time.""" - reference_sched = Schedule() - reference_sched = reference_sched.insert(10, Delay(10, DriveChannel(0))) - reference_sched = reference_sched.insert(10, Delay(50, DriveChannel(1))) - reference_sched = reference_sched.insert(10, ShiftPhase(0.1, DriveChannel(0))) - - reference_sched = reference_sched.insert(100, ShiftPhase(0.1, DriveChannel(1))) - - self.assertEqual(reference_sched.ch_stop_time(DriveChannel(0)), 20) - self.assertEqual(reference_sched.ch_stop_time(DriveChannel(1)), 100) - - def test_timeslots(self): - """Test schedule.timeslots.""" - reference_sched = Schedule() - reference_sched = reference_sched.insert(10, Delay(10, DriveChannel(0))) - reference_sched = reference_sched.insert(10, Delay(50, DriveChannel(1))) - reference_sched = reference_sched.insert(10, ShiftPhase(0.1, DriveChannel(0))) - - reference_sched = reference_sched.insert(100, ShiftPhase(0.1, DriveChannel(1))) - - self.assertEqual(reference_sched.timeslots[DriveChannel(0)], [(10, 10), (10, 20)]) - self.assertEqual(reference_sched.timeslots[DriveChannel(1)], [(10, 60), (100, 100)]) - - def test_inherit_from(self): - """Test creating schedule with another schedule.""" - ref_metadata = {"test": "value"} - ref_name = "test" - - base_sched = Schedule(name=ref_name, metadata=ref_metadata) - new_sched = Schedule.initialize_from(base_sched) - - self.assertEqual(new_sched.name, ref_name) - self.assertDictEqual(new_sched.metadata, ref_metadata) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestReplace(BaseTestSchedule): - """Test schedule replacement.""" - - def test_replace_instruction(self): - """Test replacement of simple instruction""" - old = Play(Constant(100, 1.0), DriveChannel(0)) - new = Play(Constant(100, 0.1), DriveChannel(0)) - - sched = Schedule(old) - new_sched = sched.replace(old, new) - - self.assertEqual(new_sched, Schedule(new)) - - # test replace inplace - sched.replace(old, new, inplace=True) - self.assertEqual(sched, Schedule(new)) - - def test_replace_schedule(self): - """Test replacement of schedule.""" - - old = Schedule( - Delay(10, DriveChannel(0)), - Delay(100, DriveChannel(1)), - ) - new = Schedule( - Play(Constant(10, 1.0), DriveChannel(0)), - Play(Constant(100, 0.1), DriveChannel(1)), - ) - const = Play(Constant(100, 1.0), DriveChannel(0)) - - sched = Schedule() - sched += const - sched += old - - new_sched = sched.replace(old, new) - - ref_sched = Schedule() - ref_sched += const - ref_sched += new - self.assertEqual(new_sched, ref_sched) - - # test replace inplace - sched.replace(old, new, inplace=True) - self.assertEqual(sched, ref_sched) - - def test_replace_fails_on_overlap(self): - """Test that replacement fails on overlap.""" - old = Play(Constant(20, 1.0), DriveChannel(0)) - new = Play(Constant(100, 0.1), DriveChannel(0)) - - sched = Schedule() - sched += old - sched += Delay(100, DriveChannel(0)) - - with self.assertRaises(PulseError): - sched.replace(old, new) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestDelay(BaseTestSchedule): - """Test Delay Instruction""" - - def setUp(self): - super().setUp() - self.delay_time = 10 - - def test_delay_snapshot_channel(self): - """Test Delay on DriveChannel""" - - snapshot_ch = SnapshotChannel() - snapshot = Snapshot(label="test") - # should pass as is an append - sched = Delay(self.delay_time, snapshot_ch) + snapshot - self.assertIsInstance(sched, Schedule) - # should fail due to overlap - with self.assertRaises(PulseError): - sched = Delay(self.delay_time, snapshot_ch) | snapshot << 5 - self.assertIsInstance(sched, Schedule) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestScheduleFilter(BaseTestSchedule): - """Test Schedule filtering methods""" - - def test_filter_exclude_name(self): - """Test the name of the schedules after applying filter and exclude functions.""" - sched = Schedule(name="test-schedule") - sched = sched.insert(10, Acquire(5, AcquireChannel(0), MemorySlot(0))) - sched = sched.insert(10, Acquire(5, AcquireChannel(1), MemorySlot(1))) - excluded = sched.exclude(channels=[AcquireChannel(0)]) - filtered = sched.filter(channels=[AcquireChannel(1)]) - - # check if the excluded and filtered schedule have the same name as sched - self.assertEqual(sched.name, filtered.name) - self.assertEqual(sched.name, excluded.name) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestScheduleEquality(BaseTestSchedule): - """Test equality of schedules.""" - - def test_different_channels(self): - """Test equality is False if different channels.""" - self.assertNotEqual( - Schedule(ShiftPhase(0, DriveChannel(0))), Schedule(ShiftPhase(0, DriveChannel(1))) - ) - - def test_same_time_equal(self): - """Test equal if instruction at same time.""" - - self.assertEqual( - Schedule((0, ShiftPhase(0, DriveChannel(1)))), - Schedule((0, ShiftPhase(0, DriveChannel(1)))), - ) - - def test_different_time_not_equal(self): - """Test that not equal if instruction at different time.""" - self.assertNotEqual( - Schedule((0, ShiftPhase(0, DriveChannel(1)))), - Schedule((1, ShiftPhase(0, DriveChannel(1)))), - ) - - def test_single_channel_out_of_order(self): - """Test that schedule with single channel equal when out of order.""" - instructions = [ - (0, ShiftPhase(0, DriveChannel(0))), - (15, Play(Waveform(np.ones(10)), DriveChannel(0))), - (5, Play(Waveform(np.ones(10)), DriveChannel(0))), - ] - - self.assertEqual(Schedule(*instructions), Schedule(*reversed(instructions))) - - def test_multiple_channels_out_of_order(self): - """Test that schedule with multiple channels equal when out of order.""" - instructions = [ - (0, ShiftPhase(0, DriveChannel(1))), - (1, Acquire(10, AcquireChannel(0), MemorySlot(1))), - ] - - self.assertEqual(Schedule(*instructions), Schedule(*reversed(instructions))) - - def test_same_commands_on_two_channels_at_same_time_out_of_order(self): - """Test that schedule with same commands on two channels at the same time equal - when out of order.""" - sched1 = Schedule() - sched1 = sched1.append(Delay(100, DriveChannel(1))) - sched1 = sched1.append(Delay(100, ControlChannel(1))) - sched2 = Schedule() - sched2 = sched2.append(Delay(100, ControlChannel(1))) - sched2 = sched2.append(Delay(100, DriveChannel(1))) - self.assertEqual(sched1, sched2) - - def test_different_name_equal(self): - """Test that names are ignored when checking equality.""" - - self.assertEqual( - Schedule((0, ShiftPhase(0, DriveChannel(1), name="fc1")), name="s1"), - Schedule((0, ShiftPhase(0, DriveChannel(1), name="fc2")), name="s2"), - ) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestTimingUtils(QiskitTestCase): - """Test the Schedule helper functions.""" - - def test_overlaps(self): - """Test the `_overlaps` function.""" - a = (0, 1) - b = (1, 4) - c = (2, 3) - d = (3, 5) - self.assertFalse(_overlaps(a, b)) - self.assertFalse(_overlaps(b, a)) - self.assertFalse(_overlaps(a, d)) - self.assertTrue(_overlaps(b, c)) - self.assertTrue(_overlaps(c, b)) - self.assertTrue(_overlaps(b, d)) - self.assertTrue(_overlaps(d, b)) - - def test_overlaps_zero_duration(self): - """Test the `_overlaps` function for intervals with duration zero.""" - a = 0 - b = 1 - self.assertFalse(_overlaps((a, a), (a, a))) - self.assertFalse(_overlaps((a, a), (a, b))) - self.assertFalse(_overlaps((a, b), (a, a))) - self.assertFalse(_overlaps((a, b), (b, b))) - self.assertFalse(_overlaps((b, b), (a, b))) - self.assertTrue(_overlaps((a, a + 2), (a + 1, a + 1))) - self.assertTrue(_overlaps((a + 1, a + 1), (a, a + 2))) - - def test_find_insertion_index(self): - """Test the `_find_insertion_index` function.""" - intervals = [(1, 2), (4, 5)] - self.assertEqual(_find_insertion_index(intervals, (2, 3)), 1) - self.assertEqual(_find_insertion_index(intervals, (3, 4)), 1) - self.assertEqual(intervals, [(1, 2), (4, 5)]) - intervals = [(1, 2), (4, 5), (6, 7)] - self.assertEqual(_find_insertion_index(intervals, (2, 3)), 1) - self.assertEqual(_find_insertion_index(intervals, (0, 1)), 0) - self.assertEqual(_find_insertion_index(intervals, (5, 6)), 2) - self.assertEqual(_find_insertion_index(intervals, (8, 9)), 3) - - longer_intervals = [(1, 2), (2, 3), (4, 5), (5, 6), (7, 9), (11, 11)] - self.assertEqual(_find_insertion_index(longer_intervals, (4, 4)), 2) - self.assertEqual(_find_insertion_index(longer_intervals, (5, 5)), 3) - self.assertEqual(_find_insertion_index(longer_intervals, (3, 4)), 2) - self.assertEqual(_find_insertion_index(longer_intervals, (3, 4)), 2) - - # test when two identical zero duration timeslots are present - intervals = [(0, 10), (73, 73), (73, 73), (90, 101)] - self.assertEqual(_find_insertion_index(intervals, (42, 73)), 1) - self.assertEqual(_find_insertion_index(intervals, (73, 81)), 3) - - def test_find_insertion_index_when_overlapping(self): - """Test that `_find_insertion_index` raises an error when the new_interval _overlaps.""" - intervals = [(10, 20), (44, 55), (60, 61), (80, 1000)] - with self.assertRaises(PulseError): - _find_insertion_index(intervals, (60, 62)) - with self.assertRaises(PulseError): - _find_insertion_index(intervals, (100, 1500)) - - intervals = [(0, 1), (10, 15)] - with self.assertRaises(PulseError): - _find_insertion_index(intervals, (7, 13)) - - def test_find_insertion_index_empty_list(self): - """Test that the insertion index is properly found for empty lists.""" - self.assertEqual(_find_insertion_index([], (0, 1)), 0) - - -if __name__ == "__main__": - unittest.main() diff --git a/test/python/pulse/test_transforms.py b/test/python/pulse/test_transforms.py deleted file mode 100644 index acf3dd5006ba..000000000000 --- a/test/python/pulse/test_transforms.py +++ /dev/null @@ -1,714 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2019. -# -# 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 cases for the pulse Schedule transforms.""" -import unittest -from typing import List, Set - -import numpy as np - -from qiskit import pulse -from qiskit.pulse import ( - Play, - Delay, - Schedule, - Waveform, - Drag, - Gaussian, - GaussianSquare, - Constant, -) -from qiskit.pulse import transforms, instructions -from qiskit.pulse.channels import ( - MemorySlot, - DriveChannel, - AcquireChannel, - RegisterSlot, - SnapshotChannel, -) -from qiskit.pulse.instructions import directives -from test import QiskitTestCase # pylint: disable=wrong-import-order -from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestAddImplicitAcquires(QiskitTestCase): - """Test the helper function which makes implicit acquires explicit.""" - - @ignore_pulse_deprecation_warnings - def test_multiple_acquires(self): - """Test for multiple acquires.""" - sched = pulse.Schedule() - acq_q0 = pulse.Acquire(1200, AcquireChannel(0), MemorySlot(0)) - sched += acq_q0 - sched += acq_q0 << sched.duration - sched = transforms.add_implicit_acquires(sched, meas_map=[[0]]) - self.assertEqual(sched.instructions, ((0, acq_q0), (2400, acq_q0))) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestPad(QiskitTestCase): - """Test padding of schedule with delays.""" - - def test_padding_empty_schedule(self): - """Test padding of empty schedule.""" - self.assertEqual(pulse.Schedule(), transforms.pad(pulse.Schedule())) - - def test_padding_schedule(self): - """Test padding schedule.""" - delay = 10 - sched = ( - Delay(delay, DriveChannel(0)).shift(10) - + Delay(delay, DriveChannel(0)).shift(10) - + Delay(delay, DriveChannel(1)).shift(10) - ) - - ref_sched = ( - sched # pylint: disable=unsupported-binary-operation - | Delay(delay, DriveChannel(0)) - | Delay(delay, DriveChannel(0)).shift(20) - | Delay(delay, DriveChannel(1)) - | Delay( # pylint: disable=unsupported-binary-operation - 2 * delay, DriveChannel(1) - ).shift(20) - ) - - self.assertEqual(transforms.pad(sched), ref_sched) - - def test_padding_schedule_inverse_order(self): - """Test padding schedule is insensitive to order in which commands were added. - - This test is the same as `test_adding_schedule` but the order by channel - in which commands were added to the schedule to be padded has been reversed. - """ - delay = 10 - sched = ( - Delay(delay, DriveChannel(1)).shift(10) - + Delay(delay, DriveChannel(0)).shift(10) - + Delay(delay, DriveChannel(0)).shift(10) - ) - - ref_sched = ( - sched # pylint: disable=unsupported-binary-operation - | Delay(delay, DriveChannel(0)) - | Delay(delay, DriveChannel(0)).shift(20) - | Delay(delay, DriveChannel(1)) - | Delay( # pylint: disable=unsupported-binary-operation - 2 * delay, DriveChannel(1) - ).shift(20) - ) - - self.assertEqual(transforms.pad(sched), ref_sched) - - def test_padding_until_less(self): - """Test padding until time that is less than schedule duration.""" - delay = 10 - - sched = Delay(delay, DriveChannel(0)).shift(10) + Delay(delay, DriveChannel(1)) - - ref_sched = sched | Delay(delay, DriveChannel(0)) | Delay(5, DriveChannel(1)).shift(10) - - self.assertEqual(transforms.pad(sched, until=15), ref_sched) - - def test_padding_until_greater(self): - """Test padding until time that is greater than schedule duration.""" - delay = 10 - - sched = Delay(delay, DriveChannel(0)).shift(10) + Delay(delay, DriveChannel(1)) - - ref_sched = ( - sched # pylint: disable=unsupported-binary-operation - | Delay(delay, DriveChannel(0)) - | Delay(30, DriveChannel(0)).shift(20) - | Delay(40, DriveChannel(1)).shift(10) # pylint: disable=unsupported-binary-operation - ) - - self.assertEqual(transforms.pad(sched, until=50), ref_sched) - - def test_padding_supplied_channels(self): - """Test padding of only specified channels.""" - delay = 10 - sched = Delay(delay, DriveChannel(0)).shift(10) + Delay(delay, DriveChannel(1)) - - ref_sched = sched | Delay(delay, DriveChannel(0)) | Delay(2 * delay, DriveChannel(2)) - - channels = [DriveChannel(0), DriveChannel(2)] - - self.assertEqual(transforms.pad(sched, channels=channels), ref_sched) - - def test_padding_less_than_sched_duration(self): - """Test that the until arg is respected even for less than the input schedule duration.""" - delay = 10 - sched = Delay(delay, DriveChannel(0)) + Delay(delay, DriveChannel(0)).shift(20) - ref_sched = sched | pulse.Delay(5, DriveChannel(0)).shift(10) - self.assertEqual(transforms.pad(sched, until=15), ref_sched) - - def test_padding_prepended_delay(self): - """Test that there is delay before the first instruction.""" - delay = 10 - sched = Delay(delay, DriveChannel(0)).shift(10) + Delay(delay, DriveChannel(0)) - - ref_sched = ( - Delay(delay, DriveChannel(0)) - + Delay(delay, DriveChannel(0)) - + Delay(delay, DriveChannel(0)) - ) - - self.assertEqual(transforms.pad(sched, until=30, inplace=True), ref_sched) - - def test_pad_no_delay_on_classical_io_channels(self): - """Test padding does not apply to classical IO channels.""" - delay = 10 - sched = ( - Delay(delay, MemorySlot(0)).shift(20) - + Delay(delay, RegisterSlot(0)).shift(10) - + Delay(delay, SnapshotChannel()) - ) - - ref_sched = ( - Delay(delay, MemorySlot(0)).shift(20) - + Delay(delay, RegisterSlot(0)).shift(10) - + Delay(delay, SnapshotChannel()) - ) - - self.assertEqual(transforms.pad(sched, until=15), ref_sched) - - -def get_pulse_ids(schedules: List[Schedule]) -> Set[int]: - """Returns ids of pulses used in Schedules.""" - ids = set() - for schedule in schedules: - for _, inst in schedule.instructions: - ids.add(inst.pulse.id) - return ids - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestCompressTransform(QiskitTestCase): - """Compress function test.""" - - def test_with_duplicates(self): - """Test compression of schedule.""" - schedule = Schedule() - drive_channel = DriveChannel(0) - schedule += Play(Waveform([0.0, 0.1]), drive_channel) - schedule += Play(Waveform([0.0, 0.1]), drive_channel) - - compressed_schedule = transforms.compress_pulses([schedule]) - original_pulse_ids = get_pulse_ids([schedule]) - compressed_pulse_ids = get_pulse_ids(compressed_schedule) - - self.assertEqual(len(compressed_pulse_ids), 1) - self.assertEqual(len(original_pulse_ids), 2) - self.assertTrue(next(iter(compressed_pulse_ids)) in original_pulse_ids) - - def test_sample_pulse_with_clipping(self): - """Test sample pulses with clipping.""" - schedule = Schedule() - drive_channel = DriveChannel(0) - schedule += Play(Waveform([0.0, 1.0]), drive_channel) - schedule += Play(Waveform([0.0, 1.001], epsilon=1e-3), drive_channel) - schedule += Play(Waveform([0.0, 1.0000000001]), drive_channel) - - compressed_schedule = transforms.compress_pulses([schedule]) - original_pulse_ids = get_pulse_ids([schedule]) - compressed_pulse_ids = get_pulse_ids(compressed_schedule) - - self.assertEqual(len(compressed_pulse_ids), 1) - self.assertEqual(len(original_pulse_ids), 3) - self.assertTrue(next(iter(compressed_pulse_ids)) in original_pulse_ids) - - def test_no_duplicates(self): - """Test with no pulse duplicates.""" - schedule = Schedule() - drive_channel = DriveChannel(0) - schedule += Play(Waveform([0.0, 1.0]), drive_channel) - schedule += Play(Waveform([0.0, 0.9]), drive_channel) - schedule += Play(Waveform([0.0, 0.3]), drive_channel) - - compressed_schedule = transforms.compress_pulses([schedule]) - original_pulse_ids = get_pulse_ids([schedule]) - compressed_pulse_ids = get_pulse_ids(compressed_schedule) - self.assertEqual(len(original_pulse_ids), len(compressed_pulse_ids)) - - def test_parametric_pulses_with_duplicates(self): - """Test with parametric pulses.""" - schedule = Schedule() - drive_channel = DriveChannel(0) - schedule += Play(Gaussian(duration=25, sigma=4, amp=0.5, angle=np.pi / 2), drive_channel) - schedule += Play(Gaussian(duration=25, sigma=4, amp=0.5, angle=np.pi / 2), drive_channel) - schedule += Play(GaussianSquare(duration=150, amp=0.2, sigma=8, width=140), drive_channel) - schedule += Play(GaussianSquare(duration=150, amp=0.2, sigma=8, width=140), drive_channel) - schedule += Play(Constant(duration=150, amp=0.5, angle=0.7), drive_channel) - schedule += Play(Constant(duration=150, amp=0.5, angle=0.7), drive_channel) - schedule += Play(Drag(duration=25, amp=0.4, angle=-0.3, sigma=7.8, beta=4), drive_channel) - schedule += Play(Drag(duration=25, amp=0.4, angle=-0.3, sigma=7.8, beta=4), drive_channel) - - compressed_schedule = transforms.compress_pulses([schedule]) - original_pulse_ids = get_pulse_ids([schedule]) - compressed_pulse_ids = get_pulse_ids(compressed_schedule) - self.assertEqual(len(original_pulse_ids), 8) - self.assertEqual(len(compressed_pulse_ids), 4) - - def test_parametric_pulses_with_no_duplicates(self): - """Test parametric pulses with no duplicates.""" - schedule = Schedule() - drive_channel = DriveChannel(0) - schedule += Play(Gaussian(duration=25, sigma=4, amp=0.5, angle=np.pi / 2), drive_channel) - schedule += Play(Gaussian(duration=25, sigma=4, amp=0.49, angle=np.pi / 2), drive_channel) - schedule += Play(GaussianSquare(duration=150, amp=0.2, sigma=8, width=140), drive_channel) - schedule += Play(GaussianSquare(duration=150, amp=0.19, sigma=8, width=140), drive_channel) - schedule += Play(Constant(duration=150, amp=0.5, angle=0.3), drive_channel) - schedule += Play(Constant(duration=150, amp=0.51, angle=0.3), drive_channel) - schedule += Play(Drag(duration=25, amp=0.5, angle=0.5, sigma=7.8, beta=4), drive_channel) - schedule += Play(Drag(duration=25, amp=0.5, angle=0.51, sigma=7.8, beta=4), drive_channel) - - compressed_schedule = transforms.compress_pulses([schedule]) - original_pulse_ids = get_pulse_ids([schedule]) - compressed_pulse_ids = get_pulse_ids(compressed_schedule) - self.assertEqual(len(original_pulse_ids), len(compressed_pulse_ids)) - - def test_with_different_channels(self): - """Test with different channels.""" - schedule = Schedule() - schedule += Play(Waveform([0.0, 0.1]), DriveChannel(0)) - schedule += Play(Waveform([0.0, 0.1]), DriveChannel(1)) - - compressed_schedule = transforms.compress_pulses([schedule]) - original_pulse_ids = get_pulse_ids([schedule]) - compressed_pulse_ids = get_pulse_ids(compressed_schedule) - self.assertEqual(len(original_pulse_ids), 2) - self.assertEqual(len(compressed_pulse_ids), 1) - - def test_sample_pulses_with_tolerance(self): - """Test sample pulses with tolerance.""" - schedule = Schedule() - schedule += Play(Waveform([0.0, 0.1001], epsilon=1e-3), DriveChannel(0)) - schedule += Play(Waveform([0.0, 0.1], epsilon=1e-3), DriveChannel(1)) - - compressed_schedule = transforms.compress_pulses([schedule]) - original_pulse_ids = get_pulse_ids([schedule]) - compressed_pulse_ids = get_pulse_ids(compressed_schedule) - self.assertEqual(len(original_pulse_ids), 2) - self.assertEqual(len(compressed_pulse_ids), 1) - - def test_multiple_schedules(self): - """Test multiple schedules.""" - schedules = [] - for _ in range(2): - schedule = Schedule() - drive_channel = DriveChannel(0) - schedule += Play(Waveform([0.0, 0.1]), drive_channel) - schedule += Play(Waveform([0.0, 0.1]), drive_channel) - schedule += Play(Waveform([0.0, 0.2]), drive_channel) - schedules.append(schedule) - - compressed_schedule = transforms.compress_pulses(schedules) - original_pulse_ids = get_pulse_ids(schedules) - compressed_pulse_ids = get_pulse_ids(compressed_schedule) - self.assertEqual(len(original_pulse_ids), 6) - self.assertEqual(len(compressed_pulse_ids), 2) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestAlignSequential(QiskitTestCase): - """Test sequential alignment transform.""" - - def test_align_sequential(self): - """Test sequential alignment without a barrier.""" - context = transforms.AlignSequential() - - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - - schedule = pulse.Schedule() - schedule.insert(1, instructions.Delay(3, d0), inplace=True) - schedule.insert(4, instructions.Delay(5, d1), inplace=True) - schedule.insert(12, instructions.Delay(7, d0), inplace=True) - schedule = context.align(schedule) - - reference = pulse.Schedule() - # d0 - reference.insert(0, instructions.Delay(3, d0), inplace=True) - reference.insert(8, instructions.Delay(7, d0), inplace=True) - # d1 - reference.insert(3, instructions.Delay(5, d1), inplace=True) - - self.assertEqual(schedule, reference) - - def test_align_sequential_with_barrier(self): - """Test sequential alignment with a barrier.""" - context = transforms.AlignSequential() - - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - - schedule = pulse.Schedule() - schedule.insert(1, instructions.Delay(3, d0), inplace=True) - schedule.append(directives.RelativeBarrier(d0, d1), inplace=True) - schedule.insert(4, instructions.Delay(5, d1), inplace=True) - schedule.insert(12, instructions.Delay(7, d0), inplace=True) - schedule = context.align(schedule) - - reference = pulse.Schedule() - reference.insert(0, instructions.Delay(3, d0), inplace=True) - reference.insert(3, directives.RelativeBarrier(d0, d1), inplace=True) - reference.insert(3, instructions.Delay(5, d1), inplace=True) - reference.insert(8, instructions.Delay(7, d0), inplace=True) - - self.assertEqual(schedule, reference) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestAlignLeft(QiskitTestCase): - """Test left alignment transform.""" - - def test_align_left(self): - """Test left alignment without a barrier.""" - context = transforms.AlignLeft() - - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - d2 = pulse.DriveChannel(2) - - schedule = pulse.Schedule() - schedule.insert(1, instructions.Delay(3, d0), inplace=True) - schedule.insert(17, instructions.Delay(11, d2), inplace=True) - - sched_grouped = pulse.Schedule() - sched_grouped += instructions.Delay(5, d1) - sched_grouped += instructions.Delay(7, d0) - schedule.append(sched_grouped, inplace=True) - schedule = context.align(schedule) - - reference = pulse.Schedule() - # d0 - reference.insert(0, instructions.Delay(3, d0), inplace=True) - reference.insert(3, instructions.Delay(7, d0), inplace=True) - # d1 - reference.insert(3, instructions.Delay(5, d1), inplace=True) - # d2 - reference.insert(0, instructions.Delay(11, d2), inplace=True) - - self.assertEqual(schedule, reference) - - def test_align_left_with_barrier(self): - """Test left alignment with a barrier.""" - context = transforms.AlignLeft() - - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - d2 = pulse.DriveChannel(2) - - schedule = pulse.Schedule() - schedule.insert(1, instructions.Delay(3, d0), inplace=True) - schedule.append(directives.RelativeBarrier(d0, d1, d2), inplace=True) - schedule.insert(17, instructions.Delay(11, d2), inplace=True) - - sched_grouped = pulse.Schedule() - sched_grouped += instructions.Delay(5, d1) - sched_grouped += instructions.Delay(7, d0) - schedule.append(sched_grouped, inplace=True) - schedule = transforms.remove_directives(context.align(schedule)) - - reference = pulse.Schedule() - # d0 - reference.insert(0, instructions.Delay(3, d0), inplace=True) - reference.insert(3, instructions.Delay(7, d0), inplace=True) - # d1 - reference = reference.insert(3, instructions.Delay(5, d1)) - # d2 - reference = reference.insert(3, instructions.Delay(11, d2)) - - self.assertEqual(schedule, reference) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestAlignRight(QiskitTestCase): - """Test right alignment transform.""" - - def test_align_right(self): - """Test right alignment without a barrier.""" - context = transforms.AlignRight() - - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - d2 = pulse.DriveChannel(2) - - schedule = pulse.Schedule() - schedule.insert(1, instructions.Delay(3, d0), inplace=True) - schedule.insert(17, instructions.Delay(11, d2), inplace=True) - - sched_grouped = pulse.Schedule() - sched_grouped.insert(2, instructions.Delay(5, d1), inplace=True) - sched_grouped += instructions.Delay(7, d0) - - schedule.append(sched_grouped, inplace=True) - schedule = context.align(schedule) - - reference = pulse.Schedule() - # d0 - reference.insert(1, instructions.Delay(3, d0), inplace=True) - reference.insert(4, instructions.Delay(7, d0), inplace=True) - # d1 - reference.insert(6, instructions.Delay(5, d1), inplace=True) - # d2 - reference.insert(0, instructions.Delay(11, d2), inplace=True) - self.assertEqual(schedule, reference) - - def test_align_right_with_barrier(self): - """Test right alignment with a barrier.""" - context = transforms.AlignRight() - - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - d2 = pulse.DriveChannel(2) - - schedule = pulse.Schedule() - schedule.insert(1, instructions.Delay(3, d0), inplace=True) - schedule.append(directives.RelativeBarrier(d0, d1, d2), inplace=True) - schedule.insert(17, instructions.Delay(11, d2), inplace=True) - - sched_grouped = pulse.Schedule() - sched_grouped.insert(2, instructions.Delay(5, d1), inplace=True) - sched_grouped += instructions.Delay(7, d0) - - schedule.append(sched_grouped, inplace=True) - schedule = transforms.remove_directives(context.align(schedule)) - - reference = pulse.Schedule() - # d0 - reference.insert(0, instructions.Delay(3, d0), inplace=True) - reference.insert(7, instructions.Delay(7, d0), inplace=True) - # d1 - reference.insert(9, instructions.Delay(5, d1), inplace=True) - # d2 - reference.insert(3, instructions.Delay(11, d2), inplace=True) - - self.assertEqual(schedule, reference) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestAlignEquispaced(QiskitTestCase): - """Test equispaced alignment transform.""" - - def test_equispaced_with_short_duration(self): - """Test equispaced context with duration shorter than the schedule duration.""" - context = transforms.AlignEquispaced(duration=20) - - d0 = pulse.DriveChannel(0) - - schedule = pulse.Schedule() - for _ in range(3): - schedule.append(Delay(10, d0), inplace=True) - schedule = context.align(schedule) - - reference = pulse.Schedule() - reference.insert(0, Delay(10, d0), inplace=True) - reference.insert(10, Delay(10, d0), inplace=True) - reference.insert(20, Delay(10, d0), inplace=True) - - self.assertEqual(schedule, reference) - - def test_equispaced_with_longer_duration(self): - """Test equispaced context with duration longer than the schedule duration.""" - context = transforms.AlignEquispaced(duration=50) - - d0 = pulse.DriveChannel(0) - - schedule = pulse.Schedule() - for _ in range(3): - schedule.append(Delay(10, d0), inplace=True) - schedule = context.align(schedule) - - reference = pulse.Schedule() - reference.insert(0, Delay(10, d0), inplace=True) - reference.insert(20, Delay(10, d0), inplace=True) - reference.insert(40, Delay(10, d0), inplace=True) - - self.assertEqual(schedule, reference) - - def test_equispaced_with_multiple_channels_short_duration(self): - """Test equispaced context with multiple channels and duration shorter than the total - duration.""" - context = transforms.AlignEquispaced(duration=20) - - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - - schedule = pulse.Schedule() - schedule.append(Delay(10, d0), inplace=True) - schedule.append(Delay(20, d1), inplace=True) - schedule = context.align(schedule) - - reference = pulse.Schedule() - reference.insert(0, Delay(10, d0), inplace=True) - reference.insert(0, Delay(20, d1), inplace=True) - - self.assertEqual(schedule, reference) - - def test_equispaced_with_multiple_channels_longer_duration(self): - """Test equispaced context with multiple channels and duration longer than the total - duration.""" - context = transforms.AlignEquispaced(duration=30) - - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - - schedule = pulse.Schedule() - schedule.append(Delay(10, d0), inplace=True) - schedule.append(Delay(20, d1), inplace=True) - schedule = context.align(schedule) - - reference = pulse.Schedule() - reference.insert(0, Delay(10, d0), inplace=True) - reference.insert(10, Delay(20, d1), inplace=True) - - self.assertEqual(schedule, reference) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestAlignFunc(QiskitTestCase): - """Test callback alignment transform.""" - - @staticmethod - def _position(ind): - """Returns 0.25, 0.5, 0.75 for ind = 1, 2, 3.""" - return ind / (3 + 1) - - def test_numerical_with_short_duration(self): - """Test numerical alignment context with duration shorter than the schedule duration.""" - context = transforms.AlignFunc(duration=20, func=self._position) - - d0 = pulse.DriveChannel(0) - - schedule = pulse.Schedule() - for _ in range(3): - schedule.append(Delay(10, d0), inplace=True) - schedule = context.align(schedule) - - reference = pulse.Schedule() - reference.insert(0, Delay(10, d0), inplace=True) - reference.insert(10, Delay(10, d0), inplace=True) - reference.insert(20, Delay(10, d0), inplace=True) - - self.assertEqual(schedule, reference) - - def test_numerical_with_longer_duration(self): - """Test numerical alignment context with duration longer than the schedule duration.""" - context = transforms.AlignFunc(duration=80, func=self._position) - - d0 = pulse.DriveChannel(0) - - schedule = pulse.Schedule() - for _ in range(3): - schedule.append(Delay(10, d0), inplace=True) - schedule = context.align(schedule) - - reference = pulse.Schedule() - reference.insert(15, Delay(10, d0), inplace=True) - reference.insert(35, Delay(10, d0), inplace=True) - reference.insert(55, Delay(10, d0), inplace=True) - - self.assertEqual(schedule, reference) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestFlatten(QiskitTestCase): - """Test flattening transform.""" - - def test_flatten(self): - """Test the flatten transform.""" - context_left = transforms.AlignLeft() - - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - - schedule = pulse.Schedule() - schedule += instructions.Delay(3, d0) - - grouped = pulse.Schedule() - grouped += instructions.Delay(5, d1) - grouped += instructions.Delay(7, d0) - # include a grouped schedule - grouped = schedule + grouped - - # flatten the schedule inline internal groups - flattened = transforms.flatten(grouped) - - # align all the instructions to the left after flattening - flattened = context_left.align(flattened) - grouped = context_left.align(grouped) - - reference = pulse.Schedule() - # d0 - reference.insert(0, instructions.Delay(3, d0), inplace=True) - reference.insert(3, instructions.Delay(7, d0), inplace=True) - # d1 - reference.insert(0, instructions.Delay(5, d1), inplace=True) - - self.assertEqual(flattened, reference) - self.assertNotEqual(grouped, reference) - - -class _TestDirective(directives.Directive): - """Pulse ``RelativeBarrier`` directive.""" - - def __init__(self, *channels): - """Test directive""" - super().__init__(operands=tuple(channels)) - - @property - def channels(self): - return self.operands - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestRemoveDirectives(QiskitTestCase): - """Test removing of directives.""" - - def test_remove_directives(self): - """Test that all directives are removed.""" - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - - schedule = pulse.Schedule() - schedule += _TestDirective(d0, d1) - schedule += instructions.Delay(3, d0) - schedule += _TestDirective(d0, d1) - schedule = transforms.remove_directives(schedule) - - reference = pulse.Schedule() - # d0 - reference += instructions.Delay(3, d0) - self.assertEqual(schedule, reference) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestRemoveTrivialBarriers(QiskitTestCase): - """Test scheduling transforms.""" - - def test_remove_trivial_barriers(self): - """Test that trivial barriers are properly removed.""" - schedule = pulse.Schedule() - schedule += directives.RelativeBarrier() - schedule += directives.RelativeBarrier(pulse.DriveChannel(0)) - schedule += directives.RelativeBarrier(pulse.DriveChannel(0), pulse.DriveChannel(1)) - schedule = transforms.remove_trivial_barriers(schedule) - - reference = pulse.Schedule() - reference += directives.RelativeBarrier(pulse.DriveChannel(0), pulse.DriveChannel(1)) - self.assertEqual(schedule, reference) - - -if __name__ == "__main__": - unittest.main() diff --git a/test/python/utils/test_parallel.py b/test/python/utils/test_parallel.py index f6de443b7b03..c1ef4a900863 100644 --- a/test/python/utils/test_parallel.py +++ b/test/python/utils/test_parallel.py @@ -13,13 +13,11 @@ """Tests for qiskit/tools/parallel""" import os import time -import warnings from unittest.mock import patch from qiskit.utils.parallel import get_platform_parallel_default, parallel_map from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit -from qiskit.pulse import Schedule from test import QiskitTestCase # pylint: disable=wrong-import-order @@ -36,13 +34,6 @@ def _build_simple_circuit(_): return qc -def _build_simple_schedule(_): - with warnings.catch_warnings(): - warnings.simplefilter("ignore", category=DeprecationWarning) - # `Schedule` is deprecated in Qiskit 1.3 - return Schedule() - - class TestGetPlatformParallelDefault(QiskitTestCase): """Tests get_parallel_default_for_platform.""" @@ -83,9 +74,3 @@ def test_parallel_circuit_names(self): out_circs = parallel_map(_build_simple_circuit, list(range(10))) names = [circ.name for circ in out_circs] self.assertEqual(len(names), len(set(names))) - - def test_parallel_schedule_names(self): - """Verify unique schedule names in parallel""" - out_schedules = parallel_map(_build_simple_schedule, list(range(10))) - names = [schedule.name for schedule in out_schedules] - self.assertEqual(len(names), len(set(names))) diff --git a/test/python/visualization/pulse_v2/__init__.py b/test/python/visualization/pulse_v2/__init__.py deleted file mode 100644 index ab9be8d4d857..000000000000 --- a/test/python/visualization/pulse_v2/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -# 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 for pulse visualization modules.""" diff --git a/test/python/visualization/pulse_v2/test_core.py b/test/python/visualization/pulse_v2/test_core.py deleted file mode 100644 index 8c677e554dd9..000000000000 --- a/test/python/visualization/pulse_v2/test_core.py +++ /dev/null @@ -1,387 +0,0 @@ -# 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. - -# pylint: disable=missing-function-docstring, unused-argument - -"""Tests for core modules of pulse drawer.""" - -import numpy as np -from qiskit import pulse -from qiskit.visualization.exceptions import VisualizationError -from qiskit.visualization.pulse_v2 import core, stylesheet, device_info, drawings, types, layouts -from test import QiskitTestCase # pylint: disable=wrong-import-order -from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestChart(QiskitTestCase): - """Tests for chart.""" - - @ignore_pulse_deprecation_warnings - def setUp(self) -> None: - super().setUp() - - self.style = stylesheet.QiskitPulseStyle() - self.device = device_info.OpenPulseBackendInfo( - name="test", - dt=1, - channel_frequency_map={ - pulse.DriveChannel(0): 5.0, - pulse.MeasureChannel(0): 7.0, - pulse.ControlChannel(0): 5.0, - }, - qubit_channel_map={ - 0: [ - pulse.DriveChannel(0), - pulse.MeasureChannel(0), - pulse.AcquireChannel(0), - pulse.ControlChannel(0), - ] - }, - ) - - # objects - self.short_pulse = drawings.LineData( - data_type=types.WaveformType.REAL, - xvals=[0, 0, 1, 4, 5, 5], - yvals=[0, 0.5, 0.5, 0.5, 0.5, 0], - channels=[pulse.DriveChannel(0)], - ) - self.long_pulse = drawings.LineData( - data_type=types.WaveformType.REAL, - xvals=[8, 8, 9, 19, 20, 20], - yvals=[0, 0.3, 0.3, 0.3, 0.3, 0], - channels=[pulse.DriveChannel(1)], - ) - self.abstract_hline = drawings.LineData( - data_type=types.LineType.BASELINE, - xvals=[types.AbstractCoordinate.LEFT, types.AbstractCoordinate.RIGHT], - yvals=[0, 0], - channels=[pulse.DriveChannel(0)], - ) - - def test_add_data(self): - """Test add data to chart.""" - fake_canvas = core.DrawerCanvas(stylesheet=self.style, device=self.device) - chart = core.Chart(parent=fake_canvas) - - chart.add_data(self.short_pulse) - self.assertEqual(len(chart._collections), 1) - - # the same pulse will be overwritten - chart.add_data(self.short_pulse) - self.assertEqual(len(chart._collections), 1) - - chart.add_data(self.long_pulse) - self.assertEqual(len(chart._collections), 2) - - def test_bind_coordinate(self): - """Test bind coordinate.""" - fake_canvas = core.DrawerCanvas(stylesheet=self.style, device=self.device) - fake_canvas.formatter = {"margin.left_percent": 0.1, "margin.right_percent": 0.1} - fake_canvas.time_range = (500, 2000) - - chart = core.Chart(parent=fake_canvas) - chart.vmin = -0.1 - chart.vmax = 0.5 - - # vertical - vline = [types.AbstractCoordinate.BOTTOM, types.AbstractCoordinate.TOP] - vals = chart._bind_coordinate(vline) - np.testing.assert_array_equal(vals, np.array([-0.1, 0.5])) - - # horizontal, margin is is considered - hline = [types.AbstractCoordinate.LEFT, types.AbstractCoordinate.RIGHT] - vals = chart._bind_coordinate(hline) - np.testing.assert_array_equal(vals, np.array([350.0, 2150.0])) - - def test_truncate(self): - """Test pulse truncation.""" - fake_canvas = core.DrawerCanvas(stylesheet=self.style, device=self.device) - fake_canvas.formatter = { - "margin.left_percent": 0, - "margin.right_percent": 0, - "axis_break.length": 20, - "axis_break.max_length": 10, - } - fake_canvas.time_range = (0, 20) - fake_canvas.time_breaks = [(5, 10)] - - chart = core.Chart(parent=fake_canvas) - - xvals = np.array([4, 5, 6, 7, 8, 9, 10, 11]) - yvals = np.array([1, 2, 3, 4, 5, 6, 7, 8]) - - new_xvals, new_yvals = chart._truncate_vectors(xvals, yvals) - - ref_xvals = np.array([4.0, 5.0, 5.0, 6.0]) - ref_yvals = np.array([1.0, 2.0, 7.0, 8.0]) - - np.testing.assert_array_almost_equal(new_xvals, ref_xvals) - np.testing.assert_array_almost_equal(new_yvals, ref_yvals) - - def test_truncate_multiple(self): - """Test pulse truncation.""" - fake_canvas = core.DrawerCanvas(stylesheet=self.style, device=self.device) - fake_canvas.formatter = { - "margin.left_percent": 0, - "margin.right_percent": 0, - "axis_break.length": 20, - "axis_break.max_length": 10, - } - fake_canvas.time_range = (2, 12) - fake_canvas.time_breaks = [(4, 7), (9, 11)] - - chart = core.Chart(parent=fake_canvas) - - xvals = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]) - yvals = np.array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]) - - new_xvals, new_yvals = chart._truncate_vectors(xvals, yvals) - - ref_xvals = np.array([2.0, 3.0, 4.0, 4.0, 5.0, 6.0, 6.0, 7.0]) - ref_yvals = np.array([1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]) - - np.testing.assert_array_almost_equal(new_xvals, ref_xvals) - np.testing.assert_array_almost_equal(new_yvals, ref_yvals) - - def test_visible(self): - """Test pulse truncation.""" - fake_canvas = core.DrawerCanvas(stylesheet=self.style, device=self.device) - fake_canvas.disable_chans = {pulse.DriveChannel(0)} - fake_canvas.disable_types = {types.WaveformType.REAL} - - chart = core.Chart(parent=fake_canvas) - - test_data = drawings.ElementaryData( - data_type=types.WaveformType.REAL, - xvals=np.array([0]), - yvals=np.array([0]), - channels=[pulse.DriveChannel(0)], - ) - self.assertFalse(chart._check_visible(test_data)) - - test_data = drawings.ElementaryData( - data_type=types.WaveformType.IMAG, - xvals=np.array([0]), - yvals=np.array([0]), - channels=[pulse.DriveChannel(0)], - ) - self.assertFalse(chart._check_visible(test_data)) - - test_data = drawings.ElementaryData( - data_type=types.WaveformType.IMAG, - xvals=np.array([0]), - yvals=np.array([0]), - channels=[pulse.DriveChannel(1)], - ) - self.assertTrue(chart._check_visible(test_data)) - - def test_update(self): - fake_canvas = core.DrawerCanvas(stylesheet=self.style, device=self.device) - fake_canvas.formatter = { - "margin.left_percent": 0, - "margin.right_percent": 0, - "axis_break.length": 20, - "axis_break.max_length": 10, - "control.auto_chart_scaling": True, - "general.vertical_resolution": 1e-6, - "general.max_scale": 10, - "channel_scaling.pos_spacing": 0.1, - "channel_scaling.neg_spacing": -0.1, - } - fake_canvas.time_range = (0, 20) - fake_canvas.time_breaks = [(10, 15)] - - chart = core.Chart(fake_canvas) - chart.add_data(self.short_pulse) - chart.add_data(self.long_pulse) - chart.add_data(self.abstract_hline) - chart.update() - - short_pulse = chart._output_dataset[self.short_pulse.data_key] - xref = np.array([0.0, 0.0, 1.0, 4.0, 5.0, 5.0]) - yref = np.array([0.0, 0.5, 0.5, 0.5, 0.5, 0.0]) - np.testing.assert_array_almost_equal(xref, short_pulse.xvals) - np.testing.assert_array_almost_equal(yref, short_pulse.yvals) - - long_pulse = chart._output_dataset[self.long_pulse.data_key] - xref = np.array([8.0, 8.0, 9.0, 10.0, 10.0, 14.0, 15.0, 15.0]) - yref = np.array([0.0, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.0]) - np.testing.assert_array_almost_equal(xref, long_pulse.xvals) - np.testing.assert_array_almost_equal(yref, long_pulse.yvals) - - abstract_hline = chart._output_dataset[self.abstract_hline.data_key] - xref = np.array([0.0, 10.0, 10.0, 15.0]) - yref = np.array([0.0, 0.0, 0.0, 0.0]) - np.testing.assert_array_almost_equal(xref, abstract_hline.xvals) - np.testing.assert_array_almost_equal(yref, abstract_hline.yvals) - - self.assertEqual(chart.vmax, 1.0) - self.assertEqual(chart.vmin, -0.1) - self.assertEqual(chart.scale, 2.0) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestDrawCanvas(QiskitTestCase): - """Tests for draw canvas.""" - - @ignore_pulse_deprecation_warnings - def setUp(self) -> None: - super().setUp() - self.style = stylesheet.QiskitPulseStyle() - self.device = device_info.OpenPulseBackendInfo( - name="test", - dt=1, - channel_frequency_map={ - pulse.DriveChannel(0): 5.0, - pulse.MeasureChannel(0): 7.0, - pulse.ControlChannel(0): 5.0, - }, - qubit_channel_map={ - 0: [ - pulse.DriveChannel(0), - pulse.MeasureChannel(0), - pulse.AcquireChannel(0), - pulse.ControlChannel(0), - ] - }, - ) - - self.sched = pulse.Schedule() - self.sched.insert( - 0, - pulse.Play(pulse.Waveform([0.0, 0.1, 0.2, 0.3, 0.4, 0.5]), pulse.DriveChannel(0)), - inplace=True, - ) - self.sched.insert( - 10, - pulse.Play(pulse.Waveform([0.5, 0.4, 0.3, 0.2, 0.1, 0.0]), pulse.DriveChannel(0)), - inplace=True, - ) - self.sched.insert( - 0, - pulse.Play(pulse.Waveform([0.3, 0.3, 0.3, 0.3, 0.3, 0.3]), pulse.DriveChannel(1)), - inplace=True, - ) - - def test_time_breaks(self): - """Test calculating time breaks.""" - canvas = core.DrawerCanvas(stylesheet=self.style, device=self.device) - canvas.formatter = { - "margin.left_percent": 0, - "margin.right_percent": 0, - "axis_break.length": 20, - "axis_break.max_length": 10, - } - canvas.layout = {"figure_title": layouts.empty_title} - canvas.time_breaks = [(10, 40), (60, 80)] - - canvas.time_range = (0, 100) - ref_breaks = [(10, 40), (60, 80)] - self.assertListEqual(canvas.time_breaks, ref_breaks) - - # break too large - canvas.time_range = (20, 30) - with self.assertRaises(VisualizationError): - _ = canvas.time_breaks - - # time range overlap - canvas.time_range = (15, 100) - ref_breaks = [(20, 40), (60, 80)] - self.assertListEqual(canvas.time_breaks, ref_breaks) - - # time range overlap - canvas.time_range = (30, 100) - ref_breaks = [(60, 80)] - self.assertListEqual(canvas.time_breaks, ref_breaks) - - # time range overlap - canvas.time_range = (0, 70) - ref_breaks = [(10, 40)] - self.assertListEqual(canvas.time_breaks, ref_breaks) - - # time range no overlap - canvas.time_range = (40, 60) - ref_breaks = [] - self.assertListEqual(canvas.time_breaks, ref_breaks) - - def test_time_range(self): - """Test calculating time range.""" - canvas = core.DrawerCanvas(stylesheet=self.style, device=self.device) - canvas.formatter = { - "margin.left_percent": 0.1, - "margin.right_percent": 0.1, - "axis_break.length": 20, - "axis_break.max_length": 10, - } - canvas.layout = {"figure_title": layouts.empty_title} - canvas.time_range = (0, 100) - - # no breaks - canvas.time_breaks = [] - ref_range = [-10.0, 110.0] - self.assertListEqual(list(canvas.time_range), ref_range) - - # with break - canvas.time_breaks = [(20, 40)] - ref_range = [-8.0, 108.0] - self.assertListEqual(list(canvas.time_range), ref_range) - - def chart_channel_map(self, **kwargs): - """Mock of chart channel mapper.""" - names = ["D0", "D1"] - chans = [[pulse.DriveChannel(0)], [pulse.DriveChannel(1)]] - - yield from zip(names, chans) - - def generate_dummy_obj(self, data: types.PulseInstruction, **kwargs): - dummy_obj = drawings.ElementaryData( - data_type="test", - xvals=np.arange(data.inst.pulse.duration), - yvals=data.inst.pulse.samples, - channels=[data.inst.channel], - ) - return [dummy_obj] - - def test_load_program(self): - """Test loading program.""" - canvas = core.DrawerCanvas(stylesheet=self.style, device=self.device) - canvas.formatter = { - "axis_break.length": 20, - "axis_break.max_length": 10, - "channel_scaling.drive": 5, - } - canvas.generator = { - "waveform": [self.generate_dummy_obj], - "frame": [], - "chart": [], - "snapshot": [], - "barrier": [], - } - canvas.layout = { - "chart_channel_map": self.chart_channel_map, - "figure_title": layouts.empty_title, - } - - canvas.load_program(self.sched) - - self.assertEqual(len(canvas.charts), 2) - - self.assertListEqual(canvas.charts[0].channels, [pulse.DriveChannel(0)]) - self.assertListEqual(canvas.charts[1].channels, [pulse.DriveChannel(1)]) - - self.assertEqual(len(canvas.charts[0]._collections), 2) - self.assertEqual(len(canvas.charts[1]._collections), 1) - - ref_scale = {pulse.DriveChannel(0): 5, pulse.DriveChannel(1): 5} - self.assertDictEqual(canvas.chan_scales, ref_scale) diff --git a/test/python/visualization/pulse_v2/test_drawings.py b/test/python/visualization/pulse_v2/test_drawings.py deleted file mode 100644 index d0766fc4f9bb..000000000000 --- a/test/python/visualization/pulse_v2/test_drawings.py +++ /dev/null @@ -1,210 +0,0 @@ -# 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. - -"""Tests for core modules of pulse drawer.""" - -from qiskit import pulse -from qiskit.visualization.pulse_v2 import drawings, types -from test import QiskitTestCase # pylint: disable=wrong-import-order -from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestDrawingObjects(QiskitTestCase): - """Tests for DrawingObjects.""" - - @ignore_pulse_deprecation_warnings - def setUp(self) -> None: - """Setup.""" - super().setUp() - - # bits - self.ch_d0 = [pulse.DriveChannel(0)] - self.ch_d1 = [pulse.DriveChannel(1)] - - # metadata - self.meta1 = {"val1": 0, "val2": 1} - self.meta2 = {"val1": 2, "val2": 3} - - # style data - self.style1 = {"property1": 0, "property2": 1} - self.style2 = {"property1": 2, "property2": 3} - - def test_line_data_equivalent(self): - """Test for LineData.""" - xs = [0, 1, 2] - ys = [3, 4, 5] - - data1 = drawings.LineData( - data_type="test", - xvals=xs, - yvals=ys, - channels=self.ch_d0, - meta=self.meta1, - ignore_scaling=True, - styles=self.style1, - ) - - data2 = drawings.LineData( - data_type="test", - xvals=xs, - yvals=ys, - channels=self.ch_d1, - meta=self.meta2, - ignore_scaling=True, - styles=self.style2, - ) - - self.assertEqual(data1, data2) - - def test_line_data_equivalent_with_abstract_coordinate(self): - """Test for LineData with abstract coordinate.""" - xs = [types.AbstractCoordinate.LEFT, types.AbstractCoordinate.RIGHT] - ys = [types.AbstractCoordinate.TOP, types.AbstractCoordinate.BOTTOM] - - data1 = drawings.LineData( - data_type="test", - xvals=xs, - yvals=ys, - channels=self.ch_d0, - meta=self.meta1, - ignore_scaling=True, - styles=self.style1, - ) - - data2 = drawings.LineData( - data_type="test", - xvals=xs, - yvals=ys, - channels=self.ch_d1, - meta=self.meta2, - ignore_scaling=True, - styles=self.style2, - ) - - self.assertEqual(data1, data2) - - def test_text_data(self): - """Test for TextData.""" - xs = [0] - ys = [1] - - data1 = drawings.TextData( - data_type="test", - xvals=xs, - yvals=ys, - text="test1", - latex=r"test_1", - channels=self.ch_d0, - meta=self.meta1, - ignore_scaling=True, - styles=self.style1, - ) - - data2 = drawings.TextData( - data_type="test", - xvals=xs, - yvals=ys, - text="test2", - latex=r"test_2", - channels=self.ch_d1, - meta=self.meta2, - ignore_scaling=True, - styles=self.style2, - ) - - self.assertEqual(data1, data2) - - def test_text_data_with_abstract_coordinate(self): - """Test for TextData with abstract coordinates.""" - xs = [types.AbstractCoordinate.RIGHT] - ys = [types.AbstractCoordinate.TOP] - - data1 = drawings.TextData( - data_type="test", - xvals=xs, - yvals=ys, - text="test1", - latex=r"test_1", - channels=self.ch_d0, - meta=self.meta1, - ignore_scaling=True, - styles=self.style1, - ) - - data2 = drawings.TextData( - data_type="test", - xvals=xs, - yvals=ys, - text="test2", - latex=r"test_2", - channels=self.ch_d1, - meta=self.meta2, - ignore_scaling=True, - styles=self.style2, - ) - - self.assertEqual(data1, data2) - - def test_box_data(self): - """Test for BoxData.""" - xs = [0, 1] - ys = [-1, 1] - - data1 = drawings.BoxData( - data_type="test", - xvals=xs, - yvals=ys, - channels=self.ch_d0, - meta=self.meta1, - ignore_scaling=True, - styles=self.style1, - ) - - data2 = drawings.BoxData( - data_type="test", - xvals=xs, - yvals=ys, - channels=self.ch_d1, - meta=self.meta2, - ignore_scaling=True, - styles=self.style2, - ) - - self.assertEqual(data1, data2) - - def test_box_data_with_abstract_coordinate(self): - """Test for BoxData with abstract coordinate.""" - xs = [types.AbstractCoordinate.LEFT, types.AbstractCoordinate.RIGHT] - ys = [types.AbstractCoordinate.BOTTOM, types.AbstractCoordinate.TOP] - - data1 = drawings.BoxData( - data_type="test", - xvals=xs, - yvals=ys, - channels=self.ch_d0, - meta=self.meta1, - ignore_scaling=True, - styles=self.style1, - ) - - data2 = drawings.BoxData( - data_type="test", - xvals=xs, - yvals=ys, - channels=self.ch_d1, - meta=self.meta2, - ignore_scaling=True, - styles=self.style2, - ) - - self.assertEqual(data1, data2) diff --git a/test/python/visualization/pulse_v2/test_events.py b/test/python/visualization/pulse_v2/test_events.py deleted file mode 100644 index 74fbf00f325c..000000000000 --- a/test/python/visualization/pulse_v2/test_events.py +++ /dev/null @@ -1,165 +0,0 @@ -# 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. - -"""Tests for core modules of pulse drawer.""" - -from qiskit import pulse, circuit -from qiskit.visualization.pulse_v2 import events -from test import QiskitTestCase # pylint: disable=wrong-import-order -from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestChannelEvents(QiskitTestCase): - """Tests for ChannelEvents.""" - - def test_parse_program(self): - """Test typical pulse program.""" - test_pulse = pulse.Gaussian(10, 0.1, 3) - - sched = pulse.Schedule() - sched = sched.insert(0, pulse.SetPhase(3.14, pulse.DriveChannel(0))) - sched = sched.insert(0, pulse.Play(test_pulse, pulse.DriveChannel(0))) - sched = sched.insert(10, pulse.ShiftPhase(-1.57, pulse.DriveChannel(0))) - sched = sched.insert(10, pulse.Play(test_pulse, pulse.DriveChannel(0))) - - ch_events = events.ChannelEvents.load_program(sched, pulse.DriveChannel(0)) - - # check waveform data - waveforms = list(ch_events.get_waveforms()) - inst_data0 = waveforms[0] - self.assertEqual(inst_data0.t0, 0) - self.assertEqual(inst_data0.frame.phase, 3.14) - self.assertEqual(inst_data0.frame.freq, 0) - self.assertEqual(inst_data0.inst, pulse.Play(test_pulse, pulse.DriveChannel(0))) - - inst_data1 = waveforms[1] - self.assertEqual(inst_data1.t0, 10) - self.assertEqual(inst_data1.frame.phase, 1.57) - self.assertEqual(inst_data1.frame.freq, 0) - self.assertEqual(inst_data1.inst, pulse.Play(test_pulse, pulse.DriveChannel(0))) - - # check frame data - frames = list(ch_events.get_frame_changes()) - inst_data0 = frames[0] - self.assertEqual(inst_data0.t0, 0) - self.assertEqual(inst_data0.frame.phase, 3.14) - self.assertEqual(inst_data0.frame.freq, 0) - self.assertListEqual(inst_data0.inst, [pulse.SetPhase(3.14, pulse.DriveChannel(0))]) - - inst_data1 = frames[1] - self.assertEqual(inst_data1.t0, 10) - self.assertEqual(inst_data1.frame.phase, -1.57) - self.assertEqual(inst_data1.frame.freq, 0) - self.assertListEqual(inst_data1.inst, [pulse.ShiftPhase(-1.57, pulse.DriveChannel(0))]) - - def test_multiple_frames_at_the_same_time(self): - """Test multiple frame instruction at the same time.""" - # shift phase followed by set phase - sched = pulse.Schedule() - sched = sched.insert(0, pulse.ShiftPhase(-1.57, pulse.DriveChannel(0))) - sched = sched.insert(0, pulse.SetPhase(3.14, pulse.DriveChannel(0))) - - ch_events = events.ChannelEvents.load_program(sched, pulse.DriveChannel(0)) - frames = list(ch_events.get_frame_changes()) - inst_data0 = frames[0] - self.assertAlmostEqual(inst_data0.frame.phase, 3.14) - - # set phase followed by shift phase - sched = pulse.Schedule() - sched = sched.insert(0, pulse.SetPhase(3.14, pulse.DriveChannel(0))) - sched = sched.insert(0, pulse.ShiftPhase(-1.57, pulse.DriveChannel(0))) - - ch_events = events.ChannelEvents.load_program(sched, pulse.DriveChannel(0)) - frames = list(ch_events.get_frame_changes()) - inst_data0 = frames[0] - self.assertAlmostEqual(inst_data0.frame.phase, 1.57) - - def test_frequency(self): - """Test parse frequency.""" - sched = pulse.Schedule() - sched = sched.insert(0, pulse.ShiftFrequency(1.0, pulse.DriveChannel(0))) - sched = sched.insert(5, pulse.SetFrequency(5.0, pulse.DriveChannel(0))) - - ch_events = events.ChannelEvents.load_program(sched, pulse.DriveChannel(0)) - ch_events.set_config(dt=0.1, init_frequency=3.0, init_phase=0) - frames = list(ch_events.get_frame_changes()) - - inst_data0 = frames[0] - self.assertAlmostEqual(inst_data0.frame.freq, 1.0) - - inst_data1 = frames[1] - self.assertAlmostEqual(inst_data1.frame.freq, 1.0) - - def test_parameterized_parametric_pulse(self): - """Test generating waveforms that are parameterized.""" - param = circuit.Parameter("amp") - - test_waveform = pulse.Play(pulse.Constant(10, param), pulse.DriveChannel(0)) - - ch_events = events.ChannelEvents( - waveforms={0: test_waveform}, frames={}, channel=pulse.DriveChannel(0) - ) - - pulse_inst = list(ch_events.get_waveforms())[0] - - self.assertTrue(pulse_inst.is_opaque) - self.assertEqual(pulse_inst.inst, test_waveform) - - def test_parameterized_frame_change(self): - """Test generating waveforms that are parameterized. - - Parameterized phase should be ignored when calculating waveform frame. - This is due to phase modulated representation of waveforms, - i.e. we cannot calculate the phase factor of waveform if the phase is unbound. - """ - param = circuit.Parameter("phase") - - test_fc1 = pulse.ShiftPhase(param, pulse.DriveChannel(0)) - test_fc2 = pulse.ShiftPhase(1.57, pulse.DriveChannel(0)) - test_waveform = pulse.Play(pulse.Constant(10, 0.1), pulse.DriveChannel(0)) - - ch_events = events.ChannelEvents( - waveforms={0: test_waveform}, - frames={0: [test_fc1, test_fc2]}, - channel=pulse.DriveChannel(0), - ) - - # waveform frame - pulse_inst = list(ch_events.get_waveforms())[0] - - self.assertFalse(pulse_inst.is_opaque) - self.assertEqual(pulse_inst.frame.phase, 1.57) - - # framechange - pulse_inst = list(ch_events.get_frame_changes())[0] - - self.assertTrue(pulse_inst.is_opaque) - self.assertEqual(pulse_inst.frame.phase, param + 1.57) - - def test_zero_duration_delay(self): - """Test generating waveforms that contains zero duration delay. - - Zero duration delay should be ignored. - """ - ch = pulse.DriveChannel(0) - - test_sched = pulse.Schedule() - test_sched += pulse.Play(pulse.Gaussian(160, 0.1, 40), ch) - test_sched += pulse.Delay(0, ch) - test_sched += pulse.Play(pulse.Gaussian(160, 0.1, 40), ch) - test_sched += pulse.Delay(1, ch) - test_sched += pulse.Play(pulse.Gaussian(160, 0.1, 40), ch) - - ch_events = events.ChannelEvents.load_program(test_sched, ch) - - self.assertEqual(len(list(ch_events.get_waveforms())), 4) diff --git a/test/python/visualization/pulse_v2/test_generators.py b/test/python/visualization/pulse_v2/test_generators.py deleted file mode 100644 index 749ec4ab3488..000000000000 --- a/test/python/visualization/pulse_v2/test_generators.py +++ /dev/null @@ -1,905 +0,0 @@ -# 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. - -# pylint: disable=invalid-name - -"""Tests for drawing object generation.""" - -import numpy as np - -from qiskit import pulse, circuit -from qiskit.visualization.pulse_v2 import drawings, types, stylesheet, device_info -from qiskit.visualization.pulse_v2.generators import barrier, chart, frame, snapshot, waveform -from test import QiskitTestCase # pylint: disable=wrong-import-order -from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings - - -def create_instruction(inst, phase, freq, t0, dt, is_opaque=False): - """A helper function to create InstructionTuple.""" - frame_info = types.PhaseFreqTuple(phase=phase, freq=freq) - return types.PulseInstruction(t0=t0, dt=dt, frame=frame_info, inst=inst, is_opaque=is_opaque) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestWaveformGenerators(QiskitTestCase): - """Tests for waveform generators.""" - - @ignore_pulse_deprecation_warnings - def setUp(self) -> None: - super().setUp() - style = stylesheet.QiskitPulseStyle() - self.formatter = style.formatter - self.device = device_info.OpenPulseBackendInfo( - name="test", - dt=1, - channel_frequency_map={ - pulse.DriveChannel(0): 5.0e9, - pulse.DriveChannel(1): 5.1e9, - pulse.MeasureChannel(0): 7.0e9, - pulse.MeasureChannel(1): 7.1e9, - pulse.ControlChannel(0): 5.0e9, - pulse.ControlChannel(1): 5.1e9, - }, - qubit_channel_map={ - 0: [ - pulse.DriveChannel(0), - pulse.MeasureChannel(0), - pulse.AcquireChannel(0), - pulse.ControlChannel(0), - ], - 1: [ - pulse.DriveChannel(1), - pulse.MeasureChannel(1), - pulse.AcquireChannel(1), - pulse.ControlChannel(1), - ], - }, - ) - - def test_consecutive_index_all_equal(self): - """Test for helper function to find consecutive index with identical numbers.""" - vec = np.array([1, 1, 1, 1, 1, 1]) - ref_inds = np.array([True, False, False, False, False, True], dtype=bool) - - inds = waveform._find_consecutive_index(vec, resolution=1e-6) - - np.testing.assert_array_equal(inds, ref_inds) - - def test_consecutive_index_tiny_diff(self): - """Test for helper function to find consecutive index with vector with tiny change.""" - eps = 1e-10 - vec = np.array([0.5, 0.5 + eps, 0.5 - eps, 0.5 + eps, 0.5 - eps, 0.5]) - ref_inds = np.array([True, False, False, False, False, True], dtype=bool) - - inds = waveform._find_consecutive_index(vec, resolution=1e-6) - - np.testing.assert_array_equal(inds, ref_inds) - - def test_parse_waveform(self): - """Test helper function that parse waveform with Waveform instance.""" - test_pulse = pulse.library.Gaussian(10, 0.1, 3).get_waveform() - - inst = pulse.Play(test_pulse, pulse.DriveChannel(0)) - inst_data = create_instruction(inst, 0, 0, 10, 0.1) - - x, y, _ = waveform._parse_waveform(inst_data) - - x_ref = np.arange(10, 20) - y_ref = test_pulse.samples - - np.testing.assert_array_equal(x, x_ref) - np.testing.assert_array_equal(y, y_ref) - - def test_parse_waveform_parametric(self): - """Test helper function that parse waveform with ParametricPulse instance.""" - test_pulse = pulse.library.Gaussian(10, 0.1, 3) - - inst = pulse.Play(test_pulse, pulse.DriveChannel(0)) - inst_data = create_instruction(inst, 0, 0, 10, 0.1) - - x, y, _ = waveform._parse_waveform(inst_data) - - x_ref = np.arange(10, 20) - y_ref = test_pulse.get_waveform().samples - - np.testing.assert_array_equal(x, x_ref) - np.testing.assert_array_equal(y, y_ref) - - def test_gen_filled_waveform_stepwise_play(self): - """Test gen_filled_waveform_stepwise with play instruction.""" - my_pulse = pulse.Waveform(samples=[0, 0.5 + 0.5j, 0.5 + 0.5j, 0], name="my_pulse") - play = pulse.Play(my_pulse, pulse.DriveChannel(0)) - inst_data = create_instruction(play, np.pi / 2, 5e9, 5, 0.1) - - objs = waveform.gen_filled_waveform_stepwise( - inst_data, formatter=self.formatter, device=self.device - ) - - self.assertEqual(len(objs), 2) - - # type check - self.assertEqual(type(objs[0]), drawings.LineData) - self.assertEqual(type(objs[1]), drawings.LineData) - - y_ref = np.array([0, 0, -0.5, -0.5, 0, 0]) - - # data check - self.assertListEqual(objs[0].channels, [pulse.DriveChannel(0)]) - self.assertListEqual(list(objs[0].xvals), [5, 6, 6, 8, 8, 9]) - np.testing.assert_array_almost_equal(objs[0].yvals, y_ref) - - # meta data check - ref_meta = { - "duration (cycle time)": 4, - "duration (sec)": 0.4, - "t0 (cycle time)": 5, - "t0 (sec)": 0.5, - "phase": np.pi / 2, - "frequency": 5e9, - "qubit": 0, - "name": "my_pulse", - "data": "real", - } - self.assertDictEqual(objs[0].meta, ref_meta) - - # style check - ref_style = { - "alpha": self.formatter["alpha.fill_waveform"], - "zorder": self.formatter["layer.fill_waveform"], - "linewidth": self.formatter["line_width.fill_waveform"], - "linestyle": self.formatter["line_style.fill_waveform"], - "color": self.formatter["color.waveforms"]["D"][0], - } - self.assertDictEqual(objs[0].styles, ref_style) - - def test_gen_filled_waveform_stepwise_acquire(self): - """Test gen_filled_waveform_stepwise with acquire instruction.""" - acquire = pulse.Acquire( - duration=4, - channel=pulse.AcquireChannel(0), - mem_slot=pulse.MemorySlot(0), - discriminator=pulse.Discriminator(name="test_discr"), - name="acquire", - ) - inst_data = create_instruction(acquire, 0, 7e9, 5, 0.1) - - objs = waveform.gen_filled_waveform_stepwise( - inst_data, formatter=self.formatter, device=self.device - ) - - # imaginary part is empty and not returned - self.assertEqual(len(objs), 1) - - # type check - self.assertEqual(type(objs[0]), drawings.LineData) - - y_ref = np.array([1, 1]) - - # data check - data is compressed - self.assertListEqual(objs[0].channels, [pulse.AcquireChannel(0)]) - self.assertListEqual(list(objs[0].xvals), [5, 9]) - np.testing.assert_array_almost_equal(objs[0].yvals, y_ref) - - # meta data check - ref_meta = { - "memory slot": "m0", - "register slot": "N/A", - "discriminator": "test_discr", - "kernel": "N/A", - "duration (cycle time)": 4, - "duration (sec)": 0.4, - "t0 (cycle time)": 5, - "t0 (sec)": 0.5, - "phase": 0, - "frequency": 7e9, - "qubit": 0, - "name": "acquire", - "data": "real", - } - - self.assertDictEqual(objs[0].meta, ref_meta) - - # style check - ref_style = { - "alpha": self.formatter["alpha.fill_waveform"], - "zorder": self.formatter["layer.fill_waveform"], - "linewidth": self.formatter["line_width.fill_waveform"], - "linestyle": self.formatter["line_style.fill_waveform"], - "color": self.formatter["color.waveforms"]["A"][0], - } - self.assertDictEqual(objs[0].styles, ref_style) - - def test_gen_iqx_latex_waveform_name_x90(self): - """Test gen_iqx_latex_waveform_name with x90 waveform.""" - iqx_pulse = pulse.Waveform(samples=[0, 0, 0, 0], name="X90p_d0_1234567") - play = pulse.Play(iqx_pulse, pulse.DriveChannel(0)) - inst_data = create_instruction(play, 0, 0, 0, 0.1) - - obj = waveform.gen_ibmq_latex_waveform_name( - inst_data, formatter=self.formatter, device=self.device - )[0] - - # type check - self.assertEqual(type(obj), drawings.TextData) - - # data check - self.assertListEqual(obj.channels, [pulse.DriveChannel(0)]) - self.assertEqual(obj.text, "X90p_d0_1234567") - self.assertEqual(obj.latex, r"{\rm X}(\pi/2)") - - # style check - ref_style = { - "zorder": self.formatter["layer.annotate"], - "color": self.formatter["color.annotate"], - "size": self.formatter["text_size.annotate"], - "va": "center", - "ha": "center", - } - self.assertDictEqual(obj.styles, ref_style) - - def test_gen_iqx_latex_waveform_name_x180(self): - """Test gen_iqx_latex_waveform_name with x180 waveform.""" - iqx_pulse = pulse.Waveform(samples=[0, 0, 0, 0], name="Xp_d0_1234567") - play = pulse.Play(iqx_pulse, pulse.DriveChannel(0)) - inst_data = create_instruction(play, 0, 0, 0, 0.1) - - obj = waveform.gen_ibmq_latex_waveform_name( - inst_data, formatter=self.formatter, device=self.device - )[0] - - # type check - self.assertEqual(type(obj), drawings.TextData) - - # data check - self.assertListEqual(obj.channels, [pulse.DriveChannel(0)]) - self.assertEqual(obj.text, "Xp_d0_1234567") - self.assertEqual(obj.latex, r"{\rm X}(\pi)") - - def test_gen_iqx_latex_waveform_name_cr(self): - """Test gen_iqx_latex_waveform_name with CR waveform.""" - iqx_pulse = pulse.Waveform(samples=[0, 0, 0, 0], name="CR90p_u0_1234567") - play = pulse.Play(iqx_pulse, pulse.ControlChannel(0)) - inst_data = create_instruction(play, 0, 0, 0, 0.1) - - obj = waveform.gen_ibmq_latex_waveform_name( - inst_data, formatter=self.formatter, device=self.device - )[0] - - # type check - self.assertEqual(type(obj), drawings.TextData) - - # data check - self.assertListEqual(obj.channels, [pulse.ControlChannel(0)]) - self.assertEqual(obj.text, "CR90p_u0_1234567") - self.assertEqual(obj.latex, r"{\rm CR}(\pi/4)") - - def test_gen_iqx_latex_waveform_name_compensation_tone(self): - """Test gen_iqx_latex_waveform_name with CR compensation waveform.""" - iqx_pulse = pulse.Waveform(samples=[0, 0, 0, 0], name="CR90p_d0_u0_1234567") - play = pulse.Play(iqx_pulse, pulse.DriveChannel(0)) - inst_data = create_instruction(play, 0, 0, 0, 0.1) - - obj = waveform.gen_ibmq_latex_waveform_name( - inst_data, formatter=self.formatter, device=self.device - )[0] - - # type check - self.assertEqual(type(obj), drawings.TextData) - - # data check - self.assertListEqual(obj.channels, [pulse.DriveChannel(0)]) - self.assertEqual(obj.text, "CR90p_d0_u0_1234567") - self.assertEqual(obj.latex, r"\overline{\rm CR}(\pi/4)") - - def test_gen_waveform_max_value(self): - """Test gen_waveform_max_value.""" - iqx_pulse = pulse.Waveform(samples=[0, 0.1, 0.3, -0.2j], name="test") - play = pulse.Play(iqx_pulse, pulse.DriveChannel(0)) - inst_data = create_instruction(play, 0, 0, 0, 0.1) - - objs = waveform.gen_waveform_max_value( - inst_data, formatter=self.formatter, device=self.device - ) - - # type check - self.assertEqual(type(objs[0]), drawings.TextData) - self.assertEqual(type(objs[1]), drawings.TextData) - - # data check, real part, positive max - self.assertListEqual(objs[0].channels, [pulse.DriveChannel(0)]) - self.assertEqual(objs[0].text, "0.30\n\u25BE") - - # style check - ref_style = { - "zorder": self.formatter["layer.annotate"], - "color": self.formatter["color.annotate"], - "size": self.formatter["text_size.annotate"], - "va": "bottom", - "ha": "center", - } - self.assertDictEqual(objs[0].styles, ref_style) - - # data check, imaginary part, negative max - self.assertListEqual(objs[1].channels, [pulse.DriveChannel(0)]) - self.assertEqual(objs[1].text, "\u25B4\n-0.20") - - # style check - ref_style = { - "zorder": self.formatter["layer.annotate"], - "color": self.formatter["color.annotate"], - "size": self.formatter["text_size.annotate"], - "va": "top", - "ha": "center", - } - self.assertDictEqual(objs[1].styles, ref_style) - - def test_gen_filled_waveform_stepwise_opaque(self): - """Test generating waveform with unbound parameter.""" - amp = circuit.Parameter("amp") - my_pulse = pulse.Gaussian(10, amp, 3, name="my_pulse") - play = pulse.Play(my_pulse, pulse.DriveChannel(0)) - inst_data = create_instruction(play, np.pi / 2, 5e9, 5, 0.1, True) - - objs = waveform.gen_filled_waveform_stepwise( - inst_data, formatter=self.formatter, device=self.device - ) - - self.assertEqual(len(objs), 2) - - # type check - self.assertEqual(type(objs[0]), drawings.BoxData) - self.assertEqual(type(objs[1]), drawings.TextData) - - x_ref = np.array([5, 15]) - y_ref = np.array( - [ - -0.5 * self.formatter["box_height.opaque_shape"], - 0.5 * self.formatter["box_height.opaque_shape"], - ] - ) - - # data check - np.testing.assert_array_equal(objs[0].xvals, x_ref) - np.testing.assert_array_equal(objs[0].yvals, y_ref) - - # meta data check - ref_meta = { - "duration (cycle time)": 10, - "duration (sec)": 1.0, - "t0 (cycle time)": 5, - "t0 (sec)": 0.5, - "waveform shape": "Gaussian", - "amp": "amp", - "angle": 0, - "sigma": 3, - "phase": np.pi / 2, - "frequency": 5e9, - "qubit": 0, - "name": "my_pulse", - } - self.assertDictEqual(objs[0].meta, ref_meta) - - # style check - ref_style = { - "alpha": self.formatter["alpha.opaque_shape"], - "zorder": self.formatter["layer.fill_waveform"], - "linewidth": self.formatter["line_width.opaque_shape"], - "linestyle": self.formatter["line_style.opaque_shape"], - "facecolor": self.formatter["color.opaque_shape"][0], - "edgecolor": self.formatter["color.opaque_shape"][1], - } - self.assertDictEqual(objs[0].styles, ref_style) - - # test label - self.assertEqual(objs[1].text, "Gaussian(amp)") - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestChartGenerators(QiskitTestCase): - """Tests for chart info generators.""" - - @ignore_pulse_deprecation_warnings - def setUp(self) -> None: - super().setUp() - style = stylesheet.QiskitPulseStyle() - self.formatter = style.formatter - self.device = device_info.OpenPulseBackendInfo( - name="test", - dt=1, - channel_frequency_map={ - pulse.DriveChannel(0): 5.0e9, - pulse.DriveChannel(1): 5.1e9, - pulse.MeasureChannel(0): 7.0e9, - pulse.MeasureChannel(1): 7.1e9, - pulse.ControlChannel(0): 5.0e9, - pulse.ControlChannel(1): 5.1e9, - }, - qubit_channel_map={ - 0: [ - pulse.DriveChannel(0), - pulse.MeasureChannel(0), - pulse.AcquireChannel(0), - pulse.ControlChannel(0), - ], - 1: [ - pulse.DriveChannel(1), - pulse.MeasureChannel(1), - pulse.AcquireChannel(1), - pulse.ControlChannel(1), - ], - }, - ) - - def test_gen_baseline(self): - """Test gen_baseline.""" - channel_info = types.ChartAxis(name="D0", channels=[pulse.DriveChannel(0)]) - - obj = chart.gen_baseline(channel_info, formatter=self.formatter, device=self.device)[0] - - # type check - self.assertEqual(type(obj), drawings.LineData) - - # data check - self.assertListEqual(obj.channels, [pulse.DriveChannel(0)]) - - ref_x = [types.AbstractCoordinate.LEFT, types.AbstractCoordinate.RIGHT] - ref_y = [0, 0] - - self.assertListEqual(list(obj.xvals), ref_x) - self.assertListEqual(list(obj.yvals), ref_y) - - # style check - ref_style = { - "alpha": self.formatter["alpha.baseline"], - "zorder": self.formatter["layer.baseline"], - "linewidth": self.formatter["line_width.baseline"], - "linestyle": self.formatter["line_style.baseline"], - "color": self.formatter["color.baseline"], - } - self.assertDictEqual(obj.styles, ref_style) - - def test_gen_chart_name(self): - """Test gen_chart_name.""" - channel_info = types.ChartAxis(name="D0", channels=[pulse.DriveChannel(0)]) - - obj = chart.gen_chart_name(channel_info, formatter=self.formatter, device=self.device)[0] - - # type check - self.assertEqual(type(obj), drawings.TextData) - - # data check - self.assertListEqual(obj.channels, [pulse.DriveChannel(0)]) - self.assertEqual(obj.text, "D0") - - # style check - ref_style = { - "zorder": self.formatter["layer.axis_label"], - "color": self.formatter["color.axis_label"], - "size": self.formatter["text_size.axis_label"], - "va": "center", - "ha": "right", - } - self.assertDictEqual(obj.styles, ref_style) - - def test_gen_scaling_info(self): - """Test gen_scaling_info.""" - channel_info = types.ChartAxis(name="D0", channels=[pulse.DriveChannel(0)]) - - obj = chart.gen_chart_scale(channel_info, formatter=self.formatter, device=self.device)[0] - - # type check - self.assertEqual(type(obj), drawings.TextData) - - # data check - self.assertListEqual(obj.channels, [pulse.DriveChannel(0)]) - self.assertEqual(obj.text, f"x{types.DynamicString.SCALE}") - - # style check - ref_style = { - "zorder": self.formatter["layer.axis_label"], - "color": self.formatter["color.axis_label"], - "size": self.formatter["text_size.annotate"], - "va": "center", - "ha": "right", - } - self.assertDictEqual(obj.styles, ref_style) - - def test_gen_frequency_info(self): - """Test gen_scaling_info.""" - channel_info = types.ChartAxis(name="D0", channels=[pulse.DriveChannel(0)]) - - obj = chart.gen_channel_freqs(channel_info, formatter=self.formatter, device=self.device)[0] - - # type check - self.assertEqual(type(obj), drawings.TextData) - - # data check - self.assertListEqual(obj.channels, [pulse.DriveChannel(0)]) - self.assertEqual(obj.text, "5.00 GHz") - - # style check - ref_style = { - "zorder": self.formatter["layer.axis_label"], - "color": self.formatter["color.axis_label"], - "size": self.formatter["text_size.annotate"], - "va": "center", - "ha": "right", - } - self.assertDictEqual(obj.styles, ref_style) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestFrameGenerators(QiskitTestCase): - """Tests for frame info generators.""" - - @ignore_pulse_deprecation_warnings - def setUp(self) -> None: - super().setUp() - style = stylesheet.QiskitPulseStyle() - self.formatter = style.formatter - self.device = device_info.OpenPulseBackendInfo( - name="test", - dt=1, - channel_frequency_map={ - pulse.DriveChannel(0): 5.0e9, - pulse.DriveChannel(1): 5.1e9, - pulse.MeasureChannel(0): 7.0e9, - pulse.MeasureChannel(1): 7.1e9, - pulse.ControlChannel(0): 5.0e9, - pulse.ControlChannel(1): 5.1e9, - }, - qubit_channel_map={ - 0: [ - pulse.DriveChannel(0), - pulse.MeasureChannel(0), - pulse.AcquireChannel(0), - pulse.ControlChannel(0), - ], - 1: [ - pulse.DriveChannel(1), - pulse.MeasureChannel(1), - pulse.AcquireChannel(1), - pulse.ControlChannel(1), - ], - }, - ) - - def test_phase_to_text(self): - """Test helper function to convert phase to text.""" - plain, latex = frame._phase_to_text(self.formatter, np.pi, max_denom=10, flip=True) - self.assertEqual(plain, "-pi") - self.assertEqual(latex, r"-\pi") - - plain, latex = frame._phase_to_text(self.formatter, np.pi / 2, max_denom=10, flip=True) - self.assertEqual(plain, "-pi/2") - self.assertEqual(latex, r"-\pi/2") - - plain, latex = frame._phase_to_text(self.formatter, np.pi * 3 / 4, max_denom=10, flip=True) - self.assertEqual(plain, "-3/4 pi") - self.assertEqual(latex, r"-3/4 \pi") - - def test_frequency_to_text(self): - """Test helper function to convert frequency to text.""" - plain, latex = frame._freq_to_text(self.formatter, 1e6, unit="MHz") - self.assertEqual(plain, "1.00 MHz") - self.assertEqual(latex, r"1.00~{\rm MHz}") - - def test_gen_formatted_phase(self): - """Test gen_formatted_phase.""" - fcs = [ - pulse.ShiftPhase(np.pi / 2, pulse.DriveChannel(0)), - pulse.ShiftFrequency(1e6, pulse.DriveChannel(0)), - ] - inst_data = create_instruction(fcs, np.pi / 2, 1e6, 5, 0.1) - - obj = frame.gen_formatted_phase(inst_data, formatter=self.formatter, device=self.device)[0] - - # type check - self.assertEqual(type(obj), drawings.TextData) - - # data check - self.assertListEqual(obj.channels, [pulse.DriveChannel(0)]) - self.assertEqual(obj.latex, r"{\rm VZ}(-\pi/2)") - self.assertEqual(obj.text, "VZ(-pi/2)") - - # style check - ref_style = { - "zorder": self.formatter["layer.frame_change"], - "color": self.formatter["color.frame_change"], - "size": self.formatter["text_size.annotate"], - "va": "center", - "ha": "center", - } - self.assertDictEqual(obj.styles, ref_style) - - def test_gen_formatted_freq_mhz(self): - """Test gen_formatted_freq_mhz.""" - fcs = [ - pulse.ShiftPhase(np.pi / 2, pulse.DriveChannel(0)), - pulse.ShiftFrequency(1e6, pulse.DriveChannel(0)), - ] - inst_data = create_instruction(fcs, np.pi / 2, 1e6, 5, 0.1) - - obj = frame.gen_formatted_freq_mhz(inst_data, formatter=self.formatter, device=self.device)[ - 0 - ] - - # type check - self.assertEqual(type(obj), drawings.TextData) - - # data check - self.assertListEqual(obj.channels, [pulse.DriveChannel(0)]) - self.assertEqual(obj.latex, r"\Delta f = 1.00~{\rm MHz}") - self.assertEqual(obj.text, "\u0394f = 1.00 MHz") - - # style check - ref_style = { - "zorder": self.formatter["layer.frame_change"], - "color": self.formatter["color.frame_change"], - "size": self.formatter["text_size.annotate"], - "va": "center", - "ha": "center", - } - self.assertDictEqual(obj.styles, ref_style) - - def test_gen_formatted_frame_values(self): - """Test gen_formatted_frame_values.""" - fcs = [ - pulse.ShiftPhase(np.pi / 2, pulse.DriveChannel(0)), - pulse.ShiftFrequency(1e6, pulse.DriveChannel(0)), - ] - inst_data = create_instruction(fcs, np.pi / 2, 1e6, 5, 0.1) - - objs = frame.gen_formatted_frame_values( - inst_data, formatter=self.formatter, device=self.device - ) - - # type check - self.assertEqual(type(objs[0]), drawings.TextData) - self.assertEqual(type(objs[1]), drawings.TextData) - - def test_gen_raw_operand_values_compact(self): - """Test gen_raw_operand_values_compact.""" - fcs = [ - pulse.ShiftPhase(np.pi / 2, pulse.DriveChannel(0)), - pulse.ShiftFrequency(1e6, pulse.DriveChannel(0)), - ] - inst_data = create_instruction(fcs, np.pi / 2, 1e6, 5, 0.1) - - obj = frame.gen_raw_operand_values_compact( - inst_data, formatter=self.formatter, device=self.device - )[0] - - # type check - self.assertEqual(type(obj), drawings.TextData) - - # data check - self.assertListEqual(obj.channels, [pulse.DriveChannel(0)]) - self.assertEqual(obj.text, "1.57\n1.0e6") - - def gen_frame_symbol(self): - """Test gen_frame_symbol.""" - fcs = [ - pulse.ShiftPhase(np.pi / 2, pulse.DriveChannel(0)), - pulse.ShiftFrequency(1e6, pulse.DriveChannel(0)), - ] - inst_data = create_instruction(fcs, np.pi / 2, 1e6, 5, 0.1) - - obj = frame.gen_frame_symbol(inst_data, formatter=self.formatter, device=self.device)[0] - - # type check - self.assertEqual(type(obj), drawings.TextData) - - # data check - self.assertListEqual(obj.channels, [pulse.DriveChannel(0)]) - self.assertEqual(obj.latex, self.formatter["latex_symbol.frame_change"]) - self.assertEqual(obj.text, self.formatter["unicode_symbol.frame_change"]) - - # metadata check - ref_meta = { - "total phase change": np.pi / 2, - "total frequency change": 1e6, - "program": ["ShiftPhase(1.57 rad.)", "ShiftFrequency(1.00e+06 Hz)"], - "t0 (cycle time)": 5, - "t0 (sec)": 0.5, - } - self.assertDictEqual(obj.meta, ref_meta) - - # style check - ref_style = { - "zorder": self.formatter["layer.frame_change"], - "color": self.formatter["color.frame_change"], - "size": self.formatter["text_size.frame_change"], - "va": "center", - "ha": "center", - } - self.assertDictEqual(obj.styles, ref_style) - - def gen_frame_symbol_with_parameters(self): - """Test gen_frame_symbol with parameterized frame.""" - theta = -1.0 * circuit.Parameter("P0") - fcs = [pulse.ShiftPhase(theta, pulse.DriveChannel(0))] - inst_data = create_instruction(fcs, np.pi / 2, 1e6, 5, 0.1) - - obj = frame.gen_frame_symbol(inst_data, formatter=self.formatter, device=self.device)[0] - - # metadata check - ref_meta = { - "total phase change": np.pi / 2, - "total frequency change": 1e6, - "program": ["ShiftPhase(-1.0*P0)"], - "t0 (cycle time)": 5, - "t0 (sec)": 0.5, - } - self.assertDictEqual(obj.meta, ref_meta) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestSnapshotGenerators(QiskitTestCase): - """Tests for snapshot generators.""" - - @ignore_pulse_deprecation_warnings - def setUp(self) -> None: - super().setUp() - style = stylesheet.QiskitPulseStyle() - self.formatter = style.formatter - self.device = device_info.OpenPulseBackendInfo( - name="test", - dt=1, - channel_frequency_map={ - pulse.DriveChannel(0): 5.0e9, - pulse.DriveChannel(1): 5.1e9, - pulse.MeasureChannel(0): 7.0e9, - pulse.MeasureChannel(1): 7.1e9, - pulse.ControlChannel(0): 5.0e9, - pulse.ControlChannel(1): 5.1e9, - }, - qubit_channel_map={ - 0: [ - pulse.DriveChannel(0), - pulse.MeasureChannel(0), - pulse.AcquireChannel(0), - pulse.ControlChannel(0), - ], - 1: [ - pulse.DriveChannel(1), - pulse.MeasureChannel(1), - pulse.AcquireChannel(1), - pulse.ControlChannel(1), - ], - }, - ) - - def test_gen_snapshot_name(self): - """Test gen_snapshot_name.""" - snap_inst = pulse.instructions.Snapshot(label="test_snapshot", snapshot_type="statevector") - inst_data = types.SnapshotInstruction(5, 0.1, snap_inst) - - obj = snapshot.gen_snapshot_name(inst_data, formatter=self.formatter, device=self.device)[0] - - # type check - self.assertEqual(type(obj), drawings.TextData) - - # data check - self.assertListEqual(obj.channels, [pulse.channels.SnapshotChannel()]) - self.assertEqual(obj.text, "test_snapshot") - - # style check - ref_style = { - "zorder": self.formatter["layer.snapshot"], - "color": self.formatter["color.snapshot"], - "size": self.formatter["text_size.annotate"], - "va": "center", - "ha": "center", - } - self.assertDictEqual(obj.styles, ref_style) - - def gen_snapshot_symbol(self): - """Test gen_snapshot_symbol.""" - snap_inst = pulse.instructions.Snapshot(label="test_snapshot", snapshot_type="statevector") - inst_data = types.SnapshotInstruction(5, 0.1, snap_inst) - - obj = snapshot.gen_snapshot_name(inst_data, formatter=self.formatter, device=self.device)[0] - - # type check - self.assertEqual(type(obj), drawings.TextData) - - # data check - self.assertListEqual(obj.channels, [pulse.channels.SnapshotChannel()]) - self.assertEqual(obj.text, self.formatter["unicode_symbol.snapshot"]) - self.assertEqual(obj.latex, self.formatter["latex_symbol.snapshot"]) - - # metadata check - ref_meta = { - "snapshot type": "statevector", - "t0 (cycle time)": 5, - "t0 (sec)": 0.5, - "name": "test_snapshot", - "label": "test_snapshot", - } - self.assertDictEqual(obj.meta, ref_meta) - - # style check - ref_style = { - "zorder": self.formatter["layer.snapshot"], - "color": self.formatter["color.snapshot"], - "size": self.formatter["text_size.snapshot"], - "va": "bottom", - "ha": "center", - } - self.assertDictEqual(obj.styles, ref_style) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestBarrierGenerators(QiskitTestCase): - """Tests for barrier generators.""" - - @ignore_pulse_deprecation_warnings - def setUp(self) -> None: - super().setUp() - style = stylesheet.QiskitPulseStyle() - self.formatter = style.formatter - self.device = device_info.OpenPulseBackendInfo( - name="test", - dt=1, - channel_frequency_map={ - pulse.DriveChannel(0): 5.0e9, - pulse.DriveChannel(1): 5.1e9, - pulse.MeasureChannel(0): 7.0e9, - pulse.MeasureChannel(1): 7.1e9, - pulse.ControlChannel(0): 5.0e9, - pulse.ControlChannel(1): 5.1e9, - }, - qubit_channel_map={ - 0: [ - pulse.DriveChannel(0), - pulse.MeasureChannel(0), - pulse.AcquireChannel(0), - pulse.ControlChannel(0), - ], - 1: [ - pulse.DriveChannel(1), - pulse.MeasureChannel(1), - pulse.AcquireChannel(1), - pulse.ControlChannel(1), - ], - }, - ) - - def test_gen_barrier(self): - """Test gen_barrier.""" - inst_data = types.BarrierInstruction( - 5, 0.1, [pulse.DriveChannel(0), pulse.ControlChannel(0)] - ) - obj = barrier.gen_barrier(inst_data, formatter=self.formatter, device=self.device)[0] - - # type check - self.assertEqual(type(obj), drawings.LineData) - - # data check - self.assertListEqual(obj.channels, [pulse.DriveChannel(0), pulse.ControlChannel(0)]) - - ref_x = [5, 5] - ref_y = [types.AbstractCoordinate.BOTTOM, types.AbstractCoordinate.TOP] - - self.assertListEqual(list(obj.xvals), ref_x) - self.assertListEqual(list(obj.yvals), ref_y) - - # style check - ref_style = { - "alpha": self.formatter["alpha.barrier"], - "zorder": self.formatter["layer.barrier"], - "linewidth": self.formatter["line_width.barrier"], - "linestyle": self.formatter["line_style.barrier"], - "color": self.formatter["color.barrier"], - } - self.assertDictEqual(obj.styles, ref_style) diff --git a/test/python/visualization/pulse_v2/test_layouts.py b/test/python/visualization/pulse_v2/test_layouts.py deleted file mode 100644 index 3985f1dd9318..000000000000 --- a/test/python/visualization/pulse_v2/test_layouts.py +++ /dev/null @@ -1,258 +0,0 @@ -# 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. - -"""Tests for core modules of pulse drawer.""" - -from qiskit import pulse -from qiskit.visualization.pulse_v2 import layouts, device_info -from test import QiskitTestCase # pylint: disable=wrong-import-order -from qiskit.utils.deprecate_pulse import decorate_test_methods, ignore_pulse_deprecation_warnings - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestChannelArrangement(QiskitTestCase): - """Tests for channel mapping functions.""" - - @ignore_pulse_deprecation_warnings - def setUp(self) -> None: - super().setUp() - self.channels = [ - pulse.DriveChannel(0), - pulse.DriveChannel(1), - pulse.DriveChannel(2), - pulse.MeasureChannel(1), - pulse.MeasureChannel(2), - pulse.AcquireChannel(1), - pulse.AcquireChannel(2), - pulse.ControlChannel(0), - pulse.ControlChannel(2), - pulse.ControlChannel(5), - ] - self.formatter = {"control.show_acquire_channel": True} - self.device = device_info.OpenPulseBackendInfo( - name="test", - dt=1, - channel_frequency_map={ - pulse.DriveChannel(0): 5.0e9, - pulse.DriveChannel(1): 5.1e9, - pulse.DriveChannel(2): 5.2e9, - pulse.MeasureChannel(1): 7.0e9, - pulse.MeasureChannel(1): 7.1e9, - pulse.MeasureChannel(2): 7.2e9, - pulse.ControlChannel(0): 5.0e9, - pulse.ControlChannel(1): 5.1e9, - pulse.ControlChannel(2): 5.2e9, - pulse.ControlChannel(3): 5.3e9, - pulse.ControlChannel(4): 5.4e9, - pulse.ControlChannel(5): 5.5e9, - }, - qubit_channel_map={ - 0: [ - pulse.DriveChannel(0), - pulse.MeasureChannel(0), - pulse.AcquireChannel(0), - pulse.ControlChannel(0), - ], - 1: [ - pulse.DriveChannel(1), - pulse.MeasureChannel(1), - pulse.AcquireChannel(1), - pulse.ControlChannel(1), - ], - 2: [ - pulse.DriveChannel(2), - pulse.MeasureChannel(2), - pulse.AcquireChannel(2), - pulse.ControlChannel(2), - pulse.ControlChannel(3), - pulse.ControlChannel(4), - ], - 3: [ - pulse.DriveChannel(3), - pulse.MeasureChannel(3), - pulse.AcquireChannel(3), - pulse.ControlChannel(5), - ], - }, - ) - - def test_channel_type_grouped_sort(self): - """Test channel_type_grouped_sort.""" - out_layout = layouts.channel_type_grouped_sort( - self.channels, formatter=self.formatter, device=self.device - ) - - ref_channels = [ - [pulse.DriveChannel(0)], - [pulse.DriveChannel(1)], - [pulse.DriveChannel(2)], - [pulse.ControlChannel(0)], - [pulse.ControlChannel(2)], - [pulse.ControlChannel(5)], - [pulse.MeasureChannel(1)], - [pulse.MeasureChannel(2)], - [pulse.AcquireChannel(1)], - [pulse.AcquireChannel(2)], - ] - ref_names = ["D0", "D1", "D2", "U0", "U2", "U5", "M1", "M2", "A1", "A2"] - - ref = list(zip(ref_names, ref_channels)) - - self.assertListEqual(list(out_layout), ref) - - def test_channel_index_sort(self): - """Test channel_index_grouped_sort.""" - # Add an unusual channel number to stress test the channel ordering - self.channels.append(pulse.DriveChannel(100)) - self.channels.reverse() - out_layout = layouts.channel_index_grouped_sort( - self.channels, formatter=self.formatter, device=self.device - ) - - ref_channels = [ - [pulse.DriveChannel(0)], - [pulse.ControlChannel(0)], - [pulse.DriveChannel(1)], - [pulse.MeasureChannel(1)], - [pulse.AcquireChannel(1)], - [pulse.DriveChannel(2)], - [pulse.ControlChannel(2)], - [pulse.MeasureChannel(2)], - [pulse.AcquireChannel(2)], - [pulse.ControlChannel(5)], - [pulse.DriveChannel(100)], - ] - - ref_names = ["D0", "U0", "D1", "M1", "A1", "D2", "U2", "M2", "A2", "U5", "D100"] - - ref = list(zip(ref_names, ref_channels)) - - self.assertListEqual(list(out_layout), ref) - - def test_channel_index_sort_grouped_control(self): - """Test channel_index_grouped_sort_u.""" - out_layout = layouts.channel_index_grouped_sort_u( - self.channels, formatter=self.formatter, device=self.device - ) - - ref_channels = [ - [pulse.DriveChannel(0)], - [pulse.DriveChannel(1)], - [pulse.MeasureChannel(1)], - [pulse.AcquireChannel(1)], - [pulse.DriveChannel(2)], - [pulse.MeasureChannel(2)], - [pulse.AcquireChannel(2)], - [pulse.ControlChannel(0)], - [pulse.ControlChannel(2)], - [pulse.ControlChannel(5)], - ] - - ref_names = ["D0", "D1", "M1", "A1", "D2", "M2", "A2", "U0", "U2", "U5"] - - ref = list(zip(ref_names, ref_channels)) - - self.assertListEqual(list(out_layout), ref) - - def test_channel_qubit_index_sort(self): - """Test qubit_index_sort.""" - out_layout = layouts.qubit_index_sort( - self.channels, formatter=self.formatter, device=self.device - ) - - ref_channels = [ - [pulse.DriveChannel(0), pulse.ControlChannel(0)], - [pulse.DriveChannel(1), pulse.MeasureChannel(1)], - [pulse.DriveChannel(2), pulse.MeasureChannel(2), pulse.ControlChannel(2)], - [pulse.ControlChannel(5)], - ] - - ref_names = ["Q0", "Q1", "Q2", "Q3"] - - ref = list(zip(ref_names, ref_channels)) - - self.assertListEqual(list(out_layout), ref) - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestHorizontalAxis(QiskitTestCase): - """Tests for horizontal axis mapping functions.""" - - def test_time_map_in_ns(self): - """Test for time_map_in_ns.""" - time_window = (0, 1000) - breaks = [(100, 200)] - dt = 1e-9 - - haxis = layouts.time_map_in_ns(time_window=time_window, axis_breaks=breaks, dt=dt) - - self.assertListEqual(list(haxis.window), [0, 900]) - self.assertListEqual(list(haxis.axis_break_pos), [100]) - ref_axis_map = { - 0.0: "0", - 180.0: "280", - 360.0: "460", - 540.0: "640", - 720.0: "820", - 900.0: "1000", - } - self.assertDictEqual(haxis.axis_map, ref_axis_map) - self.assertEqual(haxis.label, "Time (ns)") - - def test_time_map_in_without_dt(self): - """Test for time_map_in_ns when dt is not provided.""" - time_window = (0, 1000) - breaks = [(100, 200)] - dt = None - - haxis = layouts.time_map_in_ns(time_window=time_window, axis_breaks=breaks, dt=dt) - - self.assertListEqual(list(haxis.window), [0, 900]) - self.assertListEqual(list(haxis.axis_break_pos), [100]) - ref_axis_map = { - 0.0: "0", - 180.0: "280", - 360.0: "460", - 540.0: "640", - 720.0: "820", - 900.0: "1000", - } - self.assertDictEqual(haxis.axis_map, ref_axis_map) - self.assertEqual(haxis.label, "System cycle time (dt)") - - -@decorate_test_methods(ignore_pulse_deprecation_warnings) -class TestFigureTitle(QiskitTestCase): - """Tests for figure title generation.""" - - @ignore_pulse_deprecation_warnings - def setUp(self) -> None: - super().setUp() - self.device = device_info.OpenPulseBackendInfo(name="test_backend", dt=1e-9) - self.prog = pulse.Schedule(name="test_sched") - self.prog.insert( - 0, pulse.Play(pulse.Constant(100, 0.1), pulse.DriveChannel(0)), inplace=True - ) - - def detail_title(self): - """Test detail_title layout function.""" - ref_title = "Name: test_sched, Duration: 100.0 ns, Backend: test_backend" - out = layouts.detail_title(self.prog, self.device) - - self.assertEqual(out, ref_title) - - def empty_title(self): - """Test empty_title layout function.""" - ref_title = "" - out = layouts.detail_title(self.prog, self.device) - - self.assertEqual(out, ref_title) From 7cdee9d9688a012fab677c6433db0e03fc65f740 Mon Sep 17 00:00:00 2001 From: Eli Arbel Date: Tue, 18 Feb 2025 15:53:24 +0200 Subject: [PATCH 22/29] Add reno --- docs/apidoc/index.rst | 2 -- qiskit/compiler/transpiler.py | 13 +++------- .../notes/remove-pulse-eb43f66499092489.yaml | 25 +++++++++++++++++++ 3 files changed, 28 insertions(+), 12 deletions(-) create mode 100644 releasenotes/notes/remove-pulse-eb43f66499092489.yaml diff --git a/docs/apidoc/index.rst b/docs/apidoc/index.rst index 0f306decec9b..a75bbf3e13ea 100644 --- a/docs/apidoc/index.rst +++ b/docs/apidoc/index.rst @@ -51,7 +51,6 @@ Primitives and providers: providers providers_basic_provider providers_fake_provider - providers_models Results and visualizations: @@ -77,5 +76,4 @@ Other: compiler exceptions - qobj utils diff --git a/qiskit/compiler/transpiler.py b/qiskit/compiler/transpiler.py index ff8ffa0e7102..5956e1a552a2 100644 --- a/qiskit/compiler/transpiler.py +++ b/qiskit/compiler/transpiler.py @@ -90,7 +90,7 @@ def transpile( # pylint: disable=too-many-return-statements The prioritization of transpilation target constraints works as follows: if a ``target`` input is provided, it will take priority over any ``backend`` input or loose constraints - (``basis_gates``, ``inst_map``, ``coupling_map``, ``instruction_durations``, + (``basis_gates``, ``coupling_map``, ``instruction_durations``, ``dt`` or ``timing_constraints``). If a ``backend`` is provided together with any loose constraint from the list above, the loose constraint will take priority over the corresponding backend constraint. This behavior is summarized in the table below. The first column @@ -104,10 +104,9 @@ def transpile( # pylint: disable=too-many-return-statements **basis_gates** target basis_gates **coupling_map** target coupling_map **instruction_durations** target instruction_durations - **inst_map** target inst_map **dt** target dt **timing_constraints** target timing_constraints - ============================ ========= ======================= + ============================ ========= ======================== Args: circuits: Circuit(s) to transpile @@ -334,14 +333,8 @@ def callback_func(**kwargs): # Edge cases require using the old model (loose constraints) instead of building a target, # but we don't populate the passmanager config with loose constraints unless it's one of # the known edge cases to control the execution path. - # Filter instruction_durations, timing_constraints and inst_map deprecation + # Filter instruction_durations, timing_constraints deprecation with warnings.catch_warnings(): - warnings.filterwarnings( - "ignore", - category=DeprecationWarning, - message=".*``inst_map`` is deprecated as of Qiskit 1.3.*", - module="qiskit", - ) warnings.filterwarnings( "ignore", category=DeprecationWarning, diff --git a/releasenotes/notes/remove-pulse-eb43f66499092489.yaml b/releasenotes/notes/remove-pulse-eb43f66499092489.yaml new file mode 100644 index 000000000000..68da77bdd5a2 --- /dev/null +++ b/releasenotes/notes/remove-pulse-eb43f66499092489.yaml @@ -0,0 +1,25 @@ +--- +prelude: > + Qiskit Pulse has been completely removed in this release, following its deprecation in Qiskit 1.3. + This include all pulse module files, pulse visualization functionality, support for ``ScheduleBlock`` + and pulse-gate serialization/deserialization capability in QPY, calibrations management in + :class:`.QuantumCircuit`, :class:`.Target` and :class:`.DAGCircuit` and pulse-based fake backends. + For more details, see the corresponding sections below. + + The Pulse package as a whole, along with major dependent components that have been removed in Qiskit, will + be part of `Qiskit Dynamics `__ repository to further enable + pulse and low-level control simulation. +upgrade_providers: + - | + As part of Pulse removal in Qiskit 2.0, the following methods have been removed: + + * ``qiskit.providers.BackendV2.instruction_schedule_map`` + * ``qiskit.providers.BackendV2.drive_channel`` + * ``qiskit.providers.BackendV2.measure_channel`` + * ``qiskit.providers.BackendV2.acquire_channel`` + * ``qiskit.providers.BackendV2.control_channel`` +upgrade_visualization: + - | + As part of the Pulse removal in Qiskit 2.0, support for pulse drawing via + ``qiskit.visualization.pulse_drawer`` has been removed. + From 46510ac2ea4a427ab7d884afbf8a30f43f01cf66 Mon Sep 17 00:00:00 2001 From: Eli Arbel Date: Wed, 19 Feb 2025 16:33:11 +0200 Subject: [PATCH 23/29] Raise QpyError when loading ScheduleBlock payloads --- qiskit/qpy/__init__.py | 9 ++-- qiskit/qpy/interface.py | 41 ++++++---------- .../remove-pulse-qpy-07a96673c8f10e38.yaml | 11 ++--- test/qpy_compat/test_qpy.py | 48 +++++++++++++++---- 4 files changed, 60 insertions(+), 49 deletions(-) diff --git a/qiskit/qpy/__init__.py b/qiskit/qpy/__init__.py index c5fa51191dc3..5ce063710587 100644 --- a/qiskit/qpy/__init__.py +++ b/qiskit/qpy/__init__.py @@ -169,11 +169,10 @@ def open(*args): it to QPY setting ``use_symengine=False``. The resulting file can then be loaded by any later version of Qiskit. - With the removal of Pulse in Qiskit 2.0, QPY does not support loading ``ScheduleBlock`` programs - or pulse gates. If such payloads are being loaded, QPY will issue a warning and - return partial circuits. In the case of a ``ScheduleBlock`` payload, a circuit with only a name - and metadata will be loaded. It the case of pulse gates, the circuit will contain custom - instructions without calibration data attached, hence leaving them undefined. + With the removal of Pulse in Qiskit 2.0, QPY provides limited support for loading + payloads with pulse data. Loading a ``ScheduleBlock`` payload, a :class:`.QpyError` exception + will be raised. Loading a circuit with pulse gates, the circuit will contain custom + instructions without calibration data attached, leaving them undefined. QPY format version history -------------------------- diff --git a/qiskit/qpy/interface.py b/qiskit/qpy/interface.py index 0958fdd8cad9..f518d15ae32c 100644 --- a/qiskit/qpy/interface.py +++ b/qiskit/qpy/interface.py @@ -24,12 +24,12 @@ from qiskit.circuit import QuantumCircuit from qiskit.exceptions import QiskitError from qiskit.qpy import formats, common, binary_io, type_keys -from qiskit.qpy.exceptions import QPYLoadingDeprecatedFeatureWarning, QpyError +from qiskit.qpy.exceptions import QpyError from qiskit.version import __version__ # pylint: disable=invalid-name -QPY_SUPPORTED_TYPES = Union[QuantumCircuit] +QPY_SUPPORTED_TYPES = QuantumCircuit # This version pattern is taken from the pypa packaging project: # https://github.com/pypa/packaging/blob/21.3/packaging/version.py#L223-L254 @@ -157,29 +157,19 @@ def dump( Raises: - QpyError: When multiple data format is mixed in the output. TypeError: When invalid data type is input. - ValueError: When an unsupported version number is passed in for the ``version`` argument + ValueError: When an unsupported version number is passed in for the ``version`` argument. """ if not isinstance(programs, Iterable): programs = [programs] - program_types = set() + # dump accepts only QuantumCircuit typed objects for program in programs: - program_types.add(type(program)) + if not issubclass(type(program), QuantumCircuit): + raise TypeError(f"'{type(program)}' is not a supported data type.") - if len(program_types) > 1: - raise QpyError( - "Input programs contain multiple data types. " - "Different data type must be serialized separately." - ) - program_type = next(iter(program_types)) - - if issubclass(program_type, QuantumCircuit): - type_key = type_keys.Program.CIRCUIT - writer = binary_io.write_circuit - else: - raise TypeError(f"'{program_type}' is not supported data type.") + type_key = type_keys.Program.CIRCUIT + writer = binary_io.write_circuit if version is None: version = common.QPY_VERSION @@ -262,8 +252,9 @@ def load( A list is always returned, even if there is only 1 program in the QPY data. Raises: - QiskitError: if ``file_obj`` is not a valid QPY file - TypeError: When invalid data type is loaded. + QiskitError: if ``file_obj`` is not a valid QPY file. + QpyError: if known but unsupported data type is loaded. + TypeError: if invalid data type is loaded. """ # identify file header version @@ -326,13 +317,9 @@ def load( if type_key == type_keys.Program.CIRCUIT: loader = binary_io.read_circuit elif type_key == type_keys.Program.SCHEDULE_BLOCK: - loader = binary_io.read_schedule_block - warnings.warn( - category=QPYLoadingDeprecatedFeatureWarning, - message="Payloads of type `ScheduleBlock` cannot be loaded as of Qiskit 2.0. " - "An empty circuit (possibly with serialized metadata) will be loaded. " - "Use an earlier version of Qiskit if you want to load a `ScheduleBlock`" - " payload.", + raise QpyError( + "Payloads of type `ScheduleBlock` cannot be loaded as of Qiskit 2.0. " + "Use an earlier version of Qiskit if you want to load `ScheduleBlock` payloads." ) else: raise TypeError(f"Invalid payload format data kind '{type_key}'.") diff --git a/releasenotes/notes/remove-pulse-qpy-07a96673c8f10e38.yaml b/releasenotes/notes/remove-pulse-qpy-07a96673c8f10e38.yaml index f393e7ccfd20..dde7f0ad5e73 100644 --- a/releasenotes/notes/remove-pulse-qpy-07a96673c8f10e38.yaml +++ b/releasenotes/notes/remove-pulse-qpy-07a96673c8f10e38.yaml @@ -2,10 +2,7 @@ upgrade_qpy: - | With the removal of Pulse in Qiskit 2.0, support for serializing ``ScheduleBlock`` programs - via the :func:`qiskit.qpy.dump` function has been removed. Furthermore, in order to keep - backward compatibility, users can still load payloads containing pulse data (i.e. either - ``ScheduleBlock`` s or containing pulse gates) using the :func:`qiskit.qpy.load` function. - However, pulse data is ignored, resulting with potentially partially specified circuits. - In particular, loading a ``ScheduleBlock`` payload will result with a circuit having only - a name and metadata. Loading a :class:`~.QuantumCircuit` payload with pulse gates will - result with a circuit containing undefined custom instructions. + via the :func:`qiskit.qpy.dump` function has been removed. Users can still load payloads + containing pulse gates using the :func:`qiskit.qpy.load` function, however those will be + treated as undefined custom instructions. Loading ``ScheduleBlock`` payloads is not supported + anymore and will result with a :class:`.QpyError` exception. diff --git a/test/qpy_compat/test_qpy.py b/test/qpy_compat/test_qpy.py index 628eff9984b5..3de97403436c 100755 --- a/test/qpy_compat/test_qpy.py +++ b/test/qpy_compat/test_qpy.py @@ -1,4 +1,5 @@ #!/usr/bin/env python3 + # This code is part of Qiskit. # # (C) Copyright IBM 2021. @@ -26,6 +27,7 @@ from qiskit.circuit.quantumregister import Qubit from qiskit.circuit.parameter import Parameter from qiskit.circuit.parametervector import ParameterVector +from qiskit.qpy.exceptions import QpyError from qiskit.quantum_info.random import random_unitary from qiskit.quantum_info import Operator from qiskit.circuit.library import U1Gate, U2Gate, U3Gate, QFT, DCXGate, PauliGate @@ -967,22 +969,22 @@ def generate_qpy(qpy_files): def load_qpy(qpy_files, version_parts): """Load qpy circuits from files and compare to reference circuits.""" pulse_files = { - "schedule_blocks.qpy", - "pulse_gates.qpy", - "referenced_schedule_blocks.qpy", - "acquire_inst_with_kernel_and_disc.qpy", + "schedule_blocks.qpy": (0,21,0), + "pulse_gates.qpy": (0,21,0), + "referenced_schedule_blocks.qpy": (0,24,0), + "acquire_inst_with_kernel_and_disc.qpy": (0,25,0), } for path, circuits in qpy_files.items(): + if path in pulse_files.keys(): + # Qiskit Pulse was removed in version 2.0. Loading ScheduleBlock payloads + # raises an exception and loading pulse gates results with undefined instructions + # so not loading and comparing these payloads. + # See https://github.com/Qiskit/qiskit/pull/13814 + continue print(f"Loading qpy file: {path}") with open(path, "rb") as fd: qpy_circuits = load(fd) equivalent = path in {"open_controlled_gates.qpy", "controlled_gates.qpy"} - if path in pulse_files: - # Qiskit Pulse was removed in version 2.0. We want to be able to load - # pulse-based payloads, however these will be partially specified hence - # we should not compare them to the cached circuits. - # See https://github.com/Qiskit/qiskit/pull/13814 - continue for i, circuit in enumerate(circuits): bind = None if path == "parameterized.qpy": @@ -1002,6 +1004,32 @@ def load_qpy(qpy_files, version_parts): ) + while pulse_files: + path, version = pulse_files.popitem() + + if version_parts < version or version_parts >= (2,0): + continue + + if path == "pulse_gates.qpy": + try: + load(open(path, "rb")) + except: + msg = f"Loading circuit with pulse gates should not raise" + sys.stderr.write(msg) + sys.exit(1) + else: + try: + # A ScheduleBlock payload, should raise QpyError + load(open(path, "rb")) + except QpyError: + continue + + msg = f"Loading payload {path} didn't raise QpyError" + sys.stderr.write(msg) + sys.exit(1) + + + def _main(): parser = argparse.ArgumentParser(description="Test QPY backwards compatibility") parser.add_argument("command", choices=["generate", "load"]) From 888545b7ba0e668eef13d0cd3dd5adeb2fa8b347 Mon Sep 17 00:00:00 2001 From: Eli Arbel Date: Wed, 19 Feb 2025 16:44:38 +0200 Subject: [PATCH 24/29] Clean up TODOs --- qiskit/transpiler/passes/__init__.py | 2 +- qiskit/transpiler/passes/optimization/normalize_rx_angle.py | 1 - qiskit/transpiler/passes/scheduling/alignments/__init__.py | 1 - qiskit/transpiler/preset_passmanagers/level3.py | 1 - 4 files changed, 1 insertion(+), 4 deletions(-) diff --git a/qiskit/transpiler/passes/__init__.py b/qiskit/transpiler/passes/__init__.py index d675827ff582..1fd8454159a3 100644 --- a/qiskit/transpiler/passes/__init__.py +++ b/qiskit/transpiler/passes/__init__.py @@ -262,7 +262,7 @@ from .synthesis import AQCSynthesisPlugin # calibration -from .calibration.rzx_templates import rzx_templates # TODO: remove this +from .calibration.rzx_templates import rzx_templates # circuit scheduling from .scheduling import TimeUnitConversion diff --git a/qiskit/transpiler/passes/optimization/normalize_rx_angle.py b/qiskit/transpiler/passes/optimization/normalize_rx_angle.py index 9272c1e5dea6..b6f36e07de36 100644 --- a/qiskit/transpiler/passes/optimization/normalize_rx_angle.py +++ b/qiskit/transpiler/passes/optimization/normalize_rx_angle.py @@ -25,7 +25,6 @@ from qiskit.circuit.library.standard_gates import RXGate, RZGate, SXGate, XGate -# TODO: do we still need this pass?? class NormalizeRXAngle(TransformationPass): """Normalize theta parameter of RXGate instruction. diff --git a/qiskit/transpiler/passes/scheduling/alignments/__init__.py b/qiskit/transpiler/passes/scheduling/alignments/__init__.py index ca8658fff21a..1080ae860b29 100644 --- a/qiskit/transpiler/passes/scheduling/alignments/__init__.py +++ b/qiskit/transpiler/passes/scheduling/alignments/__init__.py @@ -33,7 +33,6 @@ value in units of dt, thus circuits involving delays may violate the constraints, which may result in failure in the circuit execution on the backend. -TODO: mentions pulse gates below. Do we want to keep these passes? There are two alignment constraint values reported by your quantum backend. In addition, if you want to define a custom instruction as a pulse gate, i.e. calibration, the underlying pulse instruction should satisfy other two waveform constraints. diff --git a/qiskit/transpiler/preset_passmanagers/level3.py b/qiskit/transpiler/preset_passmanagers/level3.py index 89b8b73c1415..ab01cc95bbf0 100644 --- a/qiskit/transpiler/preset_passmanagers/level3.py +++ b/qiskit/transpiler/preset_passmanagers/level3.py @@ -31,7 +31,6 @@ def level_3_pass_manager(pass_manager_config: PassManagerConfig) -> StagedPassMa This pass manager applies the user-given initial layout. If none is given, a search for a perfect layout (i.e. one that satisfies all 2-qubit interactions) is conducted. If no such layout is found, and device calibration information is available, the - # TODO: what does device calibration mean in this context? circuit is mapped to the qubits with best readouts and to CX gates with highest fidelity. The pass manager then transforms the circuit to match the coupling constraints. From 191d9499c1f89b254a52c1c810e25a4d299950d9 Mon Sep 17 00:00:00 2001 From: Eli Arbel Date: Wed, 19 Feb 2025 23:18:44 +0200 Subject: [PATCH 25/29] Remove NormalizeRXAngle and rzx_templates And misc minor fixes --- .../fake_provider/generic_backend_v2.py | 4 +- qiskit/transpiler/passes/__init__.py | 13 -- .../passes/calibration/rzx_templates.py | 51 ------ .../passes/optimization/__init__.py | 1 - .../passes/optimization/normalize_rx_angle.py | 149 ------------------ qiskit/transpiler/passmanager_config.py | 1 + .../generate_preset_pass_manager.py | 6 + .../remove-pulse-passes-3128f27ed7e42bf6.yaml | 8 +- .../transpiler/test_normalize_rx_angle.py | 138 ---------------- .../transpiler/test_template_matching.py | 10 +- 10 files changed, 20 insertions(+), 361 deletions(-) delete mode 100644 qiskit/transpiler/passes/calibration/rzx_templates.py delete mode 100644 qiskit/transpiler/passes/optimization/normalize_rx_angle.py delete mode 100644 test/python/transpiler/test_normalize_rx_angle.py diff --git a/qiskit/providers/fake_provider/generic_backend_v2.py b/qiskit/providers/fake_provider/generic_backend_v2.py index 04333992306c..a65da731cd84 100644 --- a/qiskit/providers/fake_provider/generic_backend_v2.py +++ b/qiskit/providers/fake_provider/generic_backend_v2.py @@ -329,8 +329,8 @@ def run(self, run_input, **options): Job: The job object for the run Raises: - QiskitError: If input is not :class:`~qiskit.circuit.QuantumCircuit or a list of - :class:`~qiskit.circuit.QuantumCircuit objects. + QiskitError: If input is not :class:`~qiskit.circuit.QuantumCircuit` or a list of + :class:`~qiskit.circuit.QuantumCircuit` objects. """ circuits = run_input if not isinstance(circuits, QuantumCircuit) and ( diff --git a/qiskit/transpiler/passes/__init__.py b/qiskit/transpiler/passes/__init__.py index ae4bb218ef4a..3bfea44630c1 100644 --- a/qiskit/transpiler/passes/__init__.py +++ b/qiskit/transpiler/passes/__init__.py @@ -88,19 +88,10 @@ ResetAfterMeasureSimplification OptimizeCliffords ElidePermutations - NormalizeRXAngle OptimizeAnnotated Split2QUnitaries RemoveIdentityEquivalent -Calibration -============= - -.. autosummary:: - :toctree: ../stubs/ - -.. autofunction:: rzx_templates - Scheduling ============= @@ -232,7 +223,6 @@ from .optimization import ResetAfterMeasureSimplification from .optimization import OptimizeCliffords from .optimization import ElidePermutations -from .optimization import NormalizeRXAngle from .optimization import OptimizeAnnotated from .optimization import RemoveIdentityEquivalent from .optimization import Split2QUnitaries @@ -257,9 +247,6 @@ from .synthesis import SolovayKitaevSynthesis from .synthesis import AQCSynthesisPlugin -# calibration -from .calibration.rzx_templates import rzx_templates - # circuit scheduling from .scheduling import TimeUnitConversion from .scheduling import ALAPScheduleAnalysis diff --git a/qiskit/transpiler/passes/calibration/rzx_templates.py b/qiskit/transpiler/passes/calibration/rzx_templates.py deleted file mode 100644 index 10f4d19ebd9e..000000000000 --- a/qiskit/transpiler/passes/calibration/rzx_templates.py +++ /dev/null @@ -1,51 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2021. -# -# 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. - -""" -Convenience function to load RZXGate based templates. -""" - -from enum import Enum -from typing import List, Dict - -from qiskit.circuit.library.templates import rzx - - -def rzx_templates(template_list: List[str] = None) -> Dict: - """Convenience function to get the cost_dict and templates for template matching. - - Args: - template_list: List of instruction names. - - Returns: - Decomposition templates and cost values. - """ - - class RZXTemplateMap(Enum): - """Mapping of instruction name to decomposition template.""" - - ZZ1 = rzx.rzx_zz1() - ZZ2 = rzx.rzx_zz2() - ZZ3 = rzx.rzx_zz3() - YZ = rzx.rzx_yz() - XZ = rzx.rzx_xz() - CY = rzx.rzx_cy() - - if template_list is None: - template_list = ["zz1", "zz2", "zz3", "yz", "xz", "cy"] - - templates = [RZXTemplateMap[gate.upper()].value for gate in template_list] - cost_dict = {"rzx": 0, "cx": 6, "rz": 0, "sx": 1, "p": 0, "h": 1, "rx": 1, "ry": 1} - - rzx_dict = {"template_list": templates, "user_cost_dict": cost_dict} - - return rzx_dict diff --git a/qiskit/transpiler/passes/optimization/__init__.py b/qiskit/transpiler/passes/optimization/__init__.py index 683b5d8e9e1f..e909bc596b26 100644 --- a/qiskit/transpiler/passes/optimization/__init__.py +++ b/qiskit/transpiler/passes/optimization/__init__.py @@ -34,7 +34,6 @@ from .optimize_cliffords import OptimizeCliffords from .collect_cliffords import CollectCliffords from .elide_permutations import ElidePermutations -from .normalize_rx_angle import NormalizeRXAngle from .optimize_annotated import OptimizeAnnotated from .remove_identity_equiv import RemoveIdentityEquivalent from .split_2q_unitaries import Split2QUnitaries diff --git a/qiskit/transpiler/passes/optimization/normalize_rx_angle.py b/qiskit/transpiler/passes/optimization/normalize_rx_angle.py deleted file mode 100644 index b6f36e07de36..000000000000 --- a/qiskit/transpiler/passes/optimization/normalize_rx_angle.py +++ /dev/null @@ -1,149 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2023. -# -# 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. - -"""Performs three optimizations to reduce the number of pulse calibrations for -the single-pulse RX gates: -Wrap RX Gate rotation angles into [0, pi] by sandwiching them with RZ gates. -Convert RX(pi/2) to SX, and RX(pi) to X if the calibrations exist in the target. -Quantize the RX rotation angles by assigning the same value for the angles -that differ within a resolution provided by the user. -""" - -import numpy as np - -from qiskit.transpiler.basepasses import TransformationPass -from qiskit.dagcircuit import DAGCircuit -from qiskit.circuit.library.standard_gates import RXGate, RZGate, SXGate, XGate - - -class NormalizeRXAngle(TransformationPass): - """Normalize theta parameter of RXGate instruction. - - The parameter normalization is performed with following steps. - - 1) Wrap RX Gate theta into [0, pi]. When theta is negative value, the gate is - decomposed into the following sequence. - - .. code-block:: - - ┌───────┐┌─────────┐┌────────┐ - q: ┤ Rz(π) ├┤ Rx(|θ|) ├┤ Rz(-π) ├ - └───────┘└─────────┘└────────┘ - - 2) If the operation is supported by target, convert RX(pi/2) to SX, and RX(pi) to X. - - 3) Quantize theta value according to the user-specified resolution. - - This will help reduce the size of calibration data sent over the wire, - and allow us to exploit the more accurate, hardware-calibrated pulses. - Note that pulse calibration might be attached per each rotation angle. - """ - - def __init__(self, target=None, resolution_in_radian=0): - """NormalizeRXAngle initializer. - - Args: - target (Target): The :class:`~.Target` representing the target backend. - If the target contains SX and X calibrations, this pass will replace the - corresponding RX gates with SX and X gates. - resolution_in_radian (float): Resolution for RX rotation angle quantization. - If set to zero, this pass won't modify the rotation angles in the given DAG. - (=Provides arbitrary-angle RX) - """ - super().__init__() - self.target = target - self.resolution_in_radian = resolution_in_radian - self.already_generated = {} - - def quantize_angles(self, qubit, original_angle): - """Quantize the RX rotation angles by assigning the same value for the angles - that differ within a resolution provided by the user. - - Args: - qubit (qiskit.circuit.Qubit): This will be the dict key to access the list of - quantized rotation angles. - original_angle (float): Original rotation angle, before quantization. - - Returns: - float: Quantized angle. - """ - - if (angles := self.already_generated.get(qubit)) is None: - self.already_generated[qubit] = np.array([original_angle]) - return original_angle - similar_angles = angles[ - np.isclose(angles, original_angle, atol=self.resolution_in_radian / 2) - ] - if similar_angles.size == 0: - self.already_generated[qubit] = np.append(angles, original_angle) - return original_angle - return float(similar_angles[0]) - - def run(self, dag): - """Run the NormalizeRXAngle pass on ``dag``. - - Args: - dag (DAGCircuit): The DAG to be optimized. - - Returns: - DAGCircuit: A DAG with RX gate calibration. - """ - - # Iterate over all op_nodes and replace RX if eligible for modification. - for op_node in dag.op_nodes(): - if not isinstance(op_node.op, RXGate): - continue - - raw_theta = op_node.op.params[0] - wrapped_theta = np.arctan2(np.sin(raw_theta), np.cos(raw_theta)) # [-pi, pi] - - if self.resolution_in_radian: - wrapped_theta = self.quantize_angles(op_node.qargs[0], wrapped_theta) - - half_pi_rotation = np.isclose( - abs(wrapped_theta), np.pi / 2, atol=self.resolution_in_radian / 2 - ) - pi_rotation = np.isclose(abs(wrapped_theta), np.pi, atol=self.resolution_in_radian / 2) - - should_modify_node = ( - (wrapped_theta != raw_theta) - or (wrapped_theta < 0) - or half_pi_rotation - or pi_rotation - ) - - if should_modify_node: - mini_dag = DAGCircuit() - mini_dag.add_qubits(op_node.qargs) - - # new X-rotation gate with angle in [0, pi] - if half_pi_rotation: - physical_qubit_idx = dag.find_bit(op_node.qargs[0]).index - if self.target.instruction_supported("sx", (physical_qubit_idx,)): - mini_dag.apply_operation_back(SXGate(), qargs=op_node.qargs) - elif pi_rotation: - physical_qubit_idx = dag.find_bit(op_node.qargs[0]).index - if self.target.instruction_supported("x", (physical_qubit_idx,)): - mini_dag.apply_operation_back(XGate(), qargs=op_node.qargs) - else: - mini_dag.apply_operation_back( - RXGate(np.abs(wrapped_theta)), qargs=op_node.qargs - ) - - # sandwich with RZ if the intended rotation angle was negative - if wrapped_theta < 0: - mini_dag.apply_operation_front(RZGate(np.pi), qargs=op_node.qargs) - mini_dag.apply_operation_back(RZGate(-np.pi), qargs=op_node.qargs) - - dag.substitute_node_with_dag(node=op_node, input_dag=mini_dag, wires=op_node.qargs) - - return dag diff --git a/qiskit/transpiler/passmanager_config.py b/qiskit/transpiler/passmanager_config.py index 2a6c930222ea..c8744e6c306c 100644 --- a/qiskit/transpiler/passmanager_config.py +++ b/qiskit/transpiler/passmanager_config.py @@ -12,6 +12,7 @@ """Pass Manager Configuration class.""" + class PassManagerConfig: """Pass Manager Configuration.""" diff --git a/qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py b/qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py index f053b9de6418..e54e11900a94 100644 --- a/qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +++ b/qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py @@ -298,6 +298,12 @@ def generate_preset_pass_manager( instruction_durations=instruction_durations, concurrent_measurements=( backend.target.concurrent_measurements if backend is not None else None + ), + dt=dt, + timing_constraints=timing_constraints, + custom_name_mapping=name_mapping, + ) + if target is not None: if coupling_map is None: coupling_map = target.build_coupling_map() diff --git a/releasenotes/notes/remove-pulse-passes-3128f27ed7e42bf6.yaml b/releasenotes/notes/remove-pulse-passes-3128f27ed7e42bf6.yaml index 49e176ce93b1..c83df808e8cf 100644 --- a/releasenotes/notes/remove-pulse-passes-3128f27ed7e42bf6.yaml +++ b/releasenotes/notes/remove-pulse-passes-3128f27ed7e42bf6.yaml @@ -1,7 +1,7 @@ --- upgrade_transpiler: - | - The ``PulseGates``, ``ValidatePulseGates``, ``RXCalibrationBuilder``, ``RZXCalibrationBuilder``, - ``RZXCalibrationBuilderNoEcho`` and ``EchoRZXWeylDecomposition`` passes have been removed, - following their deprecation in Qiskit 1.3. These passes depend on and relate to the Pulse - package which is also being removed in Qiskit 2.0. + As part of Pulse removal in Qiksit 2.0, the ``PulseGates``, ``ValidatePulseGates``, + ``RXCalibrationBuilder``, ``RZXCalibrationBuilder``, ``RZXCalibrationBuilderNoEcho``, + ``NormlizeRXAngle`` and ``EchoRZXWeylDecomposition`` passes, and the ``rzx_templates`` + function have been removed. diff --git a/test/python/transpiler/test_normalize_rx_angle.py b/test/python/transpiler/test_normalize_rx_angle.py deleted file mode 100644 index 6f1c7f22ea76..000000000000 --- a/test/python/transpiler/test_normalize_rx_angle.py +++ /dev/null @@ -1,138 +0,0 @@ -# This code is part of Qiskit. -# -# (C) Copyright IBM 2023, 2024. -# -# 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 NormalizeRXAngle pass""" - -import unittest -import numpy as np -from ddt import ddt, named_data - -from qiskit import QuantumCircuit -from qiskit.transpiler.passes.optimization.normalize_rx_angle import ( - NormalizeRXAngle, -) -from qiskit.providers.fake_provider import GenericBackendV2 -from qiskit.transpiler import Target -from qiskit.circuit.library.standard_gates import SXGate -from test import QiskitTestCase # pylint: disable=wrong-import-order - - -@ddt -class TestNormalizeRXAngle(QiskitTestCase): - """Tests the NormalizeRXAngle pass.""" - - def test_not_convert_to_x_if_no_calib_in_target(self): - """Check that RX(pi) is NOT converted to X, - if X calibration is not present in the target""" - empty_target = Target() - tp = NormalizeRXAngle(target=empty_target) - - qc = QuantumCircuit(1) - qc.rx(90, 0) - - transpiled_circ = tp(qc) - self.assertEqual(transpiled_circ.count_ops().get("x", 0), 0) - - def test_sx_conversion_works(self): - """Check that RX(pi/2) is converted to SX, - if SX calibration is present in the target""" - target = Target() - target.add_instruction(SXGate(), properties={(0,): None}) - tp = NormalizeRXAngle(target=target) - - qc = QuantumCircuit(1) - qc.rx(np.pi / 2, 0) - - transpiled_circ = tp(qc) - self.assertEqual(transpiled_circ.count_ops().get("sx", 0), 1) - - def test_rz_added_for_negative_rotation_angles(self): - """Check that RZ is added before and after RX, - if RX rotation angle is negative""" - - backend = GenericBackendV2(num_qubits=5) - tp = NormalizeRXAngle(target=backend.target) - - # circuit to transpile and test - qc = QuantumCircuit(1) - qc.rx((-1 / 3) * np.pi, 0) - transpiled_circ = tp(qc) - - # circuit to show the correct answer - qc_ref = QuantumCircuit(1) - qc_ref.rz(np.pi, 0) - qc_ref.rx(np.pi / 3, 0) - qc_ref.rz(-np.pi, 0) - - self.assertQuantumCircuitEqual(transpiled_circ, qc_ref) - - @named_data( - {"name": "-0.3pi", "raw_theta": -0.3 * np.pi, "correct_wrapped_theta": 0.3 * np.pi}, - {"name": "1.7pi", "raw_theta": 1.7 * np.pi, "correct_wrapped_theta": 0.3 * np.pi}, - {"name": "2.2pi", "raw_theta": 2.2 * np.pi, "correct_wrapped_theta": 0.2 * np.pi}, - ) - def test_angle_wrapping_works(self, raw_theta, correct_wrapped_theta): - """Check that RX rotation angles are correctly wrapped to [0, pi]""" - backend = GenericBackendV2(num_qubits=5) - tp = NormalizeRXAngle(target=backend.target) - - # circuit to transpile and test - qc = QuantumCircuit(1) - qc.rx(raw_theta, 0) - - transpiled_circuit = tp(qc) - wrapped_theta = transpiled_circuit.get_instructions("rx")[0].operation.params[0] - self.assertAlmostEqual(wrapped_theta, correct_wrapped_theta) - - @named_data( - { - "name": "angles are within resolution", - "resolution": 0.1, - "rx_angles": [0.3, 0.303], - "correct_num_of_cals": 1, - }, - { - "name": "angles are not within resolution", - "resolution": 0.1, - "rx_angles": [0.2, 0.4], - "correct_num_of_cals": 2, - }, - { - "name": "same angle three times", - "resolution": 0.1, - "rx_angles": [0.2, 0.2, 0.2], - "correct_num_of_cals": 1, - }, - ) - def test_quantize_angles(self, resolution, rx_angles, correct_num_of_cals): - """Test that quantize_angles() adds a new calibration only if - the requested angle is not in the vicinity of the already generated angles. - """ - backend = GenericBackendV2(num_qubits=5) - tp = NormalizeRXAngle(backend.target, resolution_in_radian=resolution) - - qc = QuantumCircuit(1) - for rx_angle in rx_angles: - qc.rx(rx_angle, 0) - transpiled_circuit = tp(qc) - - angles = [ - inst.operation.params[0] - for inst in transpiled_circuit.data - if inst.operation.name == "rx" - ] - angles_without_duplicate = list(dict.fromkeys(angles)) - self.assertEqual(len(angles_without_duplicate), correct_num_of_cals) - - -if __name__ == "__main__": - unittest.main() diff --git a/test/python/transpiler/test_template_matching.py b/test/python/transpiler/test_template_matching.py index d7c4baa18fd9..56c6c07f9f4a 100644 --- a/test/python/transpiler/test_template_matching.py +++ b/test/python/transpiler/test_template_matching.py @@ -34,7 +34,7 @@ from qiskit.converters.circuit_to_dagdependency import circuit_to_dagdependency from qiskit.transpiler import PassManager from qiskit.transpiler.passes import TemplateOptimization -from qiskit.transpiler.passes.calibration.rzx_templates import rzx_templates +from qiskit.circuit.library.templates import rzx from qiskit.transpiler.exceptions import TranspilerError from test.python.quantum_info.operators.symplectic.test_clifford import ( # pylint: disable=wrong-import-order random_clifford_circuit, @@ -428,7 +428,11 @@ def test_unbound_parameters_in_rzx_template(self): circuit_in.p(2 * theta, 1) circuit_in.cx(0, 1) - pass_ = TemplateOptimization(**rzx_templates(["zz2"])) + pass_ = TemplateOptimization( + template_list=[rzx.rzx_zz2()], + user_cost_dict={"rzx": 0, "cx": 6, "rz": 0, "sx": 1, "p": 0, "h": 1, "rx": 1, "ry": 1}, + ) + circuit_out = PassManager(pass_).run(circuit_in) # these are NOT equal if template optimization works @@ -444,7 +448,7 @@ def test_unbound_parameters_in_rzx_template(self): def test_two_parameter_template(self): """ - Test a two-Parameter template based on rzx_templates(["zz3"]), + Test a two-Parameter template based on rzx.rzx_zz3() ┌───┐┌───────┐┌───┐┌────────────┐» q_0: ──■─────────────■──┤ X ├┤ Rz(φ) ├┤ X ├┤ Rz(-1.0*φ) ├» From 0a760e76f2ee70df16171de1e923fdfbc3891c82 Mon Sep 17 00:00:00 2001 From: Eli Arbel Date: Thu, 20 Feb 2025 12:50:19 +0200 Subject: [PATCH 26/29] Unify transpiler renos w.r.t pulse removal --- qiskit/dagcircuit/dagdependency.py | 2 +- ...e-pulse-calibrations-4486dc101b76ec51.yaml | 33 ++++++++++++++----- .../remove-pulse-passes-3128f27ed7e42bf6.yaml | 7 ---- 3 files changed, 25 insertions(+), 17 deletions(-) delete mode 100644 releasenotes/notes/remove-pulse-passes-3128f27ed7e42bf6.yaml diff --git a/qiskit/dagcircuit/dagdependency.py b/qiskit/dagcircuit/dagdependency.py index 1393bd0335b1..e398ada92c99 100644 --- a/qiskit/dagcircuit/dagdependency.py +++ b/qiskit/dagcircuit/dagdependency.py @@ -510,7 +510,7 @@ def draw(self, scale=0.7, filename=None, style="color"): Graphviz ` to be installed. Args: - scale (float): sng factor + scale (float): scaling factor filename (str): file path to save image to (format inferred from name) style (str): 'plain': B&W graph 'color' (default): color input/output/op nodes diff --git a/releasenotes/notes/remove-pulse-calibrations-4486dc101b76ec51.yaml b/releasenotes/notes/remove-pulse-calibrations-4486dc101b76ec51.yaml index afe661448a61..bfda9c8793b0 100644 --- a/releasenotes/notes/remove-pulse-calibrations-4486dc101b76ec51.yaml +++ b/releasenotes/notes/remove-pulse-calibrations-4486dc101b76ec51.yaml @@ -7,15 +7,30 @@ upgrade_circuits: :class:`.DAGCircuit` classes and ``add_calibration`` has been removed from :class:`.QuantumCircuit`. upgrade_transpiler: - | - As part of Pulse removal in Qiskit 2.0, the ``inst_map`` argument has been removed from - the :func:`.generate_preset_pass_manager` and :func:`.transpile` functions, from the - :meth:`.Target.from_configuration` method and from the constructor of :class:`.PassManagerConfig`. - In addition, ``calibration`` has been removed from the :class:`.InstructionProperties` 's constructor and - is no longer a property of that class. - - | - As part of Pulse removal in Qiskit 2.0, the ``has_calibration``, ``get_calibration``, - ``instruction_schedule_map`` and ``update_from_instruction_schedule_map`` methods have been - removed from the :class:`.Target` class. + As part of Pulse removal in Qiskit 2.0, all pulse and calibration related functionality + in the transpiler has been removed. This includes the following: + + The following passes have been removed: + + * ``qiskit.transpiler.passes.PulseGates`` + * ``qiskit.transpiler.passes.ValidatePulseGates`` + * ``qiskit.transpiler.passes.RXCalibrationBuilder`` + * ``qiskit.transpiler.passes.RZXCalibrationBuilder`` + * ``qiskit.transpiler.passes.RZXCalibrationBuilderNoEcho`` + * ``qiskit.transpiler.passes.EchoRZXWeylDecomposition`` + + The ``inst_map`` argument has been removed from the following elements: + + * The :func:`.generate_preset_pass_manager` and :func:`.transpile` functions + * The :meth:`.Target.from_configuration` method + * The constructor of the :class:`.PassManagerConfig` class + + Calibration support has been removed: + + * ``calibration`` has been removed from the :class:`.InstructionProperties` 's constructor and is no longer a property of that class. + * The ``has_calibration``, ``get_calibration``, ``instruction_schedule_map`` and ``update_from_instruction_schedule_map`` methods have been removed from the :class:`.Target` class. + + upgrade_misc: - | As part of Pulse removal in Qiskit 2.0, the ``sequence`` and ``schedule_circuit`` functions diff --git a/releasenotes/notes/remove-pulse-passes-3128f27ed7e42bf6.yaml b/releasenotes/notes/remove-pulse-passes-3128f27ed7e42bf6.yaml deleted file mode 100644 index 49e176ce93b1..000000000000 --- a/releasenotes/notes/remove-pulse-passes-3128f27ed7e42bf6.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -upgrade_transpiler: - - | - The ``PulseGates``, ``ValidatePulseGates``, ``RXCalibrationBuilder``, ``RZXCalibrationBuilder``, - ``RZXCalibrationBuilderNoEcho`` and ``EchoRZXWeylDecomposition`` passes have been removed, - following their deprecation in Qiskit 1.3. These passes depend on and relate to the Pulse - package which is also being removed in Qiskit 2.0. From e5e314e80ea24a5e9faa1a3b13e47cd098577576 Mon Sep 17 00:00:00 2001 From: Eli Arbel Date: Mon, 3 Mar 2025 22:22:57 +0200 Subject: [PATCH 27/29] Update reno and minor cosmetic changes --- qiskit/qpy/__init__.py | 2 +- releasenotes/notes/remove-pulse-eb43f66499092489.yaml | 10 ++++++---- test/qpy_compat/test_qpy.py | 9 +++++---- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/qiskit/qpy/__init__.py b/qiskit/qpy/__init__.py index 4aa6b8b818db..e7c23f1e0de1 100644 --- a/qiskit/qpy/__init__.py +++ b/qiskit/qpy/__init__.py @@ -18,7 +18,7 @@ .. currentmodule:: qiskit.qpy QPY is a binary serialization format for :class:`~.QuantumCircuit` -objects that is designed to be cross-platform, Python version agnostic, +objects that is designed to be cross-platform, Python version agnostic, and backwards compatible moving forward. QPY should be used if you need a mechanism to save or copy between systems a :class:`~.QuantumCircuit` that preserves the full Qiskit object structure (except for custom attributes diff --git a/releasenotes/notes/remove-pulse-eb43f66499092489.yaml b/releasenotes/notes/remove-pulse-eb43f66499092489.yaml index 68da77bdd5a2..bcab429ad2ed 100644 --- a/releasenotes/notes/remove-pulse-eb43f66499092489.yaml +++ b/releasenotes/notes/remove-pulse-eb43f66499092489.yaml @@ -4,11 +4,13 @@ prelude: > This include all pulse module files, pulse visualization functionality, support for ``ScheduleBlock`` and pulse-gate serialization/deserialization capability in QPY, calibrations management in :class:`.QuantumCircuit`, :class:`.Target` and :class:`.DAGCircuit` and pulse-based fake backends. - For more details, see the corresponding sections below. + For more details about the removed components related to pulse, see the corresponding sections below. + + Note that Pulse migration to Qiskit Dynamics, as was the initial plan following the deprecation of Pulse, + has been put on hold due to Qiskit Dynamics development priorities. Users wanting to use Qiskit Pulse + as a frontend to supporting backends or in other uses-cases can still use it via Qiskit versions prior + to 2.0, which include Pulse functionality. - The Pulse package as a whole, along with major dependent components that have been removed in Qiskit, will - be part of `Qiskit Dynamics `__ repository to further enable - pulse and low-level control simulation. upgrade_providers: - | As part of Pulse removal in Qiskit 2.0, the following methods have been removed: diff --git a/test/qpy_compat/test_qpy.py b/test/qpy_compat/test_qpy.py index dc0e340f3bdf..75366afadec3 100755 --- a/test/qpy_compat/test_qpy.py +++ b/test/qpy_compat/test_qpy.py @@ -1046,10 +1046,11 @@ def load_qpy(qpy_files, version_parts): from qiskit.qpy.exceptions import QpyError - while pulse_files: - path, version = pulse_files.popitem() + for path, min_version in pulse_files.items(): - if version_parts < version or version_parts >= (2, 0): + # version_parts is the version of Qiskit used to generate the payloads being loaded in this test. + # min_version is the minimal version of Qiskit this pulse payload was generated with. + if version_parts < min_version or version_parts >= (2, 0): continue if path == "pulse_gates.qpy": @@ -1062,7 +1063,7 @@ def load_qpy(qpy_files, version_parts): sys.exit(1) else: try: - # A ScheduleBlock payload, should raise QpyError + # A ScheduleBlock payload, should raise QpyError. with open(path, "rb") as fd: load(fd) except QpyError: From 1848146e9fd2a42c6d881e1258aa667485adfd49 Mon Sep 17 00:00:00 2001 From: Eli Arbel <46826214+eliarbel@users.noreply.github.com> Date: Tue, 4 Mar 2025 15:35:13 +0200 Subject: [PATCH 28/29] Delete a test file that unintentionally got in --- debug_qsd.py | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 debug_qsd.py diff --git a/debug_qsd.py b/debug_qsd.py deleted file mode 100644 index 6faeb38d53fe..000000000000 --- a/debug_qsd.py +++ /dev/null @@ -1,19 +0,0 @@ -import scipy -from qiskit.synthesis.unitary import qsd -from qiskit import transpile - -nqubits = 3 - -dim = 2**nqubits -umat = scipy.stats.unitary_group.rvs(dim, random_state=1224) -circ = qsd.qs_decomposition(umat, opt_a1=True, opt_a2=True) - -passes = [] -def callback_func(**kwargs): - t_pass = kwargs['pass_'].name() - passes.append(t_pass) -ccirc = transpile( - circ, basis_gates=["u", "cx", "qsd2q"], optimization_level=0, qubits_initially_zero=False, callback=callback_func -) -print("qsd passes", passes) - From 10642dc81c1639748b65089aa030113e1b5b72de Mon Sep 17 00:00:00 2001 From: Matthew Treinish Date: Wed, 5 Mar 2025 20:49:00 -0500 Subject: [PATCH 29/29] Update releasenotes/notes/remove-pulse-eb43f66499092489.yaml --- releasenotes/notes/remove-pulse-eb43f66499092489.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/releasenotes/notes/remove-pulse-eb43f66499092489.yaml b/releasenotes/notes/remove-pulse-eb43f66499092489.yaml index bcab429ad2ed..24b365d8a6a7 100644 --- a/releasenotes/notes/remove-pulse-eb43f66499092489.yaml +++ b/releasenotes/notes/remove-pulse-eb43f66499092489.yaml @@ -1,5 +1,6 @@ --- -prelude: > +upgrade: + - | Qiskit Pulse has been completely removed in this release, following its deprecation in Qiskit 1.3. This include all pulse module files, pulse visualization functionality, support for ``ScheduleBlock`` and pulse-gate serialization/deserialization capability in QPY, calibrations management in

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 literal 8613 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 diff --git a/test/python/visualization/references/5bit_quantum_computer.png b/test/python/visualization/references/5bit_quantum_computer.png index 5993773af1f9b5ec9e9bf445fc289dcab3c66e5e..74afcaf97fd11d01400586961e2d0e3ec5718277 100644 GIT binary patch literal 17661 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 ZOZY-6-@{}8_$m^VcM59qm9l1G{{x>4_{9JK literal 8745 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 M=^9-wxa1J_KdtF<%>V!Z literal 8520 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 diff --git a/test/python/visualization/references/7bit_quantum_computer.png b/test/python/visualization/references/7bit_quantum_computer.png index a28a5c7df13d2b7aea0805b21f4174308af12359..dbcaefb9fefba0ba5c31b8d8d387452000806636 100644 GIT binary patch literal 25652 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 diff --git a/test/python/visualization/test_gate_map.py b/test/python/visualization/test_gate_map.py index d2d589574103..3df3e6285d2d 100644 --- a/test/python/visualization/test_gate_map.py +++ b/test/python/visualization/test_gate_map.py @@ -15,12 +15,7 @@ from io import BytesIO from ddt import ddt, data -from qiskit.providers.fake_provider import ( - Fake5QV1, - Fake20QV1, - Fake7QPulseV1, - GenericBackendV2, -) +from qiskit.providers.fake_provider import GenericBackendV2 from qiskit.visualization import ( plot_gate_map, plot_coupling_map, @@ -31,7 +26,7 @@ from qiskit import QuantumRegister, QuantumCircuit from qiskit.transpiler.layout import Layout, TranspileLayout from .visualization import path_to_diagram_reference, QiskitVisualizationTestCase -from ..legacy_cmaps import KYOTO_CMAP, MUMBAI_CMAP +from ..legacy_cmaps import KYOTO_CMAP, MUMBAI_CMAP, YORKTOWN_CMAP, ALMADEN_CMAP, LAGOS_CMAP if optionals.HAS_MATPLOTLIB: import matplotlib.pyplot as plt @@ -47,14 +42,18 @@ class TestGateMap(QiskitVisualizationTestCase): # pylint: disable=possibly-used-before-assignment """visual tests for plot_gate_map""" - backends = [Fake5QV1(), Fake20QV1(), Fake7QPulseV1()] + backends = [ + GenericBackendV2(num_qubits=5, coupling_map=YORKTOWN_CMAP, seed=0), + GenericBackendV2(num_qubits=20, coupling_map=ALMADEN_CMAP, seed=0), + GenericBackendV2(num_qubits=7, coupling_map=LAGOS_CMAP, seed=0), + ] @data(*backends) @unittest.skipIf(not optionals.HAS_MATPLOTLIB, "matplotlib not available.") @unittest.skipUnless(optionals.HAS_GRAPHVIZ, "Graphviz not installed") def test_plot_gate_map(self, backend): """tests plotting of gate map of a device (20 qubit, 7 qubit, and 5 qubit)""" - n = backend.configuration().n_qubits + n = backend.num_qubits img_ref = path_to_diagram_reference(str(n) + "bit_quantum_computer.png") fig = plot_gate_map(backend) with BytesIO() as img_buffer: @@ -68,7 +67,7 @@ def test_plot_gate_map(self, backend): @unittest.skipUnless(optionals.HAS_GRAPHVIZ, "Graphviz not installed") def test_plot_circuit_layout(self, backend): """tests plot_circuit_layout for each device""" - layout_length = int(backend._configuration.n_qubits / 2) + layout_length = int(backend.num_qubits / 2) qr = QuantumRegister(layout_length, "qr") circuit = QuantumCircuit(qr) circuit._layout = TranspileLayout( @@ -76,7 +75,7 @@ def test_plot_circuit_layout(self, backend): {qubit: index for index, qubit in enumerate(circuit.qubits)}, ) circuit._layout.initial_layout.add_register(qr) - n = backend.configuration().n_qubits + n = backend.num_qubits img_ref = path_to_diagram_reference(str(n) + "_plot_circuit_layout.png") fig = plot_circuit_layout(circuit, backend) with BytesIO() as img_buffer: @@ -102,23 +101,6 @@ def test_plot_gate_map_no_backend(self): self.assertImagesAreEqual(Image.open(img_buffer), img_ref, 0.2) plt.close(fig) - @unittest.skipIf(not optionals.HAS_MATPLOTLIB, "matplotlib not available.") - @unittest.skipUnless(optionals.HAS_GRAPHVIZ, "Graphviz not installed") - @unittest.skipUnless(optionals.HAS_SEABORN, "Seaborn not installed") - def test_plot_error_map_backend_v1(self): - """Test plotting error map with fake backend v1.""" - backend = GenericBackendV2( - num_qubits=27, - coupling_map=MUMBAI_CMAP, - ) - img_ref = path_to_diagram_reference("fake_27_q_error.png") - fig = plot_error_map(backend) - with BytesIO() as img_buffer: - fig.savefig(img_buffer, format="png") - img_buffer.seek(0) - self.assertImagesAreEqual(Image.open(img_buffer), img_ref, 0.05) - plt.close(fig) - @unittest.skipIf(not optionals.HAS_MATPLOTLIB, "matplotlib not available.") @unittest.skipUnless(optionals.HAS_GRAPHVIZ, "Graphviz not installed") @unittest.skipUnless(optionals.HAS_SEABORN, "Seaborn not installed") diff --git a/test/randomized/test_transpiler_equivalence.py b/test/randomized/test_transpiler_equivalence.py index 77975b247d0c..d9f5775ed3f7 100644 --- a/test/randomized/test_transpiler_equivalence.py +++ b/test/randomized/test_transpiler_equivalence.py @@ -62,16 +62,11 @@ from qiskit import transpile, qasm2 from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister from qiskit.circuit import Measure, Reset, Gate, Barrier -from qiskit.providers.fake_provider import ( - Fake5QV1, - Fake20QV1, - Fake7QPulseV1, - Fake27QPulseV1, - Fake127QPulseV1, -) +from qiskit.providers.fake_provider import GenericBackendV2 # pylint: disable=wildcard-import,unused-wildcard-import from qiskit.circuit.library.standard_gates import * +from ..python.legacy_cmaps import ALMADEN_CMAP, KYOTO_CMAP from qiskit_aer import Aer # pylint: disable=wrong-import-order @@ -144,17 +139,14 @@ def _getenv_list(var_name): ) -def _fully_supports_scheduling(backend): - """Checks if backend is not in the set of backends known not to have specified gate durations.""" - return not isinstance( - backend, - (Fake20QV1, Fake5QV1), - ) - - -mock_backends = [Fake5QV1(), Fake20QV1(), Fake7QPulseV1(), Fake27QPulseV1(), Fake127QPulseV1()] +mock_backends = [ + GenericBackendV2(num_qubits=5, seed=0), + GenericBackendV2(num_qubits=5, seed=2), + GenericBackendV2(num_qubits=20, coupling_map=ALMADEN_CMAP, seed=5), + GenericBackendV2(num_qubits=127, coupling_map=KYOTO_CMAP, seed=42), +] -mock_backends_with_scheduling = [b for b in mock_backends if _fully_supports_scheduling(b)] +mock_backends_with_scheduling = mock_backends @st.composite @@ -194,7 +186,7 @@ class QCircuitMachine(RuleBasedStateMachine): clbits = Bundle("clbits") backend = Aer.get_backend("aer_simulator") - max_qubits = int(backend.configuration().n_qubits / 2) + max_qubits = int(backend.num_qubits / 2) # Limit reg generation for more interesting circuits max_qregs = 3 @@ -278,10 +270,7 @@ def equivalent_transpile(self, kwargs): counts are not significantly different before and after transpilation. """ - assume( - kwargs["backend"] is None - or kwargs["backend"].configuration().n_qubits >= len(self.qc.qubits) - ) + assume(kwargs["backend"] is None or kwargs["backend"].num_qubits >= len(self.qc.qubits)) call = ( "transpile(qc, " diff --git a/test/utils/base.py b/test/utils/base.py index 133666cfc7ad..ebb87eb7a7da 100644 --- a/test/utils/base.py +++ b/test/utils/base.py @@ -168,14 +168,6 @@ def setUpClass(cls): message=r".*The property.*qiskit.*unit.*", ) - # Safe to remove once `FakeBackend` is removed (2.0) - warnings.filterwarnings( - "ignore", # If "default", it floods the CI output - category=DeprecationWarning, - message=r".*from_backend using V1 based backend is deprecated as of Aer 0.15*", - module="qiskit.providers.fake_provider.fake_backend", - ) - warnings.filterwarnings( "default", category=DeprecationWarning, From edcc14a13c87885468c758f20098629c32d5cc90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elena=20Pe=C3=B1a=20Tapia?= Date: Mon, 10 Feb 2025 14:05:14 +0100 Subject: [PATCH 05/29] Remove FakeBackend references from docs (these classes will be removed in 2.0 so no alternative is provided) --- qiskit/pulse/builder.py | 310 +--------------------------------------- 1 file changed, 3 insertions(+), 307 deletions(-) diff --git a/qiskit/pulse/builder.py b/qiskit/pulse/builder.py index 70ecc9d11dfa..08d6f96d1215 100644 --- a/qiskit/pulse/builder.py +++ b/qiskit/pulse/builder.py @@ -649,32 +649,6 @@ def build( ) -> ContextManager[ScheduleBlock]: """Create a context manager for launching the imperative pulse builder DSL. - To enter a building context and starting building a pulse program: - - .. plot:: - :include-source: - :nofigs: - :context: reset - - from qiskit import transpile, pulse - from qiskit.providers.fake_provider import FakeOpenPulse2Q - - backend = FakeOpenPulse2Q() - - d0 = pulse.DriveChannel(0) - - with pulse.build() as pulse_prog: - pulse.play(pulse.Constant(100, 0.5), d0) - - - While the output program ``pulse_prog`` cannot be executed as we are using - a mock backend. If a real backend is being used, executing the program is - done with: - - .. code-block:: python - - backend.run(transpile(pulse_prog, backend)) - Args: backend (Backend): A Qiskit backend. If not supplied certain builder functionality will be unavailable. @@ -774,24 +748,6 @@ def append_instruction(instruction: instructions.Instruction): def num_qubits() -> int: """Return number of qubits in the currently active backend. - Examples: - - .. plot:: - :include-source: - :nofigs: - - from qiskit import pulse - from qiskit.providers.fake_provider import FakeOpenPulse2Q - - backend = FakeOpenPulse2Q() - - with pulse.build(backend): - print(pulse.num_qubits()) - - .. code-block:: text - - 2 - .. note:: Requires the active builder context to have a backend set. """ if isinstance(active_backend(), BackendV2): @@ -836,24 +792,6 @@ def samples_to_seconds(samples: int | np.ndarray) -> float | np.ndarray: def qubit_channels(qubit: int) -> set[chans.Channel]: """Returns the set of channels associated with a qubit. - Examples: - - .. plot:: - :include-source: - :nofigs: - - from qiskit import pulse - from qiskit.providers.fake_provider import FakeOpenPulse2Q - - backend = FakeOpenPulse2Q() - - with pulse.build(backend): - print(pulse.qubit_channels(0)) - - .. code-block:: text - - {MeasureChannel(0), ControlChannel(0), DriveChannel(0), AcquireChannel(0), ControlChannel(1)} - .. note:: Requires the active builder context to have a backend set. .. note:: A channel may still be associated with another qubit in this list @@ -1219,34 +1157,6 @@ def frequency_offset( ) -> Generator[None, None, None]: """Shift the frequency of inputs channels on entry into context and undo on exit. - Examples: - - .. plot:: - :include-source: - :nofigs: - - from qiskit import pulse - from qiskit.providers.fake_provider import FakeOpenPulse2Q - - backend = FakeOpenPulse2Q() - d0 = pulse.DriveChannel(0) - - with pulse.build(backend) as pulse_prog: - # shift frequency by 1GHz - with pulse.frequency_offset(1e9, d0): - pulse.play(pulse.Constant(10, 1.0), d0) - - assert len(pulse_prog.instructions) == 3 - - with pulse.build(backend) as pulse_prog: - # Shift frequency by 1GHz. - # Undo accumulated phase in the shifted frequency frame - # when exiting the context. - with pulse.frequency_offset(1e9, d0, compensate_phase=True): - pulse.play(pulse.Constant(10, 1.0), d0) - - assert len(pulse_prog.instructions) == 4 - Args: frequency: Amount of frequency offset in Hz. channels: Channels to offset frequency of. @@ -1284,20 +1194,6 @@ def frequency_offset( def drive_channel(qubit: int) -> chans.DriveChannel: """Return ``DriveChannel`` for ``qubit`` on the active builder backend. - Examples: - - .. plot:: - :include-source: - :nofigs: - - from qiskit import pulse - from qiskit.providers.fake_provider import FakeOpenPulse2Q - - backend = FakeOpenPulse2Q() - - with pulse.build(backend): - assert pulse.drive_channel(0) == pulse.DriveChannel(0) - .. note:: Requires the active builder context to have a backend set. """ # backendV2 @@ -1310,20 +1206,6 @@ def drive_channel(qubit: int) -> chans.DriveChannel: def measure_channel(qubit: int) -> chans.MeasureChannel: """Return ``MeasureChannel`` for ``qubit`` on the active builder backend. - Examples: - - .. plot:: - :include-source: - :nofigs: - - from qiskit import pulse - from qiskit.providers.fake_provider import FakeOpenPulse2Q - - backend = FakeOpenPulse2Q() - - with pulse.build(backend): - assert pulse.measure_channel(0) == pulse.MeasureChannel(0) - .. note:: Requires the active builder context to have a backend set. """ # backendV2 @@ -1336,20 +1218,6 @@ def measure_channel(qubit: int) -> chans.MeasureChannel: def acquire_channel(qubit: int) -> chans.AcquireChannel: """Return ``AcquireChannel`` for ``qubit`` on the active builder backend. - Examples: - - .. plot:: - :include-source: - :nofigs: - - from qiskit import pulse - from qiskit.providers.fake_provider import FakeOpenPulse2Q - - backend = FakeOpenPulse2Q() - - with pulse.build(backend): - assert pulse.acquire_channel(0) == pulse.AcquireChannel(0) - .. note:: Requires the active builder context to have a backend set. """ # backendV2 @@ -1365,19 +1233,6 @@ def control_channels(*qubits: Iterable[int]) -> list[chans.ControlChannel]: Return the secondary drive channel for the given qubit -- typically utilized for controlling multi-qubit interactions. - Examples: - - .. plot:: - :include-source: - :nofigs: - - from qiskit import pulse - from qiskit.providers.fake_provider import FakeOpenPulse2Q - - backend = FakeOpenPulse2Q() - with pulse.build(backend): - assert pulse.control_channels(0, 1) == [pulse.ControlChannel(0)] - .. note:: Requires the active builder context to have a backend set. Args: @@ -1882,74 +1737,8 @@ def barrier(*channels_or_qubits: chans.Channel | int, name: str | None = None): """Barrier directive for a set of channels and qubits. This directive prevents the compiler from moving instructions across - the barrier. Consider the case where we want to enforce that one pulse - happens after another on separate channels, this can be done with: - - .. plot:: - :include-source: - :nofigs: - :context: reset - - from qiskit import pulse - from qiskit.providers.fake_provider import FakeOpenPulse2Q - - backend = FakeOpenPulse2Q() - - d0 = pulse.DriveChannel(0) - d1 = pulse.DriveChannel(1) - - with pulse.build(backend) as barrier_pulse_prog: - pulse.play(pulse.Constant(10, 1.0), d0) - pulse.barrier(d0, d1) - pulse.play(pulse.Constant(10, 1.0), d1) - - Of course this could have been accomplished with: - - .. plot:: - :include-source: - :nofigs: - :context: - - from qiskit.pulse import transforms - - with pulse.build(backend) as aligned_pulse_prog: - with pulse.align_sequential(): - pulse.play(pulse.Constant(10, 1.0), d0) - pulse.play(pulse.Constant(10, 1.0), d1) - - barrier_pulse_prog = transforms.target_qobj_transform(barrier_pulse_prog) - aligned_pulse_prog = transforms.target_qobj_transform(aligned_pulse_prog) - - assert barrier_pulse_prog == aligned_pulse_prog - - The barrier allows the pulse compiler to take care of more advanced - scheduling alignment operations across channels. For example - in the case where we are calling an outside circuit or schedule and - want to align a pulse at the end of one call: - - .. plot:: - :include-source: - :nofigs: - - import math - from qiskit import pulse - from qiskit.providers.fake_provider import FakeOpenPulse2Q - - backend = FakeOpenPulse2Q() - - d0 = pulse.DriveChannel(0) - - with pulse.build(backend) as pulse_prog: - with pulse.align_right(): - pulse.call(backend.defaults().instruction_schedule_map.get('u1', (1,))) - # Barrier qubit 1 and d0. - pulse.barrier(1, d0) - # Due to barrier this will play before the gate on qubit 1. - pulse.play(pulse.Constant(10, 1.0), d0) - # This will end at the same time as the pulse above due to - # the barrier. - pulse.call(backend.defaults().instruction_schedule_map.get('u1', (1,))) - + the barrier. The barrier allows the pulse compiler to take care of more advanced + scheduling alignment operations across channels. .. note:: Requires the active builder context to have a backend set if qubits are barriered on. @@ -1972,34 +1761,6 @@ def macro(func: Callable): behave as if the function code was embedded inline in the parent builder context after parameter substitution. - - Examples: - - .. plot:: - :alt: Output from the previous code. - :include-source: - - from qiskit import pulse - from qiskit.providers.fake_provider import FakeOpenPulse2Q - - @pulse.macro - def measure(qubit: int): - pulse.play(pulse.GaussianSquare(16384, 256, 15872), pulse.measure_channel(qubit)) - mem_slot = pulse.MemorySlot(qubit) - pulse.acquire(16384, pulse.acquire_channel(qubit), mem_slot) - - return mem_slot - - - backend = FakeOpenPulse2Q() - - with pulse.build(backend=backend) as sched: - mem_slot = measure(0) - print(f"Qubit measured into {mem_slot}") - - sched.draw() - - Args: func: The Python function to enable as a builder macro. There are no requirements on the signature of the function, any calls to pulse @@ -2037,44 +1798,9 @@ def measure( the process for you, but if desired full control is still available with :func:`acquire` and :func:`play`. - To use the measurement it is as simple as specifying the qubit you wish to - measure: - - .. plot:: - :include-source: - :nofigs: - :context: reset - - from qiskit import pulse - from qiskit.providers.fake_provider import FakeOpenPulse2Q - - backend = FakeOpenPulse2Q() - - qubit = 0 - - with pulse.build(backend) as pulse_prog: - # Do something to the qubit. - qubit_drive_chan = pulse.drive_channel(0) - pulse.play(pulse.Constant(100, 1.0), qubit_drive_chan) - # Measure the qubit. - reg = pulse.measure(qubit) - For now it is not possible to do much with the handle to ``reg`` but in the future we will support using this handle to a result register to build - up ones program. It is also possible to supply this register: - - .. plot:: - :include-source: - :nofigs: - :context: - - with pulse.build(backend) as pulse_prog: - pulse.play(pulse.Constant(100, 1.0), qubit_drive_chan) - # Measure the qubit. - mem0 = pulse.MemorySlot(0) - reg = pulse.measure(qubit, mem0) - - assert reg == mem0 + up ones program. .. note:: Requires the active builder context to have a backend set. @@ -2127,21 +1853,6 @@ def measure_all() -> list[chans.MemorySlot]: same time. This is useful for handling device ``meas_map`` and single measurement constraints. - Examples: - - .. plot:: - :include-source: - :nofigs: - - from qiskit import pulse - from qiskit.providers.fake_provider import FakeOpenPulse2Q - - backend = FakeOpenPulse2Q() - - with pulse.build(backend) as pulse_prog: - # Measure all qubits and return associated registers. - regs = pulse.measure_all() - .. note:: Requires the active builder context to have a backend set. @@ -2170,21 +1881,6 @@ def delay_qubits(duration: int, *qubits: int): r"""Insert delays on all the :class:`channels.Channel`\s that correspond to the input ``qubits`` at the same time. - Examples: - - .. plot:: - :include-source: - :nofigs: - - from qiskit import pulse - from qiskit.providers.fake_provider import FakeOpenPulse3Q - - backend = FakeOpenPulse3Q() - - with pulse.build(backend) as pulse_prog: - # Delay for 100 cycles on qubits 0, 1 and 2. - regs = pulse.delay_qubits(100, 0, 1, 2) - .. note:: Requires the active builder context to have a backend set. Args: From 08defbf527775af93413d80e4ee6aa3207887bf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elena=20Pe=C3=B1a=20Tapia?= Date: Mon, 10 Feb 2025 14:19:22 +0100 Subject: [PATCH 06/29] Generate visuals for test (DUMMY COMMIT) --- .../references/20_plot_circuit_layout.png | Bin 0 -> 64071 bytes .../references/20bit_quantum_computer.png | Bin 0 -> 60056 bytes .../references/5_plot_circuit_layout.png | Bin 0 -> 18311 bytes .../references/5bit_quantum_computer.png | Bin 0 -> 17661 bytes .../references/7_plot_circuit_layout.png | Bin 0 -> 25394 bytes .../references/7bit_quantum_computer.png | Bin 0 -> 25652 bytes .../circuit/test_circuit_matplotlib_drawer.py | 54 ++++++++++++++++++ 7 files changed, 54 insertions(+) create mode 100644 test/visual/mpl/circuit/references/20_plot_circuit_layout.png create mode 100644 test/visual/mpl/circuit/references/20bit_quantum_computer.png create mode 100644 test/visual/mpl/circuit/references/5_plot_circuit_layout.png create mode 100644 test/visual/mpl/circuit/references/5bit_quantum_computer.png create mode 100644 test/visual/mpl/circuit/references/7_plot_circuit_layout.png create mode 100644 test/visual/mpl/circuit/references/7bit_quantum_computer.png diff --git a/test/visual/mpl/circuit/references/20_plot_circuit_layout.png b/test/visual/mpl/circuit/references/20_plot_circuit_layout.png new file mode 100644 index 0000000000000000000000000000000000000000..d0e577d38cad71d3f0ca895810b10758547ac50b GIT binary patch literal 64071 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%0DvlUxMQn^IiP?eSrd6`Zz_bt7k-N=H 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≈I<4ec^-M5NP`Qi&wK4!Vl`sy=_^Ef1M-J1IrGL@KZ9RlYPl-S%l0u!`m11u zL;8gw{7)@8dwRCYMV@@#ay({s1MX>BYM{9hT-!uI^e^)Xa~&?aYM`BoIagr65a0Ob z$6-D`u?tvX{0aGPQ-kh%DmuTRSL{@_Du@>z5-&s#8hAMKj?2>ZY1B+??QL~=OcQqGp2N^d+s-H4iFo-|%kFTEO)h43 zcK6)g^%)(w(RoGHovu5tRxLZ7^@IxOL2&tC(U9I`%4jNcVkm2aVm2kSfhP@2Rla|* zWhYfG;?7>G(4Dtb7R@N1RP3?f=LfN-H}BvsUFu|)_LQ9Wt)?aQ9^cV4tk2A>sfS1s z_{D7>%Wb!JmNOL{)Pc(#5*g97fv(s1`1nFj0A{#k3^_og(QpVR%?|4kv~PQRJ|UrS zaFdAj3F6%&oN>E$wJkzP&ciXElB4FS(8g>z|MujPvWkid3qi|JLZWi^(8oQ_?Yb^8iLX*0upBdwJp9wShT{2%vNB1dC7iUj@2>1MD z<9T5l7H>caNW%$ZB^L}0XCl`ZBIV~=&#$r=Y&1z6`Fi-PH+3@h;>ew!=GQ?YB(qe2Wa#c2UiKQD?W?XgqZ)D z5AsCs6`!mzVk!UMr*B}Z`IMzl1#N9?M6Wb(VL%QYIWkr#lY!#`#^W#!hck1DrDZti z^wK0`uK)Y+$!MwuQ2%LYuw9ty!+cbi`b%@Yzy&Tyme^ohH*extNm^A%LO|gsZjNVT z+Q%lQS0nnP;^TvA`k&%-jEjqVOLcH`Oogy2l)WJ2N6Sl9&L}}hI0Z2~4Uuq8(Z6d> z&qVb5><|vD*jr&a^`7d=mDV1=ct13B$uEa^BRF{)BHFl8IeX|v4;AVWD4j`W9Ob?K zJ(QLcdrzRXJU2Htw7o!2k*xb53r{mZOy*bAQX)p|Pz%$*CP35FCGEUS#3{TRcb#Bh zqR9xh=bwQ(IAW^sr~W(t{n8lAJj;pzp2>E|t*WZhqT>+eEvTfRkgWGiZ6gU{fS5K6 zGyX-0eFw@c9;!>Aqo{r zJ(SZvfHPlDaAy;bJG^}P(vnD~P~+_9Vw~xAZNx1|84vGRoT-ylbts#?1A>*H?iJ-| zMf{T=xSpK)>#0Nv>Q;h<-v^znnFcxI+)K2W0#;Vmv-;G{|?9_x1S9Xs?ZCuZ3os7JVv>#Cm!A_EE@Afjrdh$nA9@ zb&Kn1>-Du&1)c2OqL(&XEPgg5wzj%~L7UCeVMHy0X;`beg)VSq)Uf;~DzO2$P7jrm z`=u9F{lKs8BR#S_)?xkK-pNUrNnv(}KlP@+x{gkSfgwf;C4aFUDDiMjj#yt*S{Hzu z_+BnXi?2gGWi(WGILfARz;=vRVNrG!BrOjBAFEQg?`^z~m`(sYvlPE9@Fv~a_W1LumK9y8j6 z7yVb~h`c%s@o`7QMa7sr>LIxGJGMlnr0C#SB0la? z&Gy=)AQZ!9PWqJ*4CMxpL5dlmq)4Gqk`#RtaTXzrPcN@twzU<*GDN$qM7x3o2@Sz^ z!Wi;Dy()nZB9bCwWyX)D9byiCVw(Q<4R|8FuAz)Sjn|{^fR94FVJnhR;_P4{u-O0k m1OFL=|Ez=m4|}0=o$1YiCz9fEx87~QkEW`QN|v%^z<&XB4%5m2 literal 0 HcmV?d00001 diff --git a/test/visual/mpl/circuit/references/20bit_quantum_computer.png b/test/visual/mpl/circuit/references/20bit_quantum_computer.png new file mode 100644 index 0000000000000000000000000000000000000000..028cd4bbf9cfdf92480f08dc7846580d4e4ea637 GIT binary patch literal 60056 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ΜMd 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%0AkkmKd|(jD|brDKjgHT z!(q?kAi)b(BFKy&jC^mS7(A5Z;HRgVD=rnS5 zMj@X8#an4)%EQ!V%W9C}w+6=NDAx9gC+D>gl5`Mg)UVF|MXRr+&Mso}^sOgjFle2= z*Vjgw%Ll{kWRYtYP#tg4g2LZ{~; zO5T8FJ#9aRmTxnxt2R1gd_X7*6K}y;Lm^2pTT8>^FkIzJ9_So@ac*uM4sdA5eblCWtfexeWZ9k+;UX5d?hT0zRJVXn7-@aaIA7 zA}t4AH06lZ+Lr=+S*}G?>P_xQ6f`KRX@YiZ)VYl;w%eWf(A(=zkV?p-OQl2j{k`*L`PPZ#66Jv7L{djn zWK`VHxyi?=6Fq@YB7*7Nlrz@+EUN9Fd1LBLHRS*bG@q(tbGGuDKSU8L9^-o_*tEa- z1uI~L0jX;&5dC)boLr5W(SA~fs}1O^qZ+Bn4rih{ic&CBSi(2T)IZS^X<>M?j+cAX z*h^9Fv9{4mx=JozRqJ^E>9{|i^u!b&JEaMQ$zX&reeTT|I@p|$$*@%}o=`Y4W&I`S z|23)h*GsLZ)2xVGN6UZ(;&;!EPXF(BhH0~`pT#TdZz({#c!1D0z6=7x_|_J4ykh_~i(C!9o}Tzy_Py0zw|y zMXIKaJBt^(8onotm~`aZLqr^O(85Wq-2a25v%*5i~|X)|i(jna4%YmhtCxsw)bimc8 zxih6YH(jx63LCt+Yu`Rw7qh&vO$&gp^#{Gu$AorV|jUe z3MkuHx7_Qbr^8sMuHZ5rqyttkXl7i7Y&QH_(fhx@I$)F{9*}cIkPZf9ZvMUWZ*Tk? e8~+T4?Zk#S#@CpAl6PQOAU2k#PE?wECjS?qQTqh| literal 0 HcmV?d00001 diff --git a/test/visual/mpl/circuit/references/5_plot_circuit_layout.png b/test/visual/mpl/circuit/references/5_plot_circuit_layout.png new file mode 100644 index 0000000000000000000000000000000000000000..66050966ed4304ac0c090a90fd533b1b7f53ed6d GIT binary patch literal 18311 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