跳转到主要内容

处理空间望远镜的科学仪器孔径文件(SIAF)

项目描述

Build Status Documentation Status PyPI version PyPI - License DOI

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)

支持的帧变换(detsciidltel是支持的帧)

    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历史不能被删除。

  1. 在您的个人github空间中从spacetelescope pysiaf存储库创建一个分支。
  2. 克隆您的分支到本地。
  3. 确保您的个人分支指向https://github.com/spacetelescope/pysiaf
  4. spacetelescopepysiaf 上创建一个问题描述你计划进行的更改的需要和性质。对于小修改和修复,这不必要。
  5. 在该个人分支上创建一个分支。
  6. 进行你的软件更改。
  7. 将分支推送到你的个人 GitHub 仓库,即 origin
  8. spacetelescopepysiaf 仓库上,创建一个将分支合并到 spacetelescope:master 的 pull request。
  9. 为 pull request 指派一个团队成员作为审查者。
  10. 与审查者迭代任何需要的更改,直到审查者接受并合并你的分支。
  11. 删除你本地分支的副本。

安装

此软件包支持 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 的情况下失败。请采取适当的行动确保为

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。

源分布

pysiaf-0.23.3.tar.gz (67.2 MB 查看哈希)

上传

构建分布

pysiaf-0.23.3-py3-none-any.whl (67.8 MB 查看哈希)

上传 Python 3

支持