19강 / 20강
남이 다시 돌릴 수 있게 — 반년 뒤의 나를 위해
폴더 구조 · 버전 고정 · 난수 씨앗 · 체크섬
여기까지 분석을 마쳤다고 합시다. 여섯 달 뒤 심사평이 옵니다. "미토콘드리아 문턱을 5%로 했을 때도 결론이 유지되는지 보여 주세요."
그때 여러분이 해야 할 일은 문턱 하나를 바꾸고 다시 돌리는 것뿐이어야 합니다. "그 그림을 어떤 코드로 만들었더라…" 를 뒤지는 시간이 되어서는 안 돼요.
폴더 구조 — 이 다섯 칸이면 충분합니다
프로젝트/
├── data/raw/ 내려받은 원본. 절대 수정하지 않는다. 읽기 전용으로 잠가 둔다.
├── data/processed/ 코드가 만들어 낸 중간 결과. 지워도 다시 만들 수 있어야 한다.
├── code/ 01_download.py 02_qc.py 03_cluster.py … 번호를 붙인다.
├── figures/ 코드가 자동으로 저장한 그림. 손으로 만들지 않는다.
└── README.md 무엇을, 왜, 어떤 순서로. 여기가 시작점.
핵심 원칙은 하나입니다. data/raw 를 제외한 모든 것은 코드로 다시 만들 수 있어야 한다. 손으로 엑셀에서 고친 파일이 하나라도 끼면 그 사슬은 끊어집니다.
이 열 줄이 재현성의 8할입니다. 버전과 설정만 남아 있어도 남이 따라올 수 있어요.
Python
브라우저에서 실행
번호는 바뀌어도 생물학적 결론이 유지되면 그 결과는 믿을 만합니다.
Python
브라우저에서 실행
파일 이름은 바뀔 수 있고 크기는 우연히 같을 수 있습니다. 지문은 거짓말하지 않습니다.
Python
브라우저에서 실행
🤔 확인 문제
data/raw 폴더를 읽기 전용으로 잠가 두는 이유는?해설 원본은 모든 주장의 뿌리입니다. 여기가 흔들리면 아래의 모든 것이 무의미해져요. 실무에서는
chmod 444 로 잠그거나 별도 저장소에 두고 심볼릭 링크만 씁니다.🤔 확인 문제
난수 씨앗을 고정했는데도 다른 컴퓨터에서 결과가 조금 달랐습니다. 가장 흔한 원인은?
해설 씨앗은 같은 환경 안에서만 재현을 보장합니다. 완전한 재현에는 버전 고정(requirements.txt·lock 파일)이나 컨테이너가 필요해요. 그래서 씨앗을 바꿔도 결론이 유지되는지 확인하는 것이 더 실용적입니다.
🤔 확인 문제
논문에 QC 문턱과 세포 수만 적고 코드는 공개하지 않았습니다. 어떤 문제가 생길까요?
해설 실제로 이 논문의 부록대로 QC 를 적용하면 38,469개가 나오고, 논문은 29,343개라고 적었습니다(7강). 글로 적는 순간 반드시 무언가가 빠지기 때문에, 코드가 유일하게 완전한 기록입니다.