PIMA 更新记录

· 预计阅读 28 分钟

本文记录 PIMA 的主要版本更新,重点说明功能变化、问题修复及其对数据处理的影响。各版本按从新到旧的顺序排列,文件路径均以 PIMA 源码目录为起点。

说明:说明:本文由 DeepSeek 比较源码、ChatGPT 核对整理,是非官方更新记录,并非 PIMA 开发者发布的版本说明。条目以所比较的源码包为准,包名与包内版本标识不一致的情况在各节说明。

最近记录版本:pima-20260516
本文更新日期:2026-11-08

20260516

  • 对比版本:20260216。

这次更新主要涉及相位校准零值的处理、不同极化组合的条纹拟合、带通校准,以及多频率组数据的加载和输出。

版本标识:configure 为 20260516,Changelog.txt 的最新日期条目为 2026.05.16 / 2.49,include/pima.i 中的程序标签却是 20260710 / 2.50b。本节按压缩包名称记为 20260516,不将包内全部改动视为 2026 年 5 月 16 日发布的内容。

更新内容

  • 新增|替换相位校准中的零值:gean pcal_dzero zero 利用正常的相位校准记录及中频通道之间的相位差,为部分幅度低于阈值的记录估计替代值。该方法要求至少两个中频通道,并且同一时刻仍有通道的相位校准可用;替代值单独保存,供后续校准和绘图使用。设置 PIMAVAR_PCAL_NOSUBS=YES 可以停用这些替代值。
    对应文件:src/pima_pcal_dzero.f、src/pima_pcal_fix_zero.f、src/pima_pcal_scan_avr.f、src/pima_use_pcal.f、src/pima_plot_pcal.f、include/pima.i。

  • 新增|加载后自动处理相位校准零值:pf.py load 完成数据加载后读取实验的 .stt 文件;如果其中记录的每个中频通道的相位校准频点数为 2,就自动执行 gean pcal_dzero zero,处理全部中频通道。
    对应文件:scripts/pf.py。

  • 新增|四种极化组合与 Stokes I 的条纹拟合:POLAR: ALI 在分别拟合四种极化组合的基础上,再拟合 Stokes I,要求输入数据包含四种极化组合的相关数据。pf.py 增加 alifine,pir.py 增加对应的 aif 入口,并将 af 加入允许的运行级别。读取 ALI 类型的条纹拟合结果生成数据库时,只采用其中的 I 记录。
    对应文件:src/pima_conf.f、src/pima_fringe.f、src/pima_get_pol_mode.f、src/pima_fri_io.f、scripts/pf.py、scripts/pir.py。

  • 新增|不同极化组合的条纹拟合结果检查:chpo 读取 ALL 或 ALI 类型的条纹拟合结果,检查两种平行极化组合之间的幅度比和相位差、交叉极化与平行极化组合之间的幅度比,以及 Stokes I 的信噪比损失。可按基线汇总,也可逐条观测输出;其中 i_loss 指标要求使用含 I 结果的 ALI 文件。
    对应文件:src/pima_chpo.f、src/pima.f、src/pima_conf.f。

  • 修复|频率排序后的索引对应:对频率组及组内频率排序后,重新建立频率范围表,再用它匹配原始 FITS-IDI 数据中的通道。此前沿用排序前的表,可能将通道数据与错误的频率对应。这项修改与多频率组数据的加载及后续 splt 输出有关;相关程序也补充了频率组索引为零时的检查。
    对应文件:src/pima_indx.f、src/pima_splt_fitsta.f、src/pima_theo.f。

  • 调整|带通校准的观测选择和计数:改写带通及极化带通的观测筛选、累加程序,分别保存全部、平行和交叉极化组合对应的信噪比,所用观测数改为统一计数,不再按两套极化组合分别保存。带通文件头中的 NUMBER_OF_USED_OBSERVATIONS 也由两个整数改为一个。
    对应文件:src/pima_bpass_sta_list.f、src/pima_bpass_init.f、src/pima_bpass_accum.f、src/pima_bpass_fine.f、src/pima_pbp_accum.f、src/pima_pbp_fine.f、src/pima_write_bpass.f、src/pbp_wri.f、include/pima.i。

  • 新增|按观测区间使用不同带通文件:通过 PIMAVAR_SUB_BPS 和 PIMAVAR_SUB_PBS,分别指定某段观测使用的带通和极化带通文件。程序在条纹拟合及 splt 处理每条观测前检查是否需要切换校准文件;未指定替换文件的观测仍使用控制文件中的设置。重新读取校准文件前,也增加了相关数组的释放操作。
    对应文件:src/pima_bpass_subs.f、src/pima_read_obs.f、src/pima_fringe.f、src/pima_splt.f、src/pima_read_bpass.f、src/pima_read_pbp.f。

  • 新增|VLA 天线校准文件读取:gean 增加 vla_antab_file,用于读取 VLA 的 ANTAB 文件,包括增益和系统温度(Tsys),并按文件中的源名关联观测。同时,EVN 和 VLA 共用的时间解析分支允许小时字段为 0,修正此前拒绝零点时段记录的问题。
    对应文件:src/pima.f、src/pima_conf.f、src/pima_get_antab.f。

  • 调整|VLBA 日志中的校准数据匹配:相位校准频点改为按日志中的 L、U 标记分别处理,并调整下边带数据的频率匹配方式。电缆校准的计数和数值改为写入匹配列表中的第一个频率组。
    对应文件:src/pima_get_vlba_log.f。

  • 调整|大气不透明度和大气亮温的插值:旧版对各频率分别进行三维 B 样条插值,新版将频率作为第四维,按观测通道的中心频率求值。opag 获取 MERRA-2 数据时,所用时间步长改为 2 × PIMA__SPD_STP。
    对应文件:src/pima_opal.f、src/pima_opag.f。

  • 调整|系统等效流量密度(SEFD)的计算:GET_APR_SEFD_BAS_FRQ 增加不透明度因子,将返回值乘以 exp(sqrt(OPA_VAL(1)*OPA_VAL(2)))。同时补充了天线增益是否可用的检查。
    对应文件:src/get_apr_sefd_bas.f。

  • 调整|条纹搜索范围的自动确定:群时延或相位时延率的搜索范围设为非正值时,改为在每次调用中根据当前数据确定范围,不再将首次计算的范围写回配置。这样后续观测可以按各自的频率、通道宽度和积分时间确定搜索范围。
    对应文件:src/pima_2fft.f。

  • 调整|系统温度和异常气象值的处理:系统温度模型的基准值增加 TSYS__LIM_MIN 下限,没有可用点时也采用这个值。气象数据检查中,CHECK_SEVERITY < 2 时,将超出范围的气压、气温分别设为 PRES__MAX、TEMP__MAX;CHECK_SEVERITY >= 2 时仍报错返回。无论原值偏低还是偏高,都会用上限值替换,使用这些气象数据时需注意这一处理。
    对应文件:src/tsys_model.f、src/pima_wea_intrp.f。

  • 调整|波段判定和增益处理:GET_BAND 将 L 波段的判定范围由 $1.0 < f \leq 1.8$ GHz 扩展为 $0.1 < f \leq 1.8$ GHz,其中 $f$ 为频率;pf.py gain 对 l 波段改用 21cm 增益,f 波段采用与 x 波段相同的选择分支。随包增益表补充了 Y 站的记录。pf.py gaco 要求明确设置增益改正输出文件,并在重新计算前删除已有的同名文件;计算时同时检查两组输入可见度的幅度是否有效。
    对应文件:src/get_band.f、scripts/pf.py、share/pima/ivs_gains.key、src/pima_gaco_comp.f。

  • 新增|图像显示选项:fits_to_map 增加颜色编号 40–43 对应的彩色绘图选项,支持通过 FITS_MAP_LOG、FITS_MAP_UNITS、FITS_MAP_FREQ、FITS_MAP_CENTER 和 FITS_MAP_PAL 设置对数显示、坐标单位、图中频率、中心像素和配色。源名标注变量由 MAP_NAME 改为 FITS_MAP_NAME。FITS 空白像素改用 NaN 表示,噪声统计遇到这些像素时将其排除并置零。pictdir.py 另增 -b/--box-size,可直接指定绘图范围,单位为 mas。
    对应文件:src/fits_to_map.f、src/gen_mapplot.f、src/get_fits_map.f、src/find_image_noise.f、scripts/pictdir.py。

  • 调整|带通跳变的处理脚本:pbu.py 接受逗号分隔的多个台站,用于处理这些台站在同一观测编号附近发生带通跳变的情况。条纹拟合结果文件改从控制文件的 FRINGE_FILE 读取,生成的命令文件名增加波段信息;另增 -a/--action,分别选择生成脚本、计算带通或执行全部步骤,但自动执行分支仍有错误,见下文。
    对应文件:scripts/pbu.py。

  • 调整|处理脚本的结果文件和日志名称:allfine 的结果由 all_<exp>_<band>.fri/.frr 改为 <exp>_<band>_all.fri/.frr,新增 alifine 使用 <exp>_<band>_ali.fri/.frr。pir.py 改从 MKDB.DESC_FILE: 取得实验描述文件;pSolve 日志改为 <exp>_init_<band>.log,onof 的输出写入 <exp>_onof.log。
    对应文件:scripts/pf.py、scripts/pir.py。

  • 调整|可见度文件合并与子阵数量检查:uva_merge 不再将可见度数组的第三维固定为 1,而是读取输入 FITS 文件中的 NAXIS3,相应扩大数据读写长度。识别观测子阵时,若数量超过 PIM__MSUB,会在写入数组前报错返回。
    对应文件:src/uva_merge.f、src/pima_find_sub.f。

  • 调整|内部二进制数据文件格式:dump 文件格式由 v2.40 / 2022.12.15 改为 v2.49 / 2026.05.12,加入相位校准替代值及其索引,系统温度记录的长度也随结构定义调整。
    对应文件:include/pima.i、src/pima_read_obs.f、src/pima_write_obs.f。

