BoxLeastSquares#
- class astropy.timeseries.BoxLeastSquares(t, y, dy=None)[源代码]#
-
计算盒子最小二乘周期图。
这种方法是在光度时间序列数据集中发现凌日系外行星或日食双星的常用工具。此实现基于中描述的“盒最小二乘法(BLS)”方法 [1] 和 [2].
- 参数:
- t : array_like ,
Quantity
,Time
,或TimeDelta
Numpy:ARRAY_LIKE、QUANTY、TIME或TimeDelta 观察时间顺序。
- y : array_like 或
Quantity
NumPy:类似数组或数量 与时间相关的观察序列
t
.- dy :
float
, array_like ,或Quantity
,可选PYTHON:FLOAT、NUMPY:ARRAY_LIKE或QUANTITY,可选 与时间有关的观测误差或序列
t
.
- t : array_like ,
工具书类
[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)[源代码]#
计算给定交通模型的描述性统计数据。
这些统计数据通常用于审查过境候选者。
- 参数:
- 返回:
- stats :
dict
Python :词典 包含几种描述性统计数据的词典:
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
:值为的数组记录基线中包含的每个独特交通的可能性。
- stats :
- classmethod from_timeseries(timeseries, signal_column_name=None, uncertainty=None, **kwargs)#
从时间序列对象初始化周期图。
如果通过了入库的时间序列,则使用入库中心的时间。另请注意,此方法在初始化周期图时自动删除NaN/未定义的值。
- model(t_model, period, duration, transit_time)[源代码]#
计算给定时段、持续时间和阶段的交通模型。
- 参数:
- 返回:
- y_model : array_like 或
Quantity
NumPy:类似数组或数量 《泰晤士报》评估的模型
t_model
单位为y
.
- y_model : array_like 或
- 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 :
BoxLeastSquaresResults
BoxLeastSquaresResults
周期图的结果是
BoxLeastSquaresResults
对象。
- results :
- 加薪:
ValueError
如果
oversample
不是大于0的整数,或者如果objective
或method
无效。
- transit_mask(t, period, duration, transit_time)[源代码]#
计算给定参数集的哪些数据点正在传输中。
- 参数:
- 返回:
- transit_mask : array_likeNumpy:ARRAY_LIKE
布尔数组,其中
True
表示中转站和False
指示并离开中转点。