Seismology

class lightkurve.seismology.Seismology(periodogram)

Bases: object

Enables astroseismic quantities to be estimated from periodograms.

This class provides easy access to methods to estimate numax, deltanu, radius, mass, and logg, and stores them on its tray for easy diagnostic plotting.

Parameters
periodogramPeriodogram object

Periodogram to be analyzed. Must be background-corrected, e.g. using periodogram.flatten().

Examples

Download the TESS light curve for HIP 116158:

>>> import lightkurve as lk
>>> lc = lk.search_lightcurvefile("HIP 116158", sector=2).download().PDCSAP_FLUX
>>> lc = lc.normalize().remove_nans().remove_outliers()

Create a Lomb-Scargle periodogram:

>>> pg = lc.to_periodogram(normalization='psd', minimum_frequency=100, maximum_frequency=800)

Create a Seismology object and use it to estimate parameters:

>>> seismology = pg.flatten().to_seismology()
>>> seismology.estimate_numax()
numax: 415.00 uHz (method: ACF2D)
>>> seismology.estimate_deltanu()
deltanu: 28.78 uHz (method: ACF2D)
>>> seismology.estimate_radius(teff=5080)
radius: 2.78 solRad (method: Uncorrected Scaling Relations)

Methods Summary

diagnose_deltanu(self[, deltanu])

Create diagnostic plots showing how numax was estimated.

diagnose_numax(self[, numax])

Create diagnostic plots showing how numax was estimated.

estimate_deltanu(self[, method, numax])

Returns the average value of the large frequency spacing, DeltaNu, of the seismic oscillations of the target.

estimate_logg(self, teff[, numax])

Returns a surface gravity estimate based on the scaling relations.

estimate_mass(self, teff[, numax, deltanu])

Returns a stellar mass estimate based on the scaling relations.

estimate_numax(self[, method])

Returns the frequency of the peak of the seismic oscillation modes envelope.

estimate_radius(self, teff[, numax, deltanu])

Returns a stellar radius estimate based on the scaling relations.

from_lightcurve(lc, \*\*kwargs)

Returns a Seismology object given a LightCurve object.

plot_echelle(self[, deltanu, numax, …])

Plots an echelle diagram of the periodogram by stacking the periodogram in slices of deltanu.

Methods Documentation

diagnose_deltanu(self, deltanu=None)

Create diagnostic plots showing how numax was estimated.

diagnose_numax(self, numax=None)

Create diagnostic plots showing how numax was estimated.

estimate_deltanu(self, method='acf2d', numax=None)

Returns the average value of the large frequency spacing, DeltaNu, of the seismic oscillations of the target.

At present, the only method supported is based on using an autocorrelation function (ACF2D). This method is implemented by the estimate_deltanu_acf2d function which requires the parameter numax. For details and literature references, please read the detailed docstring of this function by typing lightkurve.seismology.estimate_deltanu_acf2d? in a Python terminal or notebook.

Parameters
methodstr

Method to use. Only "acf2d" is supported at this time.

Returns
deltanuSeismologyQuantity

DeltaNu of the periodogram, including details on the units and method.

estimate_logg(self, teff, numax=None)

Returns a surface gravity estimate based on the scaling relations.

This method is implemented by the estimate_logg function. For details and literature references, please read the detailed docstring of this function by typing lightkurve.seismology.estimate_logg?.

Returns
loggSeismologyQuantity

Stellar surface gravity estimate.

estimate_mass(self, teff, numax=None, deltanu=None)

Returns a stellar mass estimate based on the scaling relations.

This method is implemented by the estimate_mass function. For details and literature references, please read the detailed docstring of this function by typing lightkurve.seismology.estimate_mass?.

Returns
massSeismologyQuantity

Stellar mass estimate.

estimate_numax(self, method='acf2d', **kwargs)

Returns the frequency of the peak of the seismic oscillation modes envelope.

At present, the only method supported is based on using a 2D autocorrelation function (ACF2D). This method is implemented by the estimate_numax_acf2d function which accepts the parameters numaxs, window_width, and spacing. For details and literature references, please read the detailed docstring of this function by typing lightkurve.seismology.estimate_numax_acf2d? in a Python terminal or notebook.

Parameters
methodstr

Method to use. Only "acf2d" is supported at this time.

Returns
numaxSeismologyQuantity

Numax of the periodogram, including details on the units and method.

estimate_radius(self, teff, numax=None, deltanu=None)

Returns a stellar radius estimate based on the scaling relations.

This method is implemented by the estimate_radius function. For details and literature references, please read the detailed docstring of this function by typing lightkurve.seismology.estimate_radius?.

Returns
radiusSeismologyQuantity

Stellar radius estimate.

static from_lightcurve(lc, **kwargs)

Returns a Seismology object given a LightCurve object.

plot_echelle(self, deltanu=None, numax=None, minimum_frequency=None, maximum_frequency=None, smooth_filter_width=0.1, scale='linear', cmap='Blues')

Plots an echelle diagram of the periodogram by stacking the periodogram in slices of deltanu.

Modes of equal radial degree should appear approximately vertically aligned. If no structure is present, you are likely dealing with a faulty deltanu value or a low signal to noise case.

This method is adapted from work by Daniel Hey & Guy Davies.

Parameters
deltanufloat

Value for the large frequency separation of the seismic mode frequencies in the periodogram. Assumed to have the same units as the frequencies, unless given an Astropy unit. Is assumed to be in the same units as frequency if not given a unit.

numaxfloat

Value for the frequency of maximum oscillation. If a numax is passed, a suitable range one FWHM of the mode envelope either side of the will be shown. This is overwritten by custom frequency ranges. Is assumed to be in the same units as frequency if not given a unit.

minimum_frequencyfloat

The minimum frequency at which to display the echelle Is assumed to be in the same units as frequency if not given a unit.

maximum_frequencyfloat

The maximum frequency at which to display the echelle. Is assumed to be in the same units as frequency if not given a unit.

smooth_filter_widthfloat

If given a value, will smooth periodogram used to plot the echelle diagram using the periodogram.smooth(method=’boxkernel’) method with a filter width of smooth_filter_width. This helps visualise the echelle diagram. Is assumed to be in the same units as the periodogram frequency.

scale: str

Set z axis to be “linear” or “log”. Default is linear.

cmapstr

The name of the matplotlib colourmap to use in the echelle diagram.

Returns
axmatplotlib.axes._subplots.AxesSubplot

The matplotlib axes object.


Created with ♥ by the Lightkurve collaboration. Please cite us or join us on GitHub.