使用提示

  • 升级后应重新执行 load,生成新版 dump 文件。读取程序会检查格式标签,旧版生成的 dump 文件不能直接由新版读取,新版文件也不能直接交给旧版。需要使用相位校准替代值时,应在重新加载后再次生成。

  • 相位校准替代值的索引和幅度赋值需要修正。src/pima_pcal_scan_avr.f 的一处分支正在按 J9 遍历极化,却用 J6 写入替代值索引并读取相位和幅度,可能写错位置或越界。src/pima_use_pcal.f 在使用替代值时,又将读出的幅度覆盖为 0.001。使用替代值前,应先修正这两处,并核对生成的校准结果。另外,pf.py load 的自动调用没有排除只有一个中频通道的情况,会与 zero 模式的至少两个通道要求冲突。

  • 使用 PIMAVAR_PCAL_NOAVR=YES 时需要检查相位校准的读取分支。src/pima_get_pcal.f 会跳过扫描平均,但新版 src/pima_use_pcal.f 的一处分支仍统一读取 PHAS_SCA,不再像旧版那样退回原始 PHAS。使用该选项前,需要核对这两个步骤是否一致。

  • 线性极化带通的新增代码尚不能正常使用。src/pima_pbp_init.f 调用 PIMA_PBP_LIN_MOD 时漏传了定义中的 MODE 参数;调用后的正常返回分支还保留了 exit(187)。需要修正调用接口、补全处理流程,再验证计算结果;仅删除退出语句不能解决接口不一致的问题。对应模型代码在 src/pima_pbp_lin_mod.f。

  • 带通校准的观测选择仍需修正。src/pima_bpass_init.f 用两个完全相同的条件选择平行或交叉极化组合,导致交叉极化的分支无法进入,而后续累加和精细拟合仍按这一选择读取信噪比。仅有交叉极化组合的结果可用的情况尤其需要检查。自行编写的带通文件头读取脚本,也要适应观测数由两个整数变为一个。

  • pbu.py 的 -a bpass 和 -a all 不能直接使用:它调用了未导入的 pima_exe,并试图用 python3 执行生成的 C shell 脚本。指定 -o 时,后续使用的 bands_str 又没有赋值;查找备用条纹文件的分支中还存在 replpace 拼写错误。仅选择生成脚本也不能避开所有这些问题,需按实际使用分支修正。

  • 使用 pir.py 调用 pSolve 时,应明确提供有效的 MKDB.DESC_FILE:;缺少该关键词会在使用 desc_file 时出错。新增 aif 的 VGOS 多波段分支还含有 nb = nb + 2 + " ",整数与字符串相加会触发 TypeError,需修正后再用该分支。依赖旧条纹文件名或 pSolve 日志名的脚本也要同步修改。

  • src/pima_2fft.f 中一个计算幅度平方的 OpenMP 循环,将线程数条件从 NTHR > 1 改成了 NTHR > 1111。在线程数不超过 1111 时,该循环不会并行执行;这一变化仅涉及该循环。

  • SEFD 的不透明度改正需要进一步核对。代码采用两站不透明度的几何平均构造指数因子;现有源码上下文不足以确认 OPA_VAL 在所有执行该乘法的分支中均已赋值。使用相关幅度校准结果前,应核对 GET_APR_SEFD_BAS_FRQ 的完整赋值过程及其调用位置。

  • 随包增益表中,一条新增的 Y 站记录同时写着 BAND='1cm' 和 FREQ=1444.0 MHz,波段名称与频率不符。使用这组增益前应核对 share/pima/ivs_gains.key 的原始数据,不能自行猜测应修改波段名还是频率。

