#fits #image-processing #data-analysis #astronomical #header #astronomy #table

astrors

用于处理 FITS(包括压缩)和 WCS 的天文包,仍在开发中

5 个版本

0.1.8 2024 年 4 月 29 日
0.1.7 2024 年 4 月 1 日
0.1.6 2024 年 3 月 26 日
0.1.3 2023 年 12 月 31 日
0.0.1 2020 年 7 月 17 日

#83 in 科学

Download history 157/week @ 2024-04-27 8/week @ 2024-05-04 6/week @ 2024-05-18 2/week @ 2024-05-25 1/week @ 2024-06-08 1/week @ 2024-06-29

451 次每月下载

BSD-3-Clause

405KB
9K SLoC

C 6K SLoC // 0.3% comments Rust 2.5K SLoC // 0.0% comments

astrors

codecov

一个用于天文图像处理和分析的包。我们的目标是提供简单的接口,以便执行如打开 fits 文件(包括图像和表格)等常见任务。

待办事项列表


  • 读取/写入修改头信息。
  • 读取/写入修改图像数据。
  • 文档
  • 读取/写入二进制表格数据。
  • 保留 CARD 注释
  • 支持多个 HDU、fits 扩展(进行中,仅解析头信息)
  • 读取/写入压缩图像
  • WCS 操作
  • 一般天文操作

Astrors 库指南

简介

本指南提供了基于 Rust 的astrors库的概述,这是一个用于处理天文数据中使用的 FITS 文件的工具。使用astrors,您可以读取、写入和操作 FITS 文件,从而实现天文数据集的高效处理和分析。本指南涵盖了常见用例,包括读取 FITS 文件、将数据写入 FITS 格式以及操作 FITS 文件中的图像和表格数据。

先决条件

在开始之前,请确保您的计算机上已安装 Rust。您还需要 astrors。本指南假设您对 Rust 编程有基本的了解。

设置

要在项目中使用 astrors,请将其添加到您的 Cargo.toml 文件中

[dependencies]
astrors = ""

读取 FITS 文件

FITS 文件的基本读取

要读取 FITS 文件并访问其 HDUs(头/数据单元),您可以采用以下方法

use astrors::fits;

let testfile = common::get_testdata_path("your_file.fits");
let mut hdu_list = fits::fromfile(testfile.to_str().unwrap()).unwrap();

println!("HDU List Length: {:?}", hdu_list.hdus.len());

此代码片段打开一个 FITS 文件,将其内容读取到 HDUList 结构中,并打印出文件中找到的 HDU 数量。

写入 FITS 文件

将修改后的 HDU 写回 FITS 文件

在读取和可选地修改 HDU 后,您可以将它们写回新的 FITS 文件

let outfile = common::get_outtestdata_path("modified_file.fits");
hdu_list.write_to(outfile.to_str().unwrap()).unwrap();

操作 HDU 数据

读取和修改主 HDU

要读取主 HDU、修改其数据并将其写回文件

use astrors::io::hdus::primaryhdu::PrimaryHDU;
use std::fs::File;
use ndarray::ArrayD;
use astrors::io::hdulist::HDUList;
use astrors::io::hdus::image::ImageData;
use ndarray::IxDyn;

let testfile = common::get_testdata_path("your_primary_hdu_file.fits");
let mut f: File = File::open(testfile)?;
let mut primary_hdu = PrimaryHDU::read_from_file(&mut f)?;

// Modify the primary HDU's data
primary_hdu.data = ImageData::F32(ArrayD::from_elem(IxDyn(&[100, 100]), 1.0));

// Write the modified primary HDU to a new file
let outfile = common::get_outtestdata_path("modified_primary_hdu.fits");
let mut f_out: File = File::create(outfile)?;
let mut hdus = HDUList::new();
hdus.add_hdu(HDU::Primary(primary_hdu));
hdus.write_to(outfile.to_str().unwrap())?;

与 Polars 集成以处理表格数据

从DataFrame创建二进制表HDU并将其添加到HDUList中

use polars::prelude::*;
use astrors::io::hdus::bintable::bintablehdu::BinTableHDU;

let df = DataFrame::new(vec![
    Series::new("RA", vec![1, 2, 3, 4, 5]),
    Series::new("DEC", vec![1, 2, 3, 4, 5]),
    Series::new("MAG", vec![1, 2, 3, 4, 5]),
]).unwrap();

let mut bintable = BinTableHDU::new_data(df);
hdus.add_hdu(HDU::BinTable(bintable));

此代码段创建了一个包含天文数据的DataFrame,将其转换为二进制表HDU,并将其添加到HDUList中以便写入FITS文件。

贡献开发

我们欢迎社区贡献以帮助进一步开发和改进这个库。无论您是在修复错误、添加新功能还是改进文档,您的帮助都至关重要。请随时在我们的GitHub仓库提交拉取请求或打开问题。对于重大变更,请首先打开一个问题来讨论您想更改的内容。

赞助

如果您发现这个库很有用,并想支持其开发,考虑赞助该项目。您的赞助可以帮助项目的维护、新功能的开发以及现有功能的改进。有关赞助的更多信息,请访问我们的GitHub仓库或直接联系我们。

许可证

本项目受BSD 3-Clause许可证的许可 - 有关详细信息,请参阅LICENSE文件。BSD 3-Clause许可证是一种许可,允许在满足某些条件下以修改或不修改的形式重新分配和使用源代码和二进制代码。此许可证对商业友好,并与开源和商业项目兼容。

依赖关系

~27-56MB
~1M SLoC