Skip to content

Commit

Permalink
PulseTemplate.create_program() now handles incoming None values for m…
Browse files Browse the repository at this point in the history
…easurement_mapping by replacing them with an identity mapping for all measurement names
  • Loading branch information
lumip committed Aug 2, 2018
1 parent 2580635 commit 0675dad
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 5 deletions.
2 changes: 1 addition & 1 deletion qctoolkit/pulses/pulse_template.py
Expand Up @@ -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()

Expand Down
27 changes: 23 additions & 4 deletions tests/pulses/pulse_template_tests.py
Expand Up @@ -155,17 +155,36 @@ 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:
template = PulseTemplateStub(defined_channels={'A'}, parameter_names={'foo'})
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)
Expand Down

0 comments on commit 0675dad

Please sign in to comment.