20260216

  • 对比版本:20260105。

本次更新主要涉及多频率组电缆校准、VLBA 日志读取和系统温度拟合,同时调整了极化标签检查及台站增益表。

版本标识:新版程序标签为 20260216 / 2.48。对比包名为 20260105,内部程序标签已是 20260121 / 2.48b,也已包含新版 Changelog.txt 列出的部分改动。本节只记录两份源码之间实际新增或修改的内容。

更新内容

  • 调整|电缆校准按频率组保存:每个台站原来只有一套电缆校准记录,现在改为 CABLE(PIM__MFRG)。ANTAB、ANC 和 FITS-IDI 的读取程序相应改用频率组索引;插值及数据库输出时,读取当前 FRQ_GRP 对应的电缆校准、均值和符号。读写 dump 文件时,也将电缆记录移入频率组循环。VLBA 日志导入的限制见下文。
    对应文件:include/pima.i、src/pima_get_antab.f、src/pima_load_anc.f、src/pima_get_pcal.f、src/pima_insert_cab.f、src/pima_gvh_sess.f、src/pima_read_obs.f、src/pima_write_obs.f。

  • 新增|跳过电缆校准处理的选项:设置 PIMAVAR_NO_CABLE=YES 后,PIMA_INSERT_CAB 跳过各台站电缆校准值的处理和写入,但不会主动清空观测中已有的电缆校准值。
    对应文件:src/pima_insert_cab.f。

  • 新增|VLBA 日志中的相位校准频点筛选:PIMAVAR_GET_NO_PCAL_TONES 接受用冒号分隔的校准频点编号,解析日志时跳过相应的频率定义和相位校准记录,可用于排除旧日志中列出、但本次实验未观测的频点。
    对应文件:src/pima_get_vlba_log.f。

  • 修复|VLBA 日志读取中的检查与初始化:查找相位校准频点后,改为检查返回的频点索引,替代原先对无关错误状态 IER 的检查;在电缆记录及部分相位校准记录的处理分支中,增加频率组编号为零的检查。重新加载相位校准时,也重新分配并清零扫描平均、拟合结果和扫描索引数组。
    对应文件:src/pima_get_vlba_log.f。

  • 新增|Tsys 拟合迭代次数设置:PIMAVAR_TSYS_NITER 可调整将系统温度分解为时间项和高度角项时的迭代次数,默认仍为 5 次。PIMAVAR_TSYS_SPAN_T 在旧包中已经存在,本次只是补入了版本说明。
    对应文件:src/tsys_model.f、Changelog.txt。

  • 调整|Tsys 拟合参数和时间序列末端的处理:传入时间样条拟合程序 LSPLINE_CMP 的 SIGA 由 $\sin e$ 改为 $1/\sin e$,其中 $e$ 为高度角;低于下限时,仍按下限计算。确定时间序列末端时,改为记录最后一个满足 TIME > 1e-6 的时刻,避免将符合条件的记录数误当成数组下标。
    对应文件:src/tsys_model.f。

  • 修复|缺少系统温度时的可用标记:某个台站、频率组的 Tsys 记录数为零时,明确设置 AVAIL=.FALSE. 并跳过后续数据填充,避免保留此前的可用状态。
    对应文件:src/pima_get_tsys.f。

  • 调整|增益可用标记的设置时机:为增益数据分配内存时,先设置 GAIN%AVAIL=.FALSE.;找到增益表及频率组标识列、进入读取分支后,再设为 .TRUE.。
    对应文件:src/pima_get_gain.f。

  • 调整|允许继续处理无法识别的极化标签:读取 FITS-IDI 天线极化标签时,若已设置 PIMAVAR_POL_CORRECT 且 CHECK_SEVERITY < 2,遇到无法识别的 typeA、typeB 标签可先分别按 R、L 继续处理,并输出提示;否则仍报错返回。这里的 R、L 是临时设置,仍需根据实际观测配置指定极化修正。
    对应文件:src/pima_indx.f。

  • 调整|极化带通计算和诊断信息:关闭 pima_pbp_fine 中原来默认开启的调试开关。扫描切分程序仅在 AP_LEN_MAX > 0 时检查它与当前积分周期长度的差值,并细化诊断输出;二维 FFT 的异常信息增加频率组和观测起止时刻。BEG_FRQ 超限时,也修正了错误信息中两个数值共用同一字符串变量的问题。
    对应文件:src/pima_pbp_fine.f、src/pima_scan_split.f、src/pima_2fft.f、src/pima_theo.f。

  • 调整|IVS 台站增益表:2.3 GHz(13cmsx)中原写为 NYALE13S 的条目改为 NYALES20,两种极化的 DPFU 均由 0.075 改为 0.065。为 SESHAN25 增加一条自 2024-12-01 起有效的 8.4 GHz(4cmsx)记录,DPFU 为 0.077, 0.077;原来的 0.10, 0.10 记录仍保留。
    对应文件:share/pima/ivs_gains.key。

  • 新增|Python 脚本的调用位置提示函数:pima_exe.py 增加 get_cdl()、show_error() 和 show_info(),返回包含调用文件名、行号及信息类型的字符串,供脚本组织提示信息。
    对应文件:scripts/pima_exe.py。

  • 调整|发行包内容:更新版本标识和随包生成的本地配置,更新三份 PDF 文档,并移除包根目录中的五个 difmap.log* 运行日志。
    对应文件:configure、include/pima.i、include/pima_local.i、scripts/pima_local.py、doc/pima_keywords.pdf、doc/pima_user_guide.pdf、doc/pima_wrapper.pdf、difmap.log、difmap.log_1、difmap.log_2、difmap.log_3、difmap.log_4。

