5강 / 20강
이름표 읽기 — 유전자 이름은 생각보다 위험하다
features(id·name·type) · barcodes · 중복 이름의 함정
지금까지 우리가 만진 것은 숫자 덩어리였습니다. 이제 이름표를 붙일 차례입니다.
matrix/features/ 안에는 유전자 이름표가 네 가지로 들어 있었습니다.
| 데이터셋 | 예시 | 뜻 |
|---|---|---|
id | ENSMUSG00000026395 | Ensembl 유전자 번호 — 절대 겹치지 않는다 |
name | Ptprc | 사람이 읽는 심볼 — 겹칠 수 있다 |
feature_type | Gene Expression | 측정 종류 (항체 태그가 섞이면 여기가 달라진다) |
genome | mm10 | 어느 참조 유전체에 맞췄나 |
그리고 matrix/barcodes 에는 AAACCTGAGAGCTGGT-1 같은 문자열이 있습니다.
앞의 16글자는 세포를 감싼 기름방울에 붙어 있던 DNA 꼬리표이고,
뒤의 -1 은 몇 번째 실험(GEM well)에서 나왔는지를 뜻합니다.
b'...' 를 .decode() 로 푸는 것을 잊지 마세요. HDF5 의 문자열은 바이트로 들어 있습니다.
Python
브라우저에서 실행
실제로 겹칩니다. 이래서 연결·병합의 기준은 언제나 id 여야 합니다.
Python
브라우저에서 실행
상위권에 mt- 로 시작하는 미토콘드리아 유전자와 Rps·Rpl 리보솜 유전자가 잔뜩 보일 겁니다. 다음 강의의 주인공들입니다.
Python
브라우저에서 실행
10x 삼총사 — h5 말고 다른 형태로 받을 때
GEO 에서 어떤 연구는 h5 대신 파일 세 개를 올립니다.
matrix.mtx.gz · features.tsv.gz · barcodes.tsv.gz.
내용은 h5 와 완전히 같습니다. 담는 그릇만 다를 뿐이에요.
그리고 이건 텍스트라서 눈으로 읽을 수 있습니다.
%%MatrixMarket 머리글, 그 다음 행 열 값 세 숫자가 한 줄씩. CSC 와 담는 방식만 다릅니다.
Python
브라우저에서 실행
1부터 세는 것에 주의하세요. 파이썬은 0부터라
-1 을 빼 줘야 합니다. 여기서 어긋나면 유전자가 한 칸씩 밀립니다.
Python
브라우저에서 실행
12개 세포의 민낯입니다. Ptprc(=Cd45)가 대부분에서 켜져 있는 것이 보이나요? CD45⁺ 로 골라 낸 세포들이니 당연합니다.
Python
브라우저에서 실행
🤔 확인 문제
두 데이터셋을 유전자 기준으로 합칠 때 무엇을 열쇠로 써야 할까요?
해설 심볼은 겹칠 수 있고 시간이 지나면 바뀝니다(MARCH1 → MARCHF1). 행 번호는 참조 유전체 버전이 다르면 완전히 어긋나고요. Ensembl id 로 합치고, 심볼은 마지막에 보여 주기용으로 붙이는 것이 정석입니다.
🤔 확인 문제
바코드
AAACCTGAGAGCTGGT-1 의 -1 은 무엇인가요?해설 16염기 바코드는 표본끼리 겹칠 수 있습니다. 같은 바코드 서열이 다른 생쥐에서도 나올 수 있죠. 그래서 합칠 때 접미사로 구분합니다. 이 접미사를 무시하고 합치면 서로 다른 세포가 하나로 뭉개집니다.
🤔 확인 문제
유전자 목록을 엑셀로 열면 안 되는 이유는?
해설 실제로 논문 부록의 상당수가 이 오염을 겪었고, 결국 2020년에 유전자 이름 표준 자체를 바꾸는 것으로 대응했습니다. 굳이 표로 봐야 한다면 pandas 로 읽으세요.