12강 / 20강

HDF5 — 같은 행렬을 한 파일로

왜 형식이 두 벌인가, 그리고 CSC 라는 접는 법

HDF5 — 같은 행렬을 한 파일로
.h5 는 폴더를 파일 하나에 담은 것입니다. 안에 폴더 구조가 그대로 들어 있어요.

Cell Ranger 는 같은 행렬을 두 가지 모양으로 내놓습니다.

폴더 세 파일
filtered_feature_bc_matrix/
사람이 열어 볼 수 있다
글자로 되어 있다
느리다
.h5 한 파일
filtered_feature_bc_matrix.h5
사람은 못 읽는다
이진 파일이다
훨씬 빠르다

알맹이는 완전히 같습니다. 편한 쪽을 쓰면 돼요. Scanpy 도 Seurat 도 둘 다 읽습니다.

.h5 안의 구조

matrix/ barcodes (2700,) <- barcodes.tsv 와 같은 것 data (2286884,) <- 0 이 아닌 값들 indices (2286884,) <- 그 값들의 행 번호 indptr (2701,) <- 열이 어디서 시작하나 shape (2,) <- [32738, 2700] features/ id (32738,) <- Ensembl ID name (32738,) <- 유전자 기호 feature_type (32738,) <- Gene Expression genome (32738,) <- GRCh38

barcodes 와 features/ 는 아까 본 두 파일 그대로입니다. 새로운 것은 가운데 셋 — data · indices · indptr 입니다.

작은 행렬을 CSC 세 배열로 접었다 폈다 해 보세요.
불러오는 중…
indptr 은 '이 열은 몇 번째 칸부터인가' 를 적은 목차입니다.
Python 브라우저에서 실행
indptr 의 길이는 늘 '열 수 + 1' 입니다.
Python 브라우저에서 실행

세 번째 파일 — molecule_info.h5

같은 폴더에 이것도 있습니다. 행렬이 아니라 UMI 하나하나의 기록이에요.

칸무엇
barcode_idx어느 세포
feature_idx어느 유전자
umi어느 분자
count그 분자를 몇 번 읽었나

행렬은 이 표를 세어서 만든 것입니다. 그래서 이 파일이 있으면 읽기 깊이를 인위로 낮춰 여러 시료를 같은 깊이로 맞출 수 있어요 (cellranger aggr).

🤔 확인 문제
indptr 배열의 길이는?
🤔 확인 문제
.h5 와 세 파일 폴더의 관계는?