File size: 3,208 Bytes
c2d8817 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | #!/usr/bin/env python3
"""
快速后端测试脚本
"""
import os
import sys
from pathlib import Path
# 设置项目路径
project_root = Path(__file__).resolve().parent.parent
sys.path.insert(0, str(project_root))
os.chdir(project_root)
output_file = project_root / "output" / "quick_test_results.txt"
output_file.parent.mkdir(exist_ok=True)
def log(msg):
"""写入日志"""
with open(output_file, "a", encoding="utf-8") as f:
f.write(msg + "\n")
print(msg)
# 清空文件
with open(output_file, "w") as f:
f.write("=== NeuroScan 快速测试 ===\n\n")
log("1. 测试模块导入...")
try:
from app.services.dicom import DicomLoader
log(" DicomLoader: OK")
except Exception as e:
log(f" DicomLoader: FAIL - {e}")
try:
from app.services.registration import ImageRegistrator
log(" ImageRegistrator: OK")
except Exception as e:
log(f" ImageRegistrator: FAIL - {e}")
try:
from app.services.analysis import ChangeDetector
log(" ChangeDetector: OK")
except Exception as e:
log(f" ChangeDetector: FAIL - {e}")
try:
from app.services.report import ReportGenerator
log(" ReportGenerator: OK")
except Exception as e:
log(f" ReportGenerator: FAIL - {e}")
log("\n2. 测试数据加载...")
try:
loader = DicomLoader()
data_dir = project_root / "data" / "processed" / "real_lung_001"
if data_dir.exists():
baseline = data_dir / "baseline.nii.gz"
if baseline.exists():
import nibabel as nib
img = nib.load(baseline)
data = img.get_fdata()
log(f" 加载成功: shape={data.shape}")
else:
log(f" baseline.nii.gz 不存在")
else:
log(f" 数据目录不存在: {data_dir}")
except Exception as e:
log(f" 加载失败: {e}")
log("\n3. 测试报告生成...")
try:
generator = ReportGenerator(llm_backend="template")
report = generator.generate_longitudinal_report(
patient_id="TEST001",
baseline_date="2025-06-15",
followup_date="2026-01-28",
baseline_findings=[{"organ": "肺", "max_diameter_mm": 15.0, "volume_cc": 1.0, "mean_hu": -25, "shape": "圆形", "density_type": "实性"}],
followup_findings=[{"organ": "肺", "max_diameter_mm": 12.0, "volume_cc": 0.8, "mean_hu": -20, "shape": "圆形", "density_type": "实性"}],
registration_results={"rigid": "completed"},
change_results={"changed_voxels": 1000, "change_percent": 0.05},
modality="CT"
)
log(f" 报告生成成功: {len(report)} 字符")
# 保存报告
report_path = project_root / "output" / "test_longitudinal_report.md"
with open(report_path, "w", encoding="utf-8") as f:
f.write(report)
log(f" 报告保存至: {report_path}")
except Exception as e:
import traceback
log(f" 报告生成失败: {e}")
log(traceback.format_exc())
log("\n4. 测试 LLM 连接...")
try:
import ollama
models = ollama.list()
model_names = [m.model for m in models.models]
log(f" Ollama 可用,模型: {model_names}")
except Exception as e:
log(f" Ollama 不可用: {e}")
log("\n=== 测试完成 ===")
|