处理空间望远镜的科学仪器孔径文件(SIAF)
项目描述
pysiaf
空间望远镜科学仪器孔径文件(SIAF)的处理。SIAF文件包含科学仪器的详细几何焦平面描述和关系。它们维护在JWST/HST PRD(项目参考数据库)中。
pysiaf是一个Python包,用于访问、解释、维护和生成SIAF,尤其是针对JWST。提供了应用帧变换、绘图、比较和验证的工具。
功能
- 捕获当前PRD内容,即pysiaf包含SIAF XML文件的副本。这些文件维护以与PRD同步。
- SIAF帧(探测器、科学、理想、望远镜/V)之间的变换预先加载且易于访问。
- 提供用于绘图、验证和比较SIAF孔径和文件的工具。
- 提供在 celestial(赤经、赤纬)和望远镜/V(V2、V3)坐标系之间实现变换的支持。
- 输入/输出:读取SIAF XML,写入XML/Excel/csv等。
- 捕获SI源数据和生成SIAF孔径的代码
- 标准Python包,包括安装脚本、单元测试、文档。
- 支持与HST SIAF(只读)一起工作。
示例用法
检查正在使用哪个PRD版本
print(pysiaf.JWST_PRD_VERSION)
支持的帧变换(det
、sci
、idl
、tel
是支持的帧)
import pysiaf
instrument = 'NIRISS'
# read SIAFXML
siaf = pysiaf.Siaf(instrument)
# select single aperture by name
nis_cen = siaf['NIS_CEN']
# access SIAF parameters
print('{} V2Ref = {}'.format(nis_cen.AperName, nis_cen.V2Ref))
print('{} V3Ref = {}'.format(nis_cen.AperName, nis_cen.V3Ref))
for attribute in ['InstrName', 'AperShape']:
print('{} {} = {}'.format(nis_cen.AperName, attribute, getattr(nis_cen, attribute)))
# coordinates in Science frame
sci_x = np.array([0, 2047, 2047, 0])
sci_y = np.array([0, 0, 2047, 2047])
# transform from Science frame to Ideal frame
idl_x, idl_y = nis_cen.sci_to_idl(sci_x, sci_y)
绘图(仅展示了一小部分选项)
import matplotlib.pyplot as plt
plt.figure(figsize=(4, 4), facecolor='w', edgecolor='k'); plt.clf()
# plot single aperture
nis_cen.plot()
# plot all apertures in SIAF
for aperture_name, aperture in siaf.apertures.items():
aperture.plot()
plt.show()
# plot 'master' apertures
from pysiaf.siaf import plot_master_apertures
plt.figure(figsize=(8, 8), facecolor='w', edgecolor='k'); plt.clf()
plot_master_apertures(mark_ref=True)
plt.show()
# plot HST apertures
siaf = pysiaf.Siaf('HST')
aperture_names = ['FGS1', 'FGS2', 'FGS3', 'IUVIS1FIX', 'IUVIS2FIX', 'JWFC1FIX', 'JWFC2FIX']
plt.figure(figsize=(4, 4), facecolor='w', edgecolor='k')
for aperture_name in aperture_names:
siaf[aperture_name].plot(color='r', fill_color='darksalmon', mark_ref=True)
ax = plt.gca()
ax.set_aspect('equal')
ax.invert_yaxis()
plt.show()
文档
关于JWST SIAF的描述的主要参考资料是Cox & Lallo,2017,JWST-STScI-001550:描述和使用JWST科学仪器孔径文件,可在https://jwst.stsci.edu/documentation/technical-documents找到。
pysiaf的文档可在https://pysiaf.readthedocs.io/找到
引用
如果您认为这个包很有用,请考虑引用上面的DOI徽章使用的Zenodo记录。有关其他引用说明,请参阅CITATION。
免责声明
所有pysiaf中的参数值都可能更改。JWST值在JWST望远镜运行完成之前是初步的。
pysiaf中的畸变和其他变换对于操作来说足够准确,但不一定具有科学级质量。例如,通常每个孔径只携带一个滤波器解决方案。对于科学级变换,请咨询科学管道及其参考文件(见https://jwst-docs.stsci.edu/jwst-data-reduction-pipeline)
对于科学观测规划,最新APT(http://www.stsci.edu/hst/proposing/apt)中实现的焦平面几何优先。
STScI望远镜部门只为S&OC操作系统提供pysiaf的全面支持。
贡献
请为错误、反馈或您想看到的新功能打开一个新的问题或新的pull请求。如果您想解决的问题,请留下评论,我们将很乐意提供帮助。新的贡献者和贡献者非常欢迎!
您有反馈和功能请求吗?有什么缺失的吗?请打开一个问题或发送电子邮件给维护者。此包遵循空间望远镜行为准则,力求为所有用户和贡献者提供一个欢迎的社区。
以下描述了为pysiaf项目做出贡献的典型工作流程(改编自JWQL):0.不要将任何敏感信息(例如STScI-内部路径结构、机器名称、用户名、密码等)提交到这个公共存储库。Git历史不能被删除。
- 在您的个人github空间中从
spacetelescope
pysiaf
存储库创建一个分支。 - 克隆您的分支到本地。
- 确保您的个人分支指向https://github.com/spacetelescope/pysiaf
- 在
spacetelescope
和pysiaf
上创建一个问题描述你计划进行的更改的需要和性质。对于小修改和修复,这不必要。 - 在该个人分支上创建一个分支。
- 进行你的软件更改。
- 将分支推送到你的个人 GitHub 仓库,即
origin
。 - 在
spacetelescope
和pysiaf
仓库上,创建一个将分支合并到spacetelescope:master
的 pull request。 - 为 pull request 指派一个团队成员作为审查者。
- 与审查者迭代任何需要的更改,直到审查者接受并合并你的分支。
- 删除你本地分支的副本。
安装
此软件包支持 python 3.10+
pip install pysiaf
克隆仓库
git clone https://github.com/spacetelescope/pysiaf
安装 pysiaf
cd pysiaf
pip install .
以开发模式安装 pip install -e .
已知的安装问题
如果你在导入 pysiaf 时遇到错误
导入 pysiaf
回溯到
导入 lxml.etree as ET
并且显示
ImportError [...] 库未加载:libxml2.2.dylib 原因:不兼容的库版本:etree.[...] 需要 12.0.0 或更高版本,但 libxml2.2.dylib 提供 10.0.0
,
这可能是通过降级 lxml 版本来修复的,例如
pip uninstall lxml
pip install lxml==3.6.4
pyqt5 安装问题:如果使用 MacOS Mojave,它会导致 matplotlib 在没有 pyqt5 的情况下失败。请采取适当的行动确保为
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。