학위논문작업 #3 클러스터링 로그 뽑기 (2)

학위논문작업 #3 클러스터링 로그 뽑기 (2) #

#2025-08-11


1. Init #

[ccm_idx 28624] Start expand_cluster: left_cur_dist=0, right_cur_dist=0, es_l=1, left_max_dist=5, right_max_dist=5
  • es_l=1, left_max_dist=5, es_r=1, right_max_dist=5
  • 초기 반경 mut_deps: 5*1 = 5 bp

#

2. Left expansion #

[ccm_idx 28624] Left expansion: left_index=28623, ld=1, updated es_l=1.0, mut_deps=5.0, left_max_dist=5
  • ld = 1
    • 확장 가능?

      • ld = POS(center) - POS(28623) = 1
      • 현재 한도 left_max_dist(0)=5 이므로 ld(=1) ≤ 5 여서 확장 가능
    • scaler update?

      • eps_scaler(28623) = 1
      • delta_es = es_l(0) - eps_scaler(28623) = 1 - 1 = 0
      • es_l(1) = es_l(0) - delta_es / es_control_const = 1 - 0/3 = 1.0 (유지)
    • 새 한도(다음 스텝에 적용)

      • mut_deps(1) = info.eps * es_l(1) = 5 * 1.0 = 5.0
      • 이 값이 다음 줄부터 left_max_dist로 반영됨.
[ccm_idx 28624] Left expansion: left_index=28622, ld=2, updated es_l=1.0, mut_deps=5.0, left_max_dist=5.0
  • ld=2
    • 확장 가능?

      • ld = POS(center) - POS(28622) = 2
      • 직전 스텝에서 계산된 새 한도 mut_deps(1)=5.0이 이번 스텝의 한도로 적용: left_max_dist(1)=5.0이고 ld(=2) ≤ 5.0 여서 확장 가능
    • scaler update?

      • 직전 스텝에서 updated es_l는 1.0으로 유지됨.
      • eps_scaler(28622) = 1
      • delta_es = es_l(1) - eps_scaler(28622) = 1.0 - 1 = 0
      • es_l(2) = es_l(1) - delta_es / 3 = 1.0 - 0 = 1.0 (유지)
    • 새 한도(다음 스텝에 적용)

      • mut_deps(2) = info.eps * es_l(2) = 5 * 1.0 = 5.0
[ccm_idx 28624] Left expansion: left_index=28621, ld=3, updated es_l=1.6666666666666665, mut_deps=8.333333333333332, left_max_dist=5.0
  • ld=3
    • 확장 가능?

      • ld = POS(center) - POS(28621) = 3
      • 직전 스텝에서 계산된 새 한도 mut_deps(2)=5.0이 이번 스텝의 한도로 적용: left_max_dist(2)=5.0이고 ld(=3) ≤ 5.0 여서 확장 가능
    • scaler update?

      • 직전 스텝에서 updated es_l는 1.0
      • eps_scaler(28621) = 3.0
      • delta_es = es_l(2) - eps_scaler(28621) = 1.0 - 3 = -2
      • es_l(3) = es_l(2) - delta_es / 3 = 1.0 - (-2)/3 = 1.6666666666666665
    • 새 한도(다음 스텝에 적용)

      • mut_deps(3) = info.eps * es_l(3) = 5 * 1.6666666666666665 = 8.333333333333332
      • 이 값은 다음 줄(ld=4)에 left_max_dist로 반영됨.
[ccm_idx 28624] Left expansion: left_index=28620, ld=4, updated es_l=1.4444444444444444, mut_deps=7.222222222222222, left_max_dist=8.333333333333332
  • ld=4
    • 확장 가능?

      • ld = POS(center) - POS(28620) = 4
      • 직전 스텝에서 계산된 새 한도 mut_deps(3)=8.333333333333332이 이번 스텝의 한도로 적용: left_max_dist(3)=8.333333333333332이고 ld(=4) ≤ 8.333333333333332 여서 확장 가능
    • scaler update?

      • 직전 스텝에서 updated es_l는 1.6666666666666665
      • eps_scaler(28620) = 1.0
      • delta_es = es_l(3) - eps_scaler(28620) = 1.6666666666666665 - 1 = 0.6666666666666665
      • es_l(4) = es_l(3) - delta_es / 3 = 1.6666666666666665 - 0.6666666666666665/3 = 1.4444444444444444
    • 새 한도(다음 스텝에 적용)

      • mut_deps(4) = info.eps * es_l(4) = 5 * 1.4444444444444444 = 7.222222222222222
      • 이 값은 다음 줄(ld=5)에 left_max_dist로 반영됨.
