use std::fs::File;
use fits_well::{FitsReader, FitsWriter, Image, ImageArray, ImageData, Scaling};
fn main() -> fits_well::Result<()> {
let path = std::env::temp_dir().join("fits_well_ndarray.fits");
let image = Image {
shape: vec![4, 3],
#[rustfmt::skip]
samples: ImageData::I16(vec![
0, 1, 2, 3, 10, 11, 12, 13, 20, 21, 22, 23, ]),
scaling: Scaling {
bscale: 1.0,
bzero: 0.0,
blank: None,
},
};
let mut writer = FitsWriter::new(File::create(&path)?);
writer.write_image(&image)?;
writer.into_inner().sync_all()?;
println!("wrote {}", path.display());
let mut reader = FitsReader::open(File::open(&path)?)?;
let images = reader.image_indices();
let raw = reader.read_image(images[0])?;
let arr = raw.physical_array();
println!("shape {:?}", arr.shape()); println!("pixel (x=2, y=1) = {}", arr[[2, 1]]); println!("mean = {:?}", arr.mean());
let numpy = arr.reversed_axes();
println!("numpy [y=1, x=2] = {}", numpy[[1, 2]]);
if let ImageArray::I16(a) = raw.to_ndarray() {
println!("typed i16 [x=0, y=2] = {}", a[[0, 2]]); }
Ok(())
}