test_vitaldb.py•2.8 kB
#!/usr/bin/env python3
"""
VitalDB MCP 서버 간단 테스트 스크립트
MCP 서버를 통하지 않고 직접 VitalDB 기능을 테스트합니다
"""
import sys
print("VitalDB 라이브러리 테스트 중...")
print("=" * 50)
try:
import vitaldb
print("✅ vitaldb 라이브러리 임포트 성공")
except ImportError:
print("❌ vitaldb 라이브러리를 찾을 수 없습니다")
print(" pip install vitaldb 를 실행하세요")
sys.exit(1)
try:
import numpy as np
print("✅ numpy 라이브러리 임포트 성공")
except ImportError:
print("❌ numpy 라이브러리를 찾을 수 없습니다")
sys.exit(1)
try:
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
print("✅ matplotlib 라이브러리 임포트 성공")
except ImportError:
print("❌ matplotlib 라이브러리를 찾을 수 없습니다")
sys.exit(1)
print("\n" + "=" * 50)
print("테스트 1: 케이스 검색")
print("=" * 50)
try:
print("ECG_II와 ART를 포함하는 케이스 검색 중...")
caseids = vitaldb.find_cases(['ECG_II', 'ART'])
print(f"✅ 검색 성공: {len(caseids)}개의 케이스 발견")
print(f" 처음 10개 케이스 ID: {caseids[:10]}")
except Exception as e:
print(f"❌ 검색 실패: {str(e)}")
sys.exit(1)
print("\n" + "=" * 50)
print("테스트 2: 케이스 정보 가져오기")
print("=" * 50)
try:
test_case_id = caseids[0] if len(caseids) > 0 else 1
print(f"케이스 {test_case_id}의 정보 가져오는 중...")
vf = vitaldb.VitalFile(test_case_id, header_only=True)
track_names = vf.get_track_names()
print(f"✅ 성공: {len(track_names)}개의 트랙 발견")
print(f" 사용 가능한 트랙 (처음 10개):")
for track in sorted(track_names)[:10]:
print(f" - {track}")
except Exception as e:
print(f"❌ 실패: {str(e)}")
print("\n" + "=" * 50)
print("테스트 3: 데이터 로드")
print("=" * 50)
try:
print(f"케이스 {test_case_id}의 ECG_II 데이터 로드 중...")
vals = vitaldb.load_case(test_case_id, ['ECG_II'], 1.0)
print(f"✅ 성공: {vals.shape[0]}개의 샘플 로드됨")
# 유효한 데이터 개수 확인
valid_data = vals[~np.isnan(vals[:, 0]), 0]
print(f" 유효한 샘플: {len(valid_data)}개")
if len(valid_data) > 0:
print(f" 평균: {np.mean(valid_data):.2f}")
print(f" 최소/최대: {np.min(valid_data):.2f} / {np.max(valid_data):.2f}")
except Exception as e:
print(f"❌ 실패: {str(e)}")
print("\n" + "=" * 50)
print("✅ 모든 테스트 완료!")
print("=" * 50)
print("\nVitalDB MCP 서버를 사용할 준비가 되었습니다!")
print("Claude Desktop 설정을 완료하고 서버를 시작하세요.")