Advanced Chunk Processing Library 0.2.0
A comprehensive C++ library for advanced data chunking strategies and processing operations
Loading...
Searching...
No Matches
chunk_visualization_demo.cpp File Reference

Demonstration of chunk visualization capabilities. More...

#include "chunk_visualization.hpp"
#include <iostream>
#include <random>
#include <vector>
+ Include dependency graph for chunk_visualization_demo.cpp:

Go to the source code of this file.

Functions

std::vector< std::vector< double > > generate_sample_chunks ()
 Generate sample data with natural breakpoints for visualization.
 
int main ()
 Main function demonstrating chunk visualization features.
 

Detailed Description

Demonstration of chunk visualization capabilities.

Author
Jonathan Reich
Date
2024-12-07

Definition in file chunk_visualization_demo.cpp.

Function Documentation

◆ generate_sample_chunks()

std::vector< std::vector< double > > generate_sample_chunks ( )

Generate sample data with natural breakpoints for visualization.

Returns
Vector of vectors containing sample chunk data

Definition at line 17 of file chunk_visualization_demo.cpp.

17 {
18 std::vector<std::vector<double>> chunks;
19 std::random_device rd;
20 std::mt19937 gen(rd());
21
22 // Create normal distributions with different means
23 std::normal_distribution<double> dist1(0.0, 1.0);
24 std::normal_distribution<double> dist2(5.0, 1.0);
25 std::normal_distribution<double> dist3(-3.0, 1.0);
26
27 // Generate chunks with different characteristics
28 std::vector<double> chunk1, chunk2, chunk3;
29
30 // First chunk: 10 values around mean 0
31 for (int i = 0; i < 10; ++i) {
32 chunk1.push_back(dist1(gen));
33 }
34 chunks.push_back(chunk1);
35
36 // Second chunk: 15 values around mean 5
37 for (int i = 0; i < 15; ++i) {
38 chunk2.push_back(dist2(gen));
39 }
40 chunks.push_back(chunk2);
41
42 // Third chunk: 8 values around mean -3
43 for (int i = 0; i < 8; ++i) {
44 chunk3.push_back(dist3(gen));
45 }
46 chunks.push_back(chunk3);
47
48 return chunks;
49}

Referenced by main().

◆ main()

int main ( )

Main function demonstrating chunk visualization features.

Returns
0 on success, 1 on error

Definition at line 55 of file chunk_visualization_demo.cpp.

55 {
56 try {
57 // Create output directory
58 const std::string viz_dir = "./viz";
59 std::filesystem::create_directories(viz_dir);
60
61 // Generate sample data
62 auto chunks = generate_sample_chunks();
63 std::vector<double> flattened_data;
64 for (const auto& chunk : chunks) {
65 flattened_data.insert(flattened_data.end(), chunk.begin(), chunk.end());
66 }
67
68 // Create visualizer
69 chunk_viz::ChunkVisualizer<std::vector<double>> visualizer(chunks, viz_dir);
70
71 // 1. Plot chunk sizes
72 std::cout << "Generating chunk size plot..." << std::endl;
73 visualizer.plot_chunk_sizes();
74 std::cout << "Chunk size plot saved to " << viz_dir << "/chunk_sizes.png" << std::endl;
75
76 // 2. Visualize chunk boundaries
77 std::cout << "\nGenerating boundary visualization..." << std::endl;
78 visualizer.visualize_boundaries();
79 std::cout << "Boundary visualization saved to " << viz_dir << "/boundaries.txt"
80 << std::endl;
81
82 // 3. Export to GraphViz
83 std::cout << "\nGenerating GraphViz visualization..." << std::endl;
84 visualizer.export_to_graphviz();
85 std::cout << "GraphViz file saved to " << viz_dir << "/chunks.dot" << std::endl;
86 std::cout << "To generate PNG, run: dot -Tpng " << viz_dir << "/chunks.dot -o " << viz_dir
87 << "/chunks.png" << std::endl;
88
89 // Create a second visualization with single values
90 std::cout << "\nCreating alternative visualization with individual values..." << std::endl;
91 chunk_viz::ChunkVisualizer<double> single_visualizer(flattened_data, viz_dir + "/single");
92 single_visualizer.plot_chunk_sizes();
93 single_visualizer.visualize_boundaries();
94 single_visualizer.export_to_graphviz(viz_dir + "/single/individual_chunks.dot");
95
96 std::cout << "\nAll visualizations have been generated successfully!" << std::endl;
97 std::cout << "Check the '" << viz_dir << "' directory for the output files." << std::endl;
98
99 } catch (const std::exception& e) {
100 std::cerr << "Error: " << e.what() << std::endl;
101 return 1;
102 }
103
104 return 0;
105}
std::vector< std::vector< double > > generate_sample_chunks()
Generate sample data with natural breakpoints for visualization.
Class for visualizing chunk data in various formats.

References chunk_viz::ChunkVisualizer< T >::export_to_graphviz(), generate_sample_chunks(), chunk_viz::ChunkVisualizer< T >::plot_chunk_sizes(), and chunk_viz::ChunkVisualizer< T >::visualize_boundaries().