7강 / 20강
나쁜 세포를 골라낸다 — 문턱은 어떻게 정하는가
총 UMI · 검출 유전자 수 · 미토콘드리아 비율
1강에서 우리가 받은 것은 filtered 행렬이라고 했습니다. 그런데 그 "filtered" 는 "물방울에 세포가 들어 있었는가" 만 걸러 낸 것입니다. 그 세포가 쓸 만한가는 전혀 다른 문제예요.
단일세포 실험에서 흔히 섞여 들어오는 불량품은 세 종류입니다.
그래서 세포마다 세 가지 숫자를 잽니다. 총 UMI, 검출된 유전자 수, 미토콘드리아 유전자의 비율. 이 세 가지가 단일세포 QC 의 기본 삼종 세트입니다.
미토콘드리아 유전자 접두사는 종에 따라 다릅니다. 생쥐
mt-, 사람 MT-. 이걸 틀리면 미토 % 가 전부 0 으로 나와요.
Python
브라우저에서 실행
미토 86.7% 짜리 세포가 있습니다 — 완전히 죽어 버린 세포예요. 이런 것이 섞이면 뒤의 군집이 통째로 오염됩니다.
Python
브라우저에서 실행
문턱은 어디서 오는가 — 정답이 없다는 것이 정답
학생들이 가장 많이 하는 질문입니다. "왜 하필 1000, 500, 10% 인가요?" 정직하게 답하면 관습과 눈대중입니다. 그리고 그것이 이 분야의 실제 모습이에요.
| 기준 | 흔히 쓰는 값 | 근거 |
|---|---|---|
| 총 UMI | 500 ~ 1,000 이상 | 이보다 낮으면 신호 대 잡음이 무너진다 |
| 검출 유전자 | 200 ~ 500 이상 | Seurat 기본 튜토리얼이 200을 쓴다 |
| 미토 % | 5 ~ 20% 미만 | 조직마다 다르다. 심근·간은 원래 높다 |
중요한 것은 고른 값이 아니라 고른 이유를 적어 두는 것입니다. 그리고 문턱을 바꿔 봤을 때 결론이 뒤집히는지 확인하는 일이에요. 결론이 문턱에 따라 뒤집힌다면, 그 결론은 애초에 약한 것입니다.
🤔 확인 문제
미토콘드리아 유전자 비율이 높은 세포를 버리는 이유는?
해설 미토콘드리아는 이중막에 싸여 있어 세포가 터져도 안의 RNA 가 비교적 오래 남습니다. 그래서 전체 중 미토 RNA 의 비중이 커지면 '이 세포는 이미 새고 있다'는 신호가 됩니다. 다만 조직마다 정상 범위가 다르므로 5%를 기계적으로 적용하면 안 됩니다.
🤔 확인 문제
생쥐 자료에 사람용 코드
startswith("MT-") 를 그대로 썼습니다. 무슨 일이 벌어질까요?해설 가장 무서운 종류의 버그입니다 — 조용히 틀립니다. 계산 결과가 전부 0 이거나 전부 같은 값이면 반드시 코드를 다시 보세요. 이 습관 하나가 며칠을 아껴 줍니다.
🤔 확인 문제
QC 문턱을 정하는 올바른 태도는?
해설 문턱에는 정답이 없습니다. 그래서 재현 가능성과 강건성으로 대신합니다. 이유를 적어 두면 남이 검증할 수 있고, 값을 흔들어 봐서 결론이 버티면 그 결론은 믿을 만합니다.