pub struct EcsReport {Show 16 fields
pub spec_version: String,
pub codec: String,
pub dataset: String,
pub n_files: usize,
pub bit_exact: bool,
pub grade: char,
pub cr: f64,
pub prd: f64,
pub prdn: f64,
pub r: f64,
pub snr_db: f64,
pub qs: f64,
pub per_band: Vec<BandResult>,
pub throughput_mibs: f64,
pub peak_bytes: u64,
pub violations: Vec<String>,
}Expand description
The standard OpenECS report for one codec evaluated on one dataset.
This is the canonical, self-describing record the standard produces:
every field a third party needs to reproduce, audit, or compare the
claim is present. It serializes to stable JSON (the exchange format)
via EcsReport::to_json and renders a human-aligned summary via
EcsReport::human_table. The cross-codec comparison output is
leaderboard.
Field groups:
- identity:
codec,dataset,n_files - verdict:
bit_exact,grade - aggregate fidelity:
cr,prd,prdn,r,snr_db,qs - per-band breakdown:
per_band - resource cost:
throughput_mibs,peak_bytes - audit trail:
violations(why the next-higher tier failed)
Fields§
§spec_version: StringOpenECS spec version this report conforms to (e.g. “1.0”), so a report is self-identifying out of context. Stamped by the harness.
codec: StringCodec name, e.g. “lamquant-lossless” or “gzip”.
dataset: StringDataset / holdout corpus identifier, e.g. “tuh-eeg-holdout”.
n_files: usizeNumber of files in the run.
bit_exact: boolTrue iff reconstruction was bit-exact on the integer sample domain.
grade: charOpenECS tier code: ‘L’, ‘C’, ‘M’, ‘A’, or ‘\0’ for below-floor.
cr: f64Aggregate (pooled) compression ratio (raw / compressed).
prd: f64Aggregate PRD in percent.
prdn: f64Aggregate normalized (mean-subtracted) PRD in percent.
r: f64Aggregate Pearson correlation R.
snr_db: f64Aggregate SNR in dB.
qs: f64Quality score CR / PRD (raw CR when lossless). Higher is better.
per_band: Vec<BandResult>Per-band fidelity breakdown, in canonical band order.
throughput_mibs: f64Encode+decode throughput in MiB/s.
peak_bytes: u64Peak resident memory during the run, in bytes.
violations: Vec<String>Why the next-higher tier failed — the climb-a-tier to-do list.
Implementations§
Source§impl EcsReport
impl EcsReport
Sourcepub fn grade_str(&self) -> String
pub fn grade_str(&self) -> String
The grade as a display string, or “” for the below-floor sentinel.
Sourcepub fn to_json(&self) -> String
pub fn to_json(&self) -> String
Serialize this report to pretty JSON — the standard exchange format.
Serialization of this plain-data struct cannot fail in practice;
the expect guards a genuinely unreachable serde error.
Sourcepub fn human_table(&self) -> String
pub fn human_table(&self) -> String
Render an aligned, human-readable text summary of this report.
Two blocks: a header with identity + verdict + aggregate metrics, then a fixed-width per-band table. Memory is shown in MiB for readability. The exact byte / float values stay in the JSON form.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for EcsReport
impl<'de> Deserialize<'de> for EcsReport
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl StructuralPartialEq for EcsReport
Auto Trait Implementations§
impl Freeze for EcsReport
impl RefUnwindSafe for EcsReport
impl Send for EcsReport
impl Sync for EcsReport
impl Unpin for EcsReport
impl UnsafeUnpin for EcsReport
impl UnwindSafe for EcsReport
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
impl<T> Scalar for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.