0003. 렌더러는 모양 단위로 코어에, 분야 지식은 팩에¶
- 상태: 채택
- 날짜: 2026-10-07
배경¶
fig-atlas는 NGS 논문에서 시작했지만, 다른 분야(이미징, 전기생리, 임상)의 그림 관리에도 쓰여야 한다. 처음에는 렌더러를 "범용 / NGS"로 나누려 했다. 그러나 막대, 선, 산점도, 히트맵은 어느 분야에서나 같은 모양이고, 분야에 따라 달라지는 것은 열 이름, 용어, 기본값, 데이터 읽기다. 이 분류를 사용자에게 맡기면 같은 모양이 분야마다 중복된다.
결정¶
- 렌더러는 모양이다. 처음 쓴 데이터가 오믹스여도 막대·선·산점도·히트맵·점 행렬은 코어(
fig_atlas/renderers/)에 둔다. - 분야 팩(예:
fig_atlas_omics)에는 그 분야에 고유한 것만 둔다. - 데이터 읽기·반입 어댑터
- 번들 계약
- 레시피: 코어 모양 + 분야의 열 역할·용어·기본값
- 분석 도우미
- 그 분야 밖에서 의미가 없는 모양(서열 로고, 유전체 트랙)만 팩 렌더러로 둔다.
- 코어는 팩을 import하지 않는다. 팩은 entry point로 렌더러·레시피·계약·반입 매핑·CLI 명령을 등록한다.
- 스크립트는
fig_atlas.render("<이름>", ...)로 그린다. 렌더러가 어느 패키지에 있는지 몰라도 되므로, 렌더러를 옮겨도 스크립트가 깨지지 않는다.
결과¶
- 새 분야는 코어를 고치지 않고 팩을 더해 시작한다(
docs/howto/new_domain_pack.md, 예제 팩은 테스트가 실제로 만든다). - 기존 오믹스 렌더러는 한 번에 하나씩 코어 모양 + 레시피로 옮긴다(로드맵 6a.3). volcano·ma_plot이 첫 사례다.
- 지키는 장치:
tests/test_core_boundary.py: 코어가 팩을 import하지 않는지fa renderers: 어디에 무엇이 있는지 목록fa new renderer: 기본 위치가 코어이고, 팩을 고르면 이 원칙을 안내한다