paraqeet.signal.iq_mixer.IQMixer#

class paraqeet.signal.iq_mixer.IQMixer(envelopes, frequency=None, phase=None)#

Bases: Generator

Control signal generation.

Waveforms of envelopes (low bandwidth) are mixed with a local oscillator (high bandwidth) to apply a desired control field to the system.

Parameters:
  • envelopes (List[Waveform]) – List of input devices.

  • frequency (Quantity | None) – Frequency of local oscillator.

  • phase (Quantity | None) – Phase of local oscillator.

__init__(envelopes, frequency=None, phase=None)#
Parameters:

Methods

__init__(envelopes[, frequency, phase])

get_gradient_at_timestep(time)

Return the gradients from all devices at the given time.

get_parameters()

Return a list of parameters.

get_value(times)

Generate a signal for time(s).

get_value_and_gradient(times)

Collect and returns the gradients from all devices.

set_all_optimizable_parameters(all_params)

Set all optimizable parameters in the optimization.

set_optimizable_parameters(params)

Set specified parameters to be optimized.

Attributes

all_optimizable_parameters

Get the optimizable parameters

name

Get the name of the parameter.

optimizable_parameters

Get the optimizable parameters

property all_optimizable_parameters: list[Quantity]#

Get the optimizable parameters

Returns:

The list of all the optimizable parameters considered in the optimization

Return type:

list[Quantity]

get_gradient_at_timestep(time)#

Return the gradients from all devices at the given time.

Since the

\[signal = \Re(\epsilon(t)^* \exp(i \omega t) \exp(-i \phi))\]

Derivative of the signal wrt optimizable parameter of envelope would be

\[0.5 * \Re(\partial \epsilon(t)^* \exp(i \omega t) \exp(-i \phi))\]

(TODO - Check the envelope derivatives)

And derivative of signal wrt parameter of LO would be

\[0.5 i t \epsilon(t)^* \exp(i \omega t) \exp(-i \phi))\]

And derivative of signal wrt phase would be

\[-0.5 i \epsilon(t)^* \exp(i \omega t) \exp(-i \phi))\]

The 0.5 are due to the Wirtinger derivatives due to Re part.

Parameters:

time (Array) – Single timestamp.

Returns:

Return the gradients from all devices at one time.

Return type:

Array

get_parameters()#

Return a list of parameters.

Collects and returns a list of parameters from the tone, generator and the carrier signal.

Returns:

All Parameters describing the signal.

Return type:

list[Quantity]

get_value(times)#

Generate a signal for time(s).

Parameters:
  • t (Array) – One-dimensional vector of timestamps.

  • times (Array | float)

Returns:

Returns the signal vector.

Return type:

Array

get_value_and_gradient(times)#

Collect and returns the gradients from all devices.

Since the

\[signal = \Re(\epsilon(t)^* \exp(i \omega t) \exp(-i \phi))\]

Derivative of the signal wrt optimizable parameter of envelope would be

\[0.5 * \Re(\partial \epsilon(t)^* \exp(i \omega t) \exp(-i \phi))\]

(TODO - Check the envelope derivatives)

And derivative of signal wrt parameter of LO would be

\[0.5 i t \epsilon(t)^* \exp(i \omega t) \exp(-i \phi))\]

And derivative of signal wrt phase would be

\[-0.5 i \epsilon(t)^* \exp(i \omega t) \exp(-i \phi))\]

The 0.5 are due to the Wirtinger derivatives due to Re part.

Parameters:

t (Array) – One-dimensional vector of timestamps.

Returns:

Returns the signal gradient vector.

Return type:

Array

property name: str | None#

Get the name of the parameter.

Returns:

Name of the parameter.

Return type:

str | None

property optimizable_parameters: list[Quantity]#

Get the optimizable parameters

Returns:

The list of optimizable parameters associated with the object.

Return type:

list[Quantity]

set_all_optimizable_parameters(all_params)#

Set all optimizable parameters in the optimization.

Parameters:
  • params (List[Quantity]) – List of optimizable parameters to be set.

  • all_params (list[Quantity])

Return type:

None

set_optimizable_parameters(params)#

Set specified parameters to be optimized.

Parameters:

params (list[Quantity])

Return type:

None