Expand description
Analyzes and processes final analysis results for bit-packed data structures.
This module handles the final stage of analysis, computing metrics and statistics from processed bit-packed data. It provides comprehensive analysis capabilities including entropy calculations, LZ compression analysis, and field-level statistics.
§Core Types
AnalysisResults: Top-level container for all analysis resultsFieldMetrics: Detailed metrics for individual fieldsPrintFormat: Output formatting options for result presentation
§Key Features
- Field-level and file-level entropy analysis
- LZ compression match detection
- Size estimation and actual compression metrics
- Bit distribution statistics
- Value frequency analysis
- Split comparison results
§Public APIs
Key types and functions for users of this module:
§Types
-
AnalysisResults: Primary container for analysis outputAnalysisResults::print(): Display results in consoleAnalysisResults::as_field_metrics(): Convert file statistics to field metrics
-
MergedAnalysisResults: Specialization of analysis results for aggregating multiple filesMergedAnalysisResults::from_results(): Create from multiple analysis resultsMergedAnalysisResults::print(): Display merged resultsMergedAnalysisResults::as_field_metrics(): Convert file statistics to field metrics
-
FieldMetrics: Per-field analysis dataFieldMetrics::parent_path(): Get path of parent fieldFieldMetrics::parent_metrics_or(): Get metrics of parent fieldFieldMetrics::sorted_value_counts(): Get sorted value frequencies
§Functions
compute_analysis_results(): Generate analysis fromSchemaAnalyzer
§Example
use struct_compression_analyzer::{analyzer::SchemaAnalyzer, schema::Schema};
use struct_compression_analyzer::results::analysis_results::AnalysisResults;
use struct_compression_analyzer::analyzer::CompressionOptions;
fn analyze_data(schema: &Schema, data: &[u8]) -> AnalysisResults {
let options = CompressionOptions::default();
let mut analyzer = SchemaAnalyzer::new(schema, options);
analyzer.add_entry(data);
analyzer.generate_results().unwrap()
}§Output Formats
Results can be displayed in two formats (console):
Groups of results (multiple files) can also be displayed via one of the other modules.
§Field Metrics
For each field, the analysis computes:
- Shannon entropy in bits
- LZ compression matches
- Bit-level distribution
- Value frequency counts
- Size estimates (original, compressed, estimated)
Fields can be analyzed individually or merged for group analysis.
§Implementation Notes
- Handles both MSB and LSB bit ordering
- Supports nested field hierarchies
- Provides parent/child relationship tracking
- Implements efficient metric merging for group analysis
Modules§
Structs§
- Field
Metrics - Complete analysis metrics for a single field
Enums§
- Analysis
Merge Error - Error type for when merging analysis results fails.
- Compute
Analysis Results Error - Error type for when something goes wrong when computing the final analysis results.
- Print
Format