FLASK_APP / tests /test_advanced_engine.py
pranit144's picture
Upload 97 files
e38de99 verified
import sys
import os
import pandas as pd
import json
# Add project root to path
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from core.engines.advanced_rules import AdvancedDCRMEngine
def test_engine():
print("Testing AdvancedDCRMEngine...")
# Load test data
try:
df = pd.read_csv("test.csv")
print(f"Loaded test.csv with shape {df.shape}")
except FileNotFoundError:
print("test.csv not found, creating synthetic data...")
import numpy as np
t = np.linspace(0, 400, 401)
r = np.ones_like(t) * 100000
r[100:300] = 40 + np.random.normal(0, 2, 200) # Healthy main contact
# Add some "chatter"
r[150:200] += 10 * np.sin(2 * np.pi * 60 * t[150:200]/1000)
df = pd.DataFrame({'Time_ms': t, 'Resistance': r})
# Initialize Engine
engine = AdvancedDCRMEngine()
# Mock Segments (since we removed internal logic)
# Based on the synthetic data creation above:
# Main contact is 100:300
# Closing is 80:100 (implied, though synthetic data didn't explicitly create it, let's assume)
# Opening is 300:320
segments = {
'phase2_start': 80, 'phase2_end': 100,
'phase3_start': 100, 'phase3_end': 300,
'phase4_start': 300, 'phase4_end': 320,
'valid': True
}
# Run Analysis
try:
report = engine.analyze(df, segments)
print("\nAnalysis Successful!")
print(json.dumps(report, indent=2))
# Check for expected keys
assert "advanced_analysis" in report
assert "health_score" in report["advanced_analysis"]
assert "physics_metrics" in report["advanced_analysis"]
metrics = report["advanced_analysis"]["physics_metrics"]
print(f"\nExtracted Metrics:")
print(f"Main Resistance: {metrics['main_contact_resistance_uohm']} uOhm")
print(f"Chatter Power: {metrics['mechanical_chatter_power']}")
print(f"Roughness RMS: {metrics['surface_roughness_rms']}")
except Exception as e:
print(f"\nAnalysis Failed: {e}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
test_engine()