UNPKG

@neuroequality/neuroadapt-quantum

Version:

Accessible quantum visualization and Bloch sphere rendering for NeuroAdapt SDK

255 lines (187 loc) 6.96 kB
# @neuroadapt/quantum Accessible quantum visualization and Bloch sphere rendering for the NeuroAdapt SDK. This package provides educational quantum computing concepts with accessibility-first design. ## Features - **Bloch Sphere Visualization**: Interactive 3D visualization of qubit states with accessibility support - **Quantum Circuit Simulation**: Build and execute quantum circuits with common gates - **Accessibility First**: Color-blind friendly palettes, screen reader support, and keyboard navigation - **Educational Focus**: Designed for learning quantum concepts with clear visual feedback - **WebGL Rendering**: Hardware-accelerated 3D graphics with Three.js ## Installation ```bash npm install @neuroadapt/quantum ``` ## Quick Start ### Bloch Sphere Visualization ```typescript import { BlochSphereRenderer, createSuperpositionState } from '@neuroadapt/quantum'; // Create container element const container = document.getElementById('bloch-sphere'); // Initialize renderer with accessibility options const renderer = new BlochSphereRenderer({ container, width: 600, height: 600, showAxes: true, showLabels: true, colorBlindFriendly: true, accessibleColors: true }, { announceStateChanges: true, verboseDescriptions: true, colorBlindSupport: true, highContrast: false, reducedMotion: false, audioFeedback: false }); // Update with quantum state const superposition = createSuperpositionState(); renderer.updateState(superposition); ``` ### Quantum Circuit Simulation ```typescript import { QuantumCircuitSimulator, bellState } from '@neuroadapt/quantum'; // Create a 2-qubit circuit const circuit = new QuantumCircuitSimulator(2); // Add gates to create Bell state circuit.addGate({ type: 'H', target: 0 }); circuit.addGate({ type: 'CNOT', target: 1, control: 0 }); // Add measurements circuit.addMeasurement(0); circuit.addMeasurement(1); // Execute circuit circuit.executeCircuit(); // Get results const results = circuit.getMeasurementResults(); console.log('Measurement results:', results); // Or use convenience function const bellCircuit = bellState(); bellCircuit.executeCircuit(); ``` ## API Reference ### BlochSphereRenderer Interactive 3D Bloch sphere visualization with accessibility support. #### Constructor Options ```typescript interface BlochSphereOptions { container: HTMLElement; width?: number; height?: number; showAxes?: boolean; showLabels?: boolean; colorBlindFriendly?: boolean; highContrast?: boolean; animationSpeed?: number; accessibleColors?: boolean; } interface AccessibilityOptions { announceStateChanges: boolean; verboseDescriptions: boolean; colorBlindSupport: boolean; highContrast: boolean; reducedMotion: boolean; audioFeedback: boolean; } ``` #### Methods - `updateState(qubitState: QubitState)`: Update the displayed quantum state - `exportFrame(): string`: Export current frame as base64 PNG - `resize(width: number, height: number)`: Resize the renderer - `dispose()`: Clean up resources #### Events - `state-updated`: Emitted when quantum state changes - `animation-frame`: Emitted during animations ### QuantumCircuitSimulator Quantum circuit builder and simulator with educational focus. #### Constructor ```typescript const simulator = new QuantumCircuitSimulator(numQubits: number); ``` #### Methods - `addGate(gate: QuantumGate)`: Add a quantum gate to the circuit - `addMeasurement(qubit: number, basis?: 'computational' | 'x' | 'y' | 'z')`: Add measurement - `executeCircuit()`: Execute the entire circuit - `getQubitState(index: number): QubitState`: Get state of specific qubit - `getAllStates(): QubitState[]`: Get all qubit states - `getBlochVector(qubit: number): BlochVector`: Get Bloch sphere coordinates - `reset()`: Reset circuit to initial state #### Supported Gates - **Pauli Gates**: X, Y, Z - **Hadamard**: H - **Phase Gates**: S, T - **Rotation Gates**: RX, RY, RZ (with angle parameter) - **Two-Qubit Gates**: CNOT #### Events - `gate-applied`: Emitted when a gate is applied - `measurement-performed`: Emitted when measurement occurs - `circuit-executed`: Emitted when circuit execution completes ## Accessibility Features ### Visual Accessibility - **Color-blind friendly palettes**: Distinguishable colors for all users - **High contrast mode**: Enhanced visibility for low vision users - **Reduced motion**: Respects user's motion preferences - **Scalable text**: Readable labels and annotations ### Screen Reader Support - **ARIA labels**: Proper semantic markup for assistive technology - **Live regions**: Real-time announcements of state changes - **Descriptive text**: Verbose descriptions of quantum states ### Keyboard Navigation - **Arrow keys**: Navigate around the Bloch sphere - **Enter key**: Announce current state - **Tab navigation**: Focus management for interactive elements ## Usage Examples ### Educational Quantum States ```typescript import { createGroundState, createExcitedState, createSuperpositionState, BlochSphereRenderer } from '@neuroadapt/quantum'; const renderer = new BlochSphereRenderer({ container }); // Demonstrate different quantum states const states = [ { name: '|0⟩ Ground State', state: createGroundState() }, { name: '|1⟩ Excited State', state: createExcitedState() }, { name: '|+⟩ Superposition', state: createSuperpositionState() } ]; let currentIndex = 0; setInterval(() => { const { name, state } = states[currentIndex]; renderer.updateState(state); console.log(`Now showing: ${name}`); currentIndex = (currentIndex + 1) % states.length; }, 3000); ``` ### Interactive Circuit Builder ```typescript import { QuantumCircuitSimulator } from '@neuroadapt/quantum'; const circuit = new QuantumCircuitSimulator(3); // Listen for events circuit.on('gate-applied', (event) => { console.log(`Applied ${event.gate.type} gate to qubit ${event.gate.target}`); }); circuit.on('measurement-performed', (event) => { console.log(`Measured qubit ${event.measurement.qubit}: ${event.measurement.result}`); }); // Build quantum teleportation circuit circuit.addGate({ type: 'H', target: 1 }); circuit.addGate({ type: 'CNOT', target: 2, control: 1 }); circuit.addGate({ type: 'CNOT', target: 1, control: 0 }); circuit.addGate({ type: 'H', target: 0 }); circuit.addMeasurement(0); circuit.addMeasurement(1); circuit.executeCircuit(); ``` ## Browser Compatibility - **WebGL**: Required for 3D visualization - **ES2020**: Modern JavaScript features - **Three.js**: WebGL rendering library ## Performance Considerations - **Hardware Acceleration**: Uses WebGL for optimal performance - **Memory Management**: Automatic cleanup of 3D resources - **Reduced Motion**: Disables animations for better performance - **Scalable Rendering**: Adjustable quality settings ## Contributing See the main NeuroAdapt SDK [contributing guide](../../CONTRIBUTING.md). ## License MIT - See [LICENSE](../../LICENSE) file.