BoxLeastSquares#

class astropy.timeseries.BoxLeastSquares(t, y, dy=None)[源代码]#

基类:BasePeriodogram

计算盒子最小二乘周期图。

这种方法是在光度时间序列数据集中发现凌日系外行星或日食双星的常用工具。此实现基于中描述的“盒最小二乘法(BLS)”方法 [1][2].

参数:
t : array_likeQuantityTime ,或 TimeDeltaNumpy:ARRAY_LIKE、QUANTY、TIME或TimeDelta

观察时间顺序。

y : array_likeQuantityNumPy:类似数组或数量

与时间相关的观察序列 t .

dy : floatarray_like ,或 Quantity ,可选PYTHON:FLOAT、NUMPY:ARRAY_LIKE或QUANTITY,可选

与时间有关的观测误差或序列 t .

工具书类

[1]

Kovacs、Zucker和Mazeh(2002年),A&A,391,369(arXiv:astro ph/0206099)

[2]

Hartman&Bakos(2016),天文学与计算,17,1(arXiv:1605.06811)

实例

使用交通工具生成噪音数据:

>>> rand = np.random.default_rng(42)
>>> t = rand.uniform(0, 10, 500)
>>> y = np.ones_like(t)
>>> y[np.abs((t + 1.0)%2.0-1)<0.08] = 1.0 - 0.1
>>> y += 0.01 * rand.standard_normal(len(t))

在启发式确定的周期网格上计算过境周期图,并找到具有最大功率的周期:

>>> model = BoxLeastSquares(t, y)
>>> results = model.autopower(0.16)
>>> results.period[np.argmax(results.power)]  
2.000412388152837

在用户指定的周期网格上计算周期图:

>>> periods = np.linspace(1.9, 2.1, 5)
>>> results = model.power(periods, 0.16)
>>> results.power  
array([0.01723948, 0.0643028 , 0.1338783 , 0.09428816, 0.03577543])

如果输入的是带有单位的AstroPy数量,那么将验证单位,并且输出也将是具有适当单位的数量:

>>> from astropy import units as u
>>> t = t * u.day
>>> y = y * u.dimensionless_unscaled
>>> model = BoxLeastSquares(t, y)
>>> results = model.autopower(0.16 * u.day)
>>> results.period.unit
Unit("d")
>>> results.power.unit
Unit(dimensionless)

方法总结

autoperiod(duration[, minimum_period, ...])

确定合适的周期网格。

autopower(duration[, objective, method, ...])

在一组启发式确定的周期上计算周期图。

compute_stats(period, duration, transit_time)

计算给定交通模型的描述性统计数据。

from_timeseries(timeseries[, ...])

从时间序列对象初始化周期图。

model(t_model, period, duration, transit_time)

计算给定时段、持续时间和阶段的交通模型。

power(period, duration[, objective, method, ...])

计算一组周期的周期图。

transit_mask(t, period, duration, transit_time)

计算给定参数集的哪些数据点正在传输中。

方法文件

autoperiod(duration, minimum_period=None, maximum_period=None, minimum_n_transit=3, frequency_factor=1.0)[源代码]#

确定合适的周期网格。

该方法使用一组启发式算法来选择频率均匀的保守周期网格。根据精度要求或数据采样情况,对于某些用户的需要,此网格可能过于精细。网格可以通过增加 frequency_factor .

参数:
durationPYTHON:FLOAT、NUMPY:ARRAY_LIKE或QUANTITY [:ref: 'time']

将要考虑的持续时间集。

minimum_period, maximum_periodPython:浮点或数量 [:ref: 'time'] ,可选

要搜索的最短/最长时段。如果未提供,将按照以下注释中的说明进行计算。

minimum_n_transit : int ,可选PYTHON:int,可选

如果 maximum_period 如果没有提供,则通过断言任何系统至少具有 minimum_n_transits 将在搜索的时段范围内。请注意,这与要求不同 minimum_n_transits 需要检测。默认值为 3 .

frequency_factor : float ,可选Python:Float,可选

控制频率间隔的因素,如以下注释所述。默认值为 1.0 .

返回:
periodNumPy:类似数组或数量 [:ref: 'time']

使用这些启发式计算的周期集,其单位与 t .

笔记

默认的最小周期被选择为最大持续时间的两倍,因为对于短于此的周期不会有太大的敏感度。

默认的最大周期计算如下

maximum_period = (max(t) - min(t)) / minimum_n_transits

确保任何系统至少 minimum_n_transits 在搜索的时段范围内。

频率间隔由

df = frequency_factor * min(duration) / (max(t) - min(t))**2

所以网格可以通过减少 frequency_factor 或者通过增加 frequency_factor .

autopower(duration, objective=None, method=None, oversample=10, minimum_n_transit=3, minimum_period=None, maximum_period=None, frequency_factor=1.0)[源代码]#

