Skip to content
Snippets Groups Projects
spectrum_test.rs 1.25 KiB
use opossum::error::OpossumError;
use opossum::spectrum::{create_visible_spectrum, Spectrum};
use uom::si::{f64::Length, length::nanometer};

fn main() -> Result<(), OpossumError> {
    let mut s = Spectrum::new(
        Length::new::<nanometer>(400.0)..Length::new::<nanometer>(450.0),
        Length::new::<nanometer>(0.1),
    )?;
    s.add_lorentzian_peak(
        Length::new::<nanometer>(415.0),
        Length::new::<nanometer>(3.2),
        2.0,
    )?;

    let mut s2 = Spectrum::new(
        Length::new::<nanometer>(400.0)..Length::new::<nanometer>(450.0),
        Length::new::<nanometer>(2.1),
    )?;
    s2.add_lorentzian_peak(
        Length::new::<nanometer>(430.0),
        Length::new::<nanometer>(1.2),
        0.5,
    )?;
    s.add(&s2);

    let mut s3 = Spectrum::new(
        Length::new::<nanometer>(400.0)..Length::new::<nanometer>(450.0),
        Length::new::<nanometer>(0.05),
    )?;
    s3.add_lorentzian_peak(
        Length::new::<nanometer>(420.0),
        Length::new::<nanometer>(0.3),
        0.02,
    )?;
    s.sub(&s3);
    s.to_plot("spectrum.svg");

    let s4 = Spectrum::from_csv("NE03B.csv")?;
    s4.to_plot("ne03b_raw.svg");
    let mut s5 = create_visible_spectrum();
    s5.resample(&s4);
    s5.to_plot("ne03b.svg");
    Ok(())
}