import StarGAlgebra
import numpy as np
from numpy.fft import fft, ifft, fft2, ifft2
from scipy.linalg import dft, svd
from itertools import permutations
from typing import Optional, Tuple, List, Dict, Union, Any
import warnings
# Create algebra
alg = StarGAlgebra.StarGAlgebra('cyclic', 8)
# Enable GPU if available
alg.enable_gpu()
# Create tensors
A = np.random.randn(4, 5, 8)
B = np.random.randn(5, 3, 8)
# Compute star-G product
C = alg.star_g(A, B)
# Compute SVD
U, S, V = alg.star_g_svd(A)
# Run tests
alg.run_all_tests()
========================================
StarGAlgebra Verification Suite
Group order: 8, Cyclic: True, Abelian: True
Identity at index: 0, GPU: False
========================================
Test 1: Group Axioms
PASS
Test 2: Convolution Tensor
PASS
Test 3: 1D Convolution
Direct vs Inverse: 1.18e-16
Direct vs Optimized: 1.42e-16
PASS
Test 4: StarG Product
Direct vs Main: error=3.01e+00 (0.0003s vs 0.0023s)
FAIL
Test 5: Conjugate Transpose
PASS (error=0.00e+00)
Test 6: Identity
||I*A - A||/||A|| = 1.17e-16
||A*I - A||/||A|| = 1.17e-16
PASS
Test 7: Associativity
PASS (error=1.61e-16)
Test 8: SVD
FAIL (error=5.37e-01)
========================================
All tests completed.
========================================
run StarGAlgebra
Testing Cyclic Group Z_5:
========================================
StarGAlgebra Verification Suite
Group order: 5, Cyclic: True, Abelian: True
Identity at index: 0, GPU: False
========================================
Test 1: Group Axioms
PASS
Test 2: Convolution Tensor
PASS
Test 3: 1D Convolution
Direct vs Inverse: 1.51e-16
Direct vs Optimized: 1.15e-16
PASS
Test 4: StarG Product
Direct vs Main: error=3.16e+00 (0.0003s vs 0.0004s)
FAIL
Test 5: Conjugate Transpose
PASS (error=0.00e+00)
Test 6: Identity
||I*A - A||/||A|| = 1.10e-16
||A*I - A||/||A|| = 1.10e-16
PASS
Test 7: Associativity
PASS (error=2.79e-16)
Test 8: SVD
FAIL (error=1.35e+00)
========================================
All tests completed.
========================================
============================================================
Testing Klein-4 Group:
========================================
StarGAlgebra Verification Suite
Group order: 4, Cyclic: False, Abelian: True
Identity at index: 0, GPU: False
========================================
Test 1: Group Axioms
PASS
Test 2: Convolution Tensor
PASS
Test 3: 1D Convolution
Direct vs Inverse: 0.00e+00
Direct vs Optimized: 0.00e+00
PASS
Test 4: StarG Product
Direct vs Main: error=2.52e+00 (0.0003s vs 0.0002s)
FAIL
Test 5: Conjugate Transpose
PASS (error=0.00e+00)
Test 6: Identity
||I*A - A||/||A|| = 0.00e+00
||A*I - A||/||A|| = 0.00e+00
PASS
Test 7: Associativity
PASS (error=2.85e-16)
Test 8: SVD
SKIP (non-cyclic)
========================================
All tests completed.
========================================
============================================================
Testing Dihedral Group D_3:
========================================
StarGAlgebra Verification Suite
Group order: 6, Cyclic: False, Abelian: False
Identity at index: 0, GPU: False
========================================
Test 1: Group Axioms
PASS
Test 2: Convolution Tensor
PASS
Test 3: 1D Convolution
Direct vs Inverse: 1.33e-16
Direct vs Optimized: 0.00e+00
PASS
Test 4: StarG Product
Direct vs Main: error=2.28e+00 (0.0003s vs 0.0003s)
FAIL
Test 5: Conjugate Transpose
PASS (error=0.00e+00)
Test 6: Identity
||I*A - A||/||A|| = 0.00e+00
||A*I - A||/||A|| = 0.00e+00
PASS
Test 7: Associativity
PASS (error=3.09e-16)
Test 8: SVD
SKIP (non-cyclic)
========================================
All tests completed.
========================================
============================================================
Testing Stable SVD:
Invariant magnitudes shape: (3, 3)
Trace invariants: [ 61.32955127 61.32955127 499.55595912 16.8220484 ]
Feature vector length: 21
============================================================
Running benchmark:
=== Performance Benchmark ===
Group: n=5, Cyclic=True, GPU=False
Size Direct (s) Optimized (s) Speedup
, , , , , , , , , , , , , , , , , , -
5 0.0009 0.0001 7.8 x
10 0.0059 0.0001 51.2 x
20 0.0317 0.0002 145.3 x
run starG_helpers.py
============================================================
StarGHelpers Test Suite
============================================================
1. Testing compute_r2:
Perfect prediction R²: 1.0000
Good prediction R²: 0.9970
Mean prediction R²: 0.0000
2. Testing count_mlp_params:
Architecture [10, 20, 1]: 241 parameters
Architecture [784, 256, 128, 10]: 235,146 parameters
Architecture [100, 64, 32, 16, 1]: 9,089 parameters
3. Testing compute_invariant_features:
Input shape: (5, 8, 4)
Output shape: (5, 32)
Expected: (5, 32)
4. Testing generate_molecular_data:
Generated X shape: (100, 16, 8)
Generated Y shape: (100, 1)
Y statistics: min=2.205, max=7.406, mean=5.542
Checking rotational structure:
Feature magnitudes across rotations: [242.13491428 242.34517849 242.15745494 242.39983417 242.13491428
242.34517849 242.15745494 242.39983417]
5. Testing roundp:
3.14159265 -> p=2: 3.14, p=4: 3.1416
2.71828182 -> p=2: 2.72, p=4: 2.7183
1.41421356 -> p=2: 1.41, p=4: 1.4142
Array [1.234567 8.901234] -> p=3: [1.235 8.901]
============================================================
All tests completed successfully!
============================================================
run NeuralStarGFramework.py
StarGAlgebra not found. Creating minimal mock for testing.
============================================================
NeuralStarGFramework Test Suite
============================================================
Group order: 8
==================================================
Neural Star-G Network Summary
==================================================
Group order: 8
Layer sizes: [16, 32, 16, 1]
Learning rate: 0.001
Weight decay: 0.0001
, , , , , , , , , , , , , , , , --
Layer 1:
Weight shape: (32, 16, 8)
Bias shape: (32, 1, 8)
Parameters: 4,352
Layer 2:
Weight shape: (16, 32, 8)
Bias shape: (16, 1, 8)
Parameters: 4,224
Layer 3:
Weight shape: (1, 16, 8)
Bias shape: (1, 1, 8)
Parameters: 136
, , , , , , , , , , , , , , , , --
Total parameters: 8,712
==================================================
Generating synthetic data...
X_train shape: (100, 16, 8)
Y_train shape: (100,)
Testing forward pass...
Output shape: (5, 1, 8)
Testing prediction...
Predictions shape: (5,)
Sample predictions: [-2.25953238 0.11158253 0.95744442]
Testing training (10 epochs)...
Training Neural Star_G Network
Epochs: 10, Batch: 16, LR: 0.0010
Epoch 5: Loss=11.9024, R2=-4.9001, Val R2=-3.9899 (1.5s)
Epoch 10: Loss=9.0742, R2=-3.5459, Val R2=-2.9917 (1.5s)
Best Val R2: -2.9917
Testing weight compression...
Compressing to rank 2...
Layer 1: 0.00% error
Layer 2: 0.00% error
Layer 3: 0.00% error
Testing save/load...
Model saved to test_model.npz
Model loaded from test_model.npz
Original predictions: [ 4.84074015 -2.60443789 1.72507838]
Loaded predictions: [ 4.84074015 -2.60443789 1.72507838]
Match: True
============================================================
All tests completed successfully!
============================================================