2个不稳定版本
0.2.0 | 2022年11月16日 |
---|---|
0.1.0 | 2022年4月27日 |
#245 in 科学
135KB
2.5K SLoC
Rustronomy-fits - Rustronomy工具用于FITS文件I/O
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/
文件夹中。
许可证
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