3. 데이터 준비: 번들¶
이런 적 있으시죠? 분석 결과 표를 그림용으로 열 이름을 바꾸고 몇 줄 지워서 따로 저장했는데, 나중에 원본 결과와 맞지 않아 어디서 바뀌었는지 찾느라 고생했다.
핵심: 그림에 쓰는 데이터는 번들이라는 정해진 모양의 폴더로 받고, 받은 그대로 두고 읽기만 합니다. 바꾸고 싶은 것은 그림을 그릴 때 설정으로 바꿉니다.
번들의 모양¶
번들은 패널 하나에 들어갈 데이터입니다. 폴더 하나에 파일 두 개가 들어 있습니다.
dose_response/ ← 번들 폴더 (이름은 자유)
inputs/
data.csv ← 그림이 읽는 표
metadata/
metadata.yaml ← "무슨 그림인지" 적은 메모
data.csv 는 엑셀에서 "CSV로 저장"한 것과 같은 표입니다. 예제의 처음 몇 줄입니다.
| compound | dose_uM | replicate | viability |
|---|---|---|---|
| compound A | 0.01 | 1 | 98.3 |
| compound A | 0.01 | 2 | 92.95 |
| … | … | … | … |
metadata.yaml 에는 어떤 그림으로 그릴지(plot_type)와 처음 그릴 때의 설정(plot_params)이 들어 있습니다.
plot_type: line_band # 선 + 오차 띠 그림
plot_params:
x_col: dose_uM # 가로축에 쓸 열
y_col: viability # 세로축에 쓸 열
group_col: compound # 선을 나눌 열
x_log: true # 가로축을 로그 눈금으로
labels_title: "Viability after 48 h"
어떤 그림 종류(plot_type)가 있고 각각 어떤 열이 필요한지는 데이터 번들 계약서에 정리되어 있습니다. 분야와 무관한 기본 그림(선 + 오차 띠, 효과 대 유의성 산점도, 벤 다이어그램, 현미경 이미지)과 오믹스 그림(volcano, GO 등)이 있습니다.
어디에 두나¶
| 데이터 | 위치 |
|---|---|
| 실제 연구 데이터 | raw_data/연구이름/프로젝트이름/번들이름/ — 연구실 컴퓨터에만 있고 저장소(GitHub)에는 올라가지 않습니다. |
| 예제 데이터 | examples/ — 연습과 문서용 |
분석 파이프라인(예: 시퀀싱 2차 분석 도구)이 이 모양대로 내보내 주면, 연구자는 폴더를 옮겨 놓기만 하면 됩니다.
원본은 고치지 않습니다¶
번들의 표는 분석 결과 그대로 둡니다. 그림을 위해 바꾸고 싶은 것은 대부분 설정에서 할 수 있습니다.
| 하고 싶은 일 | 원본을 고치는 대신 |
|---|---|
샘플 이름을 짧게 (Chronic_24H_vs_Control → 24 h) |
설정의 이름 바꾸기 표(…_rename_map, group_labels) |
| 축 범위를 자르기 | 설정의 x_min, x_max 등 |
| 일부 항목만 그리기 | 설정의 순서·선택 값(group_order, 상위 N개 등) |
| 값을 다시 계산하기 (정규화, 다른 기준) | 분석 파이프라인에서 새 번들로 다시 내보내기. 무엇을 바꿨는지 요청 문서로 남깁니다(11장). |
이렇게 하는 이유는 그림이 어떤 데이터에서 왔는지 언제든 증명할 수 있어야 하기 때문입니다. 빌드는 번들 파일의 지문(내용이 1바이트만 달라도 바뀌는 값)을 기록합니다. 원본이 바뀌면 그 그림이 낡았다고 알려 줍니다(10장).
번들 검사¶
그림을 그리기 전에 번들이 계약서에 맞는지 검사합니다.
💬 AI에게: "examples/dose_response 번들을 검사해 줘."
⌨ 명령: fa bundle check examples/dose_response
결과는 세 가지 중 하나입니다.
| 결과 | 뜻 | 할 일 |
|---|---|---|
| ok | 그림을 그릴 수 있습니다. | 4장으로 |
| 경고 (warn) | 그릴 수는 있지만 계약서가 권하는 열이 빠졌습니다. | 내용을 읽고 괜찮으면 진행 |
| 오류 (ERROR) | 그림에 꼭 필요한 열이 없습니다. | 원본을 고치지 말고, 메모(metadata.yaml)의 열 이름이 맞는지 보거나 데이터를 다시 내보냅니다. |
예를 들어 메모에 group_col: drug라고 적었는데 표에 drug 열이 없으면 이렇게 나옵니다.
ERROR missing column(s) named by plot_params: drug (group_col)
"메모가 group_col로 지정한 drug라는 열이 표에 없다"는 뜻입니다. 메모가 표의 실제 열 이름(compound)을 가리켜야 합니다.
- 분석 파이프라인에서 받은 번들: 번들을 만든 쪽에 메모를 고쳐 다시 내보내 달라고 요청합니다.
- 직접 만든 번들: 메모(
metadata.yaml)의 열 이름을 고칩니다. - 표(
data.csv)는 어느 경우에도 고치지 않습니다.
검사를 통과한 뒤에는 메모의 값이 설정 파일로 옮겨지고, 그다음부터는 설정 파일에서 고칩니다(6장).
이전: 2. 한눈에 보기 · 다음: 4. 첫 그림 만들기