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)
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)
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_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), drawing_objects.TextData) # data check self.assertListEqual(obj.channels, [pulse.DriveChannel(0)]) self.assertEqual(obj.text, 'x{scale}'.format(scale=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': 'top', 'ha': 'right'} self.assertDictEqual(obj.styles, ref_style)
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)