polymer-aging-ml / test_new_features.py
devjas1
(CONFIG:Naming)[Enhanced Analysis and Interactive Dashboard]:
7184c06
"""
Test script to verify the new ML Polymer Aging features are working correctly
"""
import numpy as np
import sys
import os
# Add modules to path
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
def test_advanced_spectroscopy():
"""Test advanced spectroscopy module"""
print("Testing Advanced Spectroscopy Module...")
try:
from modules.advanced_spectroscopy import (
MultiModalSpectroscopyEngine,
AdvancedPreprocessor,
SpectroscopyType,
SPECTRAL_CHARACTERISTICS,
)
# Create engine
engine = MultiModalSpectroscopyEngine()
# Generate sample spectrum
wavenumbers = np.linspace(400, 4000, 1000)
intensities = np.random.normal(0.1, 0.02, len(wavenumbers))
# Add some peaks
peaks = [1715, 2920, 2850]
for peak in peaks:
peak_idx = np.argmin(np.abs(wavenumbers - peak))
intensities[peak_idx - 5 : peak_idx + 5] += 0.5
# Register spectrum
spectrum_id = engine.register_spectrum(
wavenumbers, intensities, SpectroscopyType.FTIR
)
# Preprocess
result = engine.preprocess_spectrum(spectrum_id)
print(f"βœ… Spectrum registered: {spectrum_id}")
print(f"βœ… Quality score: {result['quality_score']:.3f}")
print(
f"βœ… Processing steps: {len(result['processing_metadata']['steps_applied'])}"
)
return True
except Exception as e:
print(f"❌ Advanced Spectroscopy test failed: {e}")
return False
def test_modern_ml_architecture():
"""Test modern ML architecture module"""
print("\nTesting Modern ML Architecture...")
try:
from modules.modern_ml_architecture import (
ModernMLPipeline,
SpectralTransformer,
prepare_transformer_input,
)
# Create pipeline with minimal configuration
pipeline = ModernMLPipeline()
# Test basic functionality without full initialization
print(f"βœ… Modern ML Pipeline imported successfully")
print(f"βœ… SpectralTransformer class available")
print(f"βœ… Utility functions working")
# Test transformer input preparation
spectral_data = np.random.random(500)
X_transformer = prepare_transformer_input(spectral_data, max_length=500)
print(f"βœ… Transformer input shape: {X_transformer.shape}")
return True
except Exception as e:
print(f"❌ Modern ML Architecture test failed: {e}")
return False
def test_enhanced_data_pipeline():
"""Test enhanced data pipeline module"""
print("\nTesting Enhanced Data Pipeline...")
try:
from modules.enhanced_data_pipeline import (
EnhancedDataPipeline,
DataQualityController,
SyntheticDataAugmentation,
)
# Create pipeline
pipeline = EnhancedDataPipeline()
# Test quality controller
quality_controller = DataQualityController()
# Generate sample spectrum
wavenumbers = np.linspace(400, 4000, 1000)
intensities = np.random.normal(0.1, 0.02, len(wavenumbers))
# Assess quality
assessment = quality_controller.assess_spectrum_quality(
wavenumbers, intensities
)
print(f"βœ… Data pipeline initialized")
print(f"βœ… Quality assessment score: {assessment['overall_score']:.3f}")
print(f"βœ… Validation status: {assessment['validation_status']}")
# Test synthetic data augmentation
augmentation = SyntheticDataAugmentation()
augmented = augmentation.augment_spectrum(
wavenumbers, intensities, num_variations=3
)
print(f"βœ… Generated {len(augmented)} synthetic variants")
return True
except Exception as e:
print(f"❌ Enhanced Data Pipeline test failed: {e}")
return False
def test_database_functionality():
"""Test database functionality"""
print("\nTesting Database Functionality...")
try:
from modules.enhanced_data_pipeline import EnhancedDataPipeline
pipeline = EnhancedDataPipeline()
# Get database statistics
stats = pipeline.get_database_statistics()
print(f"βœ… Database initialized")
print(f"βœ… Total spectra: {stats['total_spectra']}")
print(f"βœ… Database tables created successfully")
return True
except Exception as e:
print(f"❌ Database test failed: {e}")
return False
def main():
"""Run all tests"""
print("πŸ§ͺ ML Polymer Aging Feature Validation Tests")
print("=" * 50)
tests = [
test_advanced_spectroscopy,
test_modern_ml_architecture,
test_enhanced_data_pipeline,
test_database_functionality,
]
passed = 0
total = len(tests)
for test in tests:
if test():
passed += 1
print("\n" + "=" * 50)
print(f"🎯 Test Results: {passed}/{total} tests passed")
if passed == total:
print("πŸŽ‰ ALL TESTS PASSED - ML Polymer Aging features are working correctly!")
print("\nβœ… Critical features validated:")
print(" β€’ FTIR integration and multi-modal spectroscopy")
print(" β€’ Modern ML architecture with transformers and ensembles")
print(" β€’ Enhanced data pipeline with quality control")
print(" β€’ Database functionality for synthetic data generation")
else:
print("⚠️ Some tests failed - please check the implementation")
return passed == total
if __name__ == "__main__":
main()