[ccm_idx 28624] Left expansion: left_index=28619, ld=5, updated es_l=1.2962962962962963, mut_deps=6.481481481481481, left_max_dist=7.222222222222222
  • ld=5
    • 확장 가능?

      • ld = POS(center) - POS(28619) = 5
      • 직전 스텝에서 계산된 새 한도 mut_deps(4)=7.222222222222222이 이번 스텝의 한도로 적용: left_max_dist(4)=7.222222222222222이고 ld(=5) ≤ 7.222222222222222 여서 확장 가능
    • scaler update?

      • 직전 스텝에서 updated es_l는 1.4444444444444444으로 기록되어있음.
      • eps_scaler(28619) = 1.0
      • delta_es = es_l(4) - eps_scaler(28619) = 1.4444444444444444 − 1 = 0.4444444444444444
      • es_l(5) = es_l(4) - delta_es / 3 = 1.4444444444444444 - 0.4444444444444444/3 = 1.2962962962962963
    • 새 한도(다음 스텝에 적용)

      • mut_deps(5) = info.eps * es_l(5) = 5 * 1.2962962962962963 = 6.481481481481481
      • 이 값은 다음 줄(ld=6)에 left_max_dist로 반영됨.
[ccm_idx 28624] Left expansion: left_index=28618, ld=6, updated es_l=3.197530864197531, mut_deps=15.987654320987655, left_max_dist=6.481481481481481
  • ld=6

    • 확장 가능?

      • ld = POS(center) - POS(28618) = 6
      • 직전 스텝에서 계산된 새 한도 mut_deps(5)=6.481481481481481이 이번 스텝의 한도로 적용: left_max_dist(5)=6.481481481481481이고 ld(=6) ≤ 6.481481481481481 여서 확장 가능
    • scaler update?

      • 직전 스텝에서 updated es_l는 1.2962962962962963으로 기록되어있음.
      • eps_scaler(28618) = 7.0
      • delta_es = es_l(5) - eps_scaler(28618) = 1.2962962962962963 − 7 = −5.703703703703703
      • es_l(6) = es_l(5) - delta_es / 3 = 1.2962962962962963 - (−5.703703703703703/3) = 3.197530864197531
    • 새 한도(다음 스텝에 적용)

      • mut_deps(6) = info.eps * es_l(6) = 5 * 3.197530864197531 = 15.987654320987655
      • 이 값은 다음 줄(ld=7)에 left_max_dist로 반영됨.
  • ld=6에서 아주 중요한 이웃(eps_scaler=7) 을 만나 es가 1.296에서 3.197로 크게 상승, 허용거리도 6.48bp에서 15.99bp로 급팽창. (이때문에 ld=7,8,9에서 창이 더 멀리 열릴 수 있음)

#

3. 중간 정리 #

[ccm_idx 28624] Start expand_cluster: left_cur_dist=0, right_cur_dist=0, es_l=1, left_max_dist=5, right_max_dist=5
[ccm_idx 28624] Left expansion: left_index=28623, ld=1, updated es_l=1.0, mut_deps=5.0, left_max_dist=5
[ccm_idx 28624] Left expansion: left_index=28622, ld=2, updated es_l=1.0, mut_deps=5.0, left_max_dist=5.0
[ccm_idx 28624] Left expansion: left_index=28621, ld=3, updated es_l=1.6666666666666665, mut_deps=8.333333333333332, left_max_dist=5.0
[ccm_idx 28624] Left expansion: left_index=28620, ld=4, updated es_l=1.4444444444444444, mut_deps=7.222222222222222, left_max_dist=8.333333333333332
[ccm_idx 28624] Left expansion: left_index=28619, ld=5, updated es_l=1.2962962962962963, mut_deps=6.481481481481481, left_max_dist=7.222222222222222
[ccm_idx 28624] Left expansion: left_index=28618, ld=6, updated es_l=3.197530864197531, mut_deps=15.987654320987655, left_max_dist=6.481481481481481

