SuperAPI AI 工具集

astropy

数据与分析

查看项目

更新于 10-21 16:23

技能介绍

Astropy 是面向天文学与天体物理的核心 Python 包,为天文研究与数据分析提供基础功能。它可用于坐标转换、单位与量计算、FITS 文件操作、宇宙学计算、精确时间处理、表格数据操作以及天文图像处理。

用途

当任务涉及以下内容时可以使用 Astropy:在天球坐标系之间转换(ICRS、Galactic、FK5、AltAz 等);处理物理单位与量(如 Jy 转 mJy、秒差距转千米);读取、写入或操作 FITS 文件(图像或表格);宇宙学计算(光度距离、回望时间、哈勃参数);处理不同时间尺度(UTC、TAI、TT、TDB)与格式(JD、MJD、ISO)的精确时间;表格操作(读取星表、交叉匹配、筛选、连接);像素坐标与世界坐标之间的 WCS 变换;天文常数与相关计算。

主要能力

  1. 单位与量(astropy.units):为物理量附加单位、进行单位换算、在运算中自动处理单位、使用等价关系进行领域特定转换(光谱、多普勒、视差)、处理对数单位(星等、分贝)。

  2. 坐标系(astropy.coordinates):用 SkyCoord 在任意框架中表示天体位置、在坐标系之间转换、计算角距离与位置角、与星表匹配、包含距离进行三维坐标操作、处理自行与径向速度、从在线数据库查询命名天体。

  3. 宇宙学计算(astropy.cosmology):使用内置宇宙学模型(Planck18、WMAP9 等)、创建自定义模型、计算距离(光度距离、共动距离、角直径距离)、计算年龄与回望时间、确定任意红移处的哈勃参数、计算密度参数与体积、进行反向计算(由距离求红移)。

  4. FITS 文件处理(astropy.io.fits):用上下文管理器打开 FITS 文件、按索引或名称访问 HDU、读取和修改头信息(关键字、注释、历史)、处理图像数据(NumPy 数组)、处理表格数据(二进制表与 ASCII 表)、创建新 FITS 文件(单扩展或多扩展)、对大文件使用内存映射、访问远程 FITS 文件(S3、HTTP)。

  5. 表格操作(astropy.table):从数组、列表或字典创建表格、以多种格式读写表格(FITS、CSV、HDF5、VOTable)、访问和修改列与行、排序、筛选和索引、执行数据库式操作(连接、分组、聚合)、堆叠与拼接表格、使用带单位的列(QTable)、用掩码处理缺失数据。

  6. 时间处理(astropy.time):以多种格式创建 Time 对象(ISO、JD、MJD、Unix 等)、在时间尺度之间转换(UTC、TAI、TT、TDB 等)、用 TimeDelta 进行时间运算、为观测者计算恒星时、计算光行时修正(质心、日心)、高效处理时间数组、处理掩码(缺失)时间。

  7. 世界坐标系统(astropy.wcs):从 FITS 头读取 WCS、在像素坐标与世界坐标之间转换、计算图像覆盖范围、访问 WCS 参数(参考像素、投影、比例)、创建自定义 WCS 对象。

其他能力

参考文件还涵盖:NDData 与 CCDData(带元数据、不确定度、掩码和 WCS 信息的 N 维数据集容器);建模(创建数学模型并拟合天文数据的框架);可视化(带适当拉伸与缩放的天文图像显示工具);常数(带正确单位的物理与天文常数);卷积(用于平滑和滤波的图像处理核);统计(包括 sigma 裁剪和异常值剔除的稳健统计函数)。

安装

uv pip install "astropy==7.2.0" uv pip install "astropy[recommended]==7.2.0" uv pip install "astropy[all]==7.2.0"

Astropy 7.2.0 要求 Python 3.11+,依赖 NumPy、PyERFA、PyYAML 和 packaging。应使用隔离的虚拟环境,不要以提升的权限安装 Astropy。recommended 和 all 可选依赖会以未固定版本引入传递依赖(matplotlib、scipy 等)。对于可复现的生产环境,应使用锁文件固定完整依赖树,并在部署前检查解析出的版本。

