키워드: DNA 해석, 재현성(reproducibility), 감사 추적(audit trail), mouse mm39, GRCm39, GC fraction, CpG density, repeat proxy, A4 arrangement, J_LEDGER, DATA_LOCK, MANIFEST, Zenodo DOI.

1 서문(Front matter)

1.1 목적과 주장 경계

본 백서는 다음과 같은 정확하고, 테스트 가능하며, 재현 가능한 주장을 지원하기 위해 작성되었다.

주장 1 (운영적 “DNA 100% 해석” 주장). LOCK–Derive–Gate DNA Interpreter 계약(LOCK\(\rightarrow\)Derive\(\rightarrow\)Gate) 하에서, DNA는 다음의 운영적 의미에서 100% 해석 가능하다: 임의의 관심 유전체 구간(서열 + 최소 주석)에 대해 파이프라인은 결정론적으로 (i) A4 배치(강성 껍질, 앵커, 모터, 루프)와 (ii) 고정된 4-활동 문법 (INIT / SCONSERV / SDISSIP / JEVENT)으로 생성되고 게이트로 검증된 비가역 사건 원장(J_LEDGER)을 산출한다.

이 주장은 의도적으로 생물학적 기능을 완전히 푸는 주장이 아니다. 여기서의 “해석”은 입력으로부터 A4 및 산출 객체(output objects)를 버전 고정된 규칙으로 생성하는 것을 의미한다. 어떤 입력이든 (a) 산출 객체가 생성되거나, 또는 (b) 실패가 명시적으로 라벨링되고(FAIL/INCONCLUSIVE) 그 사유가 감사 가능한 형태로 기록되어야 한다.

1.2 범위: 포함되는 것과 포함되지 않는 것

1.2.0.1 포함됨.

  • 1D 서열(+주석) \(\rightarrow\) A4 프리미티브로의 결정론적 매핑(KEY).

  • A4\(\rightarrow\) 비가역 결정론적(시드 제어) 매핑(PCTS) 및 적격성 게이트.

  • 마우스 mm39 전장(whole-genome) autoscan과 대표 구간 패널(\(N\approx 30\)–100) 선택: 네 구조 축(유전자 밀도, 반복서열 proxy, GC 비율, CpG 밀도)을 균형화하고, 그 커버리지를 표 3, 그림 [fig:archetype_grid]로 요약.

  • 재현성 산출물: DATA_LOCK, MANIFEST (sha256), INDEX, 검증/DOI 감사 스크립트.

1.2.0.2 포함되지 않음.

  • 본 모델이 생물학적 표현형 또는 모든 조절 메커니즘을 예측한다는 주장.

  • 사용된 강성(stiffness) 프록시가 생체(in vivo)에서의 DNA 물리량을 “보편적으로” 정확히 대변한다는 주장.

  • 고해상 3D 접힘(folding) 시뮬레이션 또는 원자/염기 수준의 완전 물리 모델.

  • 실험적 기능 검증 없이 “이 구간의 의미가 무엇이다”와 같은 절대적 의미 해석.

1.3 문서 규약과 용어

1.3.0.1 Interpretation vs. meaning.

본 문서에서 “interpretation(해석)”은 입력으로부터 A4 및 J_LEDGER 객체를 버전 고정된 규칙으로 생성하는 것을 뜻한다. 이는 DNA의 “진정한 의미”를 절대적 생물학적 관점에서 복원한다는 뜻이 아니다.

1.3.0.2 LOCK vs. STATE.

우리는 LOCK(고정 가정/규칙)과 STATE(런타임에서 변할 수 있는 값)를 분리한다. LOCK의 변경은 새로운 버전으로 취급되며, 검증된(run validated) 실행에서 LOCK에 대한 사후 튜닝(post-hoc tuning)은 금지된다 .

1.3.0.3 결정론(Determinism).

특별히 언급되지 않는 한, 절차는 다음의 함수로 결정된다.

  1. 입력 구간 서열(FASTA),

  2. MOTOR 추출에 사용되는 주석 부분집합(GTF),

  3. 파라미터 딕셔너리(KEY/PCTS 버전 포함),

  4. 랜덤 시드(오직 명시적으로 사용하는 경우에만).

1.3.0.4 검증 상태(Validated).

본 문서에서 한 실행(run)이 validated로 간주되려면:

  1. 입력이 sha256 해시로 기록되어야 하며(DATA_LOCK),

  2. 산출물이 sha256 해시로 기록되어야 하고(MANIFEST),

  3. 게이트가 PASS를 반환하거나, FAIL/INCONCLUSIVE인 경우 명시적 이유가 제공되어야 하며,

  4. DOI 레지스트리에 누락된 DOI 엔트리가 없어야 한다(DOI audit PASS).

1.4 재현성 계약(LOCK–Derive–Gate)

우리는 세 층으로 구성된 엄격한 재현성 계약을 채택한다 :

LOCK

버전 고정된 priors, 스키마, 알고리즘(예: 4-활동 문법; A5 priors; KEY와 PCTS 버전).

Derive

모든 산출 파일은 LOCK + 입력으로부터 숨은 수작업 단계 없이 도출된다.

Gate

모든 실행은 적격성(admissibility)과 감사 완전성을 검사하는 fail-fast 게이트를 산출한다 (예: JEVENT의 \(\Delta E<0\)).

1.5 인용 방법

Zenodo DOI (본 백서 + 재현성 번들):

외부 리소스는 DOI가 포함된 참고문헌으로 인용한다. 내부 산출물(derived artifacts)은 run_idDATA_LOCK/MANIFEST에 기록된 sha256 해시로 인용한다. 결과를 배포할 때에는, 제3자가 검증할 수 있도록 validated bundle과 스크립트를 함께 제공해야 한다 .

1.6 Evidence lock (본 백서를 위한 고정 증거)

Zenodo 업로드(권장): 본 백서 PDF와 함께, 본문에서 고정된 증거 번들을 포함하는 래퍼(zip) 번들을 함께 업로드한다. 본 문서에서 사용하는 증거 번들/키 파일의 sha256 해시는 LOCK이며, 해시가 바뀌는 어떤 변경(입력, 선택, 생성 요약)은 새 evidence 버전과 새 백서 리비전을 요구한다.

표 3 및 그림 [fig:archetype_grid]를 뒷받침하는 증거를 불변(immutable)·감사 가능하게 만들기 위해, 우리는 정확한 evidence bundle과 내부 key file의 sha256을 아래와 같이 고정한다.

EVIDENCE_LOCK_v0_1

(1) mm39 archetype coverage bundle (Table 1 + Fig 1 sources)
  mm39_archetype_coverage_TABLE1_FIG1_bundle_v0_1.zip
    sha256: d9adeb446efe6ae2e1e21ef0202ea0ed92d042f5bcaaae573f67a879f15270a8
  key files inside the bundle:
    TABLE1_mm39_archetype_coverage_v0_1.csv
      sha256: c61ec72d129a899f9787e5cead3047e54004d223c3ae9bd02186c5ecc4239d77
    mm39_selected_regions_archetypeN80_v0_1.csv
      sha256: 9519b2a13164194b50043135ce021d7054c93b90c249caa7462b2ecca2c021a3
    mm39_archetype_coverage_matrix9x9_v0_1.csv
      sha256: 4881c61704f018d866e786036c383c708d20c224fd8b2a185d7c1540ff202abf
    RUN_METADATA_mm39_archetype_coverage_v0_1.json
      sha256: 309c920feb61c277ee62e67c47ec0744328a873a950f30b5950754f14ead01f7
    MANIFEST_mm39_archetype_coverage_v0_1.json
      sha256: fe7adc4fb201d31cb243c6f1e765c2248d230e59eaf1989a66be2a7475cf7f99
    mm39_inputs_sha256_v0_1.txt
      sha256: f8ea0caa5a009da6df7b3a77585f528999f56efedced5be6b48835db5b42dce5

(2) End-to-end autoscan+STEP18 bundlekit (scripts and LOCK files)
  mouse_mm39_autoscan_END2END_bundlekit_v1_0.zip
    sha256: e2e2803daa972e276b9710db39f450055ad9fdfd44e0cfab974c3a592b826ac2
  key files inside the bundlekit:
    MANIFEST.json
      sha256: 024bf5ed17fb984fa17ca9bef586c0b72883488352ba3d142422457126604e50
    CITATION_REGISTRY.yaml
      sha256: 69ca4f35e13be7c7a24bdf04d7244d1798d38ac35835a2d5d399b17a8abf8db7
    STANDARD/A5_priors_dna_v0_1.yaml
      sha256: 0fc1b857956b2aa5c277fb919ac56c935fc524707853e83210ab2637477f8f8d
    STANDARD/J_LEDGER_schema_dna_v0_1.yaml
      sha256: 1cc118ce979eecdb7b24bd93efbf2efc572941ab1057e6ae0f77f5a9f4a4b769
Evidence lock summary (primary bundles).
Artifact (file) sha256 (grouped)
d9adeb44 6efe6ae2 e1e21ef0 202ea0ed 92d042f5 bcaaae57 3f67a879 f15270a8
e2e2803d aa972e27 6b9710db 39f45005 5ad9fdfd 44e0cfab 974c3a59 2b826ac2
Evidence lock: key files (sha256).
Path (inside bundle) sha256 (grouped)
Path (inside bundle) sha256 (grouped)
(continued)
c61ec72d 129a899f 9787e5ce ad3047e5 4004d223 c3ae9bd0 2186c5ec c4239d77
9519b2a1 3164194b 50043135 ce021d70 54c93b90 c249caa7 462b2ecc a2c021a3
4881c617 04f018d8 66e78603 6c383c70 8d20c224 fd8b2a18 5d7c1540 ff202abf
309c920f eb61c277 ee62e67c 47ec0744 328a873a 950f30b5 950754f1 4ead01f7
fe7adc4f b201d31c b243c6f1 e765c224 8d230e59 eaf1989a 66be2a74 75cf7f99
f8ea0caa 5a009da6 df7b3a77 585f5289 99f56efe dced5be6 b48835db 5b42dce5
MANIFEST.json (bundlekit) 024bf5ed 17fb984f a17ca9be f586c0b7 28834883 52ba3d14 24224571 26604e50
CITATION_REGISTRY.yaml (bundlekit) 69ca4f35 e13be7c7 a24bdf04 d7244d17 98d38ac3 5835a2d5 d399b17a 8abf8db7
0fc1b857 956b2aa5 c277fb91 9ac56c93 5fc52470 7853e832 10ab2637 477f8f8d
1cc118ce 979eecdb 7b24bd93 efbf2efc 572941ab 1057e6ae 0f77f5a9 f4a4b769

2 요약(Executive summary)

2.1 한 페이지 파이프라인 개요

LOCK–Derive–Gate DNA Interpreter 파이프라인의 목표는 “해석(interpretation)”을 재현 가능하고 감사 가능하게 만드는 것이다.

  1. 입력(Input): 관심 유전체 구간 서열(FASTA)과, 필요 시 해당 구간에 제한된 전사체 주석(GTF).

  2. KEY 단계 (서열 \(\rightarrow\) 구조): 서열을 창(window) 단위로 요약해 강성(stiffness) 프록시를 구성하고, 이를 기반으로 강성 껍질(shell) 분할과 앵커(anchor) 강도(strength)를 만든다. 주석이 제공되면 TSS로부터 모터(motor)를 추출하고 근접 앵커와 연결하여 루프(loop) 후보를 만든다. 결과는 최소 A4 배치이다.

  3. PCTS 단계 (구조 \(\rightarrow\) 원장): 입력으로 받아 고정된 4-활동 문법 하에서 비가역 사건열(J_LEDGER)을 생성한다.

  4. 감사/검증(Audit/validation): DATA_LOCK, MANIFEST, INDEX, gate table을 산출하여 런이 적격(admissible)이며 동일 입력/파라미터/시드에서 재현됨을 확인한다.

