fpm_rs/diagnostics/
serialization.rs1use std::{
2 fs::File,
3 io::{BufReader, BufWriter},
4 path::Path,
5};
6
7use serde::{Deserialize, Serialize};
8
9use super::{FrameDiagnosticRecord, IterationDiagnostics, RawFrameStatisticsRecord};
10
11#[derive(Clone, Debug, Default, Serialize, Deserialize)]
13pub struct ReconstructionDiagnostics {
14 pub iteration_diagnostics: Vec<IterationDiagnostics>,
16
17 pub frame_diagnostics: Vec<FrameDiagnosticRecord>,
19
20 pub raw_frame_statistics: Vec<RawFrameStatisticsRecord>,
22
23 pub coverage: Option<super::FourierCoverageDiagnostics>,
25
26 pub ground_truth_metrics: Option<crate::metrics::complex_field::ComplexFieldComparisonMetrics>,
28}
29
30impl ReconstructionDiagnostics {
31 pub fn to_json_file<P: AsRef<Path>>(&self, path: P) -> crate::Result<()> {
33 let writer = BufWriter::new(File::create(path)?);
34 serde_json::to_writer_pretty(writer, self)?;
35 Ok(())
36 }
37
38 pub fn from_json_file<P: AsRef<Path>>(path: P) -> crate::Result<Self> {
40 let reader = BufReader::new(File::open(path)?);
41 Ok(serde_json::from_reader(reader)?)
42 }
43}