Init

  • es_l(28624) = 1 / mut_deps(0) = 5.0

ld=1-6

  • eps_scaler(28623) = 1 / mut_deps(1) = 5.0
  • eps_scaler(28622) = 1 / mut_deps(2) = 5.0
  • eps_scaler(28621) = 3.0 / mut_deps(3) = 8.333333333333332
  • eps_scaler(28620) = 1.0 / mut_deps(4) = 7.222222222222222
  • eps_scaler(28619) = 1.0 / mut_deps(5) = 6.481481481481481
  • eps_scaler(28618) = 7.0 / mut_deps(6) = 15.987654320987655

ld=6까지의 해석

  • ld=2까지 최대허용거리 deps는 5.0으로 유지중이었다.
  • ld=3에서 약간중요한변이를 만나(scaler 3.0) 허용거리가 8.3bp로 갱신되었다.
  • ld=4~5에서 중요도가 낮은 변이를 만나 허용거리는 감소중이었다. (8.3->7.2->6.4)
  • ld=6에서 중요도가 높은 변이를 만나(scaler 7.0) 허용거리가 15.9로 갱신되었다.

#

4. 코드수정 #

현재 이웃의 scaler(current es_l)를 안뽑으니까 불편해서 다음과 같이 수정해서 로그 다시뽑앗다.

# expand left
with open('/data/home/ysh980101/2506/clustering_log/clustering_log.txt', 'a') as log:
    log.write(f"[ccm_idx {ccm_idx}] Left expansion: left_index={left_cur_index}, "
              f"ld={ld}, current es_l={total_mutation_info_list[left_cur_index]['eps_scaler']}, updated es_l={es_l}, mut_deps={mut_deps}, left_max_dist={left_max_dist}\n")

# expand right
with open('/data/home/ysh980101/2506/clustering_log/clustering_log.txt', 'a') as log:
    log.write(f"[ccm_idx {ccm_idx}] Right expansion: right_index={right_cur_index}, "
              f"rd={rd}, current es_r={total_mutation_info_list[right_cur_index]['eps_scaler']}, updated es_r={es_r}, mut_deps={mut_deps}, right_max_dist={right_max_dist}\n")

#

5. Left expansion (ld=7~) #

[ccm_idx 28624] Left expansion: left_index=28617, ld=7, current es_l=5, updated es_l=3.7983539094650207, mut_deps=18.991769547325102, left_max_dist=15.987654320987655
[ccm_idx 28624] Left expansion: left_index=28616, ld=8, current es_l=5, updated es_l=4.198902606310014, mut_deps=20.99451303155007, left_max_dist=18.991769547325102
  • ld = 7

    • 현재 한도 left_max_dist(6) = 15.987654320987655 이므로 7 ≤ 15.987654320987655 -> 확장 가능
    • eps_scaler(28617) = 5.0 / es_l(7) = 3.7983539094650207 / mut_deps(7) = 18.991769547325102
  • ld = 8

    • 현재 한도 left_max_dist(7) = 18.991769547325102 이므로 8 ≤ 18.991769547325102 -> 확장 가능
    • eps_scaler(28616) = 5.0 / es_l(8) = 4.198902606310014 / mut_deps(8) = 20.99451303155007
