세포 유형의 발달 궤적을 분석하고 시각화하는 것은 생물학 연구에서 매우 중요한 과정입니다. 특히 단일 세포 전사체 분석(single-cell transcriptomics)의 발전으로, 개별 세포의 발달 경로와 상태 변화를 더 정밀하게 추적할 수 있게 되었습니다. 이러한 분석을 위해 다양한 기법들이 사용되는데, 그 중에서도 PAGA(Partition-based Graph Abstraction)는 매우 유용한 도구로 자리 잡고 있습니다.
1 들어가며
이 글은 PAGA 튜토리얼을 일부 수정한 것입니다. PAGA는 세포 간의 관계를 그래프 형태로 추상화하여, 전체 발달 경로를 파악하고 중요한 분기점들을 식별하는 데 도움을 줍니다. 이 기법은 세포 데이터를 그래프 기반으로 표현하고, 이를 통해 세포 간의 전이 상태와 경로를 시각적으로 명확하게 보여줍니다. 특히 PAGA는 복잡한 세포 상태 전이를 간단한 그래프 구조로 표현함으로써, 연구자들이 세포 발달 궤적을 더 쉽게 이해하고 분석할 수 있게 해줍니다.
2 필요한 라이브러리 불러오기
import osimport urllib.requestimport warningsimport matplotlib.pyplot as pltimport numpy as npimport pandas as pdimport scanpy as sc# 경고 무시하기warnings.filterwarnings("ignore")sc.settings.n_jobs =-1sc.settings.verbosity =0# 오류 (0), 경고 (1), 정보 (2), 힌트 (3)sc.settings.set_figure_params( dpi=60, frameon=False, figsize=(4, 4), facecolor="white", color_map="viridis_r")print(f"사용한 SCANPY 버전: {sc.__version__}")
사용한 SCANPY 버전: 1.10.1
3 데이터 준비
연습할 데이터는 Seurat을 사용해 전처리된 마우스의 골수 세포 데이터입니다. 데이터 전처리에 자세한 정보는 다음 스크립트에서 확인할 수 있습니다. 골수는 성인 면역 세포의 원천이며 혈액을 통해 순환되는 면역 세포의 거의 모든 분화 단계의 세포들이 포함되어 있습니다. 다음 명령을 사용하여 데이터를 다운로드합니다.
# 누락되거나 계산 시간이 오래 걸리는 경우 미리 계산된 데이터 다운로드fetch_data =True# 예제 데이터 URLpath_data ="https://export.uppmax.uu.se/naiss2023-23-3/workshops/workshop-scrnaseq"path_results ="./input/trajectory"ifnot os.path.exists(path_results): os.makedirs(path_results, exist_ok=True)path_file ="./input/trajectory/trajectory_seurat_filtered.h5ad"ifnot os.path.exists(path_file): file_url = os.path.join(path_data, "trajectory/trajectory_seurat_filtered.h5ad") urllib.request.urlretrieve(file_url, path_file)
데이터 집합을 분석할 때는 무슨 일이 일어나고 있는지, 데이터에서 보이는 클러스터는 무엇이며, 가장 중요한 것은 클러스터가 서로 어떻게 연관되어 있는지 이해하는 것이 중요합니다. 그럼, 데이터를 조금 살펴봅시다. 이 표의 도움을 받아 데이터 집합에서 이러한 핵심 마커를 나타내는 클러스터 번호를 적어 보세요.
3.3 다시 UMAP 그리기
Scanpy를 사용해 클러스터링과 유맵을 다시 실행합니다. 데이터에 이미 포함된 차원감소 데이터인 X_harmony_Phase를 시작점으로 UMAP을 새로 그립니다.
# 먼저 기존에 들어있던 umap 정보를 다른 이름으로 저장합니다.adata.obsm["X_umap_old"] = adata.obsm["X_umap"]sc.pp.neighbors(adata, n_pcs=30, n_neighbors=20, use_rep="X_harmony_Phase")sc.tl.umap(adata, min_dist=0.4, spread=3)# sc.tl.umap(adata, min_dist=0.6, spread=1.5)# sc.pl.umap(# adata,# color=["clusters"],# legend_loc="on data",# legend_fontsize="small",# edges=True,# )# 다시 클러스터링 하기sc.tl.leiden(adata, key_added="leiden_1.0", resolution=1.0) # default resolution in 1.0sc.tl.leiden(adata, key_added="leiden_1.2", resolution=1.2) # default resolution in 1.0sc.tl.leiden(adata, key_added="leiden_1.4", resolution=1.4) # default resolution in 1.0sc.pl.umap( adata, color=["leiden_1.0", "leiden_1.2", "leiden_1.4", "clusters"], legend_loc="on data", legend_fontsize="xx-small", ncols=2,)
클러스터로 분류는 되어있지만 각각이 어떤 세포 유형인지는 알 수 없는 아래 표의 마커 유전자 정보를 가지고 세포유형을 지정하도록 하겠습니다.
세포 유형의 발달 궤적을 분석하는 과정에서 이웃 수와 구성 요소 수와 같은 변수들을 어떻게 선택하느냐에 따라 결과가 크게 달라집니다. 그러니 이 글에서 살펴본 것처럼 데이터에 대한 사전 정보가 충분해야 실제 세포 간의 관계를 정의하고, 발달 경로를 이해하는 결과로 해석을 할 수 있습니다.
또한 여기서는Seurat의 UMAP 결과를 기반으로 PAGA 궤적을 생성하는 방법을 소개했는데, 이는 보다 직관적이고 정밀한 궤적 분석을 가능하게 합니다. 이런 분석 기법들은 단일 세포 전사체 데이터를 다루는 연구자들에게 매우 유용하며 데이터의 복잡성을 효과적으로 줄이면서도 중요한 생물학적 의미를 파악하는 데 도움을 줍니다. 이 글을 통해 PAGA를 활용한 궤적 분석의 기본 개념과 실용적인 적용 방법을 이해하는 데 도움이 되었기를 바랍니다. 세포 발달 궤적을 분석하는 과정에서의 다양한 선택지와 그 영향을 연구하면서 보다 정확하고 유의미한 결과를 도출하는 연구를 계속 이어가시기 바랍니다.