Skip to content

Commit

Permalink
Ignore RepetitionPT body if repetition count <= 0
Browse files Browse the repository at this point in the history
  • Loading branch information
terrorfisch committed Apr 24, 2018
1 parent 5a648a3 commit ec3f119
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions qctoolkit/pulses/repetition_pulse_template.py
Original file line number Diff line number Diff line change
Expand Up @@ -141,20 +141,23 @@ def build_sequence(self,
channel_mapping: Dict[ChannelID, Optional[ChannelID]],
instruction_block: InstructionBlock) -> None:
self.validate_parameter_constraints(parameters=parameters)

body_block = InstructionBlock()
body_block.return_ip = InstructionPointer(instruction_block, len(instruction_block))

try:
real_parameters = {v: parameters[v].get_value() for v in self._repetition_count.variables}
except KeyError:
raise ParameterNotProvidedException(next(v for v in self.repetition_count.variables if v not in parameters))

self.insert_measurement_instruction(instruction_block,
parameters=parameters,
measurement_mapping=measurement_mapping)
instruction_block.add_instruction_repj(self.get_repetition_count_value(real_parameters), body_block)
sequencer.push(self.body, parameters=parameters, conditions=conditions,
window_mapping=measurement_mapping, channel_mapping=channel_mapping, target_block=body_block)

repetition_count = self.get_repetition_count_value(real_parameters)
if repetition_count > 0:
body_block = InstructionBlock()
body_block.return_ip = InstructionPointer(instruction_block, len(instruction_block))

instruction_block.add_instruction_repj(repetition_count, body_block)
sequencer.push(self.body, parameters=parameters, conditions=conditions,
window_mapping=measurement_mapping, channel_mapping=channel_mapping, target_block=body_block)

def requires_stop(self,
parameters: Dict[str, Parameter],
Expand Down

0 comments on commit ec3f119

Please sign in to comment.