#fits #astrophysics #file-io

rustronomy-fits

一个用于读取和写入FITS文件的Rust库

2个不稳定版本

0.2.0 2022年11月16日
0.1.0 2022年4月27日

#245 in 科学


用于 rustronomy-watershed

GPL-3.0-or-later

135KB
2.5K SLoC

Rustronomy-fits - Rustronomy工具用于FITS文件I/O

License: GPL v3 Crates.io

该Crate是Rustronomy项目的组成部分

Rustronomy-fits提供了读取、写入和解析FITS文件的工具。目前仍在积极开发中。

特性/路线图

rustronomy-fits最新版本中包含的特性用✔️标记。将在下一个版本中引入的特性用✴️标记(这些可能已经在repo的主要分支中实现)。将在未来某个时间引入的特性用❌标记。

最新版本: v0.1.0 - 支持图像
下一个特性更新: v0.2.0 - 支持表格

读取FITS文件

  • ✔️ 解析FITS头和关键字记录
  • 解析主HDU中的数据
    • ✔️ 图像
    • ✴️ 表格
    • ❌ 二进制表格
    • ❌ 随机组
  • 解析扩展
    • ✔️ 图像
    • ✴️ 表格
    • ❌ 二进制表格

写入FITS文件

  • 将现有的FITS文件写入磁盘
    • ✔️ 将头写入磁盘
    • ✔️ 将图像HDU写入磁盘
    • ✴️ 将表格HDU写入磁盘
    • ❌ 将带有随机组的HDU写入磁盘
    • ❌ 将二进制表格HDU写入磁盘
  • ❌ 创建新的(有效)FITS文件

快速入门

要在Cargo项目中使用Rustronomy-fits的最新版本,请将rustronomy-fits crate作为依赖项添加到您的Cargo.toml文件中

[dependencies]
rustronomy-fits = "0.1.0"

要在Jupyter笔记本中使用Rustronomy-fits,请执行包含以下代码的单元格

:dep rustronomy-fits = {version = "0.1"}

如果您想使用rustronomy-fits的最新(不稳定)开发版本,您可以通过使用git字段(从repo获取最新版本)而不是version字段(从crates.io下载最新发布的版本)来做到这一点。

{git = "https://github.com/smups/rustronomy-fits"}

简例:将FITS图像导入为ndarray

在这个例子中,我们使用 open() 方法创建一个 Fits 结构体,该方法需要一个文件路径作为参数。接下来,我们获取文件中第二个头数据单元(HDU)的引用,该单元包含一个 f64 编码的图像扩展。我们可以通过将 HDU 中的数据与 Extension::Image 变体进行匹配,然后对解包的图像调用 as_f64_array() 方法来从 HDU 获取图像。

use rustronomy_fits::prelude::*;

let fits = Fits::open("somefile.fits")?;
let data_array = match fits.get_hdu(1).unwrap().get_data() {
  Extension::Image(img) => img.as_f64_array()?,
  _ => panic!()
}; 

请在存储库根目录下的示例文件夹中查看 Jupyter 笔记本,其中包含更深入的说明和示例!

贡献

关于测试的注意事项

如果您想为此模块做出贡献,请注意以下有关测试的要点

  • 所有 I/O 测试都使用位于 resources/tests/ 文件夹,该文件夹位于 rustronomy_fits/ 文件夹根目录下。
  • rustronomy_fits 使用 python 包 astropy 作为参考来验证测试期间编写的 FITS 文件。请确保设置一个包含 astropy 和 numpy 的 python 虚拟环境以运行这些测试。
  • 为了测试 rustronomy_fits 的读取功能,在测试期间使用了一系列测试 FITS 文件。这些文件太大,无法上传到 github。您可以使用此链接下载它们:[待办事项]。请确保将它们放置在 resources/tests/ 文件夹中。

许可证

License: GPL v3

Rustronomy-fits 是 Rustronomy 项目的组成部分,并继承了 Rustronomy 项目的 gpl 许可证。

Rustronomy 明确不使用 Rust 生态系统常见的 Apache/MIT 双许可。相反,它根据 GNU GPLv3 的条款进行许可。.

Rustronomy 是一个科学项目,并拥抱开放科学的价值观和免费和开源软件。封闭和付费的科学软件套件阻碍了新技术和研究方法的发展,并将大量需要的公共资金从研究人员转移到大型出版和软件公司。

Rustronomy-fits 是免费软件。它根据 GNU GPL 版本 3 或更高版本进行许可。这意味着您可以自由地用于任何目的;自由地研究并修改此程序以满足您的需求;并且可以自由地与他人分享此程序或您的修改。如果您分享此程序或您的修改,您必须授予接收者相同的自由。更具体地说:您必须在同一许可证下共享源代码。有关详细信息,请参阅 https://www.gnu.org/licenses/gpl-3.0.html 或此 github 仓库中的 LICENSE 文件。

依赖关系

~5MB
~84K SLoC