Sampling labeling
Sample 별로 해당하는 Cell ID에 label 달기!!
Related post
How to label cluster in seurat
clustering 마치고 cluster별로 cell type annotation하는 법 소개
이전 포스트랑 비슷하지만 다르게
이번에는 처음 데이터 가져와서 QC도 하기 전에 Cell마다 sample ID를 label로 다는 방법을 소개하려고 함.
🤨 왜 시작부터 라벨링해야하는가?
여러 샘플을 한꺼번에 분석할때, 분석 전에 label을 달아놓으면
- 샘플별로 QC결과를 통계내기도 쉽고
- Visualization단계 이후, Batch effect있는지 확인 가능
- 기본이 되는 Label을 잘 달아놔야 이후 group을 세분화 했을때 label을 조합시켜서 달기 쉬워짐.
e.g. 샘플1(WT)의 Tcell과 샘플2(KO)의 Tcell 사이의 DEG구하기
R Code
나는 Sample별로 label을 달때 SampleID
라는 이름을 애용함.
비슷하게 환자 라벨은 PatientID
이런식.
라벨링할때 자신만의 규칙을 만들어보면 좋을듯.
🐣 Only for Single-cell newbie 🐣
Meta data
Seurat object에서 라벨을 달면,..
이렇게 Cell ID에 저장된 expression이외의 데이터들은 meta data
라고 많이들 부르고,
[SeuratObjectName]뒤에 $
표시를 붙이면 Meta data를 불러 올 수 있다.
[SeuratObjectName]$SampleID
또는 [SeuratObjectName]@meta.data
를 입력하면 저장되어 있는 meta data를 table형식으로 볼 수 있다.
1
2
3
4
5
# Meta data확인시, cell이 한두개가 아닐 가능성이 굉장히 높으니
# 앞에 꼭 head() 붙여서 확인하자!
head(SeuratObjectName$SampleID) #list형태로 Cell ID별 sampleID 보여줌
head(SeuratObjectName@meta.data) #data.frame으로 전체 meta data보여줌
대괄호까지 지우고 자기 seurat object name 넣어줘야함!!!
Cell ID
single-cell RNA-seq data는 알겠지만 cell 하나 하나 마다의 mRNA expression을 뽑아낸 결과라 데이터를 열어보면, 기본적으로 Gene name(row) X Cell ID(column) 의 table 구조로 되어 있다.
그래서 Seurat object에서 Cell ID를 얻고 싶다면 colnames([SeuratObjectName])
gene name을 얻고 싶다면 rownames([SeuratObjectName])
하면 된다.
보통 이 전 과정인 CellRanger 단계를 거칠때 여러 샘플을 한번에 분석 하기 위해 CellRanger aggr
(aggregation) 과정을 거쳤을텐데,
그때 넣어준 aggr.csv
의 순서대로 cell barcode 뒤에 번호가 붙는다.
뭔소리냐 싶으면 여기로
만약 aggr.csv파일을 이렇게 넣어줬다면,
1
2
3
4
5
sample_id,molecule_h5
WT01,/02_count/WT01/outs/molecule_info.h5
WT02,/02_count/WT02/outs/molecule_info.h5
KO01,/02_count/KO01/outs/molecule_info.h5
KO02,/02_count/KO02/outs/molecule_info.h5
WT01
sample에서 나온 cell들의 cell barcode뒤에는 -1
WT02
sample의 cell barcode뒤에는 -2
KO01
sample의 cell barcode뒤에는 -3
KO02
sample의 cell barcode뒤에는 -4
이런식이라 code를 짜보면 아래처럼 된다.
- 내 Seurat object name =
SO
- 달고 싶은 meta data 이름 =
SampleID
1
2
3
4
SO$SampleID <- "WT01" # 첫번째 Sample 이름
SO@meta.data[colnames(SO)[grepl("(^(\\w*)-2$)",colnames(SO))],'SampleID'] <- "WT02"
SO@meta.data[colnames(SO)[grepl("(^(\\w*)-3$)",colnames(SO))],'SampleID'] <- "KO01"
SO@meta.data[colnames(SO)[grepl("(^(\\w*)-4$)",colnames(SO))],'SampleID'] <- "KO02"
확인
label이 잘 달렸는지 확인하려면,
1
table(SO$SampleID)
각 샘플별로 Cell이 몇개씩 있는지 나온다.
꼭! 다 더하면 총 cell 갯수가 되는지 / 샘플별로 cell 갯수가 맞는지 .. 등의 디테일을 챙기쟈✨