2.2 핵심 주장: 공학적 계약으로 재진술

주장 2 (해석 계약(Interpretation contract)). 임의의 입력 구간에 대해 파이프라인은 (a) 유효한 A4 배치와 (b) 게이트로 검증된 산출한다. 만약 산출이 불가능하면, 그 사유는 해시로 추적 가능한 FAIL/INCONCLUSIVE로 명시된다. validated run에서는 사후 LOCK 튜닝(post-hoc tuning)은 허용되지 않는다.

본 백서에서 “DNA는 100% 해석 가능하다”는 표현은 바로 위의 공학적 계약을 의미한다 .

2.3 핵심 설계 결정

2.3.0.1 활동 문법은 고정.

INIT / SCONSERV / SDISSIP / JEVENT 외의 새로운 활동 범주는 도입하지 않는다. 다양성(diversity)은 A4 배치 구조에서만 나온다.

2.3.0.2 구조 다양성은 shell/anchor에서.

KEY 단계가 강성 껍질 분할과 앵커 강도 등 구조적 다양성을 생성하는 유일한 장소다.

2.3.0.3 비가역성은 “가정”이 아니라 로그로 강제.

JEVENT는 소산 제약을 만족해야 한다(\(\Delta E<0\)). 또한 사건 전후의 잔류 응력(residual stress) 프록시는 증가하면 안 된다.

2.4 스케일 증거: mm39 autoscan과 대표 패널

특정 구간을 임의로 선정하는 문제를 피하기 위해, 우리는 마우스 mm39 전체 게놈을 대상으로 autoscan을 수행한다. 각 창(window)은 다음 4개의 구조 관측량으로 요약된다:

  • 유전자 밀도(gene density; Mb당 TSS 수),

  • 반복서열 proxy(repeat proxy; softmask 비율),

  • GC 비율(GC fraction),

  • CpG 밀도(CpG density).

각 축은 L/M/H(삼분위, terciles)로 이산화되어 \(3^4=81\) archetype 격자를 이룬다. 그 다음, \(N\approx 30\)–100의 예산 안에서 가능한 한 많은 archetype을 커버하면서 주변(marginal) 균형을 유지하도록 대표 패널을 결정론적으로 선택한다.

2.4.0.1 표 1과 그림 1의 의미.

  • 표 3는 축별 컷오프 \((q_1,q_2)\)와 선택된 구간들의 L/M/H 분포(주변 균형)를 기록한다.

  • 그림 [fig:archetype_grid]는 선택된 패널의 archetype 점유도(occupancy)를 기록하여, \(N\) 예산이 관측된 archetype 공간을 얼마나 균일하게 채우는지 보여준다.

2.5 재현성 진술(최소)

증거는 validated bundle로 패키징된다:

  • 각 run은 입력 해시와 파라미터를 기록한 DATA_LOCK을 가진다.

  • 각 bundle은 산출물 sha256을 기록한 MANIFEST를 가진다.

  • gate table과 verdict가 포함된다.

  • 참고문헌/DOI에 대한 감사(DOI audit)가 포함된다.

제3자는 동일 입력과 동일 파라미터로 파이프라인을 재실행함으로써 동일 run_id 산출물을 재현할 수 있다 .

2.6 읽기 가이드

2–3장은 형식적 객체와 재현성 계약을 정의한다. 4–5장은 결정론적 변환(KEY와 PCTS)을 정의한다. 6–8장은 마우스 mm39 데이터 출처와 autoscan 패널 결과(표 3, 그림 [fig:archetype_grid])를 제공한다. 9–10장은 강성-껍질 구조의 창발을 해석하고 실패 모드를 문서화한다.

3 핵심 정의(Core definitions)

본 절은 본문 전반에서 사용하는 객체와 용어를 고정한다.

3.1 입력 구간(Input region)

정의 1 (구간 객체(Region object)). 하나의 구간(region)은 다음의 튜플로 정의한다: \[\mathcal{R} := (S, \mathcal{A}, \theta),\] 여기서 \(S\)는 길이 \(L\)의 DNA 서열 문자열(\(\{A,C,G,T,N\}\)), \(\mathcal{A}\)는 선택적 주석(예: 구간에 제한된 GTF), \(\theta\)는 파라미터 딕셔너리(창 크기, 스텝, 알고리즘 버전, 시드 등)이다.

비고 1 (최소 주석(minimal annotation)). \(\mathcal{A}\)는 선택 사항이다. \(\mathcal{A}\)가 없는 경우에도 파이프라인은 shell/anchor를 산출한다. 단, motor/loop는 비어 있을 수 있다(예: GTF가 없거나, 구간 내 transcript가 없는 경우).

3.2 A4 배치(A4 arrangement)

정의 2 (A4 배치(Arrangement)). A4 배치는 다음 필드를 포함하는 레코드로 정의한다:

  • shells: 서열을 따라 분할된 강성 껍질 구간(시작/끝/라벨/강성 요약치),

  • boundaries: 껍질 경계(위치, 경계 강도),

  • anchors: 경계와 특정 기준점에서 유도된 앵커(위치, 종류(kind), 강도),

  • motors: 주석으로부터 유도되는 모터(예: transcript TSS),

  • loops: motor와 anchor의 연결 후보(거리, 참조 ID),

  • meta: KEY 버전, 생성 UTC, FASTA 헤더 등.

비고 2 (최소성(minimality)). “생물학을 더 많이 설명하기 위해” 임의의 객체를 추가하지 않는다. 필요한 구조 다양성은 shell/anchor/motor/loop라는 제한된 프리미티브에서만 나온다.

3.3 고정 활동 문법(4개 연산)

정의 3 (활동 문법(Activity grammar)). 활동 문법은 허용되는 활동 범주의 순서 있는 집합이다: \[\{\mathrm{INIT}, \mathrm{SCONSERV}, \mathrm{SDISSIP}, \mathrm{JEVENT}\}.\] 추가적인 활동 범주는 도입하지 않는다. 다양성은 새로운 활동 타입의 추가가 아니라 A4 구조와 사건 로그에서 나온다.

3.3.0.1 해석(Interpretation).

INIT는 런 상태를 초기화한다. SCONSERV는 보존적 제약 투영(예: 불변량 유지)을 의미한다. SDISSIP는 소산적(relaxational) 변화(예: 잔류 응력 감소)를 의미한다. JEVENT는 비가역(discrete, irreversible) 업데이트로서 시간 단계를 진전시키고 원장에 기록한다.

3.4 J_LEDGER 및 게이트

정의 4 (J_LEDGER 엔트리). J_LEDGER 엔트리는 다음 필드를 포함하는 행(row)이다: run_id, created_utc, event_id, event_type, t_step, anchor_ids, motor_ids, loop_ids, trigger_summary, deltaE_diss, pres_pre, pres_post, lock_state_pre, lock_state_post, notes. (스키마는 evidence bundle 내 J_LEDGER_schema_dna_v0_1.yaml에 고정된다.)

비고 3 (적격성(admissibility) 제약). JEVENT는 비가역성을 위해 \(\Delta E_{\mathrm{diss}}<0\)를 만족해야 한다. 또한 사건 후 잔류 응력은 증가하면 안 된다(\(\mathrm{pres}_{post}\le \mathrm{pres}_{pre}\)). 이러한 제약은 게이트 테이블에서 PASS/FAIL로 검증된다.

3.5 “100% 해석 가능”의 운영적 의미

정의 5 (운영적 100% 해석 가능(Operational 100% interpretability)). 주어진 입력 구간 \(\mathcal{R}\)에 대해, 파이프라인이 다음 중 하나를 산출하면 “해석 가능”으로 간주한다:

  1. 성공(SUCCESS): 생성하고, 모든 필수 게이트를 PASS한다.

  2. 명시적 실패(FAIL): A4 또는 J_LEDGER 생성에 실패했음을 FAIL 라벨로 기록하고, 입력/파라미터/부분 산출물의 해시를 남긴다(DATA_LOCKMANIFEST).

  3. 불확정(INCONCLUSIVE): 하드웨어/환경적 이유로 재현성 게이트를 판정할 수 없음을 라벨링하고, 재시도 조건을 명시한다.

이 정의는 “기능적 의미”를 푼다는 의미가 아니라, 모든 입력에 대해 산출물 또는 실패 라벨을 감사 가능하게 반환한다는 의미이다.

3.6 왜 archetype 패널이 중요한가

전체 게놈에서 임의의 일부 구간만을 “예시”로 택하면 편향이 생긴다. archetype 패널은 다음을 동시에 달성하기 위한 장치다:

  • 다양한 구조적 맥락(GC/CpG/repeat/gene density)을 포괄한다.

  • 제한된 예산(\(N\approx 30\)–100)으로도 커버리지를 요약할 수 있다.

  • 표/그림으로 커버리지의 균일성(또는 편향)을 명시한다.

4 데이터 계약(Data contract: LOCK–Derive–Gate 패키징)

본 절은 “재현성”을 기술적 계약으로 고정한다. 핵심은 무엇을 잠그고(LOCK), 무엇을 도출하며(Derive), 무엇을 검사하는가(Gate)를 한 번의 실행(run)에서 기계적으로 확인할 수 있게 만드는 것이다 .

4.1 철학과 의도된 사용

4.1.0.1 왜 계약이 필요한가.

DNA 해석을 주장할 때 가장 큰 위험은 “사후 조정”(post-hoc tuning)이다. 즉, 결과에 맞추어 파라미터를 조정하거나, 일부 입력만 선택적으로 보고하거나, 내부 상태를 수동으로 고치는 행위다. 본 문서의 계약은 이러한 행위를 원천적으로 차단한다.

4.1.0.2 계약의 원칙.

  1. 입력은 잠긴다: 입력은 sha256으로 기록되어야 하며(DATA_LOCK), 런의 고유 식별자(run_id)를 결정한다.

  2. 산출물은 잠긴다: 모든 산출 파일은 sha256으로 잠긴다(MANIFEST).

  3. 검증은 자동이다: gate table은 PASS/FAIL/INCONCLUSIVE를 산출하며, 사유가 함께 기록된다.

4.2 run_id: 안정적 식별자

정의 6 (run_id). run_id는 한 실행(run)을 식별하는 짧은 ID이다. 정의는 다음과 같다: \[\texttt{run\_id} := \mathrm{sha256}(\mathrm{canonical\_json}(\texttt{DATA\_LOCK}))[:16],\] 즉, DATA_LOCK의 canonical JSON 표현을 sha256으로 해시한 뒤 첫 16개의 hex를 사용한다. 전체 sha256(64 hex)은 DATA_LOCK 및 개별 파일 sha256로 인해 별도로 증거에 남는다.

비고 4 (안정성). canonical JSON 규칙(키 정렬, 공백 규칙 등)은 LOCK의 일부다. 다른 정렬/표현을 사용하면 run_id가 달라지므로, 동일 run으로 취급되지 않는다.

