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