使用提示

  • 多频率组实验应重新执行 load,再按原流程导入校准数据。旧 dump 文件在写完所有频率组的 Tsys、增益数据后,只保存一套电缆记录;新版则在每个频率组内分别保存,记录顺序已不兼容。但 PIMA__FORMAT_LABEL 仍是 v2.40 / 2022.12.15,格式标签检查无法区分这两种布局。因此,格式标签相同并不表示旧 dump 文件可直接沿用。对应文件:include/pima.i、src/pima_read_obs.f、src/pima_write_obs.f。

  • 多频率组电缆校准仍需核对具体导入方式:pima_get_vlba_log.f 中,分配及写入电缆数组仍受 IF (J19 == 1) 限制,只处理第一频率组;pima_get_pcal.f 虽然已按组存储,但电缆均值的累加和归一化仍限定为 J6 == 1。多频率组实验应逐组核对导入的电缆校准记录及其均值。对应文件:src/pima_get_vlba_log.f、src/pima_get_pcal.f。

  • 调整 PIMAVAR_TSYS_NITER 时,应使用正整数且不超过 8。程序会按迭代编号访问只有 8 项的 MSIG 剔除阈值表,却没有检查输入上限;超过 8 会产生数组越界风险。版本说明中的 PIMAVAR_NUTER 是拼写错误,程序实际读取的是 PIMAVAR_TSYS_NITER。对应文件:src/tsys_model.f、Changelog.txt。

  • 电缆校准处理新增了一条无条件的 WRITE 和 FLUSH,每个校准点都会输出台站索引、记录编号及时间,不受 DEBUG_LEVEL 控制。若升级后日志明显增多,可检查这条调试输出。对应文件:src/pima_insert_cab.f。

  • 增益表中 SESHAN25 的两条 8.4 GHz 记录在有效期上重叠。使用新版增益表重处理实验时,应核对实际选用的记录;NYALE13S、NYALES20 条目的变化也应按增益表内容核查,不要据此直接改写观测中的台站名。对应文件:share/pima/ivs_gains.key。