4.3 DATA_LOCK: 무엇이 잠기는가

정의 7 (DATA_LOCK). DATA_LOCK은 입력과 필수 파라미터를 잠그는 JSON 문서다. 반드시 다음을 포함해야 한다:

  • 입력 구간 정보: chrom,start,end,assembly

  • FASTA sha256(또는 구간 서열 sha256), 주석(GTF) sha256(있다면)

  • 사용한 KEY/PCTS 버전과 파라미터, 시드(seed)

  • 실행 환경에 대한 최소 정보(도구 버전, OS 등) — 단, 이는 LOCK이 아니라 audit trace

명제 1 (DATA_LOCK 불변성). validated run에서는 DATA_LOCK이 변경되면 안 된다. DATA_LOCK이 바뀌면 run_id도 바뀌며, 다른 run으로 취급된다.

4.4 MANIFEST: 무엇이 잠기는가

정의 8 (MANIFEST). MANIFEST.json는 모든 산출 파일의 sha256을 나열한 매니페스트다. 각 항목은 (상대 경로, sha256, 파일 크기, 생성 시간) 등을 포함한다.

명제 2 (MANIFEST 완전성). validated bundle에서는 모든 핵심 산출물(A4 JSON, J_LEDGER TSV/CSV, gate table, 표/그림 소스 등)이 MANIFEST에 존재해야 한다. 누락된 파일이 있으면 해당 run은 FAIL 또는 INCONCLUSIVE이다.

4.5 INDEX: 무엇이 색인되는가

정의 9 (INDEX). INDEX.csv는 bundle의 “목차”다. 각 run에 대해 다음 정보를 요약한다: run_id, 입력 구간, 주요 산출물 경로, 게이트 판정, 관련 DOI/증거 번들 ID.

4.6 게이트 판정과 검증 로직

게이트는 크게 두 종류다:

  • 감사/완전성 게이트: DATA_LOCK 존재 여부(G_LOCK_PRESENT), MANIFEST 존재(G_MANIFEST_PRESENT), MANIFEST 일치(G_MANIFEST_MATCH), 스키마 완전성(G_SCHEMA_COMPLETE).

  • 물리/논리 적격성 게이트: 소산 제약(G_\Delta E: 모든 JEVENT에서 \(\Delta E_{\mathrm{diss}}<0\)), 잔류 응력 비증가(G_PRES: \(\mathrm{pres}_{post}\le \mathrm{pres}_{pre}\)).

각 게이트 검사는 PASS/FAIL/INCONCLUSIVE의 판정과 짧은 이유 문자열을 반환한다. 결정론적 동작에서의 일탈(예: 비결정적 정렬, OS 의존적 소팅)은 재현 가능해야 하며, 그렇지 못하면 진단과 함께 INCONCLUSIVE로 명시되어야 한다 .

4.7 계약이 함의하는 불변량(Invariants implied by the contract)

계약은 다음 불변량을 강제한다(원문 v1.2의 체크리스트를 그대로 따른다):

  1. 결정론적 도출(deterministic derivation): 산출물은 잠긴 입력과 잠긴 파라미터/시드의 함수이며, 숨은 수작업 단계가 없다.

  2. 완전한 provenance(complete provenance): 모든 run에는 DATA_LOCK이 존재하고, 모든 bundle에는 MANIFEST가 존재해야 한다.

  3. 명시적 버저닝(explicit versioning): KEY와 PCTS 버전은 항상 기록되어야 하며, 사후에 “추정”할 수 있다고 간주하지 않는다.

  4. 폐쇄 세계 인용(closed-world citations): DOI 레지스트리에는 누락된 DOI 엔트리가 없어야 하며(DOI audit PASS), 인용은 감사 가능해야 한다.

비고 5 (동치성 관점의 요약). 동일한 DATA_LOCK는 동일한 run_id를, 동일한 run_id는 동일한 MANIFEST를 요구한다. 표/그림 값의 “부분 수정”은 허용되지 않으며, 값이 바뀌면 새로운 evidence 버전이다.

4.8 실패 모드(Failure modes and rejection criteria)

4.8.0.1 좌표 불일치/시프트 오류.

구간 FASTA는 로컬 좌표(0–\(L\))로 해석되는데, 주석(GTF)이 절대 좌표에서 로컬 좌표로 올바르게 시프트되지 않으면 MOTOR가 비정상적으로 0이 되거나 경계 밖으로 나간다. 이 경우 run은 provenance 실패로 FAIL 또는 INCONCLUSIVE이며, MOTOR 카운트가 진단 신호가 된다.

4.8.0.2 부분 실행(partial runs).

run 디렉토리는 존재하지만 MANIFEST가 없거나 핵심 산출물이 누락된 경우, 그 run은 “완료된 증거”로 취급할 수 없다. 재실행하거나, 실패 라벨을 남겨야 한다.

4.8.0.3 비결정성.

어떤 구성요소가 기록되지 않은 상태(예: OS 의존 소팅, 비고정 난수)에 의존하면 동일 입력에서도 다른 산출물이 나올 수 있다. 이 경우 원인을 제공하지 못하면 INCONCLUSIVE이며, 제공되면 재현 조건 하에서 검증해야 한다.

4.8.0.4 사후 LOCK 튜닝(post-hoc LOCK tuning).

validated run 이후 LOCK(예: priors, 스키마, 알고리즘 버전)을 변경하고 기존 evidence를 덮어쓰는 행위는 금지된다. 이 경우 기존 evidence는 거부(reject)되며, 새로운 버전으로 다시 실행해야 한다.

5 KEY: 서열(+주석)에서 A4 배치로

KEY는 1D DNA 서열(그리고 선택적으로 최소 전사체 주석)을 입력으로 받아, 구조 프리미티브(강성 껍질, 앵커, 모터, 루프)로 구성된 A4 배치를 생성하는 결정론적 변환이다. KEY는 “기능 예측기”가 아니라, 구조적 분해(structural decomposition)의 규칙을 제공한다.

5.1 창(window) 관측량과 강성(stiffness) 프록시

KEY는 창 길이 \(W\)와 스텝 \(\Delta\)를 사용하여 구간을 슬라이딩하면서 요약 관측량을 계산한다.

