LombScargle¶

class
astropy.stats.
LombScargle
(t, y, dy=None, fit_mean=True, center_data=True, nterms=1)[source] [edit on github]¶ Bases:
object
Compute the LombScargle Periodogram
This implementations here are based on code presented in [R19] and [R20]; if you use this functionality in an academic application, citation of those works would be appreciated.
Parameters: t : array_like or Quantity
sequence of observation times
y : array_like or Quantity
sequence of observations associated with times t
dy : float, array_like or Quantity (optional)
error or sequence of observational errors associated with times t
fit_mean : bool (optional, default=True)
if True, include a constant offset as part of the model at each frequency. This can lead to more accurate results, especially in the case of incomplete phase coverage.
center_data : bool (optional, default=True)
if True, precenter the data by subtracting the weighted mean of the input data. This is especially important if fit_mean = False
nterms : int (optional, default=1)
number of terms to use in the Fourier fit
References
[R19] (1, 2) Vanderplas, J., Connolly, A. Ivezic, Z. & Gray, A. Introduction to astroML: Machine learning for astrophysics. Proceedings of the Conference on Intelligent Data Understanding (2012) [R20] (1, 2) VanderPlas, J. & Ivezic, Z. Periodograms for Multiband Astronomical Time Series. ApJ 812.1:18 (2015) Examples
Generate noisy periodic data:
>>> rand = np.random.RandomState(42) >>> t = 100 * rand.rand(100) >>> y = np.sin(2 * np.pi * t) + rand.randn(100)
Compute the LombScargle periodogram on an automaticallydetermined frequency grid & find the frequency of max power:
>>> frequency, power = LombScargle(t, y).autopower() >>> frequency[np.argmax(power)] 1.0016662310392956
Compute the LombScargle periodogram at a userspecified frequency grid:
>>> freq = np.arange(0.8, 1.3, 0.1) >>> LombScargle(t, y).power(freq) array([ 0.0204304 , 0.01393845, 0.35552682, 0.01358029, 0.03083737])
If the inputs are astropy Quantities with units, the units will be validated and the outputs will also be Quantities with appropriate units:
>>> from astropy import units as u >>> t = t * u.s >>> y = y * u.mag >>> frequency, power = LombScargle(t, y).autopower() >>> frequency.unit Unit("1 / s") >>> power.unit Unit(dimensionless)
Note here that the LombScargle power is always a unitless quantity, because it is related to the \(\chi^2\) of the bestfit periodic model at each frequency.
Attributes Summary
available_methods
Methods Summary
autofrequency
([samples_per_peak, ...])Determine a suitable frequency grid for data. autopower
([method, method_kwds, normalization])Compute LombScargle power at automaticallydetermined frequencies model
(t, frequency)Compute the LombScargle model at the given frequency power
(frequency[, normalization, method, ...])Compute the LombScargle power at the given frequencies Attributes Documentation

available_methods
= ['auto', 'slow', 'chi2', 'cython', 'fast', 'fastchi2', 'scipy']¶
Methods Documentation

autofrequency
(samples_per_peak=5, nyquist_factor=5, minimum_frequency=None, maximum_frequency=None)[source] [edit on github]¶ Determine a suitable frequency grid for data.
Note that this assumes the peak width is driven by the observational baseline, which is generally a good assumption when the baseline is much larger than the oscillation period. If you are searching for periods longer than the baseline of your observations, this may not perform well.
Even with a large baseline, be aware that the maximum frequency returned is based on the concept of “average Nyquist frequency”, which may not be useful for irregularlysampled data. The maximum frequency can be adjusted via the nyquist_factor argument, or through the maximum_frequency argument.
Parameters: samples_per_peak : float (optional, default=5)
The approximate number of desired samples across the typical peak
nyquist_factor : float (optional, default=5)
The multiple of the average nyquist frequency used to choose the maximum frequency if maximum_frequency is not provided.
minimum_frequency : float (optional)
If specified, then use this minimum frequency rather than one chosen based on the size of the baseline.
maximum_frequency : float (optional)
If specified, then use this maximum frequency rather than one chosen based on the average nyquist frequency.
Returns: frequency : ndarray or Quantity
The heuristicallydetermined optimal frequency bin

