TimeSpectrum

class nexus.TimeSpectrum(Measurement self, Experiment experiment, std::string const id="")
class nexus.TimeSpectrum(Measurement self, Experiment experiment, DoubleVector detuning, std::string const id="") → Measurement

Bases: FitMeasurement

Constructor for the TimeSpectrum class. Class to calculate the time-dependent intensity of the experiment.

Parameters:
  • id (string) – User identifier.

  • experiment (Experiment) – Experiment

  • time_length (float) – Length of the calculation (nanoseconds).

  • time_step (float) – Step size of the calculation (nanoseconds).

  • max_detuning (float) – Maximum value of the energy detuning (Gamma). Set this value to speed up the calculation. If set to zero no maximum is applied. Also see fft_window.

  • electronic (bool) – If True electronic scattering is included.

  • time_data (list or ndarray) – Time data for fitting (nanoseconds).

  • intensity_data (list or ndarray) – Intensity data for fitting.

  • scaling (float or Var or string) – Intensity scaling factor for fitting. Default is auto.

  • background (float or Var or string) – Background for fitting. Default is 0.

  • offset (float or Var) –

    Temporal offset of the model. Default is 0.

    Added in version 1.1.0.

  • resolution (float or Var) –

    Resolution value for convolution (nanoseconds). Corresponds to the APD resolution.

    Removed in version 2.0.0.

  • instrument (Instrument) –

    Instrument object with the implementation of a resolution function. Default is a Gaussian instrument function with FWHM = 0.5 ns.

    Added in version 2.0.0.

  • distribution_points (int) – Number of points for thickness distributions in forward geometry and angular divergence in grazing geometry. Both distributions assume incoherent summation over the weighted contributions. Default is 1.

  • fit_weight (float) – Relative weight for the cost function in multi measurement fitting.

  • bunch_spacing (float) – Spacing of subsequent X-ray bunches in time (nanoseconds).

  • residual (Residual) – Implementation of the residual calculation used for fitting.

  • fft_window (string) –

    A window function that is applied during the Fourier transformation from energy to time. This should be used when the max_detuning is not zero. Options are

    • auto (default) - will pick a Hann window if max_detuning is not zero, no window otherwise.

    • Hann

    • Hamming

    • Sine

    • Welch

    • Kaiser2 - \(\alpha = 2\)

    • Kaiser25 - \(\alpha = 2.5\)

    • Kaiser3 - \(\alpha = 3\)

    • none

  • coherence (bool) –

    Determines if the summation over the thickness and divergence distributions is performed coherently (True) or incoherently (False). Default is False.

    Added in version 1.0.3.

id

User identifier.

Type:

string

experiment

Experiment

Type:

Experiment

time_length

Length of the calculation (nanoseconds).

Type:

float

time_step

Step size of the calculation (nanoseconds).

Type:

float

max_detuning

Maximum value of the energy detuning (Gamma). Set this value to speed up the calculation. If set to zero no maximum is applied. Also see fft_window.

Type:

float

electronic

If True electronic scattering is included.

Type:

bool

time_data

Time data for fitting (nanoseconds).

Type:

list

intensity_data

Intensity data for fitting.

Type:

list

data_size

Number of data points of experimental data.

Type:

int

scaling

Intensity scaling factor for fitting.

Type:

Var

background

Background for fitting.

Type:

Var

offset

Temporal offset of the model.

Added in version 1.1.0.

Type:

float or Var

resolution

Resolution value for convolution (nanoseconds). Corresponds to the APD resolution.

Removed in version 2.0.0.

Type:

Var

resolution_kernel

weight of the Gaussian resolution same step size as detuning.

Removed in version 2.0.0.

Type:

list

distribution_points

Number of points for thickness distributions in forward geometry and angular divergence in grazing geometry. Both distributions assume incoherent summation over the weighted contributions.

Type:

int

fit_weight

Relative weight for the cost function in multi measurement fitting.

Type:

float

bunch_spacing

Spacing of subsequent X-ray bunches in time (nanoseconds). instrument (Instrument): Instrument object.

Added in version 2.0.0.

Type:

float

residual

Implementation of the residual calculation used for fitting.

Type:

Residual

fft_window

A window function that is applied during the Fourier transformation from energy to time. This should be used when the max_detuning is not zero. Options are

  • auto (default) - will pick a Hann window if max_detuning is not zero, no window otherwise.

  • Hann

  • Hamming

  • Sine

  • Welch

  • Kaiser2 - \(\alpha = 2\)

  • Kaiser25 - \(\alpha = 2.5\)

  • Kaiser3 - \(\alpha = 3\)

  • none

Type:

string

coherence

Determines if the summation over the thickness and divergence distributions is performed coherently (True) or incoherently (False). Default is False.