20260105

  • 对比版本:20201027。

这组源码的变化主要涉及多相位中心和多频率组数据的处理、相位校准与极化带通、台站校准数据的读取,以及数据处理脚本。

版本标识:旧包的 configure 为 20201027,程序标签却是 20210614 / 2.38e;新包的 configure 为 20260105,程序标签为 20260121 / 2.48b,Changelog.txt 最新条目为 2026.01.21 / 2.48a。本节按压缩包名称记为 20260105,记录两份源码之间的累计变化。

更新内容

  • 调整|提高数据容量上限并更新 dump 文件格式:扫描数上限由 16,384 增至 131,072,中频通道数由 32 增至 64,谱通道数由 16,384 增至 131,072,频率组数由 8 增至 10,同一波束内的射电源数由 8 增至 32。内部数据结构增加按扫描平均的相位校准等信息,dump 文件格式由 v2.30 / 2019.04.25 改为 v2.40 / 2022.12.15。
    对应文件:include/pima.i、src/pima_read_obs.f、src/pima_write_obs.f。

  • 调整|条纹拟合结果文件的字段和格式:格式由 v1.2 / 2019.04.20 改为 v1.3 / 2022.12.15,增加 Pcal_gdel_pol1 和 Pcal_gdel_pol2,记录两种极化的相位校准群时延。原来的 Par_ang 标签改为 Feed_ro,用于标明记录的是馈源旋转角,不能一概按视差角解释。
    对应文件:include/pima.i、src/pima_fri_io.f、src/pima_fringe.f。

  • 调整|多相位中心数据的自相关匹配:为互相关记录寻找自相关数据时,默认不再要求两者的源名相同,允许不同相位中心共用对应台站、时刻和频率组的自相关记录。新增 PIMAVAR_AUT_NOSOURCE_STRICT,可恢复严格的源名匹配。
    对应文件:src/pima_scan_split.f、src/pima_indx.f。

  • 新增|射电源名称表格式和源名处理:支持 SOURCE-NAMES v 2.1 和 v 3.0,用于匹配 FITS-IDI 数据的源名字段由 10 个字符扩展至 16 个字符。PIMAVAR_SOU_IGNORE 可按指定子串跳过源名表中的记录,PIMAVAR_SOU_RENAME 可在加载 FITS-IDI 时替换源名。
    对应文件:include/pima.i、include/pima_getpar.i、src/pima_load_soucat.f、src/pima_indx.f。

  • 调整|频率组的加载和检查:增加 PIMAVAR_KEEP_FRG,用于保留原有的频率组划分;增加 PIMAVAR_SET_FRG,可覆盖 FITS-IDI 的 INTERFEROMETER_MODEL 表中的频率组编号。combine 模式增加时间标记检查,发现不同频率组的记录具有相同时间标记时,报错并提示使用 merge。读取观测时也增加了所选频率组没有数据的检查。
    对应文件:src/pima_indx.f、src/pima_frg_combine.f、src/pima_get_obs.f。

  • 新增|SFXC 时延模型读取:增加对 SFXC 2019 和 Post-2020 时延模型格式的支持,模型输入既可以是目录,也可以是单个时延文件。扫描目录时还会查找 .clk 文件,读取台站钟差、钟速及参考历元;模型中的源名也增加了与 FITS-IDI 源名的对应处理。
    对应文件:src/pima_load_sfxc_mod.f、include/pima.i。

  • 新增|相位校准的扫描平均与拟合:读取各积分周期的相位校准后,按台站和扫描建立对应关系,保存扫描平均值及扫描内的拟合值。记录数足够时,分别拟合复数相位校准信号实部和虚部随时间的线性变化。pcpl 增加 pcal_type raw 和 pcal_type avr,分别查看原始数据和平均、拟合后的数据。
    对应文件:src/pima_get_pcal.f、src/pima_pcal_scan_avr.f、src/pima_use_pcal.f、src/pima_plot_pcal.f、src/pima.f。

  • 调整|自动生成相位校准掩膜:重写 gepm,根据幅度、相对于频谱拟合结果的偏差和时间变化筛选相位校准频点,可指定台站、平均时长和判别阈值。配套增加群时延计算、相位模糊度处理和频点统计,输出相位校准掩膜、均方根(RMS)统计及剔除原因报告。pf.py 增加相应的 gepm 入口。
    对应文件:src/pima_gepm.f、src/pima_pcst.f、src/pima_pcal_clean.f、src/wri_pcal_rms.f、src/wri_pcal_rpt.f、scripts/pf.py。

  • 新增|按台站选择校准数据:PCAL: 和 TSYS: 的取值后可附加 TO_USE: 或 NOT_TO_USE: 及台站列表,指定使用或停用哪些台站的相位校准、系统温度。gean 还增加 tsys_on、tsys_off,可切换指定台站在当前频率组中的系统温度可用状态;没有系统温度记录时不能直接启用。
    对应文件:src/pima_conf.f、src/pima_use_pcal.f、src/pima_fringe.f、src/pima_splt.f、src/pima_tsys_control.f、src/pima.f。

  • 新增|ANC 台站校准数据导入:gean anc_file 通过 ATP 的解析程序读取系统温度、电缆校准和气象数据,并将系统温度按频率、极化和观测时段匹配到实验数据。pf.py logs 处理 IVS 日志时,改为调用 ATP 的 log2ant 生成 .anc 文件,后续由 pf.py gean 导入。
    对应文件:src/pima_load_anc.f、src/pima.f、scripts/pf.py、scripts/pima_local.py、support/config.csh。

  • 修复|精细条纹拟合中的无效数据处理:组建相位拟合方程前,跳过幅度低于阈值的复可见度,避免被掩膜清零的数据仍以零相位参与拟合。同时调整 PIMAVAR_NO_GRRAT 的处理:搜索阶段将群时延率置零,并在后续拟合中对它施加强约束。
    对应文件:src/pima_fine_search.f。

  • 新增|平行极化组合的条纹拟合选项:POLAR: 增加 PARAL,用于分别拟合平行极化组合;对于圆极化数据,对应 RR 和 LL。仅包含两种极化组合的数据中,单独处理 LL 时,也改为读取第二个极化的权重,供幅度修正和观测平均使用。
    对应文件:src/pima_conf.f、src/pima_get_pol_mode.f、src/pima_fringe.f、src/pima_get_uv.f、src/pima_get_obs.f。

  • 修复|带通拟合中被掩膜通道的处理:一个平均频段内的谱通道全部被屏蔽,或残余复可见度含 NaN 时,将残余幅度设为零,避免继续按单位幅度参与后续处理。计算中频通道的频率范围时,也修正了带宽数组的索引;带通拟合结果改为按中频通道分别保存。
    对应文件:src/pima_bpass_fine.f、src/pima_pbp_fine.f、src/pima_bpass_accum.f、src/pima_pbp_accum.f、src/bpass_mod_linear.f。

  • 调整|极化带通的幅度平均:原先累加幅度并按信噪比求加权平均,现改为累乘相对于初始极化带通的幅度修正因子,再计算几何平均;参考站也单独累积和更新幅度。另增加 PIMAVAR_SHORT_BASELINE 分支,调整极化带通使用的观测列表及极化数据选择。
    对应文件:src/pima_pbp_accum.f、src/pima_pbp_init.f。

  • 新增|条纹搜索的先验改正量:PIMAVAR_APR_GR_DEL、PIMAVAR_APR_PH_RAT 和 PIMAVAR_APR_PH_ACC 可分别指定群时延、相位时延率和相位加速度的先验改正,在二维 FFT 搜索前对可见度作相位旋转。搜索程序还增加了谱通道频率间隔过小的检查。
    对应文件:src/pima_2fft.f。

  • 新增|数据库输出时的参考频率改正:mkdb 读取 PIMAVAR_REF_FREQ_ADD,在生成输出时给参考频率加上指定偏移,随后恢复内存中的原值;相关环境设置也写入数据库的处理历史。
    对应文件:src/pima_mkdb.f、src/pima_gvh_hist.f。

  • 调整|大气不透明度和大气亮温数据的获取:opag 改为从指定服务器下载预先计算的 .spd.bz2 文件,保存到实验的 _sob 目录。其命令参数由 atmo_dir 改为 spd_url,安装配置增加 --spd_url。opal 可读取压缩文件;不透明度和大气亮温只提供一个方位角的数据时,将其复制到其余方位角。
    对应文件:src/pima_opag.f、src/pima_opal.f、src/pima.f、src/pima_conf.f、scripts/pf.py、configure。

  • 调整|气象数据检查:插值前检查气压、气温和湿度中的 NaN;气压、气温超出允许范围时报错,湿度低于或高于允许范围时,分别设为下限或上限。新增 PIMAVAR_USE_WEATHER=NO,可停用已加载的台站气象数据。
    对应文件:src/pima_wea_intrp.f。

  • 调整|splt 的平均量计算:汇总各中频通道的 SEFD 和增益改正时,改为先累加对数,再取指数得到几何平均,减少直接连乘带来的数值溢出风险。筛选观测时,也将已排除观测和无对应频率组数据的检查提前。
    对应文件:src/pima_splt.f。

  • 新增|四种极化组合的条纹拟合与中断续算:pf.py allfine 使用 POLAR: ALL,将结果写入以 all_ 开头的 .fri、.frr 文件。coarse、fine 和 allfine 增加 -resume,检查已有结果后从下一条观测继续;-keep 与 -resume 不能同时使用。包含多种极化组合的结果在续算时仍有限制,见下文。
    对应文件:scripts/pf.py。

  • 新增|实验处理流程脚本:增加 pir.py,通过 -b 指定波段、-r 指定处理阶段,串联加载、日志转换、校准、条纹拟合、数据库生成及成像等步骤,并提供 --dry-run。脚本包含四波段 VGOS 的流程分支;pf.py 可接受的波段编号也由 1–4 扩展至 1–8。
    对应文件:scripts/pir.py、scripts/pf.py。

  • 新增|带通跳变后的重新处理脚本:pbu.py 按指定台站和观测编号,将观测分为跳变前、后两组,生成分别计算带通、重新条纹拟合和更新数据库的 C shell 脚本。指定编号的观测归入跳变前一组。
    对应文件:scripts/pbu.py。

  • 新增|批量绘图与 PNG 输出:pictdir.py 扫描成像目录,调用现有工具绘制射电图像,以及相关流量密度随投影基线长度变化的图。fits_to_map 增加 PNG 输出、-thick 线宽选项及新的图幅尺寸。
    对应文件:scripts/pictdir.py、src/fits_to_map.f、src/gen_mapplot.f。

  • 调整|相关流量密度统计:fits_to_cfd 在短、长基线统计之外,增加中等投影基线长度范围内的相关流量密度中位数,并更新输出表的列。统计程序改为返回格式化结果,由主程序负责写文件或输出到终端。
    对应文件:src/fits_to_cfd.f、src/generate_cfd_table.f、src/get_uvlen_amp.f。

  • 修复|FITS 频率表查询工具:旧包中的 get_freq_table_from_fits 实际沿用了源名和坐标的提取逻辑;新版改为读取并输出各中频通道的起止频率、带宽、谱通道数和谱通道宽度,频率及带宽均以 MHz 输出。
    对应文件:src/get_freq_table_from_fits.f。

  • 新增|安装信息查询:pima_inq 可查询配置版本、安装路径,以及实验、FITS、共享数据和临时文件目录,便于脚本使用安装时的设置。
    对应文件:src/pima_inq.f、src/Makefile、support/config.csh。

  • 调整|编译依赖与构建规则:新增 ATP、TLE 依赖及 --with-atp、--with-tle 配置选项。最低版本要求更新为 GVH 20231222、PETOOLS 20250622、NERS 20250808、SPC 20250622、VTD 20250906、ATP 20250922、TLE 20250215;.opt_o 编译规则由 MK5_F95_NOOPT 改用 MK5_F95_OPT。
    对应文件:configure、src/Makefile、support/config.csh、support/check_atp_version.csh、support/check_tle_version.csh。

  • 调整|随包数据和说明文档:增加 IVS、KVN、VLBA 增益表,补充并更新不同计算规模的 FFTW wisdom 文件,增加 pima_fftw_plan_create.csh 生成脚本。补充条纹输出格式、Swinburne 数据格式及 fits_to_cfd 的说明。
    对应文件:share/pima/ivs_gains.key、share/pima/kvn_gains.key、share/pima/vlba_gains.key、share/pima/pima_small_measure_1thr.wis、share/pima/pima_big_measure_1thr.wis、scripts/pima_fftw_plan_create.csh、doc/fringe_output_format_description.txt、doc/swin_format.tex、doc/fits_to_cfd_help.txt。