在一组启发式确定的周期上计算周期图。

此方法调用 BoxLeastSquares.autoperiod() 确定周期网格,然后 BoxLeastSquares.power() 计算周期图。有关参数的文档,请参阅这些方法。

compute_stats(period, duration, transit_time)[源代码]#

计算给定交通模型的描述性统计数据。

这些统计数据通常用于审查过境候选者。

参数:
periodPython:浮点或数量 [:ref: 'time']

过渡期。

durationPython:浮点或数量 [:ref: 'time']

运输的持续时间。

transit_time : floatQuantityTimePython :浮点、数量或时间

参考渡越的中间渡越时间。

返回:
stats : dictPython :词典

包含几种描述性统计数据的词典:

  • depth :深度和不确定性

    值)的值。

  • depth_odd :a的深度和深度的不确定性

    周期是基准周期的两倍的模型。

  • depth_even :a的深度和深度的不确定性

    周期是基准周期的两倍,相位偏移一个轨道周期的模型。

  • depth_half :模型的深度和不确定性

    基准周期的一半。

  • depth_phased :模型的深度和不确定性

    相隔半个周期。

  • harmonic_amplitude :最佳拟合正弦的振幅

    模型。

  • harmonic_delta_log_likelihood :对数差

    正弦模型和交通模型之间的可能性。如果 harmonic_delta_log_likelihood 大于0时,首选正弦模型。

  • transit_times :中每个传输的中间传输时间

    基线。

  • per_transit_count :一个数组,其计数为

    基线中包含的每个唯一传输中的数据点。

  • per_transit_log_likelihood :值为的数组

    记录基线中包含的每个独特交通的可能性。

classmethod from_timeseries(timeseries, signal_column_name=None, uncertainty=None, **kwargs)#

从时间序列对象初始化周期图。

如果通过了入库的时间序列,则使用入库中心的时间。另请注意,此方法在初始化周期图时自动删除NaN/未定义的值。

参数:
signal_column_name : strPython :字符串

包含要使用的信号值的列的名称。

uncertainty : strfloatQuantity ,可选PYTHON:字符串或PYTHON:浮点或数量,可选

包含信号错误的列的名称,或用于错误的值(如果是标量)。

**kwargs

其他关键字参数传递给此周期图类的初始值设定项。

model(t_model, period, duration, transit_time)[源代码]#

计算给定时段、持续时间和阶段的交通模型。

参数:
t_model : array_likeQuantity ,或 TimeNumPy:类似数组、数量或时间

计算模型的时间。

periodPython:浮点或数量 [:ref: 'time']

过渡期。

durationPython:浮点或数量 [:ref: 'time']

运输的持续时间。

transit_time : floatQuantityTimePython :浮点、数量或时间

参考渡越的中间渡越时间。

返回:
y_model : array_likeQuantityNumPy:类似数组或数量

《泰晤士报》评估的模型 t_model 单位为 y .

power(period, duration, objective=None, method=None, oversample=10)[源代码]#

计算一组周期的周期图。

参数:
periodNumPy:类似数组或数量 [:ref: 'time']

计算功率的周期

durationPYTHON:FLOAT、NUMPY:ARRAY_LIKE或QUANTITY [:ref: 'time']

要测试的持续时间集

objective{'likey','snr'},可选

应优化以找到最适合的阶段、持续时间和深度的标量。这可以是 'likelihood' (默认)优化模型的日志可能性,或 'snr' 优化测量渡越深度的信噪比。

method{'fast','slow'},可选

用于计算周期图的计算方法。这主要是为了测试和大多数用户将要使用的优化 'fast' 在Cython中实现的方法(默认)。 'slow' 是一种强力方法,用于测试 'fast' 方法。

oversample : int ,可选PYTHON:int,可选

每个持续时间应使用的箱子数。这将使用较大的值设置相位拟合的时间分辨率 oversample 生成更精细的网格和更高的计算成本。

返回:
results : BoxLeastSquaresResultsBoxLeastSquaresResults

周期图的结果是 BoxLeastSquaresResults 对象。

加薪:
ValueError

如果 oversample 不是大于0的整数,或者如果 objectivemethod 无效。

transit_mask(t, period, duration, transit_time)[源代码]#

计算给定参数集的哪些数据点正在传输中。

参数:
tNumPy:类似数组或数量 [:ref: 'time']

应评估遮罩的次数。

periodPython:浮点或数量 [:ref: 'time']

过渡期。

durationPython:浮点或数量 [:ref: 'time']

运输的持续时间。

transit_time : floatQuantityTimePython :浮点、数量或时间

参考渡越的中间渡越时间。

返回:
transit_mask : array_likeNumpy:ARRAY_LIKE

布尔数组,其中 True 表示中转站和 False 指示并离开中转点。