Single cell RNA analysis _ #3 data integration 및 1차 분석

1. QC filtering

  죽은 세포 혹은 데이터의 퀄리티가 좋지 않은 결과 값을 제외하고 하고자 진행

ht01 <- subset(ht01, subset = nFeature_RNA > 6000 & nFeature_RNA < 20000 & percent.mt < 20)

ht02 <- subset(ht02, subset = nFeature_RNA > 6000 & nFeature_RNA < 20000 & percent.mt < 25)


2. 데이터의 전처리

각 데이터는 count 값으로 구성되어있고, 이  count는 normalization이 되지 않는 raw data임. 이를 보정하여, 세포 간의 비교가 용이하도록 발현량의 차이를 보정하는 작업이 필요함.

ht01 <- NormalizeData(ht01)

ht02 <- NormalizeData(ht02)


single cell의 가장 큰 특징은  개별의 발현을 분석하여 cluster를 구분할 수 있는 것인데, 아래의 함수를 통해서 특정 feature (특징?)이 나타나는 것을 분석하는 작업으로 이해하면 됨.


ht01 <- FindVariableFeatures(ht01)

ht02 <- FindVariableFeatures(ht02)


3. 데이터 integration을 위한 개체 묶기


본 분석의 가장 큰 목적은 각 조건 별로 변화하는 클러스터를 분석하고 이해하는 것에 목적이 있기에 아래와 같이 묶어주는 작업을 먼저 한 이후에, 분석을 할 예정임. 

seurat.list <- list(ht01, ht02)


4. 데이터 통합을 위한 anchor 찾기


ht01과 ht02를 분석하기 위해서 서로 간의 유사한 패턴이 나타나는 특징 및 이를 바탕으로 한 data integration을 진행하고자 함. 


여기서 변화할 수 있는 것은 dims가 되는데 이는 차원 축소 값이라고 생각하면 됨. 즉 30개의 주성분 값을 이용하여 데이터를 통합하겠다는 의미임.

일반적을 dims는 20-50의 값을 사용하고, 최적의 값을 찾기 위해서는 여러 번의 분석을 수행해야 함.

dims는 너무 높게 설정하면 메모리를 많이 쓰기 때문에, 시간이 더 오래 걸릴 수 있고 꼭 높은 값을 사용한다고 해서 좋은 데이터가 도출되는 것은 아님. 


seurat.anchors <- FindIntegrationAnchors(object.list = seurat.list, dims = 1:30)

seurat.integrated <- IntegrateData(anchorset = seurat.anchors, dims = 1:30)


5. PCA 차원 축소 수행

통합된 데이터를 이용하여 차원 축소를 진행함.

npcs = 차원 축소를 위해 사용하는 값을 의미함. 


seurat.integrated <- ScaleData(seurat.integrated)

seurat.integrated <- RunPCA(seurat.integrated, npcs = 15)


6. 클러스터링 시각화

통합된 데이터를 이용하여, 서로 간의 유사성을 분석하고 이를 바탕으로 한 plot안에 표현하기 위한 방법임. 

변환시킬 수 있는 데이터는 dims와 resolution이 있음.

dims = 앞서 PCA analysis를 통해 수행한 (분리한) 주성분의 값까지 만이 사용 가능함.

resolution = 클러스터의 크기와 개수에 직접적으로 영향을 미치는 함수로서, 낮은 resolution을 설정할 경우 클러스터의 개수는 더 적게, 모양은 더 크게 형성함.

높은 resolution은 데이터 내의 더 세밀한 표현이 가능함. 즉 많은 수의 클러스터 생성 및 모양도 작게 나타남


seurat.integrated <- FindNeighbors(seurat.integrated, dims = 1:15)

seurat.integrated <- FindClusters(seurat.integrated, resolution = 0.5)

seurat.integrated <- RunUMAP(seurat.integrated, dims = 1:8)

# UMAP 플롯
DimPlot(seurat.integrated, reduction = "umap", group.by = "orig.ident")

# 클러스터별 UMAP 시각화
DimPlot(seurat.integrated, reduction = "umap", group.by = "seurat_clusters", split.by = "orig.ident")

# 클러스터별 UMAP 시각화 (위에 4개, 아래에 4개)
DimPlot(seurat.integrated, reduction = "umap", group.by = "seurat_clusters", split.by = "orig.ident", ncol = 4)

5. 데이터 수행의 적정 PCA 설정을 위한 분석


# Scree Plot 생성

ElbowPlot(seurat.integrated, ndims = 50)


# PCA 결과에서 누적 설명 변동성 비율 계산

pca_results <- seurat.integrated[["pca"]]

variance_explained <- pca_results@stdev^2 / sum(pca_results@stdev^2)

cumulative_variance <- cumsum(variance_explained)


# 누적 설명 변동성 비율 시각화

plot(cumulative_variance, type = "b", xlab = "Number of Principal Components", ylab = "Cumulative Variance Explained")


댓글

이 블로그의 인기 게시물

#single cell sequencing 기초 분석 - #1 R 설치 및 package 설치

리눅스 기초 #10 GATK calling을 사용하기 위하여, reference file indexing하는 방법

Single cell 분석을 위한 package 소개