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。取舍应依据元数据可读性、压缩与内存映射需求及协作方已有格式。
项目信息
- 仓库:asdf-format/asdf
- 星标:565 · 派生:68
- 主要语言:Python
- 许可证:BSD-3-Clause
- 最近提交:2026-09-11
- 项目主页:http://asdf.readthedocs.io/
本文属于《学科研究工具知识库 · 天文学》第 10 篇(按 GitHub 星标排序)。收录标准:该学科公开可获取的开源研究工具,星标与活跃度为主要参考,不代表对其性能或适用性的背书;选型前请结合自身场景评估。

发表评论 取消回复