从两段确定的观测开始
HD128279的目标编号是TIC13727。包里放入原始TESS SPOC第38和65扇区光变,来源发布号分别为55和98,文件名保留完整产品身份。不要换成附近恒星、另一种去趋势产品,或方便演示的光变。
先看主文件头:TICID指明恒星,SECTOR指明观测扇区。TIME是以日计的重心动力学时,零点为BJD2457000。PDCSAP_FLUX是校准孔径流量,单位为电子每秒,另有对应误差列。QUALITY是位标记,不是另一种亮度。
严格练习只保留质量标记为零、时间与流量有限、流量误差有限且为正的样本。第38扇区留下18248个,第65扇区留下16819个。筛选前先验证文件SHA和每个FITS数据单元的校验和;再根据质量标记,判断完整文件里的哪些观测适合留下。
python3 verify_inputs.py .
PYTHONDONTWRITEBYTECODE=1 PYTHONWARNINGS=error::RuntimeWarning python3 science/replay.py --inputs input --out-dir rerun对应阅读:Lindsay et al. 2025, Precise Asteroseismic Ages for the Helmi Streams · MAST public data use and acknowledgment
让两年空档留在方法里
两段扇区跨度合计约51.8天,首尾保留时刻却相隔近760天。沿实际时间画光变,巨大的空档马上就能看见。填零会制造观测,把空档压掉则会改变频率窗口。
每段先除以自己的流量中位数,把变化表示为百万分之一,再减去拟合的均值和线性趋势,并保存这个处理选择。现象搜索分别计算两段Lomb–Scargle周期图,再平均功率;它把长空档两侧当作独立随机记录,没有假定恒星保存了两年相位。
这里的周期图采用残差平方和下降统计量,按样本数归一,再除以局部滑动中位数背景,图上比值无量纲。图上比值无量纲。要用它构造概率模型,还需处理密集频率格之间的关联。
对应阅读:Lindsay et al. 2025, Precise Asteroseismic Ages for the Helmi Streams · MAST public data use and acknowledgment
找到径向阶梯,再看它多容易移动
先盲看谱的相关,能得到接近15.8微赫兹的间隔备选值。再打开四个发表径向模态附近,在0.02微赫兹网格上,平均周期图的接收系局部最高点约为177.000、192.740、208.880和225.480微赫兹。这些位置直接来自保存观测。
接着分别只用一个扇区。第38扇区的首个局部最高点落在176.40附近,第65扇区最后一个搜索最高点落在224.66附近,而且碰到了搜索边缘。后一段数据在这个窗口内,没有给出可靠的孤立峰顶。两段平均后更清楚,不代表每个单段最高点都成了精密模态测量。
程序还比较只减常数的PDC处理与线性去趋势的SAP处理。例如,SAP把第三个最高点放在209.08附近,默认PDC结果则是208.88。这些差别属于处理和随机激发的敏感性,不是几份独立置信区间。
局部最高点受到寿命、混叠、噪声和窗口共同影响。发表表格里的0.234微赫兹频率误差,来自论文分析及其采用的下限,属于外部模态表,不能移给这里的局部最高点。
对应阅读:Lindsay et al. 2025, Precise Asteroseismic Ages for the Helmi Streams · Lindsay et al., Zenodo15102877 v1 model/observed-mode archive
让目录与望远镜使用同一个频率系
HD128279发表频率已经校正恒星的视向速度,光变周期图却描述接收到的节奏。重心时间修正处理观测者位置的变化,并不会自动消去恒星自身的视向速度。
采用来源给出的Gaia视向速度,每秒负75.68千米,再使用下方的相对论因子。这颗星在接近我们,发射频率略低于收到的频率。只校正一次,同时保留两列。
例如,来源径向频率176.918微赫兹,在接收系里约为176.963微赫兹。直接拿176.918去比观测中的177.000,就混用了参考系。修正虽小,却会系统地作用于整列模态。
对应阅读:Lindsay et al. 2025, Precise Asteroseismic Ages for the Helmi Streams · Lindsay et al., Zenodo15102877 v1 model/observed-mode archive
看看径向峰之间多出的节奏
来源表把八个峰辨认为偶极模态。平均TESS谱里,按这些来源位置搜索,可以在184.22与185.72、200.00与201.66微赫兹附近找到局部最高点。一个径向间隔里出现不止一个偶极候选,外部模态身份与附近实测功率共同支持混合模图景。
这里要保留辨认步骤:角向阶数来自发表表格,局部最高点来自我们处理的光变。除过背景的峰高,不是盲搜索的假警报概率;混叠也能挪动最高点,稀疏序列还不足以唯一安排每个纯重力模的径向阶数。
Kepler扩展使用KIC3860179第7至9季度DR25。质量筛选后分别留下3700、2780和4283个样本,在275.69天里保留实际间断。随包程序真正计算谱相关,最强间隔备选值为15.16微赫兹,来源目录值为15.200537。预研中不同背景与频率格曾给出15.18;方法变化也要跟着数值保存。
这颗Kepler星的偶极bin_points文件只给出15个粗略种子,没有拟合误差。例如,193.4616附近种子对应的局部最高点约193.46,而195.2116附近搜索得到195.40。附近别的方位分量或噪声也可能赢过原峰。程序保留这些候选,不把相邻周期差直接改叫测得的纯重力模间隔或核心转速。
对应阅读:Lindsay et al. 2025, Precise Asteroseismic Ages for the Helmi Streams · Lindsay et al., Zenodo15102877 v1 model/observed-mode archive · Li, Deheuvels & Ballot, Zenodo13207485 v2
把十六个成分放进同一个模型
打开real-multimode-fit.json。supports保存来源给出的四个径向、八个偶极、四个四极身份,以及各自0.65微赫兹的搜索半宽。接下来读取estimatesByAssumedLifetime:其中的频率与强度,来自我们对保存光变的共同拟合。
程序按实际质量掩码形成逐扇区窗口,把随机阻尼振子的曝光协方差变成平均功率,再加上相邻模态和局部背景。在8天阻尼时间假设下,一对偶极分量为184.186与185.936微赫兹;改为2天,则为184.379与185.969。0.5天时有多条弱成分或边界解。
两个扇区的功率分别进入拟合。快速计算把保留时刻放到最近的120秒采样位置,原时刻直接Fourier投影用来检查这一近似;这次两种处理的拟合频率最多相差0.0198微赫兹。曝光、阻尼和背景仍是声明的模型条件。
拟合差异量只负责寻找一组峰位。密集谱格有关联,程序没有把它们当成独立数据来生成精密后验。后面的注入实验会直接检查,在这些窗口里能把峰位找得多准。
python3 science/fit_real_modes.py --inputs input --out rerun/real-multimode-fit.json对应阅读:Lindsay et al. 2025, Precise Asteroseismic Ages for the Helmi Streams · Lindsay et al., Zenodo15102877 v1 model/observed-mode archive
读同一颗星的完整内部结构
许可源档提供一条固定初始物理的HD128279轨迹,包含327行history和327个GYRE结构。科学包放入完整history/index及八个选定完整剖面。history起点已经过了主序,年龄列是模型的恒星绝对年龄,不是这个文件开始保存后的经过时间。
profile269对应来源模型546,半径约3.79976个太阳半径,有效温度5458.11开尔文,光度11.5445个太阳光度,与发表最佳模型的属性在其给定精度内相符。轨迹年龄为约125亿年,它属于这个固定模型族。
积分前先读GYRE101文件头和单位:半径为厘米,压力为barye,密度为克每立方厘米,Gamma1无量纲。按下式计算声速。文件最外侧的大气点超过了文件头给出的光球半径,因此积分到哪一层必须说清。
这个剖面积分到光球,得到的高阶声学间隔约17.4801微赫兹;把给定大气一起算进去,则为16.5624。外层虽然薄,声速却慢,仍会显著增加声程。它们都不自动等于有限阶径向模态的间隔。
对应阅读:Lindsay et al., Zenodo15102877 v1 model/observed-mode archive · GYRE MESA file format version 1.01 · Lindsay et al. 2025, Precise Asteroseismic Ages for the Helmi Streams
把名字相近、定义不同的量分开比较
history里叫delta_nu的列尤其容易看错。原inlist明确开启get_delta_nu_from_scaled_solar,327个值都按同一个太阳平均密度归一化变化,常数约134.650015微赫兹。它们不是GYRE本征频率;profile269的这个缩放值是15.94972。
发表的四个未修正GYRE径向频率,平均相邻差为16.17053微赫兹,修正后为16.20265。来源观测四峰平均是16.15882,这里接收系局部最高点平均则为16.16000。论文整体拟合的大间隔是15.87,盲相关备选值为15.8。每个数都要连着定义与频段一起读。
最佳模型表里的修正、未修正偶极列,行序并不一致。逐行相减,会制造巨大的假表面频移。程序只比较关联正确的修正模型/观测行,未修正偶极频移要先匹配模态身份,不能先填一个看似方便的答案。
这些外部频率适合检查定义。沿轨迹比较我们自己的峰位,还需要对每份内部结构重新求模态,下一步就做这件事。
对应阅读:Lindsay et al. 2025, Precise Asteroseismic Ages for the Helmi Streams · Lindsay et al., Zenodo15102877 v1 model/observed-mode archive
让八份结构各自算出一组模态
model-grid目录保存八份原始结构经过GYRE7.2.1新算的本征频率、模态惯量和声学、重力节点数。完整绝热振动方程容许声学腔与重力腔耦合,两类节点数帮助辨认混合模分支,惯量反映相同表面归一化下需要带动多少恒星物质。
先检查相邻profile267、269、271。它们分别得到145、145、147条计算域内模态。改用更高阶积分、加倍空间网格权重和频率扫描后,节点身份与总数全部保持,最大频差约0.00182微赫兹。这个数检验求解器的离散误差,观测误差还要另算。
compare_model_grid.py读取我们的fittedEmittedMicroHz,按已知角向阶数作一对一频率匹配。以8天拟合为例,267、269、271的十六模原频率均方根残差约为1.3815、0.2998、1.0270微赫兹。打开每个匹配旁的三个备选分支,比较它们的惯量和节点数;密集重力模会给频率匹配许多机会,单靠最近距离不能决定可观测性。
再只用四个径向估计校准两项惯量加权表面修正,相应距离变为0.5236、0.2762、0.3849。若阻尼假设改为0.5天,这种修正后的最小距离会转到271。表面修正能吸收一部分结构差别,读者应把两种比较并排看。这里的距离没有使用真实频率误差构成似然。
默认离线复算读取这些固定GYRE输出,并重新分析光变、比较模型。tools/GYRE-rebuild.md另给实际重算命令,需要已经安装GYRE;完整结构与输入文件均随包保存。研究执行记录证明这一步确实跑过,默认离线复算则不自动安装或执行它。轨迹年龄始终是固定初始物理下的模型属性。
python3 science/compare_model_grid.py --inputs input --fit rerun/real-multimode-fit.json --grid model-grid --refined model-refined --out rerun/real-mode-grid-comparison.json对应阅读:GYRE7.2.1 official release and source · Lindsay et al., Zenodo15102877 v1 model/observed-mode archive · Ball & Gizon 2014, A new correction of stellar oscillation frequencies for near-surface effects
用已知真值检查容易认错的地方
multimode-injection-calibration.json保存三组各96次实验。独立程序用数值曝光积分和高斯随机过程生成测量,保留实际质量缺测,再由拟合程序读取保存的谱功率。真频率单独存放,只在最后评价误差时使用。
第一组采用8天寿命,另两组检查短寿命失配和挤在一起的偶极对。前48次的误差分位数给出经验区间,后48次独立检验,最差一条模态只覆盖38次。背景在这些注入里是声明幅度的白测量噪声;实验没有校准真实红背景或盲搜索的假警报概率。
再从新算的profile269选定十六个模态频率,按同样窗口、曝光和声明的光度振幅生成48份观测。原频率比较48次都选到269;允许表面修正后,45次选269,1次选267,2次选271。这检验指定频率图样的恢复,也给出了相邻结构被认错的具体例子。
打开重新生成的real-lightcurve-to-grid.png:上图把真实谱与平均谱模型叠在一起,中图按15.8微赫兹折叠我们估计的峰位,下图比较三份相邻结构。每条曲线连着自己的寿命和表面项假设,图上没有由单轨迹推出的精密年龄误差棒。
对应阅读:Lindsay et al. 2025, Precise Asteroseismic Ages for the Helmi Streams · GYRE7.2.1 official release and source
检查曝光,再保存整条计算
文件头说明一次采样由许多短帧组成。对于190微赫兹,标称TESS帧梳的振幅响应约0.999145,Kepler长采样则约0.824924,功率响应还要平方。程序比较了标称逐帧梳、覆盖整段采样的矩形曝光,以及只按积分时间总和构造的矩形曝光。
TESS还记录死时间与处理相关因子,但没有提供每次保留短帧的完整权重,因此均匀帧梳只是标称近似。文件头EXPOSURE是以日计的总曝光,不是一帧长度,也不能当成单次采样时长,或再次乘进已经校准的流量。
复算保留原文件、掩码、来源参照、候选搜索、敏感性和各类间隔定义。最后的输出检查逐项比对数值,同时留下已知模态覆盖不足的例子。这样得到的是可重走的观测到模型比较,并能清楚看见完整恒星推断还需要哪些信息。
对应阅读:MAST public data use and acknowledgment · Lindsay et al. 2025, Precise Asteroseismic Ages for the Helmi Streams