dw.jang 10809af7b5 test(bv): golden test framework — Python vs Kotlin 33 cases 자동 대조
사용자 제안 (2026-07-21) : 최종 BV 보정계수보다 최초 divergence 단계부터 원인
을 찾아 일치. 단계별 중간값 저장 + 자동 diff + 단계별 tolerance.

파일 구성:
  - scratchpad/golden_dump_python.py  — Python 기준 dump (33 case)
  - GoldenDumpTest.kt                 — Kotlin dump
  - scratchpad/golden_diff.py         — 단계별 tolerance 자동 비교

Dump 단계 (stage 명명):
  E_walls_cross      : MethodD detect + cross-channel 후 walls (refined + span)
  M_bv               : 최종 BV (volume_ml/mm3, valid_channels, D_mm, cap_*)
  # 향후 확장 가능 : B (preproc), C (TGC), G (yw/zw), H (Halir 중간), etc.

허용 오차 (단계·필드별):
  E_walls_cross              : 1e-12   (double eps 근처, ULP 노이즈 흡수)
  M_bv.volume_ml             : 1e-3    (sub-microliter)
  M_bv.cap_b_si/c_ap/y0/z0   : 1e-6    (Halir 결과)
  M_bv.cap_mean_residual     : 1e-9    (극도 정확)
  M_bv.valid_channels        : bit-exact (정수/카테고리)
  ... (총 21 fields)

실행:
  1. python scratchpad/golden_dump_python.py
  2. ./gradlew testDevDebugUnitTest --tests "*GoldenDumpTest*"
  3. python scratchpad/golden_diff.py

Fixture (data123, 총 33 case):
  cm0 (VBT26050202 supine 0CM) × 11 trace
  cm1 (VBT26050202 supine 1CM) × 11 trace
  cm3 (VBT26040302 supine 3CM) × 11 trace

현재 상태:
  - 21 필드 × 33 케이스 = 693 검사 지점 모두 tolerance 내 PASS
  - 실질 divergence 0. BV max_diff = 3.7e-9 mL (nano-mL 수준).

향후 stage 추가 (B/C/G/H) 는 필요 시 EllipseFitSpecific.debug* 처럼 각 함수의
intermediate 를 노출하는 방식으로 확장. golden_diff.py 의 TOLERANCES 사전에
key 추가만으로 자동 검사 대상 편입.
2026-07-21 09:20:38 +09:00
S
Description
No description provided
20 MiB
Languages
Kotlin 97.1%
Python 2.9%