コード例 #1
0
    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)
コード例 #2
0
    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)
コード例 #3
0
    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), drawing_objects.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)
コード例 #4
0
    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)
コード例 #5
0
ファイル: core.py プロジェクト: tamiya-onodera/qiskit-terra
    def _schedule_loader(self, program: pulse.Schedule):
        """Load Schedule instance.

        This function is sub-routine of py:method:`load_program`.

        Args:
            program: `Schedule` to draw.
        """
        # 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)