本地数据与接口验证
2026-09-10,在 Windows、Python 3.12.14 环境完成文件解析、Python API、真实 HTTP 上传、独立计算任务和 JSON 导出的一致性检查。先检查每个来源 2 个输入,再扩大至每个来源 5 个输入;下表对应扩大后的完整验证。
已验证结果
25/25 个功能数据输入通过;随后将相同参数的文件组成 8 个真实批量上传任务,共处理 25 个文件,8/8 个批量任务通过。全部源文件在单文件与批量验证前后的 SHA-256 保持一致。计数以输入文件为单位,包含不同扫描或不同数据表示,不代表独立受试者数量。
| 数据来源 |
单文件输入 |
实测输入形状(时间点 × ROI 或 ROI × ROI) |
Python/HTTP/导出一致 |
批量任务文件数 |
源文件校验值不变 |
| ABIDE1 |
3 个相关矩阵、2 个时序 |
116 × 116;146 × 116 |
5/5 |
3 + 2 |
5/5 |
| ABIDE2 |
3 个 Fisher-z 矩阵、2 个时序 |
116 × 116;170 × 116 |
5/5 |
3 + 2 |
5/5 |
| ADHD |
5 个 .1D 时序 |
172 × 116 |
5/5 |
5 |
5/5 |
| MDD |
5 个时序,显式选择 0:116 |
200 × 116(选择后) |
5/5 |
5 |
5/5 |
| ADNI |
3 个相关矩阵、2 个时序 |
90 × 90;187 × 90、190 × 90 |
5/5 |
3 + 2 |
5/5 |
MDD 的 0:116 仅用于验证解析与计算流程。此处未验证这些列对应的图谱、脑区顺序或解剖坐标,因此结果不包含解剖定位结论。其他来源也没有根据矩阵尺寸自动指定图谱。
单文件检查通过正式的 load_data → analyze Python API 与 /api/v1/uploads → /api/v1/jobs → /api/v1/results HTTP 流程分别执行,比较连接矩阵、ROI ID、完整普通图与超图结构及其全局/节点指标,并检查 JSON 导出。数值比较采用相对容差 1e-7、绝对容差 1e-9。批量结果再与已经验证的单文件结果逐一比较。
数据适配与负例
- ADHD 按
File、Sub-brick 表头删除辅助列,保留全部数值时序行;遇到仅含表头的文件会报错。
- ABIDE2 Fisher-z 的未定义对角自连接仅在内存副本中置零,记录数量和处理说明。非对角的 NaN/Inf 仍报错,原文件不变。
- 脑区中心坐标、坐标表和已识别的标签变量不能作为功能时序输入。扩大后的扫描实际拒绝了 2 个脑区坐标元数据候选和 1 个仅含表头的 ADHD 候选。
- MAT 多变量需要明确选择;检查空数据、非法 ROI 列、重复 ROI ID、非对称矩阵、恒定时序通道、错误坐标数量及资源上限。
- 文件导入与统计专项测试为 43 项,通过。统计测试覆盖 Welch 检验、OLS HC3、置信区间、BH-FDR、缺失值处理和重复受试者拒绝。
验证环境中的主要依赖版本:NumPy 2.5.3、SciPy 1.18.1、pandas 3.0.5、statsmodels 0.15.0、NetworkX 3.6.1、XGI 0.10.2、Nilearn 0.14.1。
发行与网页验收
- Windows / Python 3.12.14:100 项自动化测试通过;Ruff 检查通过。两个提示来自测试客户端上游弃用声明,不影响测试结果。
- React TypeScript 检查、Vite 生产构建通过;npm audit 未发现漏洞。前端脚本、NiiVue、Plotly 和第三方许可随 wheel 分发。
- 独立虚拟环境从 wheel 安装
[web] 依赖,pip check 通过。使用安装后的包在源码目录之外启动服务,上传、独立进程计算、JSON/ZIP 导出以及本地接口参考页均通过。
- 独立进程测试禁止所有 socket 连接后,偏相关、图与超图计算及 Nilearn 自带 MNI 模板加载通过;Chrome 页面测试阻止非回环请求,未观察到外部请求。
- 浏览器实际上传 ABIDE1 的 116×116 MAT 矩阵,确认变量、配置分析、查看超边、选择成员和下载 ZIP 全部通过。缺少解剖映射时按预期仅展示矩阵与抽象结构。
- 另用 6 ROI 合成输入和明确标注的测试 MNI 坐标检查三维参考脑、切片定位、普通图/超边成员与热图联动。390 像素宽度检查无页面横向溢出。合成输入没有被计入上述真实数据样本数。
- 解剖坐标与抽象布局分别保存;布局按 ROI ID 固定,ROI 同步重排不改变布局身份对应。CSV 分别导出
rois.csv 和 layout_coordinates.csv,超边成员表另保存 ID 类型以区分整数与字符串 ID。
- clean wheel 的 Python 与 HTTP 结构/成员相同;浮点数比较使用
rtol=1e-10, atol=1e-12,最大观测差异约 3.33e-16。独立进程的线程数不同可产生末位舍入差异。
- wheel 与源码分发包通过元数据检查;分发内容不含输入影像、时序、矩阵、患者结果、工作区数据库或本机数据目录。源码包包含前端源码、构建脚本、补充许可及 83 项工具目录。
运行依赖的此次安装快照见 requirements-tested-windows-py312.txt。这是已测环境记录,其他操作系统和 Python 版本仍需各自运行验收。
复现步骤
安装开发依赖并启动本地服务后,从仓库运行验证脚本,参数指向自己的数据和私有报告目录:
hicbrain serve --no-browser --port 8765
python examples/validate_local_data.py --data-root <数据目录> --url http://127.0.0.1:8765 --output <私有目录>/verification.json --per-dataset 5 --batch
脚本只向回环地址上传,仅读取源文件。详细报告由使用者保存在包外,包含文件级校验值、任务状态、比较结果及选择阶段的拒绝原因;代码发行包不包含这些数据或报告。
这些结果验证所选文件的导入和计算流程,不是疾病预测性能、临床验证或整库质量审核。此页未声称已经完成 Linux 平台、全部原始数据或所有图谱的验证。