[ccm_idx 28624] Left expansion: left_index=28615, ld=9, current es_l=65, updated es_l=24.465935070873343, mut_deps=122.32967535436671, left_max_dist=20.99451303155007
  • ld = 9

    • variables

      • left_max_dist: 진입 시 한도
      • mut_deps: 다음 스텝 한도
    • 확장 가능?

      • ld = 9
      • 현재 한도 left_max_dist(8) = 20.99451303155007 이므로 9 ≤ 20.99451303155007 -> 확장 가능
    • scaler update?

      • 직전 스텝에서 updated es_l는 4.198902606310014으로 기록되어있음.
      • eps_scaler(28615) = 65.0
      • delta_es = es_l(8) - eps_scaler(28615) = 4.198902606310014 − 65 = −60.801097393689986
      • es_l(9) = es_l(8) - delta_es / 3 = 4.198902606310014 - (−60.801097393689986/3) = 24.465935070873343
    • 새 한도(다음 스텝에 적용)

      • mut_deps(9) = info.eps * es_l(9) = 5 * 24.465935070873343 = 122.32967535436671
      • 이 값은 다음 줄(ld=10)에 left_max_dist로 반영됨.
  • ld=9에서 아주 중요한 이웃(eps_scaler=65) 을 만나 es가 4.198 -> 24.466로 대폭 상승, 허용거리도 20.99bp -> 122.33bp로 폭발적으로 확대.

[ccm_idx 28624] Left expansion: left_index=28614, ld=10, current es_l=1, updated es_l=16.64395671391556, mut_deps=83.2197835695778, left_max_dist=122.32967535436671
[ccm_idx 28624] Left expansion: left_index=28613, ld=11, current es_l=1, updated es_l=11.429304475943706, mut_deps=57.14652237971853, left_max_dist=83.2197835695778
[ccm_idx 28624] Left expansion: left_index=28612, ld=12, current es_l=17, updated es_l=13.28620298396247, mut_deps=66.43101491981236, left_max_dist=57.14652237971853
[ccm_idx 28624] Left expansion: left_index=28611, ld=13, current es_l=2, updated es_l=9.524135322641646, mut_deps=47.62067661320823, left_max_dist=66.43101491981236
[ccm_idx 28624] Left expansion: left_index=28610, ld=14, current es_l=1, updated es_l=6.682756881761097, mut_deps=33.41378440880548, left_max_dist=47.62067661320823
[ccm_idx 28624] Left expansion: left_index=28609, ld=15, current es_l=1, updated es_l=4.788504587840731, mut_deps=23.942522939203656, left_max_dist=33.41378440880548
[ccm_idx 28624] Left expansion: left_index=28608, ld=16, current es_l=1, updated es_l=3.5256697252271545, mut_deps=17.62834862613577, left_max_dist=23.942522939203656
[ccm_idx 28624] Left expansion: left_index=28607, ld=17, current es_l=1, updated es_l=2.683779816818103, mut_deps=13.418899084090514, left_max_dist=17.62834862613577
  • ld = 10

    • 현재 한도 left_max_dist(9) = 122.32967535436671 이므로 10 ≤ 122.32967535436671 -> 확장 가능
    • eps_scaler(28614) = 1.0 / es_l(10) = 16.64395671391556 / mut_deps(10) = 83.2197835695778
  • ld = 11

    • 현재 한도 left_max_dist(10) = 83.2197835695778 이므로 11 ≤ 83.2197835695778 -> 확장 가능
    • eps_scaler(28613) = 1.0 / es_l(11) = 11.429304475943706 / mut_deps(11) = 57.14652237971853
  • ld = 12

    • 현재 한도 left_max_dist(11) = 57.14652237971853 이므로 12 ≤ 57.14652237971853 -> 확장 가능
    • eps_scaler(28612) = 17.0 / es_l(12) = 13.28620298396247 / mut_deps(12) = 66.43101491981236
  • ld = 13

    • 현재 한도 left_max_dist(12) = 66.43101491981236 이므로 13 ≤ 66.43101491981236 -> 확장 가능
    • eps_scaler(28611) = 2.0 / es_l(13) = 9.524135322641646 / mut_deps(13) = 47.62067661320823
  • ld = 14

    • 현재 한도 left_max_dist(13) = 47.62067661320823 이므로 14 ≤ 47.62067661320823 -> 확장 가능
    • eps_scaler(28610) = 1.0 / es_l(14) = 6.682756881761097 / mut_deps(14) = 33.41378440880548
  • ld = 15

    • 현재 한도 left_max_dist(14) = 33.41378440880548 이므로 15 ≤ 33.41378440880548 -> 확장 가능
    • eps_scaler(28610) = 1.0 / es_l(15) = 4.788504587840731 / mut_deps(15) = 23.942522939203656
  • ld = 16

    • 현재 한도 left_max_dist(15) = 23.942522939203656 이므로 16 ≤ 23.942522939203656 -> 확장 가능
    • eps_scaler(28609) = 1.0 / es_l(16) = 3.5256697252271545 / mut_deps(6) = 17.62834862613577
  • ld = 17

    • 현재 한도 left_max_dist(16) = 17.62834862613577 이므로 17 ≤ 17.62834862613577 -> 확장 가능
    • eps_scaler(28609) = 1.0 / es_l(17) = 2.683779816818103 / mut_deps(6) = 13.418899084090514
  • ld = 18 (시행x)

    • 현재 한도 left_max_dist(17) = 13.418899084090514 이므로 18 > 13.418899084090514 -> 확장 불가
    • 다음 이웃(ld=18)의 거리(=18bp)가 새 한도(13.418899084090514)를 초과
      • 왼쪽 확장 정지.

