You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python自动识别系外行星凌星的折叠光曲线特征?

凌星特征自动识别方案

针对你遇到的凌星与变星、无意义曲线区分难题,以下是几种实用的自动识别方法,结合Python实现思路:

1. 形态特征量化分析

凌星折叠光曲线的核心特征是短暂、对称、深度集中的单低谷,和变星的周期性均匀亮度变化有本质区别,可通过以下量化指标区分:

  • 流量下降占比:计算折叠曲线中流量低于均值95%(阈值可调)的区间占整个周期的比例,凌星该比例通常<10%,远低于食双星或脉动变星。示例代码:
    import numpy as np
    
    def get_dip_ratio(folded_flux, period):
        flux_mean = np.mean(folded_flux)
        dip_mask = folded_flux < 0.95 * flux_mean
        dip_time = np.sum(dip_mask) * (period / len(folded_flux))
        return dip_time / period
    
  • 边缘陡峭度:提取流量下降段和上升段的斜率绝对值,凌星的边缘斜率远大于脉动变星的平缓变化。可通过计算低谷前后10%区间的流量变化率实现。
  • 对称性验证:计算下降段与上升段的相关系数,凌星两段形态的对称度通常高于0.9,而变星的对称度会显著偏低。

2. 模板匹配法

用已知的真实凌星折叠曲线作为模板,通过互相关计算待检测曲线与模板的匹配度,设定阈值筛选候选:

from scipy.signal import correlate

def template_matching(folded_flux, template_flux):
    # 去除均值后计算归一化互相关
    norm_flux = folded_flux - np.mean(folded_flux)
    norm_template = template_flux - np.mean(template_flux)
    corr = correlate(norm_flux, norm_template, mode='same')
    max_corr = np.max(corr) / (np.std(folded_flux) * np.std(template_flux))
    return max_corr

建议构建多组不同深度、持续时间的凌星模板,取平均匹配度提升鲁棒性。

3. 统计特征筛选

  • 区间方差分布:将折叠曲线划分为10-20个等长区间,计算每个区间的流量方差。凌星的方差会集中在低谷对应的1-2个区间,而变星的方差分布更均匀。
  • 极值点统计:统计折叠曲线中低于均值90%的极值点数量,凌星通常仅存在1-2个显著低谷,脉动变星则会出现多个周期性极值。

4. 机器学习分类

若有足够的标注样本(凌星、变星、无意义曲线),可提取上述形态、统计特征构建特征向量,训练简单的分类模型:

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split

# 假设features为提取的特征数组,labels为0=无意义,1=变星,2=凌星
X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2)
clf = RandomForestClassifier(n_estimators=100)
clf.fit(X_train, y_train)
# 对新曲线特征进行预测
pred_label = clf.predict(new_feature_vector)

这种方法能自动学习不同曲线的差异,适合样本量充足的场景。

内容的提问来源于stack exchange,提问作者Marco Leonardi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 04:52:48