{"id":1017,"date":"2025-07-06T04:03:40","date_gmt":"2025-07-06T04:03:40","guid":{"rendered":"https:\/\/172-234-197-23.ip.linodeusercontent.com\/?p=1017"},"modified":"2025-07-06T05:01:53","modified_gmt":"2025-07-06T05:01:53","slug":"quantum-spectrogram","status":"publish","type":"post","link":"https:\/\/172-234-197-23.ip.linodeusercontent.com\/?p=1017","title":{"rendered":"Quantum Spectrogram"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img data-opt-id=198725588  fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"689\" src=\"https:\/\/ml6vmqguit1n.i.optimole.com\/w:1024\/h:689\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-98.png\" alt=\"\" class=\"wp-image-1018\" srcset=\"https:\/\/ml6vmqguit1n.i.optimole.com\/w:1024\/h:689\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-98.png 1024w, https:\/\/ml6vmqguit1n.i.optimole.com\/w:300\/h:202\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-98.png 300w, https:\/\/ml6vmqguit1n.i.optimole.com\/w:768\/h:517\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-98.png 768w, https:\/\/ml6vmqguit1n.i.optimole.com\/w:1389\/h:935\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-98.png 1389w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>It&#8217;s bogging my machine down to about 1.2 FPS to calculate this with CUDA (RTX 3060):<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-opt-id=194380197  fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"327\" src=\"https:\/\/ml6vmqguit1n.i.optimole.com\/w:1024\/h:327\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-99.png\" alt=\"\" class=\"wp-image-1020\" srcset=\"https:\/\/ml6vmqguit1n.i.optimole.com\/w:1024\/h:327\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-99.png 1024w, https:\/\/ml6vmqguit1n.i.optimole.com\/w:300\/h:96\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-99.png 300w, https:\/\/ml6vmqguit1n.i.optimole.com\/w:768\/h:245\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-99.png 768w, https:\/\/ml6vmqguit1n.i.optimole.com\/w:1536\/h:491\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-99.png 1536w, https:\/\/ml6vmqguit1n.i.optimole.com\/w:1920\/h:613\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-99.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-opt-id=1915571151  data-opt-src=\"https:\/\/ml6vmqguit1n.i.optimole.com\/w:1024\/h:326\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-100.png\"  decoding=\"async\" width=\"1024\" height=\"326\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%201024%20326%22%20width%3D%221024%22%20height%3D%22326%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%221024%22%20height%3D%22326%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" alt=\"\" class=\"wp-image-1022\" old-srcset=\"https:\/\/ml6vmqguit1n.i.optimole.com\/w:1024\/h:326\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-100-scaled.png 1024w, https:\/\/ml6vmqguit1n.i.optimole.com\/w:300\/h:96\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-100-scaled.png 300w, https:\/\/ml6vmqguit1n.i.optimole.com\/w:768\/h:245\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-100-scaled.png 768w, https:\/\/ml6vmqguit1n.i.optimole.com\/w:1536\/h:489\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-100-scaled.png 1536w, https:\/\/ml6vmqguit1n.i.optimole.com\/w:1920\/h:611\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-100-scaled.png 2048w\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-opt-id=1810965436  data-opt-src=\"https:\/\/ml6vmqguit1n.i.optimole.com\/w:1024\/h:466\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-101.png\"  decoding=\"async\" width=\"1024\" height=\"466\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%201024%20466%22%20width%3D%221024%22%20height%3D%22466%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%221024%22%20height%3D%22466%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" alt=\"\" class=\"wp-image-1027\" old-srcset=\"https:\/\/ml6vmqguit1n.i.optimole.com\/w:1024\/h:466\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-101.png 1024w, https:\/\/ml6vmqguit1n.i.optimole.com\/w:300\/h:137\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-101.png 300w, https:\/\/ml6vmqguit1n.i.optimole.com\/w:768\/h:350\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-101.png 768w, https:\/\/ml6vmqguit1n.i.optimole.com\/w:1395\/h:635\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-101.png 1395w\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-opt-id=1493903227  data-opt-src=\"https:\/\/ml6vmqguit1n.i.optimole.com\/w:1024\/h:545\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-102.png\"  decoding=\"async\" width=\"1024\" height=\"545\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%201024%20545%22%20width%3D%221024%22%20height%3D%22545%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%221024%22%20height%3D%22545%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" alt=\"\" class=\"wp-image-1029\" old-srcset=\"https:\/\/ml6vmqguit1n.i.optimole.com\/w:1024\/h:545\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-102.png 1024w, https:\/\/ml6vmqguit1n.i.optimole.com\/w:300\/h:160\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-102.png 300w, https:\/\/ml6vmqguit1n.i.optimole.com\/w:768\/h:409\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-102.png 768w, https:\/\/ml6vmqguit1n.i.optimole.com\/w:1433\/h:763\/q:mauto\/f:best\/https:\/\/172-234-197-23.ip.linodeusercontent.com\/wp-content\/uploads\/2025\/07\/image-102.png 1433w\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Quantum Spectrogram<\/h2>\n\n\n\n<p>The&nbsp;<code>test_quantum_spectrogram.html<\/code>&nbsp;page serves as a focused sandbox for developing and debugging the Quantum Spectrogram visualization used in the RF Signal Classifier dashboard. This test harness is designed to isolate the quantum visualization logic, making it easier to experiment with rendering, UI controls, and signal data without interference from other dashboard components.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Key Features<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Modern, Responsive UI:<\/strong><br>The page uses a dark-themed, flexible layout with a dedicated controls panel and a visualization area. The controls are styled for clarity and accessibility, and the visualization container adapts to window resizing.<\/li>\n\n\n\n<li><strong>Direct Canvas Manipulation:<\/strong><br>The script includes a&nbsp;<code>drawDirectly<\/code>&nbsp;function that allows for immediate drawing on the canvas. This is useful for quickly testing rendering logic, canvas sizing, and visual feedback without relying on the full visualization pipeline.<\/li>\n\n\n\n<li><strong>Quantum Visualization Integration:<\/strong><br>The page loads the&nbsp;<code>quantum-spectrogram-visualization.js<\/code>&nbsp;script, which is expected to provide the&nbsp;<code>QuantumSpectrogramVisualization<\/code>&nbsp;class. The test harness checks for its presence and initializes it, providing clear error messages if the script is missing or fails to load.<\/li>\n\n\n\n<li><strong>Interactive Controls:<\/strong><br>Four main buttons are provided:\n<ul class=\"wp-block-list\">\n<li><strong>Toggle Visualization Mode:<\/strong>&nbsp;Switches between different rendering modes (if supported by the visualization).<\/li>\n\n\n\n<li><strong>Reset View:<\/strong>&nbsp;Resets the visualization to its default state.<\/li>\n\n\n\n<li><strong>Generate Test Signal:<\/strong>&nbsp;Creates and processes a synthetic test signal, allowing for rapid iteration and debugging.<\/li>\n\n\n\n<li><strong>Force Redraw:<\/strong>&nbsp;Triggers both direct canvas drawing and visualization redraws, useful for testing rendering after window resizes or code changes.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Status and Debugging Aids:<\/strong><br>Status messages are displayed in the top-right corner, providing real-time feedback on actions, errors, and canvas dimensions. The visualization instance is also exposed globally for easy debugging in the browser console.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">How It Works<\/h3>\n\n\n\n<p>Upon loading, the page:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Sets up the canvas dimensions to match the container.<\/li>\n\n\n\n<li>Performs a direct drawing test to verify canvas functionality.<\/li>\n\n\n\n<li>Initializes the quantum spectrogram visualization if the required script is available.<\/li>\n\n\n\n<li>Processes a sample test signal to populate the visualization.<\/li>\n\n\n\n<li>Binds UI controls to the visualization instance, handling errors gracefully.<\/li>\n\n\n\n<li>Listens for window resize events to keep the visualization responsive.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Why Use a Test Harness?<\/h3>\n\n\n\n<p>Developing complex visualizations\u2014especially those involving quantum or RF data\u2014can be challenging when embedded in a full dashboard. By isolating the visualization in a standalone page, you can:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Debug rendering and interaction issues without unrelated UI noise.<\/li>\n\n\n\n<li>Rapidly prototype new features or modes.<\/li>\n\n\n\n<li>Test error handling and edge cases.<\/li>\n\n\n\n<li>Share a minimal reproducible example with collaborators.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Conclusion<\/h3>\n\n\n\n<p>The&nbsp;<code>test_quantum_spectrogram.html<\/code>&nbsp;page is an essential tool for iterating on the Quantum Spectrogram visualization. Its modular design, robust controls, and clear feedback mechanisms make it ideal for both development and demonstration purposes. If you&#8217;re working on quantum or RF signal visualizations, consider adopting a similar test harness approach to streamline your workflow.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>It&#8217;s bogging my machine down to about 1.2 FPS to calculate this with CUDA (RTX 3060): Quantum Spectrogram The&nbsp;test_quantum_spectrogram.html&nbsp;page serves as a focused sandbox for developing and debugging the Quantum Spectrogram visualization used in the RF Signal Classifier dashboard. This test harness is designed to isolate the quantum visualization logic, making it easier to experiment&hellip;&nbsp;<a href=\"https:\/\/172-234-197-23.ip.linodeusercontent.com\/?p=1017\" rel=\"bookmark\"><span class=\"screen-reader-text\">Quantum Spectrogram<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1029,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[10],"tags":[],"class_list":["post-1017","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-signal_scythe"],"_links":{"self":[{"href":"https:\/\/172-234-197-23.ip.linodeusercontent.com\/index.php?rest_route=\/wp\/v2\/posts\/1017","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/172-234-197-23.ip.linodeusercontent.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/172-234-197-23.ip.linodeusercontent.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/172-234-197-23.ip.linodeusercontent.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/172-234-197-23.ip.linodeusercontent.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1017"}],"version-history":[{"count":9,"href":"https:\/\/172-234-197-23.ip.linodeusercontent.com\/index.php?rest_route=\/wp\/v2\/posts\/1017\/revisions"}],"predecessor-version":[{"id":1032,"href":"https:\/\/172-234-197-23.ip.linodeusercontent.com\/index.php?rest_route=\/wp\/v2\/posts\/1017\/revisions\/1032"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/172-234-197-23.ip.linodeusercontent.com\/index.php?rest_route=\/wp\/v2\/media\/1029"}],"wp:attachment":[{"href":"https:\/\/172-234-197-23.ip.linodeusercontent.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1017"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/172-234-197-23.ip.linodeusercontent.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1017"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/172-234-197-23.ip.linodeusercontent.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1017"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}