#

6. Right expansion #

[ccm_idx 28624] Right expansion: right_index=28625, rd=1, current es_r=1, updated es_r=1.0, mut_deps=5.0, right_max_dist=5
  • es_l=1, left_max_dist=5, es_r=1, right_max_dist=5
  • 초기 반경 mut_deps: 5*1 = 5 bp
[ccm_idx 28624] Right expansion: right_index=28625, rd=1, updated es_r=1.0, mut_deps=5.0, right_max_dist=5
[ccm_idx 28624] Right expansion: right_index=28626, rd=2, updated es_r=1.0, mut_deps=5.0, right_max_dist=5.0
[ccm_idx 28624] Right expansion: right_index=28627, rd=3, updated es_r=1.0, mut_deps=5.0, right_max_dist=5.0
[ccm_idx 28624] Right expansion: right_index=28628, rd=4, updated es_r=1.0, mut_deps=5.0, right_max_dist=5.0
[ccm_idx 28624] Right expansion: right_index=28629, rd=5, updated es_r=1.0, mut_deps=5.0, right_max_dist=5.0
  • rd = 1

    • 현재 한도 right_max_dist(0) = 5 이므로 1 ≤ 5 -> 확장 가능
    • eps_scaler(28625) = 1 / es_r(1) = 1.0 / mut_deps(1) = 5.0
  • rd = 2

    • 현재 한도 right_max_dist(1) = 5 이므로 2 ≤ 5 -> 확장 가능
    • eps_scaler(28626) = 1 / es_r(2) = 1.0 / mut_deps(2) = 5.0
  • rd = 3

    • 현재 한도 right_max_dist(2) = 5 이므로 3 ≤ 5 -> 확장 가능
    • eps_scaler(28627) = 1 / es_r(3) = 1.0 / mut_deps(3) = 5.0
  • rd = 4

    • 현재 한도 right_max_dist(3) = 5 이므로 4 ≤ 5 -> 확장 가능
    • eps_scaler(28628) = 1 / es_r(4) = 1.0 / mut_deps(4) = 5.0
  • rd = 5

    • 현재 한도 right_max_dist(4) = 5 이므로 5 ≤ 5 -> 확장 가능
    • eps_scaler(28629) = 1 / es_r(5) = 1.0 / mut_deps(5) = 5.0
  • rd = 6 (시행x)

    • 현재 한도 right_max_dist(5) = 5 이므로 6 > 5 -> 확장 불가
    • 다음 이웃(rd=6)의 거리(=6bp)가 새 한도(5)를 초과
      • 오른쪽 확장 정지.

#

7. Termination #

[ccm_idx 28624] Final cluster: left_position=28872, right_position=28896, length=25
  • 최종 생성 클러스터

    • 인덱스: 28607-28629
    • 유전체 좌표(POS): 28872-28896
    • length: 25
  • cf

    • 시작/끝 좌표는 HSCORE>0인 첫/마지막 좌표.

#