diff --git a/qctoolkit/pulses/pulse_template.py b/qctoolkit/pulses/pulse_template.py index 1095fd9af..752a437b8 100644 --- a/qctoolkit/pulses/pulse_template.py +++ b/qctoolkit/pulses/pulse_template.py @@ -118,7 +118,7 @@ def create_program(self, *, if parameters is None: parameters = dict() if measurement_mapping is None: - measurement_mapping = dict() # todo (2018-08-02): should not be empty but an identity mapping; requires PT to be a MeasurementDefiner (?) + measurement_mapping = {name: name for name in self.measurement_names} if channel_mapping is None: channel_mapping = dict() diff --git a/tests/pulses/pulse_template_tests.py b/tests/pulses/pulse_template_tests.py index b4f4949b1..77606fa80 100644 --- a/tests/pulses/pulse_template_tests.py +++ b/tests/pulses/pulse_template_tests.py @@ -155,8 +155,24 @@ def test_create_program(self) -> None: program = template.create_program(parameters=parameters, measurement_mapping=measurement_mapping, channel_mapping=channel_mapping) - expected_parameters = {'foo': ConstantParameter(2.126), 'bar': ConstantParameter(-26.2), 'hugo': ConstantParameter('2*x+b'), 'append_a_child': ConstantParameter('1')} - self.assertEqual((expected_parameters, measurement_mapping, channel_mapping), template.internal_create_program_args[-1]) + expected_parameters = {'foo': ConstantParameter(2.126), 'bar': ConstantParameter(-26.2), + 'hugo': ConstantParameter('2*x+b'), 'append_a_child': ConstantParameter('1')} + self.assertEqual((expected_parameters, measurement_mapping, channel_mapping), + template.internal_create_program_args[-1]) + self.assertIsNotNone(program) + + def test_create_program_measurement_mapping_none(self) -> None: + template = PulseTemplateStub(defined_channels={'A'}, parameter_names={'foo'}, measurement_names={'hugo', 'foo'}) + parameters = {'foo': ConstantParameter(2.126), 'bar': -26.2, 'hugo': '2*x+b', 'append_a_child': '1'} + measurement_mapping = None + channel_mapping = {'B': 'A'} + program = template.create_program(parameters=parameters, + measurement_mapping=measurement_mapping, + channel_mapping=channel_mapping) + expected_parameters = {'foo': ConstantParameter(2.126), 'bar': ConstantParameter(-26.2), + 'hugo': ConstantParameter('2*x+b'), 'append_a_child': ConstantParameter('1')} + self.assertEqual((expected_parameters, {'hugo': 'hugo', 'foo': 'foo'}, channel_mapping), + template.internal_create_program_args[-1]) self.assertIsNotNone(program) def test_create_program_none(self) -> None: @@ -164,8 +180,11 @@ def test_create_program_none(self) -> None: parameters = {'foo': ConstantParameter(2.126), 'bar': -26.2, 'hugo': '2*x+b'} measurement_mapping = {'M': 'N'} channel_mapping = {'B': 'A'} - program = template.create_program(parameters=parameters, measurement_mapping=measurement_mapping, channel_mapping=channel_mapping) - expected_parameters = {'foo': ConstantParameter(2.126), 'bar': ConstantParameter(-26.2), 'hugo': ConstantParameter('2*x+b')} + program = template.create_program(parameters=parameters, + measurement_mapping=measurement_mapping, + channel_mapping=channel_mapping) + expected_parameters = {'foo': ConstantParameter(2.126), 'bar': ConstantParameter(-26.2), + 'hugo': ConstantParameter('2*x+b')} self.assertEqual((expected_parameters, measurement_mapping, channel_mapping), template.internal_create_program_args[-1]) self.assertIsNone(program)