使用方式

常见工作流包括:在不同坐标系之间转换(创建 SkyCoord,转换为 galactic 或 AltAz,后者需要时间和地点);读取和分析 FITS 文件(用 fits.open 打开,查看结构,获取图像数据与头信息,读取关键字,进行统计);宇宙学距离计算(用 Planck18 计算光度距离、角直径距离、年龄、回望时间);星表交叉匹配(读取星表,创建 SkyCoord,用 match_to_catalog_sky 匹配,按分离阈值筛选)。

最佳实践

始终使用单位;用上下文管理器打开 FITS 文件;优先使用数组而非循环;转换前检查坐标框架;选择合适的宇宙学模型;用掩码列处理缺失数据;明确指定时间尺度;列带单位时使用 QTable;使用 WCS 变换前检查其有效性;缓存频繁使用的值;对网络访问保持明确(SkyCoord.from_name()、EarthLocation.of_site(refresh_cache=True)、EarthLocation.of_address()、download_file()、远程 FITS 读取以及部分 IERS 时间/坐标变换可能联系外部服务或更新本地缓存,避免向第三方服务发送敏感目标名称、地址、URL 或专有文件位置,处理可能敏感的目标或数据位置前应先与用户确认);为可复现性固定版本。

当前版本说明

当前稳定版本为 Astropy 7.2.0(2025-11-25 发布)。Python 要求 3.11+。Astropy 8.0 处于候选发布阶段(8.0.0rc1,2026-05-26),预期变化包括:移除已弃用的 astropy.cosmology 子模块垫片,直接从 astropy.cosmology 导入;astropy.constants 默认值从 CODATA 2018 改为 CODATA 2022;NumPy 2.0 成为最低支持版本;内置测试运行器正式弃用,应直接调用 pytest。7.x 中应避免的弃用用法:将表格索引标识符作为 .loc 的第一个元素(应使用 t.loc.with_index("b")[2]);astropy.utils.isiterable()(应使用 numpy.iterable())。7.0 中已移除的旧 FITS API 包括 (Bin)Table.update、_ExtensionHDU、_NonstandardExtHDU 以及 CompImageHDU 的 tile_size 参数;CompImageHeader 已弃用。

文档与资源

官方文档:https://docs.astropy.org/en/stable/ 教程:https://learn.astropy.org/ GitHub:https://github.com/astropy/astropy

参考文件

references/units.md、references/coordinates.md、references/cosmology.md、references/fits.md、references/tables.md、references/time.md、references/wcs_and_other_modules.md。

代理操作流程

检查环境,确认库版本、单位、坐标系和数据格式;确定输入,从数据或用户处确认格式、标识符和参数,对会改变结果的取值应询问而非猜测;先运行小规模版本,在小网格、区域或子集上运行并检查物理合理性;按上述说明和参考执行完整任务;验证结果,检查单位与量纲一致性、守恒定律或已知极限、数值收敛性;报告运行内容(版本、命令、参数)、已检查内容和仍不确定之处。若结果违反已知物理极限,先检查单位、边界条件和求解器容差;若说明中的函数、标志或端点在已安装版本中缺失,查阅该版本文档并告知用户,绝不虚构 API;若必需输入、标识符或参数不明确,询问用户或明确说明假设后再运行。

完整性规则

绝不虚构结果、参数、标识符、引用或统计量;无法运行或验证时应明确说明;每个定量结果都应报告不确定度和数值容差;版本相关细节可能过时,应针对已安装版本的官方文档确认;对花钱、消耗共享 GPU 或云配额、触及个人或患者数据、或不可撤销的操作,应先询问。

相关技能

uncertainty-and-units:使用 pint 和 uncertainties 在科学计算中跟踪物理单位并传播测量不确定度。