gridded_data 0.1.2

Multivariate interpolation on a regular / rectilinear grid
Documentation
use gridded_data::GriddedData;
use indoc::indoc;

#[test]
fn serialize_and_deserialize_1d() {
    let x = vec![0.0, 1.0, 2.0, 3.0, 4.0];
    let data = vec![0.0, 2.0, 4.0, 2.0, 0.0];
    let grid = GriddedData::<1>::new([x], data).unwrap();

    let txt = serde_yaml::to_string(&grid).unwrap();
    let cmp = indoc! {"
        ---
        axes:
          - - 0.0
            - 1.0
            - 2.0
            - 3.0
            - 4.0
        data:
          - 0.0
          - 2.0
          - 4.0
          - 2.0
          - 0.0
        "};
    assert_eq!(txt, cmp);

    let de_grid: GriddedData<1> = serde_yaml::from_str(&txt).unwrap();
    assert_eq!(
        grid.nearest_neighbor_interp(&[1.5]),
        de_grid.nearest_neighbor_interp(&[1.5])
    );
}

#[test]
fn serialize_and_deserialize_2d() {
    let x = vec![0.0, 1.0, 2.0];
    let y = vec![0.0, 1.0, 2.0];
    let data = vec![0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0];
    let grid = GriddedData::new([x, y], data).unwrap();

    let txt = serde_yaml::to_string(&grid).unwrap();
    let cmp = indoc! {"
        ---
        axes:
          - - 0.0
            - 1.0
            - 2.0
          - - 0.0
            - 1.0
            - 2.0
        data:
          - 0.0
          - 1.0
          - 2.0
          - 3.0
          - 4.0
          - 5.0
          - 6.0
          - 7.0
          - 8.0
        "};
    assert_eq!(txt, cmp);

    let de_grid: GriddedData<2> = serde_yaml::from_str(&txt).unwrap();
    assert_eq!(
        grid.nearest_neighbor_interp(&[1.5, 1.5]),
        de_grid.nearest_neighbor_interp(&[1.5, 1.5])
    );
}