정의 10 (창 관측량). 길이 \(W\)의 한 창에서 다음을 계산한다: \[\mathrm{gc} := \frac{\#G+\#C}{W'},\quad \mathrm{cpg} := \frac{\#(CG)}{W'-1},\quad \mathrm{at6} := \frac{\#(AAAAAA)+\#(TTTTTT)}{W'-5},\] 여기서 \(W'\)는 유효 염기 수(예: \(N\) 제외)이며, 분모가 0 이하인 경우 해당 창은 결측으로 처리한다.

정의 11 (강성 프록시(원시 값)). 각 창에서 강성 프록시의 원시 값을 다음과 같이 정의한다: \[\mathrm{stiff}_{\mathrm{raw}} := w_{\mathrm{gc}}\cdot \mathrm{gc} + w_{\mathrm{cpg}}\cdot \mathrm{cpg} + w_{\mathrm{at6}}\cdot \mathrm{at6}.\] 가중치 \(w_{\mathrm{gc}},w_{\mathrm{cpg}},w_{\mathrm{at6}}\)는 LOCK 파라미터이며 evidence bundle의 priors로 고정된다.

5.2 강건 정규화(robust z-score)와 평활화

정의 12 (강건 z-score). 창별 원시 값 \(\mathrm{stiff}_{\mathrm{raw}}(i)\)에 대해, 중앙값과 MAD를 사용한 강건 z-score를 정의한다: \[z(i) := \frac{\mathrm{stiff}_{\mathrm{raw}}(i)-\mathrm{median}(\mathrm{stiff}_{\mathrm{raw}})} {1.4826\cdot \mathrm{MAD}(\mathrm{stiff}_{\mathrm{raw}}) + \epsilon}.\] 여기서 \(1.4826\)은 MAD를 정규분포 표준편차로 보정하기 위한 상수이며, \(\epsilon\)은 0으로 나누는 것을 방지하는 작은 상수다.

정의 13 (평활화). 경계의 안정성을 위해, \(z(i)\)에 대한 짧은 이동 평균을 취한다: \[\tilde z(i) := \frac{1}{2k+1}\sum_{j=-k}^{k} z(i+j).\] \(k\)는 LOCK 파라미터다.

5.3 삼분위 라벨(terciles)과 shell 분할

정의 14 (삼분위 컷오프). \(\tilde z(i)\)의 분포에서 1/3 및 2/3 분위수 \((q_1,q_2)\)를 계산한다. 각 창은 다음과 같이 라벨링한다: \[\ell(i) := \begin{cases} \mathrm{L} & \tilde z(i) < q_1\\ \mathrm{M} & q_1 \le \tilde z(i) < q_2\\ \mathrm{H} & q_2 \le \tilde z(i). \end{cases}\]

정의 15 (shell). 서로 연속된 동일 라벨의 창 구간을 병합하여 shell을 만든다. 짧은 shell(길이 \(<\tau\) bp)은 이웃 shell로 병합할 수 있으며, 병합 규칙은 결정론적이어야 한다.

명제 3 (Shell 불변량). 모든 shell은 서로 겹치지 않으며, 구간 \([0,L]\)을 순서대로 덮는다(허용되는 결측 구간이 없다면).

5.4 앵커(anchors)

정의 16 (앵커 후보). shell 경계와 강성 프록시의 국소 극값(local extrema)을 이용하여 앵커 후보를 정의한다. 각 후보는 위치 \(p\)와 강도 \(s\ge 0\)를 가진다.

정의 17 (앵커 선택). 앵커 후보 집합에서 다음 규칙으로 최종 앵커를 선택한다:

  1. 경계 기반 앵커: 모든 shell 경계는 최소 앵커 후보를 제공한다.

  2. 극값 기반 앵커: \(\tilde z\)의 국소 극값 중 강도가 임계값 이상인 것만 채택한다.

  3. 근접 중복 제거: \(\tau\) bp 이내의 앵커는 하나로 병합하며 더 강한 앵커를 보존한다.

명제 4 (앵커 불변량). 모든 앵커는 다음을 만족한다:

  • 위치는 \([0,L]\)에 속한다,

  • 강도는 음이 아니다,

  • 앵커 ID는 run 내에서 유일하다.

5.5 주석으로부터 모터(motor) 추출

주석이 제공되면, 모터를 전사체 시작점(TSS)으로 추출한다.

정의 18 (TSS 추출 규칙). 전사체의 절대 좌표가 \((\mathrm{start},\mathrm{end})\)이고 strand \(\in\{+,-\}\)일 때: \[\mathrm{TSS}_{\mathrm{abs}} := \begin{cases} \mathrm{start} & \text{strand }=+\\ \mathrm{end} & \text{strand }=-. \end{cases}\] 로컬 좌표는 구간 시작 오프셋을 빼서 얻는다: \(\mathrm{TSS}_{\mathrm{local}}=\mathrm{TSS}_{\mathrm{abs}}-\mathrm{region\_start\_abs}\).

오직 \(0\le \mathrm{TSS}_{\mathrm{local}}\le L\)인 모터만 유지한다.

비고 6 (주석 출처). 본 백서에서 마우스 mm39 전사체 주석은 UCSC의 RefSeq/refGene를 사용하며, 어셈블리 출처는 별도로 문서화한다 .

5.6 루프(loops) 생성

정의 19 (\(k\)-최근접 앵커 규칙). 각 모터 위치 \(p\)에 대해, \(|p-a|\)를 최소화하는 앵커 \(k\)개를 선택한다. 선택된 각 쌍은 거리 \(d=|p-a|\)를 갖는 루프를 정의한다.

명제 5 (루프 불변량). 모든 루프는 다음을 만족한다:

  • motor_idanchor_id는 해당 테이블에 존재한다,

  • 거리 \(d\)는 음이 아니며 저장된 위치와 일치한다,

  • 루프 ID는 유일하다.

5.7 KEY 버전

KEY_v0_3_1 (단일 스케일)

KEY_v0_3_1은 단일 창 스케일 \((W,\Delta)\)로 하나의 shell 계층을 만든다.

KEY_v0_4 (멀티스케일)

KEY_v0_4는 두 스케일을 사용한다:

  • fine tier: \((W_f,\Delta_f)\),

  • coarse tier: \((W_c,\Delta_c)\).

두 tier에서 도출된 앵커는 위치 근접성(허용 오차 \(\tau\) bp)에 따라 병합되며, 중복이 발생하면 더 강한 앵커를 유지한다.

명제 6 (멀티스케일 앵커 병합의 결정론성). fine/coarse 산출물이 고정되고 병합 허용 오차 \(\tau\)가 고정되면, 병합된 앵커 목록은 결정론적이다.

5.8 산출물(Outputs)

KEY는 다음을 산출한다:

  • 창 관측량(feature) TSV,

  • shell 및 경계(boundary) TSV,

  • 앵커/모터/루프 TSV,

  • A4 배치를 요약한 최소 YAML.

5.9 실패 모드 및 진단 신호

5.9.0.1 FASTA 다중 서열.

입력 FASTA에 여러 서열이 있으면 엄격한 리더가 추가 헤더를 무시할 수 있다. validated bundle에서는 단일-서열 구간 FASTA를 요구한다.

5.9.0.2 과도한 모호 염기(N).

\(N\) 비율이 높으면 서열 통계의 신뢰도가 떨어진다. autoscan은 보통 유효 염기 비율이 낮은 창을 필터링하며, 이러한 필터는 파라미터로 기록되어야 한다.

5.9.0.3 GTF 누락 또는 불일치.

GTF가 없으면 모터/루프는 비어 있다. GTF 좌표가 구간과 정렬되지 않으면 모터가 모두 구간 밖으로 나갈 수 있다. 두 경우 모두 모터/루프 카운트와 gate/INDEX에 의해 명시되어야 한다.

5.9.0.4 파라미터 극단.

너무 작은 \(W\)는 잡음을 과적합할 수 있고, 너무 큰 \(W\)는 경계를 희석할 수 있다. 이는 “오류”라기보다 선택된 scale의 효과이며, 오직 STATE 파라미터 스윕으로 탐색되어야 하고, 사후 LOCK 변경으로 조정되어서는 안 된다.

6 PCTS: 최소 원장 생성기(PCTS_v0_2)

PCTS 단계는 KEY가 산출한 A4 배치(레이아웃 YAML)를 입력으로 받아, 고정된 4-활동 문법 하에서 시간 인덱스 사건 원장(J_LEDGER)을 생성한다. PCTS_v0_2는 “완전한 생물학적 동역학”이 아니라, 검증 가능한(게이트로 판정 가능한) 최소 원장 생성 규칙을 제공하는 것이 목적이다.

6.1 상태 변수와 산출물(Outputs)

정의 20 (Run state). 런타임 상태는 다음 최소 성분을 가진다:

  • 현재 시간 단계 \(t\in\{0,1,\dots\}\),

  • 활성 루프 집합 \(\mathcal{L}(t)\),

  • 잠긴(locked) 루프 집합 \(\mathcal{L}_{\mathrm{locked}}(t)\),

  • 잔류 응력 프록시 \(\mathrm{pres}(t)\),

  • 누적 소산 에너지 \(E_{\mathrm{diss}}(t)\),

  • (선택적으로) tie-break를 위한 고정 난수 상태(seed).

정의 21 (Outputs). PCTS_v0_2는 최소 다음 파일을 산출한다:

  • snapshots.csv: (선택) 시간별 상태 스냅샷,

  • J_LEDGER.csv: 사건 원장(각 행이 JEVENT),

  • gate_table.csv: 게이트 판정(PASS/FAIL/INCONCLUSIVE),

  • verdict.json: run 요약 판정(게이트 요약 포함).

6.2 잔류 응력 프록시(residual stress)와 역할

PCTS_v0_2는 잔류 응력을 직접 물리량으로 주장하지 않고, 비가역 사건 진행 동안 감소해야 하는 단조 프록시로 사용한다.

정의 22 (Unlocked loops). 활성 루프 중 아직 잠기지 않은 루프의 집합을 \[\mathcal{L}_{\mathrm{unlocked}}(t) := \mathcal{L}(t)\setminus \mathcal{L}_{\mathrm{locked}}(t)\] 로 정의한다.

정의 23 (Residual stress proxy). \[\mathrm{pres}(t) := \mathrm{mean}\{d(\ell):\ell\in \mathcal{L}_{\mathrm{unlocked}}(t)\},\] 여기서 \(d(\ell)\)는 루프 길이(거리)이다. \(\mathcal{L}_{\mathrm{unlocked}}(t)=\emptyset\)이면 \(\mathrm{pres}(t):=0\)으로 정의한다.

6.3 고정 4-활동 진행 규칙(Fixed 4-activity progression)

각 시간 단계는 다음과 같은 순서로 진행된다:

  1. INIT: 상태 초기화, 초기 \(\mathcal{L}(0)\) 구성, \(\mathrm{pres}(0)\) 계산.

  2. SCONSERV: 보존적 제약 적용(유효하지 않은 루프 제거 등).

  3. SDISSIP: 잔류 응력 프록시를 감소시키는 완화(relaxation).

  4. JEVENT: 비가역 사건을 기록하고(원장 행 추가), 시간 \(t\mapsto t+1\)로 전진.

INIT/SCONSERV/SDISSIP는 상태를 준비하는 연산이며, JEVENT만이 원장(J_LEDGER)에 “사건”으로 기록된다.

6.4 사건 규칙: 루프 안정화(loop stabilization)

PCTS_v0_2에서 JEVENT의 대표적 사건 규칙은 “루프 잠금(loop locking)”이다.

정의 24 (Lock threshold). 각 루프 \(\ell\)에 대해 잠금 임계값을 \[d_{\mathrm{lock}}(\ell) := d_0\cdot (1 + c \cdot \min(2,\alpha(\ell))),\] 로 정의한다. 여기서 \(d_0,c\)는 LOCK 파라미터이고, \(\alpha(\ell)\)는 루프의 강도/가중치 프록시다.

정의 25 (Locking event). 시간 \(t\)에서 잠금 이벤트는 다음을 만족하는 \(\ell\in\mathcal{L}_{\mathrm{unlocked}}(t)\)를 선택하여 \(\mathcal{L}_{\mathrm{locked}}(t^+) := \mathcal{L}_{\mathrm{locked}}(t^-)\cup\{\ell\}\) 로 업데이트하는 것이다. 선택 규칙은 결정론적이어야 하며(tie-break는 고정 시드로).

비고 7 (해석). \(\alpha(\ell)\)가 클수록 잠금 임계값이 커져(더 “쉽게” 잠김), 강한 루프가 먼저 안정화되는 편향을 제공한다. 이는 물리적 사실의 주장이라기보다, 검증 가능한 최소 동역학을 위한 설계다.

6.5 적격성 게이트(Admissibility gates)

PCTS_v0_2는 다음 게이트를 통해 비가역성/적격성을 강제한다.

명제 7 (\(\Delta E<0\) (dissipation)). 모든 JEVENT에서 소산 에너지 변화는 음이어야 한다: \[\Delta E_{\mathrm{diss}}(t) < 0.\]

명제 8 (Non-increasing residual stress). 모든 JEVENT에서 잔류 응력 프록시는 증가하면 안 된다: \[\mathrm{pres}(t+1) \le \mathrm{pres}(t).\]

명제 9 (Monotone locking). 잠긴 루프 집합은 단조 증가한다: \[\mathcal{L}_{\mathrm{locked}}(t)\subseteq \mathcal{L}_{\mathrm{locked}}(t+1).\]

이 게이트들은 gate_table.csv에 PASS/FAIL/INCONCLUSIVE로 기록된다.

6.6 재현성 요구사항(Reproducibility requirements)

PCTS_v0_2는 “의미론적(semantic) 재현성”을 요구한다. 즉, 동일한 A4 입력과 동일한 LOCK/시드 하에서, 사건 스켈레톤이 동일해야 한다.

정의 26 (Event skeleton). 각 JEVENT에서 다음 필드의 튜플을 사건 스켈레톤로 정의한다: \[\mathrm{skel} := (\texttt{event\_type},\texttt{anchor\_ids},\texttt{motor\_ids},\texttt{loop\_ids}).\] (정확한 필드 집합은 스키마로 고정된다.)

명제 10 (Deterministic skeleton). 입력 A4, LOCK 파라미터, 시드가 고정되면, PCTS_v0_2가 산출하는 사건 스켈레톤 시퀀스는 결정론적이다.

비고 8 (확장성). 향후 확률적 요소를 더 포함하더라도, 본 백서 계약은 “스켈레톤 재현성”을 최소 요구로 유지할 수 있다.

6.7 \(\Pi_T\) 프록시와 활동 카운트의 해석

PCTS_v0_2는 런 요약으로 활동 카운트와 간단한 프록시를 제공할 수 있다. 예: 시간 \(T\)까지의 JEVENT 수, 잠긴 루프 수, \(\mathrm{pres}(t)\)의 감소 곡선 등.

비고 9 (이 절의 위치). 이러한 요약은 “의미 해석”이라기보다, run 진단과 비교 가능성을 위한 통계다.

6.8 실패 모드( PCTS layer )

6.8.0.1 루프 부재.

\(\mathcal{L}(0)=\emptyset\)이면 잠금 이벤트가 발생하지 않으며, 비어 있거나 최소 엔트리만 포함할 수 있다. 이는 오류가 아니라 입력/주석 구조의 결과이며, verdict.json에 명시되어야 한다.

6.8.0.2 최대 스텝 제한(max-step truncation).

\(\texttt{max\_steps}\)에 도달하여 중단된 경우, 이는 FAIL이 아니라 “계산 예산에 의한 종료”일 수 있다. 단, 종료 상태와 이유는 반드시 기록되어야 한다.

6.8.0.3 스키마 드리프트.

J_LEDGER 스키마가 버전 불일치로 달라지면 G_SCHEMA_COMPLETE에서 FAIL해야 한다.

6.8.0.4 잔류 응력 비증가 위반.

\(\mathrm{pres}(t+1)>\mathrm{pres}(t)\)가 관측되면 gate 위반으로 FAIL이다. 이는 구현 버그 또는 프록시 정의의 부적절함을 의미한다.

6.9 요약

PCTS_v0_2는 다음을 고정한다:

  • 고정된 4-활동 문법,

  • 결정론적 사건 생성,

  • 적격성 게이트(\(\Delta E<0\), 잔류 응력 비증가, monotone locking),

  • 사건 스켈레톤 기반의 의미론적 재현성 요구.

따라서 PCTS_v0_2는 본 백서의 LOCK\(\rightarrow\)Derive\(\rightarrow\)Gate 계약에서 “원장 생성기”의 최소 역할을 수행한다 .

7 마우스/mm39 참조 데이터 출처(Provenance)

본 절은 본 백서에서 말하는 “마우스 mm39 데이터”가 정확히 무엇인지, 어디에서 왔는지, 그리고 provenance(출처/계보)를 어떻게 검증하는지를 명세한다. 전장 게놈 분석에서 가장 흔한 실패 모드는 조용한(침묵) 어셈블리/주석 드리프트이므로, 이를 원천 차단하는 것이 목적이다.

7.1 어셈블리 정체성과 좌표계

정의 27 (어셈블리 정체성). 본 문서에서 mm39 은 마우스 참조 어셈블리 GRCm39를 의미한다. 모든 유전체 좌표는 해당 어셈블리의 좌표계로 해석한다.

명제 11 (좌표 일관성 요구). 서열과 주석을 결합하는 모든 단계(특히 MOTOR 추출)는 다음을 요구한다:

  1. 염색체 명명 규칙이 일치해야 한다(예: chr1 vs 1),

  2. 주석 좌표는 FASTA와 동일 어셈블리에서 정의되어야 한다,

  3. 창 수준 좌표 이동()은 기록되고 일관되게 적용되어야 한다.

조건이 실패하면 MOTOR의 개수/위치가 해당 구간에서 무효가 되며, claim 범위에 따라 FAIL 또는 INCONCLUSIVE이다.

7.2 게놈 서열과 주석의 1차 출처

7.2.0.1 게놈 서열(FASTA).

마우스 mm39 서열은 UCSC Genome Browser 다운로드 인프라를 통해 획득한다 . autoscan과 repeat proxy 구성에는 반복이 소문자로 표시되는 soft-masked 염색체 FASTA를 사용한다.

7.2.0.2 유전자/전사체 주석(refGene/RefSeq).

전사체 모델은 UCSC가 제공하는 RefSeq 유래 소스(예: refGene/RefSeq 트랙)로부터 얻는다 . 이는 TSS를 MOTOR 위치로 추출하기에 충분한 최소 주석을 제공한다.

7.2.0.3 어셈블리 provenance.

어셈블리 정체성과 provenance는 NCBI Assembly를 인용하고, 조립 게놈 배포의 1차 아카이브로서 GenBank를 인용한다 .

7.2.0.4 반복 마스킹 provenance.

soft masking과 repeat 중심 처리의 개념은 표준 RepeatMasker 파이프라인과 일치한다 .

7.3 Provenance 검증: 무엇을 해시하고 왜 하는가

정의 28 (해시에 의한 입력 검증). 각 run에 대해, 입력 파일은 DATA_LOCK에 기록된 sha256로 검증된다:

  • : 구간 아카이브(zip)의 sha256,

  • : 추출된 구간 FASTA의 sha256,

  • : 추출된 구간 GTF의 sha256(없으면 empty).

명제 12 (재현 가능한 provenance). 두 사용자가 동일한 UCSC/NCBI 상위 소스를 내려받고 동일 autoscan/추출 스크립트를 실행하면, 동일한 구간 FASTA/GTF를 생성하고, 따라서 동일한 해시와 run_id(동일 선택 파라미터/시드 하)를 얻는다.

비고 10 (왜 “추출된 구간 파일”을 해시하는가). 상위의 수 GB 게놈 아카이브 해시만으로는 충분하지 않다. 추출 파이프라인이 달라질 수 있기 때문이다. 우리는 KEY와 실제로 보는 derived region FASTA/GTF를 해시하여 입력을 동결한다.

7.4 본 백서에서 사용하는 실무 규약

7.4.0.1 염색체 집합.

autoscan은 보통 canonical 염색체(chr1–chr19, chrX, chrY)를 대상으로 하며, 특별한 목적이 없으면 unlocalized contig를 제외할 수 있다.

7.4.0.2 softmask fraction = repeat proxy.

repeat proxy 축은 soft-masked FASTA 창에서 소문자 A/C/G/T의 비율로 정의한다. 이는 repeat family 분해가 아니라, archetype 균형화에 충분한 단일 스칼라다.

7.4.0.3 TSS 중복 제거.

여러 전사체 엔트리가 동일한 TSS를 공유하면 MOTOR를 중복 제거하거나 유지할 수 있다. 정책은 LOCK 또는 STATE로 기록되어야 하며 카운트에 반영되어야 한다.

7.5 실패 모드(및 탐지 방법)

7.5.0.1 잘못된 어셈블리(mm10 vs mm39).

증상: 많은 transcript가 추출 구간 밖으로 떨어짐; gene-dense 영역에서 MOTOR가 거의 0; 염색체 길이 불일치. 대응: 어셈블리 메타데이터를 강제하고, 정확한 입력을 해시로 잠근다.

7.5.0.2 염색체 이름 불일치.

증상: annotation 파서가 염색체 ID 불일치로 모터를 0개 생성. 대응: 다운로드/추출 단계에서 이름을 정규화하고, 정규화 규칙을 파라미터로 기록.

7.5.0.3 softmask 부재 또는 불일치.

증상: repeat proxy 축이 붕괴(대부분 창에서 softmask fraction \(\approx 0\)). 대응: soft-masked FASTA 사용 여부를 확인하고, 마스킹 존재 여부를 기록.

7.5.0.4 주석 버전 드리프트.

증상: gene density 분포 이동, 삼분위 컷오프 변화. 대응: 주석 릴리스를 LOCK의 일부로 취급하고 해시를 기록; 입력이 바뀌면 표 3를 재생성.

7.5.0.5 어셈블리 갭/고-N 창.

증상: 모호 염기가 많아 GC/CpG 추정이 불안정. 대응: 유효 염기 비율 필터를 적용(파라미터에 기록)하고 제외된 창을 라벨링.

8 mm39 autoscan에서 대표 구간 패널로

본 절은 전체 mm39 게놈을 자동으로 스캔하여 대표 구간 패널(\(N\approx 30\)–100)를 결정론적으로 선택하는 절차를 문서화한다. 핵심은, 대표 구간이 특정 연구자의 직관에 의해 선택되지 않고, 4축 archetype 공간을 균일하게 커버하도록 선택된다는 점이다.

8.1 윈도잉 스킴과 후보 집합

우리는 고정된 창 길이 \(W_0\)와 스텝 \(S_0\)로 게놈을 슬라이딩하며 후보 창을 만든다. 후보 창은 다음 필터를 통과해야 한다:

  • canonical 염색체 집합(기본: chr1–chr19, chrX, chrY),

  • 유효 염기 비율(예: \(N\) 제외)이 임계값 이상,

  • 창이 어셈블리 경계/갭에서 심각하게 손상되지 않을 것.

필터 파라미터는 autoscan LOCK/STATE로 기록되어야 하며, 동일 파라미터에서만 재현 비교가 가능하다.

8.2 Autoscan 관측량(4개 구조 축)

각 후보 창에서 다음 관측량을 계산한다(정의는 7의 provenance 규약을 따른다).

정의 29 (유전자 밀도(gene density)). 해당 창에 속하는 TSS의 개수를 센 뒤 Mb당 개수로 정규화한다.

정의 30 (반복서열 proxy(repeat proxy)). soft-masked FASTA에서 소문자 염기의 비율을 계산한다. (Repeat family 분해가 아니라, 단일 스칼라 proxy로 사용한다.)

정의 31 (GC 비율). 유효 염기 중 G/C의 비율.

정의 32 (CpG 밀도). 유효 염기에서 “CG” 다이뉴클레오타이드의 밀도.

8.3 Binning: 축별 삼분위(L/M/H)

각 축에 대해 후보 창 분포에서 삼분위 컷오프 \((q_1,q_2)\)를 계산하고, 각 창을 L/M/H로 라벨링한다. 컷오프는 evidence로 고정되며(표 3), 축 정의/필터가 바뀌면 컷오프와 분포가 바뀌므로 새로운 evidence가 된다.

8.4 Archetype 정의(4축 bin)

네 축 라벨의 데카르트 곱은 \(3^4=81\)개의 archetype을 만든다. 각 창은 다음과 같은 archetype ID로 표현할 수 있다: \[\mathrm{archetype}(w) := (\ell_G,\ell_R,\ell_{GC},\ell_{CpG}) \in \{L,M,H\}^4,\] 여기서 \(G\)는 gene density, \(R\)은 repeat proxy를 의미한다. 이 표현은 표 3와 그림 [fig:archetype_grid]에서 사용한다.

8.5 선택 알고리즘(coverage 우선, 균일성 보조)

대표 패널은 다음 원칙으로 선택한다:

  1. coverage-first: 가능한 한 많은 archetype을 커버한다.

  2. uniformity-second: 같은 예산 \(N\)에서 주변(marginal) 분포가 심하게 치우치지 않도록 한다.

  3. deterministic: 동률(tie) 상황에서의 선택은 완전히 결정론적이어야 한다.

구현은 greedy 방식으로 가능하며, 각 단계에서 “새로운 archetype 커버”를 최대화하고, 동시에 축별 주변 분포가 목표(가능한 균등)에 가까워지도록 score를 구성한다. 동률은 창의 좌표 사전순 정렬(또는 해시 기반 key)로 깨며, 이 규칙은 LOCK의 일부다.

8.6 구간 추출 및 STEP18 job 구성

선택된 창 집합이 정해지면, 각 창에 대해 다음 derived inputs를 생성한다:

  • 구간 FASTA (해당 창 서열만 포함),

  • 구간 GTF (해당 창과 교차하는 transcript 엔트리만 포함),

  • DATA_LOCKrun_id.

그 다음, end-to-end 스크립트는 각 구간을 KEY\(\rightarrow\)A4 및 PCTS\(\rightarrow\)처리하는 job 목록을 생성한다. 본 백서의 재현성 번들에서는 가 이 과정을 자동으로 수행한다 .

8.7 실패 모드(autoscan/선택/추출)

8.7.0.1 후보 창 필터 편향.

너무 강한 필터는 archetype 공간 자체를 축소한다. 필터는 파라미터로 명시하고, 후보 수/필터 후 분포를 기록해야 한다.

8.7.0.2 주석 불일치로 인한 gene density 붕괴.

어셈블리/주석 불일치가 있으면 gene density 축이 잘못된다. 이는 provenance 게이트로 탐지해야 한다(7).

8.7.0.3 repeat proxy의 비정상 분포.

softmask가 없으면 repeat 축이 거의 0으로 붕괴한다. softmask 사용 여부는 입력 provenance의 일부다.

8.7.0.4 동률 결정 규칙 미고정.

동률 깨기 규칙이 OS/파이썬 버전에 따라 달라지면 패널이 달라진다. 따라서 tie-break는 완전히 결정론적이어야 하며, 정렬 규칙을 LOCK으로 고정해야 한다.

9 결과: archetype 커버리지(표 1; 그림 1)

본 절은 autoscan binning 및 대표 패널 선택 결과를 고정 증거로 기록한다. 관리(TeX 단일화) 관점에서 외부 이미지 파일을 본 프로젝트에 포함하지 않는다. 대신, 그림 [fig:archetype_grid]는 TeX 내부에서 직접 렌더링되는 9\(\times\)9 점유도 테이블로 제공한다 (선택 패널이 4축 archetype 공간에서 어떻게 분포하는지에 대한 최소 통계적 뷰).

9.1 Bin 컷오프와 주변 균형(표 1)

표 3는 각 축에 대한 삼분위 컷오프 \((q_1,q_2)\)와, 선택된 패널이 L/M/H에 걸쳐 얼마나 균형 잡혀 있는지(주변 분포)를 기록한다. 이는 대표 선택이 특정 축에 과도하게 편향되지 않았음을 간단히 검증하는 장치다.

mm39 autoscan archetype bins and selection balance (Table 1).
Axis Observable \(q_{1}\) \(q_{2}\) Sel(L) Sel(M) Sel(H) Notes
G TSS per Mb (refGene transcripts) 10 18.8 25 29 26
R softmask fraction (repeat proxy; lowercase A/C/G/T) 0.40285 0.473893 26 30 24
GC GC fraction (A/C/G/T only; N excluded) 0.400741 0.427662 23 33 24
CPG CpG per kb (count(CG)/kb; N excluded) 6.908133 9.018333 24 35 21
Archetype (4-axis) Archetype = (G_bin, R_bin, GC_bin, CPG_bin), each in (L,M,H) N_selected=80; candidate_windows=522; archetypes_present=49; archetypes_covered=49/81 (60.5%)
Uniformity Counts over covered archetypes (nonzero 9x9 cells) min/median/max=1/2.0/2; entropy_ratio=0.988; gini=0.142; CV=0.295
Parameters Scan and selection settings assembly=mm39(UCSC); chroms=chr1–19,X,Y; win=5,000,000; step=5,000,000; valid_frac\(\ge\)0.8; bins=terciles; target_N=80; selection=coverage-first; dup(max2)

9.2 Archetype 커버리지(coverage) 계산

네 축의 삼분위 라벨 조합은 총 \(81\)개의 archetype을 만든다. 예산 \(N=80\)에서는 이론적으로 모든 archetype을 1개씩 완전히 채우는 것은 불가능할 수 있으며, 실제 선택은 coverage-first 원칙과 주변 균형 제약의 타협 결과다.

다음 값을 사용해 커버리지를 요약한다:

  • occupied archetypes: 선택된 패널에서 점유도가 1 이상인 archetype의 수,

  • coverage fraction: 점유 archetype 수를 \(81\)로 나눈 값,

  • marginal balance: 각 축에서 L/M/H 빈도의 편향 정도(표 3).

9.3 균일성 지표와 해석상의 주의

균일성(uniformity)은 “좋다/나쁘다”의 문제가 아니라 선택 목적의 문제다. 대표 패널은 극단값만 모으는 것이 아니라, 구조적 맥락을 다양하게 포함하도록 설계되었다. 따라서 어떤 archetype은 예산 제약상 중복 선택되거나 누락될 수 있다. 중요한 것은 이러한 편향이 표와 그림으로 명시되어 있다는 점이다.

9.4 Archetype 점유도 격자(그림 1)

그림 [fig:archetype_grid]는 선택된 패널의 archetype 점유도를 9\(\times\)9 격자로 표현한다. 열(column)은 \((G,R)\) 조합(유전자 밀도, 반복 proxy)의 3\(\times\)3=9 조합을, 행(row)은 \((GC,CpG)\) 조합의 3\(\times\)3=9 조합을 나타낸다. 각 셀 값은 해당 archetype으로 분류된 선택 구간의 개수다.

9.5 Evidence lock 관점에서의 검증 포인트

본 절의 표/그림은 단순한 시각화가 아니라, 증거 잠금(evidence lock)의 일부다. 따라서 다음이 성립해야 한다:

  1. 표 3의 수치(컷오프와 빈도)는 원본 테이블 CSV와 일치해야 한다.

  2. 그림 [fig:archetype_grid]의 9\(\times\)9 격자 값은 원본 occupancy CSV와 일치해야 한다.

  3. 두 원본 파일은 evidence bundle 내 MANIFEST의 sha256과 일치해야 한다.

어느 하나라도 바뀌면, 이는 “사소한 편집”이 아니라 새로운 evidence 버전이며, DOI 및 백서 리비전 업데이트가 필요하다.

9.6 실패 모드(커버리지 증거)

9.6.0.1 컷오프가 달라짐.

후보 필터 또는 주석/어셈블리 버전이 바뀌면 컷오프와 분포가 달라진다. 이 경우 기존 표/그림은 더 이상 유효한 증거가 아니다.

9.6.0.2 선택 알고리즘의 비결정성.

tie-break가 비결정적이면 패널이 달라진다. 이 경우 동일 파라미터에서도 표/그림이 재현되지 않으며 INCONCLUSIVE 또는 FAIL이 된다.

9.6.0.3 원본 CSV와 TeX 표/그림 불일치.

TeX 내 표/그림 값이 원본 CSV와 다르면, 이는 증거 잠금 위반이다. TeX는 반드시 원본 CSV에서 생성되거나, 값이 일치함이 검증되어야 한다.

10 해석: 강성-껍질(stiffness-shell) 구조의 창발

본 절은 KEY와 만들어내는 구조가 왜 “임의의 장식”이 아니라 입력 서열 통계와 계약(gates)에서 필연적으로 유도되는지, 그 논리적 연결고리를 설명한다. 여기서 “창발(emergence)”은 새로운 물리 실체의 발견이 아니라, 규칙을 고정했을 때 구조가 결정론적으로 나타나는 현상을 의미한다.

10.1 서열 통계에서 shell/anchor로: 결정론적 coarse-graining

KEY는 서열을 창 단위로 요약하고, 강성 프록시 \(\mathrm{stiff}\)를 만든다. 이 프록시는 (GC, CpG, AT6) 같은 로컬 서열 통계의 선형 결합이며, 강건 정규화와 평활화를 거쳐 \(\tilde z(i)\)로 표현된다.

이때 shell은 \(\tilde z(i)\)의 삼분위 라벨(L/M/H)의 연속 구간을 병합한 것이다. 따라서 shell은 “해석자의 주관”이 아니라, 고정된 통계 규칙의 출력이다. 앵커는 shell 경계와 국소 극값으로부터 유도되므로, anchor 구조 역시 동일한 의미에서 결정론적 coarse-graining의 산물이다.

10.2 모터와 루프: 제약된 결합(constrained couplings)

주석이 제공되면, 모터는 TSS로부터 추출된다. 이는 기능적 의미를 예측하려는 것이 아니라, 서열 기반 shell/anchor 구조 위에 주석 기반 “구동점”을 배치하는 최소 규칙이다.

루프는 모터와 앵커를 제한된 규칙(예: \(k\)-최근접)으로 결합한 것이다. 따라서 루프 구조는 (a) 서열 통계에 의해 유도된 앵커, (b) 주석에 의해 주어진 모터, (c) 결합 규칙 의 세 요소가 잠겨 있을 때 결정된다.

10.3 JEVENT: 비가역 안정화(ledger semantics)

JEVENT는 비가역 업데이트이며, 원장에 기록된다. JEVENT의 핵심 의미론은 다음이다:

  • 비가역성: 사건 전/후 상태가 원장에 기록되므로, 사건은 “되돌릴 수 없는 역사”가 된다.

  • 적격성: \(\Delta E_{\mathrm{diss}}<0\) 및 잔류 응력 비증가라는 게이트를 통과해야 한다.

즉, JEVENT는 단순한 로그가 아니라, 게이트가 강제하는 안정화(stabilization)의 기록이다.

10.4 여기서 “창발”이 의미하는 것

본 백서에서 창발이란 다음과 같다:

  • 활동 문법을 고정하고,

  • 입력을 해시로 잠그고,

  • 산출물 및 게이트를 모두 잠그면,

shell/anchor/motor/loop 및 JEVENT 패턴이 임의의 해석자 선택 없이 산출된다는 의미다.

이는 생물학적 의미의 창발(예: phenotype)의 주장과는 다르며, 재현 가능한 구조 생성 규칙에 대한 주장이다.

10.5 스케일 거동과 멀티스케일 KEY

단일 스케일 KEY는 특정 창 크기에서의 경계를 강조한다. 멀티스케일 KEY는 서로 다른 스케일에서의 경계 후보를 합성하여, “해석”의 스케일 민감도를 낮추려는 선택이다.

중요한 점은: 멀티스케일이 “더 진실”을 의미하지는 않는다. 다만, LOCK된 규칙 하에서 더 많은 구조 후보를 일관되게 제공하여 후속 분석(예: PCTS 사건열)이 보다 안정적으로 구성되도록 돕는다.

10.6 대표 패널이 일반화에 도움이 되는 이유

대표 패널은 특정 구간만을 예시로 보이는 편향을 줄인다. 4축 archetype 공간을 커버하는 패널에서 얻는 관찰은 다음을 가능케 한다:

  • 다양한 서열 통계 맥락에서 shell/anchor의 분포를 비교,

  • 주석 밀도가 다른 영역에서 motor/loop의 안정성 비교,

  • 게이트 위반이 발생하는 “경계 사례”의 유형화.

10.7 해석의 한계(진실성 제약)

본 문서는 다음을 명시한다:

  • 기능을 예측하지 않으며, 실험적 의미를 “정답”으로 제공하지 않는다.

  • 강성 프록시는 구조 다양성을 생성하는 도구이며, 물리량의 보편적 추정기라고 주장하지 않는다.

  • 결과는 LOCK/계약 하에서 재현 가능하다는 의미이며, 생물학적 참(truth)을 완전히 대체한다는 의미가 아니다.

11 검증(Validation)과 실패 모드

본 절은 “validated”의 의미를 계층(layer)별로 정의하고, 실패(FAIL)와 불확정(INCONCLUSIVE)을 어떻게 해석해야 하는지, 그리고 가장 흔한 실패 모드를 어디에서 탐지하는지 문서화한다.

11.1 검증 레벨(Validation levels)

실행(run)의 검증은 다음 레벨로 생각할 수 있다:

  1. L0 (형식/파일 존재): 산출 파일이 생성되었는가?

  2. L1 (해시 잠금): DATA_LOCKMANIFEST가 존재하고 해시가 일치하는가?

  3. L2 (스키마 완전성): A4/고정 스키마를 만족하는가?

  4. L3 (적격성 게이트): \(\Delta E_{\mathrm{diss}}<0\), 잔류 응력 비증가 등 핵심 게이트가 PASS인가?

  5. L4 (재현성): 동일 LOCK/seed에서 동일 run_id와 동일 MANIFEST를 재현하는가?

본 백서에서 “validated bundle”은 최소 L1–L3을 만족해야 하며, L4는 동일 환경/동일 스크립트에서 재현 가능함을 의미한다 .

11.2 번들 레벨 검증(Bundle-level validation)

번들 레벨에서의 최소 검증 체크리스트:

  • DATA_LOCK 존재 + canonical JSON + run_id 일치,

  • MANIFEST 존재 + 모든 listed file sha256이 실제 파일과 일치,

  • INDEX 존재 + 필수 열 존재 + run_id 연결 가능,

  • 표/그림 원본 CSV 및 TeX 내 값이 일치(증거 잠금),

  • DOI 감사 스크립트 PASS.

11.3 게이트 분류(권장 최소 세트)

최소 권장 게이트는 두 묶음이다:

11.3.0.1 (A) 감사/완전성 게이트

  • G_LOCK_PRESENT

  • G_MANIFEST_PRESENT

  • G_MANIFEST_MATCH

  • G_SCHEMA_COMPLETE

11.3.0.2 (B) 적격성(물리/논리) 게이트

  • G_\Delta E: 모든 JEVENT에서 \(\Delta E_{\mathrm{diss}}<0\)

  • G_PRES: \(\mathrm{pres}_{post}\le \mathrm{pres}_{pre}\)

이 외의 게이트는 확장 가능하지만, “핵심”과 “부가”를 명확히 구분해야 한다.

11.4 FAIL과 INCONCLUSIVE의 해석

11.4.0.1 FAIL.

FAIL은 모델/구현이 계약을 위반했음을 의미한다. 이때 FAIL은 나쁜 결과를 숨기는 것이 아니라, 경계 사례를 증거로 남기는 것이다.

11.4.0.2 INCONCLUSIVE.

INCONCLUSIVE는 계약의 진위를 판정할 수 없는 상태다. 예: 파일 시스템 오류, 하드웨어 문제, OS 의존적 정렬 차이 등으로 인해 재현성 비교가 신뢰할 수 없는 경우. 이때는 진단 정보를 제공하고, 재시도 조건을 명시해야 한다.

11.5 레이어별 실패 모드

11.5.0.1 입력/Provenance 레이어.

어셈블리/주석 불일치, chr 이름 불일치, softmask 부재.

11.5.0.2 KEY 레이어.

고-N 구간으로 인한 통계 붕괴, 파라미터 극단으로 인한 과/저분할, GTF 결여로 인한 motor/loop 비어 있음.

11.5.0.3 PCTS 레이어.

\(\Delta E\) 게이트 위반, 잔류 응력 비증가 위반, 난수 시드 미고정으로 인한 사건열 비재현.

11.5.0.4 Bundle 레이어.

MANIFEST 누락/불일치, 표/그림 원본과 TeX 불일치, DOI 레지스트리 누락.

11.6 파라미터 민감도와 “허용되는” 행위

허용되는 행위:

  • 명시적 STATE 스윕(예: 창 크기, 임계값 등)을 통해 민감도를 탐색하고, 각 스윕 결과를 별도 run으로 기록(각각 DATA_LOCK/MANIFEST 포함).

허용되지 않는 행위:

  • 특정 결과에 맞추어 LOCK를 사후 변경하고 기존 evidence를 덮어쓰는 것.

  • 표/그림 수치를 “보기 좋게” 임의 수정하는 것.

11.7 한계와 비목표(진실성 제약)

본 백서는 다음을 주장하지 않는다:

  • 생물학적 기능의 완전한 해석,

  • 강성 프록시의 보편적 물리량 정확도,

  • 모든 종/어셈블리에 대한 즉시 일반화(단, 계약은 일반화 가능하도록 설계됨).

우리가 주장하는 것은 감사 가능하고 재현 가능한 구조-원장 생성이다.

12 로드맵(Roadmap)

본 절은 본 백서(v1.2)가 고정하는 것과, 향후 확장 가능한 연구/엔지니어링 방향을 구분하여 제시한다. 핵심 원칙은 활동 문법을 늘리지 않고, evidence와 진단/게이트를 확장하는 것이다.

12.1 즉시 과제: 원고/증거 완결

  • TeX 단일 소스에서 표/그림 및 본문이 완전 재현 컴파일되도록 유지.

  • evidence bundle의 DOI 감사 및 MANIFEST 검증 자동화 강화.

  • 대표 패널 선택의 tie-break 규칙을 명확히 문서화.

12.2 증거 확장(마우스 mm39 내부)

  • \(N\)을 늘리거나, 특정 축(예: repeat proxy)의 극단을 더 촘촘히 샘플링하는 패널 추가.

  • 실패 사례(게이트 위반)를 의도적으로 포함하는 “edge-case” 패널.

  • 특정 염색체/구간 클래스(예: subtelomeric, pericentromeric) 중심 패널.

12.3 타 종(organism) 확장

계약 구조 자체는 종-불변이다. 종 확장은 다음 요소의 교체로 정의된다:

  • 어셈블리/주석 provenance,

  • autoscan 파라미터(창 길이, 필터),

  • 축 분포(컷오프).

이 때도 LOCK/Derive/Gate는 동일하게 유지된다.

12.4 조직/맥락 패널(활동 문법 유지)

활동 문법을 바꾸지 않고도, “어떤 맥락을 대표한다”는 증거를 강화할 수 있다. 예: 특정 조직에서 발현되는 유전자에 대한 주석 필터를 STATE로 적용하여, motor 분포가 다른 패널을 구축한다.

12.5 버저닝 전략

  • KEY/PCTS 버전은 LOCK의 일부이며, 버전 변경은 새로운 evidence 버전을 요구한다.

  • 문서 버전(v1.2 등)과 evidence DOI는 1:1로 연결하는 것을 권장한다.

  • 작은 문구 수정이라도 표/그림 수치 또는 해시가 바뀌면 “패치”가 아니라 새 버전이다.

12.6 장기 연구 방향(비구속, non-binding)

  • 더 정교한 강성 프록시(예: k-mer 기반) 탐색(단, 이는 새로운 LOCK/버전).

  • 루프 생성 규칙의 대안 비교(그러나 규칙은 반드시 결정론적).

  • JEVENT 타입 사전의 확장 여부 검토(활동 문법은 유지).

12.7 릴리스 플랜

  • 각 릴리스는 (PDF, TeX, scripts, schemas, manifests, table/figure sources)를 포함하는 validated bundle로 Zenodo에 업로드.

  • DOI audit 및 MANIFEST audit 결과를 릴리스 노트에 포함.

  • 재현성 cookbook(부록 B)을 업데이트하여 “한 줄 실행”을 유지.

13 파일 포맷과 스키마(File formats and schemas)

본 절은 evidence bundle에 포함되는 주요 산출 파일의 포맷을 요약한다. 정확한 필드 정의는 (i) evidence bundle에 포함된 스키마 YAML 또는 (ii) 버전 고정된 표준 파일/스크립트가 원본(source of truth)이며, 런타임 산출물은 해당 정의를 만족해야 한다.

13.1 A5 priors YAML (A5_priors_dna_v0_1.yaml)

A5 priors YAML은 LOCK(사전 가정/파라미터)을 담는다. 주요 항목 예시는 다음과 같다:

  • version: priors 파일 버전

  • axis_bins:

    • gene_density: \((q_1,q_2)\)

    • repeat_proxy: \((q_1,q_2)\)

    • GC_fraction: \((q_1,q_2)\)

    • CpG_density: \((q_1,q_2)\)

  • KEY_weights: w_gc, w_cpg, w_at6

  • KEY_params: 창 크기, 스텝, 필터, 병합 임계값 등

  • PCTS_params: max_steps, seed_policy, alpha_loop, ...

본 릴리스의 evidence-locked 번들에는 별도의 A5_priors_schema_dna_v0_1.yaml 파일을 포함하지 않는다. A5 priors의 구조(필드/의미)는 (버전 고정)과 이를 해석하는 kit 스크립트에 의해 고정된다.

13.2 A4 레이아웃 YAML (A4_layout_dna_v0_1.yaml)

A4 레이아웃 YAML은 KEY의 구조 산출물을 최소 형태로 직렬화(serialization)한 것이다. 예시 필드:

  • run_id, created_utc

  • region: chrom,start,end,assembly

  • KEY_version 및 주요 파라미터

  • shells: shell 구간 목록(시작/끝/라벨/요약치)

  • anchors: 앵커 목록(위치/강도/종류)

  • motors: 모터 목록(TSS 등)

  • loops: 루프 목록(motor-anchor 연결)

본 릴리스에서는 A4 레이아웃의 최소 직렬화가 run 디렉토리의 A4_layout_min.yaml로 산출되며, 필드 집합은 본 절의 목록과 KEY 출력 규칙(버전 고정)에 의해 고정된다. 별도의 A4_layout_schema_dna_v0_1.yaml 파일은 evidence bundle에 포함하지 않는다.

13.3 TSV 산출물(KEY 단계)

KEY 단계는 다음 TSV들을 산출한다(번들 내 경로는 INDEXMANIFEST에 기록됨):

  • window_features.tsv: 창별 (gc,cpg,at6,stiff_raw,z,z̃,tercile 라벨,...)

  • shells.tsv: shell 구간 요약

  • anchors.tsv: 앵커 목록

  • motors.tsv: 모터 목록(주석이 없으면 비어 있을 수 있음)

  • loops.tsv: 루프 목록(모터/앵커 기반)

  • key_summary.yaml: KEY 산출물 요약(카운트/파라미터/버전)

TSV 열 정의는 스키마 YAML 또는 스크립트 내 상수로 고정된다.

13.4 PCTS 산출물(J_LEDGER 및 gate table)

PCTS 단계는 다음을 산출한다:

  • J_LEDGER.tsv: 비가역 사건 원장(각 행이 JEVENT)

  • gate_table.tsv: 게이트별 PASS/FAIL/INCONCLUSIVE와 이유

최소 run_id, event_id, event_type, t_step, deltaE_diss, pres_pre, pres_post, ...를 포함해야 한다. gate table은 최소 gate_id, verdict, reason, ...를 포함해야 한다.

전체 스키마는 evidence bundle 내 J_LEDGER_schema_dna_v0_1.yaml 및 관련 schema 파일이 정의한다.

14 재현성 cookbook(정확한 명령)

본 부록은 본 백서의 재현 가능한 증거 번들을 직접 생성/검증하기 위한 정확한 명령 목록을 제공한다. 가능한 한 “한 번의 실행”으로 끝나도록 설계된 end-to-end 스크립트를 우선 제공하며, 필요한 경우 단계별로 분해된 명령을 함께 제시한다.

14.1 B.0 최종적으로 얻어야 하는 것

전체 절차를 완료하면 다음을 얻어야 한다:

  • autoscan 산출물(후보 창 메트릭, 컷오프, archetype 라벨, 선택 패널),

  • 선택된 패널의 각 구간에 대한 run 디렉토리(DATA_LOCK, MANIFEST, A4, J_LEDGER, gate table 포함),

  • validated bundle ZIP(해시 검증/DOI 감사 가능),

  • 동일 입력/파라미터/시드에서 재실행 시 동일한 run_id와 동일한 산출물 해시를 재현할 수 있는 능력.

14.2 B.1 환경 설정(Environment setup)

이 cookbook은 Linux/macOS의 표준 bash 환경을 가정한다. 필수 도구(최소):

  • bash, coreutils(sha256sum, sort, awk 등),

  • python3 (가상환경 사용 권장),

  • wget 또는 curl,

  • unzip.

아래는 kit(zip)를 풀어 둔 디렉토리를 가리키도록 KIT_DIR을 설정하는 예시다. (본 백서의 Zenodo 업로드 번들 내에 포함됨.)

export KIT_DIR=$PWD/mouse_mm39_autoscan_END2END_bundlekit_v1_0
cd "$KIT_DIR"
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
export WORK_DIR=$PWD/WORK_MM39_AUTOSCAN
mkdir -p "$WORK_DIR"

14.3 B.2 mm39 입력 다운로드(서열 + 주석)

이 단계는 mm39 어셈블리(soft-masked FASTA)와 주석(refGene)을 작업 디렉토리로 내려받아 end-to-end 실행에 사용할 준비를 한다.

주의:

  • 다운로드 URL은 시간이 지나며 변경될 수 있다.

  • 그러나 최종적으로는 DATA_LOCK에 sha256이 기록되므로, 동일 입력을 재현하려면 동일 sha256을 얻어야 한다.

export DATA_DIR=$PWD/DATA_SOURCES
mkdir -p "$DATA_DIR/mm39"
cd "$DATA_DIR/mm39"
# Recommended: use the provided download helper (UCSC)
./scripts/download_ucsc_mm39.sh

# If you downloaded a tar.gz manually, extract with:
tar -xzf mm39.chromFa.tar.gz
# expected output: a directory like chromFa/ containing chr*.fa files
cd "$DATA_DIR/mm39"
# curl -L -o refGene.gtf.gz <UCSC_URL>/mm39/...
gzip -d refGene.gtf.gz
cd "$DATA_DIR/mm39"
sha256sum mm39.chromFa.tar.gz > SHA256SUMS.txt
sha256sum refGene.gtf >> SHA256SUMS.txt

14.4 B.2.1 원커맨드 end-to-end 실행(권장)

가장 간단한 재현 경로는 다음 스크립트를 한 번 실행하는 것이다. 이 스크립트는 autoscan부터 선택, 구간 추출, STEP18 실행, 검증/패킹까지를 순차적으로 수행한다.

cd "$KIT_DIR"
./scripts/RUN_MM39_AUTOSCAN_END2END_v1_0.sh

14.5 B.2.2 end-to-end 스크립트가 만드는 표준 WORK_DIR 트리

end-to-end 실행이 완료되면 WORK_DIR 아래에 다음과 같은 표준 디렉토리 트리가 생성된다. (경로/파일명은 LOCK의 일부이며, MANIFEST로 고정된다.)

./scripts/RUN_MM39_AUTOSCAN_END2END_v1_0.sh
WORK_DIR/
  AUTOSCAN/
    mm39_windows_metrics.csv
    mm39_windows_archetyped.csv
    archetype_bins.yaml
    selected_regions.csv
    coverage_report.json

  EVIDENCE/
    TABLE1_mm39_archetype_coverage_v0_1.csv
    mm39_selected_regions_archetypeN80_v0_1.csv
    mm39_archetype_coverage_matrix9x9_v0_1.csv
    RUN_METADATA_mm39_archetype_coverage_v0_1.json
    MANIFEST_mm39_archetype_coverage_v0_1.json
    mm39_inputs_sha256_v0_1.txt
    mm39_archetype_coverage_TABLE1_FIG1_bundle_v0_1.zip

  RAW_REGIONS/
    regions/
      <region_id_0001>.zip
      <region_id_0002>.zip
      ...
    raw_regions_index.csv

  JOBS/
    jobs_mm39_panel.jsonl
    progress.csv
    checkpoint.pkl

  runs/
    <run_id_1>/
      DATA_LOCK/
        data_lock.json
      DERIVED/
        KEY_v0_4/
          A4_layout_min.yaml
          anchors.tsv
          motors.tsv
          loops.tsv
          shells_fine.tsv
          shells_coarse.tsv
          boundaries_fine.tsv
          boundaries_coarse.tsv
          KEY_RUN.json
      OUTPUT/
        PCTS_v0_2/
          snapshots.csv
          J_LEDGER.csv
          gate_table.csv
          verdict.json
      MANIFEST.json
    <run_id_2>/
      ...
  INDEX.csv

  mouse_dna_mm39_autoscan_VALIDATED_bundle.zip   (optional)

14.6 B.3 Autoscan: 후보 창 메트릭 계산

autoscan은 전체 게놈에서 후보 창을 생성하고, 각 창에 대해 4축 메트릭(gene density, repeat proxy, GC fraction, CpG density)을 계산한다. 산출물은 이후의 컷오프 계산 및 archetype 라벨링, 패널 선택의 입력이 된다.

python scripts/scan_mm39_windows.py \
  --chrom_fa_dir "$DATA_DIR/mm39/chromFa" \
  --gtf "$DATA_DIR/mm39/refGene.gtf" \
  --win_bp 5000000 \
  --step_bp 5000000 \
  --valid_frac_min 0.80 \
  --out_csv "$WORK_DIR/AUTOSCAN/mm39_windows_metrics.csv"
chrom, start, end, valid_frac,
gc_frac, cpg_per_kb,
softmask_frac,
tss_count, gene_density_per_mb

14.7 B.4 삼분위 컷오프 계산 및 4축 archetype 할당

B.3에서 계산된 후보 창 메트릭에 대해, 축별 삼분위 컷오프 \((q_1,q_2)\)를 계산하고 L/M/H 라벨을 부여한다. 그 결과 각 창은 4축 archetype ID를 갖는다.

# (implemented inside the kit's autoscan pipeline; see RUN_MM39_AUTOSCAN_END2END_v1_0.sh) \
  --metrics_csv "$WORK_DIR/AUTOSCAN/mm39_windows_metrics.csv" \
  --out_yaml "$WORK_DIR/AUTOSCAN/archetype_bins.yaml"
# (implemented inside the kit's autoscan pipeline; see RUN_MM39_AUTOSCAN_END2END_v1_0.sh) \
  --metrics_csv "$WORK_DIR/AUTOSCAN/mm39_windows_metrics.csv" \
  --bins_yaml "$WORK_DIR/AUTOSCAN/archetype_bins.yaml" \
  --out_csv "$WORK_DIR/AUTOSCAN/mm39_windows_archetyped.csv"

14.8 B.5 대표 패널 선택(N=30–100)

B.4의 archetype 라벨링 결과를 사용해, 지정한 예산 \(N\)에서 archetype 커버리지를 최대화하면서 주변 균형을 유지하도록 패널을 선택한다. 결과는 선택된 구간 목록 CSV로 저장된다.

python scripts/select_representative_windows.py \
  --archetyped_csv "$WORK_DIR/AUTOSCAN/mm39_windows_archetyped.csv" \
  --target_n 80 \
  --min_sep_bp 5000000 \
  --seed 0 \
  --out_csv "$WORK_DIR/AUTOSCAN/selected_regions.csv"
# (implemented inside the kit's autoscan pipeline; see RUN_MM39_AUTOSCAN_END2END_v1_0.sh) \
  --archetyped_csv "$WORK_DIR/AUTOSCAN/mm39_windows_archetyped.csv" \
  --selected_csv "$WORK_DIR/AUTOSCAN/selected_regions.csv" \
  --out_json "$WORK_DIR/AUTOSCAN/coverage_report.json"

14.9 B.6 원시 구간(raw regions) 추출(region.fa + region.gtf) 및 raw.zip 패킹

선택된 패널의 각 구간에 대해, (1) 해당 구간 FASTA와 (2) 해당 구간과 교차하는 transcript만 포함한 GTF를 추출한다. 이 두 파일을 raw.zip로 패킹하고 sha256을 기록하여 입력 provenance를 고정한다.

python scripts/extract_regions.py \
  --selected_csv "$WORK_DIR/AUTOSCAN/selected_regions.csv" \
  --chrom_fa_dir "$DATA_DIR/mm39/chromFa" \
  --gtf "$DATA_DIR/mm39/refGene.gtf" \
  --out_dir "$WORK_DIR/RAW_REGIONS"

14.10 B.7 패널에 대해 STEP18 실행(KEY + PCTS)

STEP18은 각 구간에 대해 KEY(A4 생성)와 PCTS(J_LEDGER 생성)를 실행한다. 이 단계는 run 디렉토리를 생성하고 DATA_LOCK, MANIFEST, gate table을 산출한다.

python scripts/build_jobs_jsonl.py \
  --raw_regions_dir "$WORK_DIR/RAW_REGIONS" \
  --species_id mouse_mm39 \
  --key_version KEY_v0_4 \
  --seed 0 \
  --work_dir "$WORK_DIR" \
  --out_jsonl "$WORK_DIR/JOBS/jobs_mm39_panel.jsonl"
python batch_run.py \
  --jobs_jsonl "$WORK_DIR/JOBS/jobs_mm39_panel.jsonl" \
  --checkpoint "$WORK_DIR/JOBS/checkpoint.pkl" \
  --progress_csv "$WORK_DIR/JOBS/progress.csv" \
  --save_every 1

14.11 B.8 run 검증 및 validated bundle 패킹

모든 run 디렉토리에 대해:

  • DATA_LOCKrun_id 일치,

  • MANIFEST와 실제 파일 sha256 일치,

  • gate table PASS/FAIL/INCONCLUSIVE 기록,

을 검사한다. 그 다음 validated bundle ZIP을 만들고 최상위 sha256을 기록한다.

python validate_bundle.py --work_root "$WORK_DIR" --strict
python pack_runs.py \
  --work_dir "$WORK_DIR" \
  --out_zip "$WORK_DIR/mouse_dna_mm39_autoscan_VALIDATED_bundle.zip"

14.12 B.9 표 1 재생성(CSV 및 LaTeX)

autoscan 및 패널 선택 결과로부터 표 3에 해당하는 CSV 및 LaTeX를 재생성할 수 있다. 중요: 표의 수치는 evidence lock의 일부이므로, 재생성 결과가 기존 표와 다르면 입력/파라미터가 바뀌었거나 구현이 달라졌음을 의미한다.

python make_table1_archetype_bins.py \
  --bins_yaml "$WORK_DIR/AUTOSCAN/archetype_bins.yaml" \
  --selected_csv "$WORK_DIR/AUTOSCAN/selected_regions.csv" \
  --out_csv "tables/TABLE1_mm39_archetype_coverage.csv"

14.13 B.10 그림 관리 정책(이 TeX 프로젝트는 이미지를 포함하지 않음)

본 TeX 프로젝트는 외부 이미지 파일(.png, .pdf figure 등)을 포함하지 않는다. 그 대신 그림 [fig:archetype_grid]는 TeX 내부에서 직접 렌더링되는 9\(\times\)9 점유도 테이블이다. 이 정책은 “단일 소스(TeX)로 완전 재현 컴파일”을 우선하기 위한 것이다.

14.14 B.11 DOI 감사(DOI audit)

참고문헌에 포함된 DOI가 모두 레지스트리에 존재하는지 자동으로 검사한다. DOI 감사는 bundle 검증의 일부로 포함된다.

python doi_audit.py --registry CITATION_REGISTRY.yaml

14.15 B.12 최소 수용 체크리스트(Minimal acceptance checklist)

다음 체크리스트를 모두 만족하면, 본 백서의 핵심 재현성 요구를 충족한 것으로 간주한다:

  • 입력 잠금: 모든 run에 DATA_LOCK이 존재하고 sha256이 일치한다.

  • 산출물 잠금: 모든 run/bundle에 MANIFEST가 존재하고 실제 파일 sha256과 일치한다.

  • 스키마 완전성: A4/고정 스키마를 만족한다.

  • 게이트 기록: gate table에 PASS/FAIL/INCONCLUSIVE와 이유가 기록된다.

  • 표/그림 일치: 표 3 및 그림 [fig:archetype_grid] 값이 원본 CSV와 일치한다.

  • DOI 감사: DOI audit가 PASS한다.