使用提示

  • 升级后应重新执行 load,生成新版 dump 文件。条纹拟合结果文本文件仍支持读取旧格式,包括 2019.04.20 格式。自行编写的结果读取脚本,需要核对新增字段和 Feed_ro 标签。对应文件:src/pima_read_obs.f、src/pima_write_obs.f、src/pima_fri_io.f、src/pima_bpass_sta_list.f。

  • 这份包的 pir.py -r af 会被运行级别检查拒绝,因为允许列表中没有 af。即使补入该名称,四波段分支中的 nb = nb + 2 + " " 还会触发类型错误。可先逐波段调用 pf.py allfine。对应文件:scripts/pir.py、scripts/pf.py。

  • 包含多种极化组合的结果暂不宜直接使用 -resume:pf_resume 截断文件时,遇到最后一条已完成观测的第一行就停止,随后却从下一条观测开始,会丢掉该观测其余极化组合的记录。用两条观测、每条包含四种极化组合记录的合成输入调用该函数,已复现最后一条只保留一行的情况。此外,--dry-run 与 -resume 一起使用时,仍会调用这个改写结果文件的函数。对应文件:scripts/pf.py。

  • 扫描内恰好只有两个相位校准历元时,拟合曲线还需与原始数据对照:PIMA_PCAL_SCAN_AVR 用 ATAN_CS(PCAL_REA_SCA, PCAL_REA_SCA) 除以时间间隔计算变化率,未使用两端的相位差。这个值会进入供 pcpl pcal_type avr 绘图使用的 PHAS_RGR,可能产生虚假的相位变化;检查这类扫描时可先看 pcal_type raw。对应文件:src/pima_pcal_scan_avr.f、src/pima_plot_pcal.f。

  • 原来的 PIMAVAR_AUT_NOSOURCE 已不再使用,新变量 PIMAVAR_AUT_NOSOURCE_STRICT 的含义是启用严格检查,不能机械地保留旧变量的取值。处理多相位中心数据时,要注意严格源名匹配会限制自相关记录的共用。对应文件:src/pima_scan_split.f、src/pima_indx.f。

  • 旧的 opag atmo_dir ... 调用需要改成 opag spd_url ...,参数值也应改为服务器地址。对于 IVS 日志流程,依赖 pf.py logs 生成 .ant 的后续脚本也需要随 .anc 输出调整。对应文件:src/pima.f、src/pima_opag.f、scripts/pf.py。

  • 在 20201027 → 20260105 这次比较中,普通带通和极化带通的输出格式未变,仍写入 .bps、.pbp 文件。极化带通的累加算法已经改变,重处理实验时应重新计算并检查校准结果。对应文件:src/pima_pbp_accum.f、src/pima_write_bpass.f、src/pbp_wri.f。