Ejemplo n.º 1
0
    def convert_set_frequency(self, instruction):
        """Return converted `SetFrequencyInstruction`.

        Args:
            instruction (PulseQobjInstruction): set frequency qobj instruction
                                                The input frequency is expressed  in GHz,
                                                so it will be scaled by a factor 1e9.
        Returns:
            Schedule: Converted and scheduled Instruction
        """
        t0 = instruction.t0
        channel = self.get_channel(instruction.ch)
        frequency = instruction.frequency

        if isinstance(frequency, str):
            frequency_expr = parse_string_expr(frequency,
                                               partial_binding=False)

            def gen_sf_schedule(*args, **kwargs):
                _frequency = frequency_expr(*args, **kwargs)
                return instructions.SetFrequency(
                    _frequency * GIGAHERTZ_TO_SI_UNITS, channel) << t0

            return ParameterizedSchedule(gen_sf_schedule,
                                         parameters=frequency_expr.params)
        else:
            frequency = frequency * GIGAHERTZ_TO_SI_UNITS

        return instructions.SetFrequency(frequency, channel) << t0
Ejemplo n.º 2
0
    def test_freq(self):
        """Test set frequency basic functionality."""
        set_freq = instructions.SetFrequency(4.5e9, channels.DriveChannel(1), name='test')

        self.assertIsInstance(set_freq.id, int)
        self.assertEqual(set_freq.duration, 0)
        self.assertEqual(set_freq.frequency, 4.5e9)
        self.assertEqual(set_freq.operands, (4.5e9, channels.DriveChannel(1)))
        self.assertEqual(set_freq,
                         instructions.SetFrequency(4.5e9,
                                                   channels.DriveChannel(1),
                                                   name='test'))
        self.assertNotEqual(set_freq,
                            instructions.SetFrequency(4.5e8,
                                                      channels.DriveChannel(1),
                                                      name='test'))
        self.assertEqual(repr(set_freq),
                         "SetFrequency(4500000000.0, DriveChannel(1), name='test')")
Ejemplo n.º 3
0
    def test_set_frequency(self):
        """Test set frequency instruction."""
        d0 = pulse.DriveChannel(0)

        with pulse.build() as schedule:
            pulse.set_frequency(1e9, d0)

        reference = pulse.Schedule()
        reference += instructions.SetFrequency(1e9, d0)

        self.assertEqual(schedule, reference)
Ejemplo n.º 4
0
    def convert_set_frequency(self, instruction):
        """Return converted `SetFrequencyInstruction`.

        Args:
            instruction (PulseQobjInstruction): set frequency qobj instruction
                                                The input frequency is expressed  in GHz,
                                                so it will be scaled by a factor 1e9.
        Returns:
            Schedule: Converted and scheduled Instruction
        """
        t0 = instruction.t0
        channel = self.get_channel(instruction.ch)
        frequency = self.disassemble_value(instruction.frequency) * GIGAHERTZ_TO_SI_UNITS

        return instructions.SetFrequency(frequency, channel) << t0
Ejemplo n.º 5
0
    def convert_set_frequency(self, instruction):
        """Return converted `SetFrequencyInstruction`.

        Args:
            instruction (PulseQobjInstruction): set frequency qobj instruction
        Returns:
            Schedule: Converted and scheduled Instruction
        """
        t0 = instruction.t0
        channel = self.get_channel(instruction.ch)
        frequency = instruction.frequency * 1e9

        if isinstance(frequency, str):
            frequency_expr = parse_string_expr(frequency, partial_binding=False)

            def gen_sf_schedule(*args, **kwargs):
                _frequency = frequency_expr(*args, **kwargs)
                return instructions.SetFrequency(_frequency, channel) << t0

            return ParameterizedSchedule(gen_sf_schedule, parameters=frequency_expr.params)

        return instructions.SetFrequency(frequency, channel) << t0
Ejemplo n.º 6
0
 def gen_sf_schedule(*args, **kwargs):
     _frequency = frequency_expr(*args, **kwargs)
     return instructions.SetFrequency(_frequency, channel) << t0
Ejemplo n.º 7
0
 def gen_sf_schedule(*args, **kwargs):
     _frequency = frequency_expr(*args, **kwargs)
     return instructions.SetFrequency(
         _frequency * GIGAHERTZ_TO_SI_UNITS, channel) << t0
Ejemplo n.º 8
0
 def test_freq_non_pulse_channel(self):
     """Test set frequency constructor with illegal channel"""
     with self.assertRaises(exceptions.PulseError):
         instructions.SetFrequency(4.5e9,
                                   channels.RegisterSlot(1),
                                   name="test")