AbdullahIsaMarkus's picture
Upload folder using huggingface_hub
be716ff verified
#!/usr/bin/env python3
"""
Test script for Medical Image Analyzer integration
"""
import numpy as np
import sys
import os
# Add backend to path
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'backend'))
from gradio_medical_image_analyzer import MedicalImageAnalyzer
def test_ct_analysis():
"""Test CT image analysis with fat segmentation"""
print("Testing CT Analysis...")
# Create a simulated CT image with different tissue types
ct_image = np.zeros((512, 512), dtype=np.float32)
# Add different tissue regions based on HU values
# Air region (-1000 HU)
ct_image[50:150, 50:150] = -1000
# Fat region (-75 HU)
ct_image[200:300, 200:300] = -75
# Soft tissue region (40 HU)
ct_image[350:450, 350:450] = 40
# Bone region (300 HU)
ct_image[100:200, 350:450] = 300
# Create analyzer
analyzer = MedicalImageAnalyzer(
analysis_mode="structured",
include_confidence=True,
include_reasoning=True
)
# Test point analysis
print("\n1. Testing point analysis...")
result = analyzer.process_image(
image=ct_image,
modality="CT",
task="analyze_point",
roi={"x": 250, "y": 250, "radius": 10}
)
print(f" HU Value: {result.get('point_analysis', {}).get('hu_value', 'N/A')}")
print(f" Tissue Type: {result.get('point_analysis', {}).get('tissue_type', {}).get('type', 'N/A')}")
print(f" Confidence: {result.get('point_analysis', {}).get('confidence', 'N/A')}")
# Test fat segmentation
print("\n2. Testing fat segmentation...")
result = analyzer.process_image(
image=ct_image,
modality="CT",
task="segment_fat"
)
if "error" in result.get("segmentation", {}):
print(f" Error: {result['segmentation']['error']}")
else:
stats = result.get("segmentation", {}).get("statistics", {})
print(f" Total Fat %: {stats.get('total_fat_percentage', 'N/A')}")
print(f" Subcutaneous Fat %: {stats.get('subcutaneous_fat_percentage', 'N/A')}")
print(f" Visceral Fat %: {stats.get('visceral_fat_percentage', 'N/A')}")
# Test full analysis
print("\n3. Testing full analysis...")
result = analyzer.process_image(
image=ct_image,
modality="CT",
task="full_analysis",
clinical_context="Patient with obesity concerns"
)
print(f" Modality: {result.get('modality', 'N/A')}")
print(f" Quality: {result.get('quality_metrics', {}).get('overall_quality', 'N/A')}")
if "clinical_correlation" in result:
print(f" Clinical Note: {result['clinical_correlation'].get('summary', 'N/A')}")
def test_xray_analysis():
"""Test X-ray image analysis"""
print("\n\nTesting X-Ray Analysis...")
# Create a simulated X-ray image with different intensities
xray_image = np.zeros((512, 512), dtype=np.float32)
# Background soft tissue
xray_image[:, :] = 0.4
# Bone region (high intensity)
xray_image[100:400, 200:250] = 0.8 # Femur-like structure
# Air/lung region (low intensity)
xray_image[50:200, 50:200] = 0.1
xray_image[50:200, 312:462] = 0.1
# Metal implant (very high intensity)
xray_image[250:280, 220:230] = 0.95
# Create analyzer
analyzer = MedicalImageAnalyzer(
analysis_mode="structured",
include_confidence=True,
include_reasoning=True
)
# Test full X-ray analysis
print("\n1. Testing full X-ray analysis...")
result = analyzer.process_image(
image=xray_image,
modality="X-Ray",
task="full_analysis"
)
if "segmentation" in result:
segments = result["segmentation"].get("segments", {})
print(" Detected tissues:")
for tissue, info in segments.items():
if info.get("present", False):
print(f" - {tissue}: {info.get('percentage', 0):.1f}%")
# Check for findings
findings = result["segmentation"].get("clinical_findings", [])
if findings:
print(" Clinical findings:")
for finding in findings:
print(f" - {finding.get('description', 'Unknown finding')}")
# Test point analysis on X-ray
print("\n2. Testing X-ray point analysis...")
result = analyzer.process_image(
image=xray_image,
modality="X-Ray",
task="analyze_point",
roi={"x": 225, "y": 265, "radius": 5} # Metal implant region
)
point_analysis = result.get("point_analysis", {})
print(f" Tissue Type: {point_analysis.get('tissue_type', {}).get('type', 'N/A')}")
print(f" Intensity: {point_analysis.get('intensity', 'N/A')}")
def test_error_handling():
"""Test error handling"""
print("\n\nTesting Error Handling...")
analyzer = MedicalImageAnalyzer()
# Test with invalid image
print("\n1. Testing with None image...")
result = analyzer.process_image(
image=None,
modality="CT",
task="full_analysis"
)
print(f" Error handled: {'error' in result}")
# Test with invalid modality
print("\n2. Testing with invalid modality...")
result = analyzer.process_image(
image=np.zeros((100, 100)),
modality="MRI", # Not supported
task="full_analysis"
)
print(f" Processed as: {result.get('modality', 'Unknown')}")
if __name__ == "__main__":
print("Medical Image Analyzer Integration Test")
print("=" * 50)
test_ct_analysis()
test_xray_analysis()
test_error_handling()
print("\n" + "=" * 50)
print("Integration test completed!")
print("\nNote: This test uses simulated data.")
print("For real medical images, results will be more accurate.")