12강 / 20강
HDF5 — 같은 행렬을 한 파일로
왜 형식이 두 벌인가, 그리고 CSC 라는 접는 법
.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 입니다.
indptr 은 '이 열은 몇 번째 칸부터인가' 를 적은 목차입니다.
Python
브라우저에서 실행
indptr 의 길이는 늘 '열 수 + 1' 입니다.
Python
브라우저에서 실행
세 번째 파일 — molecule_info.h5
같은 폴더에 이것도 있습니다. 행렬이 아니라 UMI 하나하나의 기록이에요.
| 칸 | 무엇 |
|---|---|
barcode_idx | 어느 세포 |
feature_idx | 어느 유전자 |
umi | 어느 분자 |
count | 그 분자를 몇 번 읽었나 |
행렬은 이 표를 세어서 만든 것입니다.
그래서 이 파일이 있으면 읽기 깊이를 인위로 낮춰
여러 시료를 같은 깊이로 맞출 수 있어요 (cellranger aggr).
🤔 확인 문제
indptr 배열의 길이는?해설 열마다 시작 위치를 하나씩 적고, 마지막에 끝을 하나 더 적기 때문입니다.
그래서 열이 2,700개면 indptr 은 2,701개예요.
🤔 확인 문제
.h5 와 세 파일 폴더의 관계는?해설 알맹이는 같습니다. h5 는 이진 파일이라 빠르고 한 덩어리로 옮기기 좋고,
세 파일 폴더는 사람이 열어 볼 수 있어요.