Commit 14b28276 authored by o's avatar o
Browse files

chore: remove legacy entry scripts

parent 9243efb3
Loading
Loading
Loading
Loading

dashboard.py

deleted100644 → 0
+0 −3080

File deleted.

Preview size limit exceeded, changes collapsed.

main.py

deleted100644 → 0
+0 −136
Changes for main.py: 0 added lines, 136 removed lines.
Original line number Diff line number Diff line
from etsi_dq.io import load_dataset
from etsi_dq.profiler import get_metadata
import pandas as pd
import numpy as np

# 라이브러리 함수 임포트
from etsi_dq.metrics import (
    check_completeness, check_reliability, check_uniqueness, check_redundancy, 
    check_precision, check_measurement_bias, check_representation_bias,
    check_accuracy, check_timeliness, check_consistency, check_availability, 
    check_integrity, check_k_anonymity, check_traceability, check_lineage, 
    check_confidentiality, check_coverage, check_label_quality
)

# 1. 데이터 로드
file_path = "data/sample.xlsx"
sheet_name = "Case A (IoT)"  # or "Case B (Demographic)"

print(f"Loading data from {file_path} ({sheet_name})...")
df = load_dataset(file_path, sheet_name=sheet_name)

if df is None:
    exit("데이터 로드 실패")

print(f"Columns: {list(df.columns)}")

# ==============================================================================
# [Configuration] 컬럼 매핑 (사용자 설정)
# 시뮬레이션 없이, 파일 내 실제 컬럼을 지정합니다.
# ==============================================================================
# 공통 설정 (파일에 컬럼이 있다고 가정)
config = {
    "time_event": "Event_Time",
    "time_system": "System_Time",
    "protected_ratio": 90,   # 관리적 지표 (파일 외적 요소)
    "population": 100000     # 관리적 지표 (파일 외적 요소)
}

# 시트별 자동 설정 분기
if "Sensor_14 (Speed)" in df.columns:
    # Case A: IoT 설정
    config.update({
        "target": "Sensor_14 (Speed)",
        "true_val": "Sensor_14_True",
        "group": "Group_ID",
        "rule": "`Sensor_2 (T2)` > 0",
        "decimals": 2
    })
else:
    # Case B: Demographic 설정
    config.update({
        "target": "Age",
        "true_val": "Age_True",
        "group": "Age_Group",
        "rule": "`Age` > 0",
        "decimals": 0
    })

print("="*80)
print(f"      ETSI TR 104 180 Check - [{sheet_name}]")
print("="*80)

# ==============================================================================
# [Execution] 측정 실행 (순수 계산)
# ==============================================================================

# [Phase 1: Statistics]
print(f"1. Completeness : {check_completeness(df):.2f}%")
print(f"2. Reliability  : {check_reliability(df[config['target']]):.2f}%")
print(f"3. Uniqueness   : {check_uniqueness(df):.2f}%")
print(f"4. Redundancy   : {check_redundancy(df)}")
print(f"5. Precision    : {check_precision(df[config['target']], config['decimals']):.2f}%")

# Bias (True Value 컬럼 사용)
if config['true_val'] in df.columns:
    bias = check_measurement_bias(df[config['target']], df[config['true_val']])
    print(f"6. Meas. Bias   : {bias:.4f}")
else:
    print("6. Meas. Bias   : N/A (참값 컬럼 없음)")

# Rep Bias (인구통계만)
if 'Sex' in df.columns:
    print(f"7. Rep. Bias    : {check_representation_bias(df['Sex']):.2f}%")
else:
    print("7. Rep. Bias    : N/A")

# [Phase 2: Logic & Time]
# Accuracy
if config['true_val'] in df.columns:
    acc = check_accuracy(df[config['target']], df[config['true_val']], tolerance=1.0)
    print(f"8. Accuracy     : {acc:.2f}%")
else:
    acc = 0.0
    print("8. Accuracy     : N/A")

# Timeliness
if config['time_event'] in df.columns and config['time_system'] in df.columns:
    lat = check_timeliness(df[config['time_event']], df[config['time_system']])
    print(f"9. Timeliness   : {lat:.4f} sec")
else:
    print("9. Timeliness   : N/A")

# Consistency
cons = check_consistency(df, config['rule'])
print(f"10. Consistency : {cons:.2f}%")

# Availability
avail = check_availability(df['Cycle']) if 'Cycle' in df.columns else check_availability(df[config['time_event']])
print(f"11. Availability: {avail:.2f}%")

# Integrity
integ = check_integrity(check_completeness(df), acc, cons)
print(f"12. Integrity   : {integ:.2f}")

# Anonymity
if config['group'] in df.columns:
    k = check_k_anonymity(df, [config['group']])
    print(f"13. Anonymity   : k={k}")
else:
    print("13. Anonymity   : N/A")

# [Phase 3: Management]
print(f"14. Traceability : {check_traceability(5, 6):.2f}%")
print(f"15. Lineage      : {check_lineage(8, 10):.2f}%")
# 기밀성: 90% 보호 가정 (설정값 기반)
n_prot = int(len(df) * (config['protected_ratio'] / 100))
print(f"16. Confidentiality: {check_confidentiality(n_prot, len(df)):.2f}%")
print(f"17. Coverage     : {check_coverage(len(df), config['population']):.2f}%")
# 라벨 품질: True Value와 Target 비교
if config['true_val'] in df.columns:
    lq = check_label_quality(df[config['target']], df[config['true_val']])
    print(f"18. Label Quality: {lq:.2f}%")
else:
    print("18. Label Quality: N/A")

print("="*80)
 No newline at end of file