2강 / 20강
상자를 여는 법 — HDF5 안에는 폴더가 들어 있다
h5py 로 열고 · 구조를 통째로 훑기
CSV라면 그냥 열면 됩니다. 첫 줄이 제목, 다음 줄부터 값. 그런데 HDF5 는 다릅니다. 왜 이런 형식을 쓸까요?
세포 40,100개 × 유전자 32,285개를 CSV로 적으면 숫자가 12억 9천만 개입니다. 한 칸에 한 글자만 써도 1.3 GB, 실제로는 2~3 GB가 됩니다. 게다가 그 중 96%가 0 이에요. 0을 저장하려고 3 GB를 쓰는 셈이죠. 그리고 유전자 이름, 바코드, 참조 유전체 이름 같은 부속 정보는 어디에 둘까요? CSV 한 장으로는 담을 곳이 없습니다.
HDF5(Hierarchical Data Format 5)는 이 두 문제를 한 번에 풉니다. 파일 하나 안에 폴더 구조를 넣고, 각 칸을 압축해서 저장합니다.
우리가 아는 폴더
그룹(Group) = 폴더
데이터셋(Dataset) = 파일
속성(Attribute) = 파일에 붙인 메모
탐색기에서 폴더를 여는 것과 똑같이 생각하면 됩니다
GSE268555 의 h5 안
matrix/ 라는 폴더 하나
그 안에 data · indices · indptr · shape · barcodes
그리고 features/ 라는 하위 폴더
10x Genomics 가 정한 표준 배치입니다
최상위에는 matrix 하나뿐입니다. 10x 형식의 h5 는 모두 이렇게 생겼습니다.
Python
브라우저에서 실행
이 여덟 줄짜리 함수가 이 강의에서 가장 자주 쓰게 될 도구입니다. 처음 보는 h5 를 받으면 무조건 이것부터 돌립니다.
Python
브라우저에서 실행
여기에 적힌 chemistry_description 과 software_version 이 곧 결정적인 단서가 됩니다.
Python
브라우저에서 실행
🤔 확인 문제
HDF5 를 CSV 대신 쓰는 가장 큰 이유 두 가지는?
해설 행렬 · 유전자 이름 · 바코드 · 참조 유전체 정보를 한 파일 안에 각각의 자리로 담고, 각 데이터셋을 개별 압축합니다. CSV 로 2~3 GB 짜리가 h5 로 40 MB 가 되는 이유입니다.
🤔 확인 문제
h5py.File(...) 을 with 문으로 여는 이유는?해설 닫지 않은 h5 파일은 잠긴 상태로 남습니다. 같은 파일을 다시 열려 하면
unable to lock file 오류가 나고, 커널을 재시작해야 풀리는 경우도 있습니다.🤔 확인 문제
파일 속성의 CellRanger 버전(7.0.1)과 GEO 설명글(2.1.0)이 다를 때 어느 쪽을 믿어야 할까요?
해설 물론 저자 문의도 좋은 선택입니다. 다만 기계가 자동으로 남긴 값은 사람이 옮겨 적은 값보다 거의 언제나 정확합니다. 데이터를 다룰 때 이 우선순위를 몸에 익혀 두세요.