Added in version 1.0.3.

Type:

bool

result

List of intensity values. It is the energy-integrated intensity per time in units of \(\Gamma /ns\).

Type:

list

Calculate()

Calculates the class method. Also callable via operator ().

Returns:

Time array of float values. ndarray: Intensity array of float values.

Return type:

ndarray

Cost()

Get the cost function of the measurement

\[cost = \frac{1}{n} \sum_i r(y_i, \hat{y}_i)\]

Added in version 2.0.0.

Returns:

cost function value.

Return type:

float

MeanSquaredError()

Get the mean squared error (MSE) of the measurement

\[cost = \frac{1}{n} \sum_i (y_i - \hat{y}_i)^2\]

Added in version 2.0.0.

Returns:

MSE value.

Return type:

float

Plot(data=True, residuals=True, datacolor='black', theorycolor='r', theorywidth=2, datalinestyle='none', datamarker='+', datamarkersize=2, datafillstyle='full', legend=True, errors=False, errorcap=2, name=None)

Plot the TimeSpectrum.

Added in version 1.0.3.

Changed in version 1.2.0.

Parameters:
  • data (bool) – Select if intensity_data should be plot.

  • residuals (bool) – Select if residuals from fit should be plot.

  • datacolor (string) – See matplotlib documentation.

  • theorycolor (string) – See matplotlib documentation.

  • theorywidth (float) – See matplotlib documentation.

  • datalinestyle (string) – See matplotlib documentation.

  • datamarker (string) – See matplotlib documentation.

  • datamarkersize (float) – See matplotlib documentation.

  • datafillstyle (string) – See matplotlib documentation.

  • legend (bool) – Select if legend should be plot when model and data are plot.

  • errors (bool) – Select if error bars should be plot.

  • errorcap (float) – See matplotlib documentation (capsize).

  • name (string) –

    If given, the plot is saved under this name.

    Added in version 1.2.0.

PopulateFitHandler(FitMeasurement self, OptimizerHandler fit_handler)
PopulateOptimizerHandler(Measurement self, OptimizerHandler optimizer_handler)
Residuals(TimeSpectrum self) → double
SetCeresFitParameterPointers(FitMeasurement self, double const *const * parameters)
SetFitEqualities(FitMeasurement self)
SetNLoptFitParameterPointers(FitMeasurement self)
SetPagmoFitParameterPointers(FitMeasurement self, DoubleVector inputs)
Update(Measurement self)
Velocity()

Returns the velocity detuning of the measurement in units of mm/s.

Returns:

Velocity detuning (mm/s).

Return type:

ndarray

property background

p.Var

Type:

background

property bare_residuals

std::vector<(double,std::allocator<(double)>)>

Type:

bare_residuals

property bootstrap_fit_result

std::vector<(double,std::allocator<(double)>)>

Type:

bootstrap_fit_result

property bootstrap_residuals

std::vector<(double,std::allocator<(double)>)>

Type:

bootstrap_residuals

property bunch_spacing

double

Type:

bunch_spacing

property coherence

bool

Type:

coherence

property data_size

size_t

Type:

data_size

property detuning

std::vector<(double,std::allocator<(double)>)>

Type:

detuning

property distribution_points

unsigned int

Type:

distribution_points

property electronic

bool

Type:

electronic

property experiment

p.Experiment

Type:

experiment

property fft_window

std::string

Type:

fft_window

property fit_equalities

std::vector<(p.Var,std::allocator<(p.Var)>)>

Type:

fit_equalities

property fit_parameter_pointers

std::vector<(p.double,std::allocator<(p.double)>)>

Type:

fit_parameter_pointers

property fit_residuals

std::vector<(double,std::allocator<(double)>)>

Type:

fit_residuals

property fit_weight

double

Type:

fit_weight

property id

std::string

Type:

id

property inequality

p.Inequality

Type:

inequality

property input_intensity_data

std::vector<(double,std::allocator<(double)>)>

Type:

input_intensity_data

property instrument

p.Instrument

Type:

instrument

property intensity_data

std::vector<(double,std::allocator<(double)>)>

Type:

intensity_data

property max_detuning

double

Type:

max_detuning

property nlopt_fit_parameters_ptr

p.double

Type:

nlopt_fit_parameters_ptr

property offset

p.Var

Type:

offset

property residual

p.Residual

Type:

residual

property result

std::vector<(double,std::allocator<(double)>)>

Type:

result

property scaling

p.Var

Type:

scaling

property sum_user_residuals

double

Type:

sum_user_residuals

property time

std::vector<(double,std::allocator<(double)>)>

Type:

time

property time_data

std::vector<(double,std::allocator<(double)>)>

Type:

time_data

property time_length

double

Type:

time_length

property time_step

double

Type:

time_step