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
Go to the documentation of this file.
1/**
2 * @file chunk_visualization_demo.cpp
3 * @brief Demonstration of chunk visualization capabilities
4 * @author Jonathan Reich
5 * @date 2024-12-07
6 */
7
9#include <iostream>
10#include <random>
11#include <vector>
12
13/**
14 * @brief Generate sample data with natural breakpoints for visualization
15 * @return Vector of vectors containing sample chunk data
16 */
17std::vector<std::vector<double>> generate_sample_chunks() {
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}
50
51/**
52 * @brief Main function demonstrating chunk visualization features
53 * @return 0 on success, 1 on error
54 */
55int main() {
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}
Visualization utilities for chunk data.
std::vector< std::vector< double > > generate_sample_chunks()
Generate sample data with natural breakpoints for visualization.
int main()
Main function demonstrating chunk visualization features.
Class for visualizing chunk data in various formats.
void export_to_graphviz(const std::string &filename="chunks.dot")