autopower
(method='auto', method_kwds=None, normalization='standard', **kwargs)[source] [edit on github]¶ Compute LombScargle power at automaticallydetermined frequencies
Parameters: method : string (optional)
specify the lomb scargle implementation to use. Options are:
 ‘auto’: choose the best method based on the input
 ‘fast’: use the O[N log N] fast method. Note that this requires
evenlyspaced frequencies: by default this will be checked unless
assume_regular_frequency
is set to True.  ‘slow’: use the O[N^2] purepython implementation
 ‘cython’: use the O[N^2] cython implementation. This is slightly faster than method=’slow’, but much more memory efficient.
 ‘chi2’: use the O[N^2] chi2/linearfitting implementation
 ‘fastchi2’: use the O[N log N] chi2 implementation. Note that this
requires evenlyspaced frequencies: by default this will be checked
unless
assume_regular_frequency
is set to True.  ‘scipy’: use
scipy.signal.lombscargle
, which is an O[N^2] implementation written in C. Note that this does not support heteroskedastic errors.
method_kwds : dict (optional)
additional keywords to pass to the lombscargle method
normalization : string (optional, default=’standard’)
Normalization to use for the periodogram. Options are ‘standard’, ‘model’, or ‘psd’.
**kwargs :
additional keyword arguments will be passed to autofrequency()
Returns: frequency, power : ndarrays
The frequency and LombScargle power

model
(t, frequency)[source] [edit on github]¶ Compute the LombScargle model at the given frequency
Parameters: t : array_like or Quantity, length n_samples
times at which to compute the model
frequency : float
the frequency for the model
Returns: y : np.ndarray, length n_samples
The model fit corresponding to the input times

power
(frequency, normalization='standard', method='auto', assume_regular_frequency=False, method_kwds=None)[source] [edit on github]¶ Compute the LombScargle power at the given frequencies
Parameters: frequency : array_like or Quantity
frequencies (not angular frequencies) at which to evaluate the periodogram. Note that in order to use method=’fast’, frequencies must be regularlyspaced.
method : string (optional)
specify the lomb scargle implementation to use. Options are:
 ‘auto’: choose the best method based on the input
 ‘fast’: use the O[N log N] fast method. Note that this requires
evenlyspaced frequencies: by default this will be checked unless
assume_regular_frequency
is set to True.  ‘slow’: use the O[N^2] purepython implementation
 ‘cython’: use the O[N^2] cython implementation. This is slightly faster than method=’slow’, but much more memory efficient.
 ‘chi2’: use the O[N^2] chi2/linearfitting implementation
 ‘fastchi2’: use the O[N log N] chi2 implementation. Note that this
requires evenlyspaced frequencies: by default this will be checked
unless
assume_regular_frequency
is set to True.  ‘scipy’: use
scipy.signal.lombscargle
, which is an O[N^2] implementation written in C. Note that this does not support heteroskedastic errors.
assume_regular_frequency : bool (optional)
if True, assume that the input frequency is of the form freq = f0 + df * np.arange(N). Only referenced if method is ‘auto’ or ‘fast’.
normalization : string (optional, default=’standard’)
Normalization to use for the periodogram. Options are ‘standard’, ‘model’, ‘log’, or ‘psd’.
fit_mean : bool (optional, default=True)
if True, include a constant offset as part of the model at each frequency. This can lead to more accurate results, especially in the case of incomplete phase coverage.
center_data : bool (optional, default=True)
if True, precenter the data by subtracting the weighted mean of the input data. This is especially important if fit_mean = False
method_kwds : dict (optional)
additional keywords to pass to the lombscargle method
Returns: power : ndarray
The LombScargle power at the specified frequency
