ASDF:面向科学数据的层次化交换格式

天文学 2026-11-11 14 阅读

ASDF 是科学数据的下一代交换格式,其 Python 实现把 YAML 元数据与二进制数组存于同一文件,便于科研数据的保存与交换。

这个工具是什么

ASDF(Advanced Scientific Data Format)是一种面向科学数据的交换格式,本仓库是其 Python 实现,遵循 ASDF 规范,规范文档单独发布。格式设计上,元数据以 YAML 形式分层组织、可人工阅读;数值数组以二进制块存储,支持内存映射与多种压缩方式;内容可用 JSON Schema 校验;对多数 Python 基本类型提供原生透明支持,并提供扩展 API 以接入自定义 Python 对象。仓库以 BSD-3-Clause 许可开源,标签涉及 astronomy、astropy、jwst,最近提交时间为 2026-09-11。

核心能力

  • 元数据采用 YAML 分层组织,结构可读,便于人工检查文件内容
  • 数组以二进制块存储,支持内存映射与 zlib、bzp2 等压缩方式
  • 使用 JSON Schema 对文件内容进行校验,约束数据组织方式
  • 原生支持多数 Python 基本类型,并可通过扩展 API 支持自定义对象

科研中的典型用法

  • 将 numpy 数组与嵌套字典组成的树写入单个 .asdf 文件,便于保存与交换
  • 写入时指定 all_array_compression 对数组数据压缩,控制文件体积
  • 借助扩展 API 为自定义 Python 对象注册序列化方式,纳入统一文件格式

快速上手

通过 pip 安装 asdf 包。入门时构造一个嵌套 dict 作为数据树,传入 asdf.AsdfFile(tree),再调用 write_to("example.asdf") 写出文件;读取时用 asdf.open 打开文件并访问其树结构。压缩可在写出时传入 all_array_compression="zlib" 或 "bzp2",安装 lz4 包后还可使用 "lz4"。

生态与相近工具

同领域常见选择包括 FITS 与 HDF5 等格式。ASDF 以 YAML 元数据加二进制数组块为特点,并与 astropy 生态相关;若数据需与天文观测流程或既有 FITS 工具链衔接,可考虑 FITS,若更看重通用层次化存储与成熟工具链,可考虑 HDF5。取舍应依据元数据可读性、压缩与内存映射需求及协作方已有格式。

项目信息


本文属于《学科研究工具知识库 · 天文学》第 10 篇(按 GitHub 星标排序)。收录标准:该学科公开可获取的开源研究工具,星标与活跃度为主要参考,不代表对其性能或适用性的背书;选型前请结合自身场景评估。

评论 共 0 条

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部