- 카테고리Transcriptomics > Single-cell-transcriptomics
- 수정일2025-09-17 22:29:03
Single-cell RNA sequencing pipeline은 10X Genomics의 Cell Ranger, python 패키지인 Scanpy를 이용하여 단일 세포 수준의 유전자 발현 데이터를 분석하기 위한 파이프라인입니다.
본 파이프라인은 raw sequencing data(FASTQ 파일)과 함께 각 library가 유래한 샘플의 정보를 함께 입력받습니다. 이후 count matrix 생성, data preprocessing, normalize and scaling, dimension reduction and clustering, annotation, differential gene expression analysis 및 functional analysis 등을 수행합니다. 결과물로 cell-by-gene expression matrix 및 이로부터 파생된 분석 결과 테이블, 시각화한 그래프 등을 얻을 수 있습니다.

분석 프로그램
cellranger_mkref
Cell Ranger는 10x Genomics 사의 single-cell library preparation kit로 제작된 scRNA-seq 라이브러리에서 생성된 FASTQ 파일을 처리하는 소프트웨어입니다.
후술할 cellranger count 단계에서는 read alignment를 수행하고 feature-by-barcode 기반의 UMI(unique molecular identifier) count matrix를 생성합니다. 이를 위해서는 reference genome (FASTA)과 gene annotation (GTF) 파일이 필요하며, 이 파일들을 Cell Ranger가 읽을 수 있도록 전용 형식으로 미리 변환되어야 합니다. 이 작업은 cellranger mkref 단계에서 수행됩니다.
Bio-Express에는 GRCh38 (Homo sapiens) version 44와 GRCm39 (Mus musculus) version M33에 대한 reference가 이미 내장되어 있으므로, 해당 reference를 사용할 경우 runCellRanger_mkref 단계를 생략할 수 있습니다.
주요사항
- 10x Genomics에서 제공하는 공식 reference (GRCh38, mm10 등)는 인간과 마우스에 한정되기 때문에 cellranger mkref를 사용하면 임의의 유전체 + GTF 파일을 기반으로 커스텀 reference를 생성할 수 있어, 비모델 생물(non-model species), 박테리아, 곰팡이, 어류 등에도 적용 가능합니다.
입력 데이터 예제
- 예제 데이터가 없습니다.
실행 명령어 예시
cellranger mkref --genome=“custom” --fasta=/path/to/genome.fa --genes=/path/to/genes.gtf
실행 스크립트
- 실행 스크립트가 없습니다.
파라미터
옵션 | 유형 | 명칭 | 값 | 설명 | 필수값 |
---|---|---|---|---|---|
Input | String | genome | custom | 결과 파일들이 담길 폴더의 이름 (알파벳, 숫자, “_”, “-”로만 조합하여 작성) | |
Input | File | fasta | genome.fasta | FASTA 파일의 경로 | |
Input | File | genes | genome.gtf | GTF 파일의 경로 | |
Output | Folder | output_dir | /path/to/output_dir | 결과 파일이 저장될 디렉토리 경로 | |
Option | String | ref_version | v1 | Reference 내에 저장될 reference 버전 정보. |
결과
cellranger_count
Cellranger count 단계는 Cell Ranger의 count 서브커맨드를 이용하여 단일 scRNA 샘플(single sample)에 대해 read alignment, barcode 및 UMI 처리, 유전자 발현 정량화, 품질 지표 생성 등 전체 분석 과정을 자동으로 수행합니다.
이 과정은 10X Chromium 플랫폼에서 제작된 scRNA-seq 라이브러리로부터 생성된 FASTQ 파일을 입력으로 받아, gene-by-cell expression matrix를 산출합니다. 또한 각 샘플의 메타데이터를 표 형식으로 저장하여 후속 분석에 활용할 수 있습니다.
주요사항
- cellranger count는 --id=output_dir_name 옵션으로 출력 디렉토리 이름만 지정할 수 있으며, 경로 지정은 지원하지 않습니다. 따라서 실행 결과는 output_dir/id 위치에서 확인이 가능합니다.
입력 데이터 예제
- 예제 데이터가 없습니다.
실행 명령어 예시
cellranger count --id pbmc_1k_v3,Brain_Tumor_3p --sample pbmc_1k_v3,Brain_Tumor_3p \ --fastqs /path/to/input_dir \ --transcriptome /path/to/input_dir \ --output_dir /path/to/output_dir \ --add_condition condition,group1,group2
실행 스크립트
- 실행 스크립트가 없습니다.
파라미터
옵션 | 유형 | 명칭 | 값 | 설명 | 필수값 |
---|---|---|---|---|---|
Input | String | id | pbmc_1k_v3,Brain_Tumor_3p | (여러 샘플의 경우 공백 없이 쉼표로 구분) 고유한 실행 ID 문자열 (예: sample345). 이 이름은 임의로 지정할 수 있으며, 모든 출력 파일을 포함하는 디렉토리 이름으로 사용됨. 영문자, 숫자, 밑줄(_), 하이픈(-)만 허용되며, 샘플 당 최대 64자까지 가능 | |
Input | String | sample | pbmc_1k_v3,Brain_Tumor_3p | (여러 샘플의 경우 공백 없이 쉼표로 구분) 선택할 FASTQ 파일의 파일명 접두어 | |
Input | Folder | fastqs | /path/to/input_dir | (여러 샘플의 경우 공백 없이 쉼표로 구분) 입력 FASTQ 데이터의 경로. 전체 경로에는 쉼표를 포함할 수 없음 | |
Input | String | transcriptome | /path/to/input_dir | cellranger mkref를 통해 생성된 reference 파일이 포함된 디렉토리 경로. 값이 None이면서 species가 human 혹은 mouse인 경우 Bio-Express 내 reference 파일을 사용함 | |
Input | String | species | human | 생물 종 선택: 'human' 또는 'mouse' [transcriptome]을 지정하지 않은 경우 필수 | |
Output | Folder | output_dir | /path/to/output_dir | 결과 파일이 저장될 디렉토리 경로 | |
Option | String | add_condition | condition,group1,group2 | (공백 없이 쉼표로 구분) 샘플에 대한 사용자 정의 메타데이터. 예를 들어, 두 가지의 메타데이터 정보와 네 개의 샘플에 대하여, 'disease,cancer,cancer,normal,normal,batch,1,2,3,4'를 입력하는 경우 disease 필드와 batch 정보에 cancer/normal 혹은 1~4의 batch 정보를 tabular format으로 생성함 |
결과
dropletUtils_filterCells
DropletUtils의 filterCells는 sample_info.csv 파일을 불러온 뒤, 해당 파일에 기재된 각 샘플에 대해 비어 있는 droplet을 제거합니다. 구체적으로는 다음 절차를 거쳐 수행됩니다.
먼저, cellranger count의 산출물 중 filtering되지 않은 feature-barcode count matrix를 불러오고, 이 과정에서 각 droplet에 sample_info.csv에서 얻은 샘플 정보를 매핑하여 저장합니다.
이후 각 droplet의 총 UMI 수를 계산하여 기본값으로 100 이하인 경우를 비어 있는 droplet으로 간주합니다. 이러한 기준을 바탕으로 전체 droplet 중 실제로 empty droplet일 것으로 추정되는 경우를 선별하고, 반대로 비어 있지 않은 droplet은 실제 세포로 판단합니다. 실제 세포로 구분된 droplet의 count matrix는 추후 분석에 활용할 수 있도록 입력과 동일한 .mtx 형식으로 저장합니다.
또한 filtering되지 않은 전체 droplet을 대상으로 barcode rank plot을 작성하여 제거된 droplet의 UMI 분포와 rank 정보를 시각적으로 확인할 수 있습니다.
주요사항
- DropletUtils::read10xCounts() 또는 read10xRaw()는 10X Genomics 형식에 최적화되어 있으므로, 비표준 형식(예: custom scRNA-seq protocol)을 사용하는 경우 별도 전처리가 필요합니다. 또한 입력 데이터 포맷으로 cellranger count의 unfiltered matrix (raw_feature_bc_matrix)를 사용해야 합니다.
입력 데이터 예제
- 예제 데이터가 없습니다.
실행 명령어 예시
Rscript DropletUtils_filterCells.r --input_dir=/path/to/input_dir --output_dir=/path/to/output_dir
실행 스크립트
파라미터
옵션 | 유형 | 명칭 | 값 | 설명 | 필수값 |
---|---|---|---|---|---|
Input | Folder | input_dir | /path/to/input_dir | 입력 파일이 저장된 디렉토리 경로로 cellranger count 결과 폴더임 | |
Output | Folder | output_dir | /path/to/output_dir | 결과 파일이 저장될 디렉토리 경로 | |
Option | Integer | lower | 100 | 총 UMI count의 하한값. 이 값 이하의 barcode는 빈 droplet(empty droplet)으로 간주함 | |
Option | Integer | niters | 10000 | Monte Carlo p-value 계산을 위한 반복 횟수 | |
Option | Boolean | test_ambient | False | True인 경우 lower 값 이하의 barcode도 검정에 포함하여 결과를 반환함 | |
Option | Integer | ignore | NULL | 총 UMI count의 하한을 지정, 이 값 이하인 barcode는 무시됨 | |
Option | Integer | retain | NULL | 총 UMI count의 이 값을 초과하는 barcode는 세포를 포함한다고 가정 | |
Option | String | fdr_thr | 0.05 | Monte Carlo test로 산출된 p-value에 기반해 low-quality cell을 필터링할 때 사용하는 FDR 임계값 |
결과
scanpy_plotQCmetrics
scanpy plotQCmatrics는 필터링된 발현 데이터(.mtx 파일 및 두 개의 .tsv.gz 파일)와 샘플 정보를 불러와 AnnData object를 생성합니다. 모든 세포에 대해 3가지 품질 관리(QC) 지표(n_genes_by_counts, total_counts, pct_counts_mt`)를 계산합니다.
- n_genes_by_counts: 각 세포에서 발현된 유전자 수. 너무 적으면 세포가 죽었거나 capture 실패 가능성이 있으며, 너무 많으면 doublet(두 세포가 하나로 합쳐진 경우) 가능성이 있습니다.
- total_counts: 각 세포의 총 UMI 수. 낮으면 라이브러리 제작 실패 가능성이 있고, 높은 경우 doublet일 수 있습니다.
- pct_counts_mt: 미토콘드리아 유전자 발현 비율. 높으면 세포 스트레스나 손상 가능성이 높음을 의미합니다.
계산된 QC 척도는 AnnData object에 저장되며, 이후 .h5ad 파일로 내보냅니다. 또한, 각 샘플별 QC 척도 분포를 히스토그램 플롯(histogram plot)으로 시각화하여 저장함으로써, 실험 품질과 데이터 신뢰성을 직관적으로 평가할 수 있습니다.
주요사항
- 해당 프로그램은 각 QC 지표의 전체 분포를 히스토그램 플롯(histogram plot) 형태로 시각화합니다. 이를 통해 사용자는 다음 applyQCthresholds 단계에서 QC 기준(threshold)을 설정할 수 있으며, 최소 유전자 수가 부족한 세포나 발현이 거의 없는 유전자를 제거할 수 있도록 시각적으로 지원합니다.
입력 데이터 예제
- 예제 데이터가 없습니다.
실행 명령어 예시
python scanpy_plotQCmetrics.py --input_dir /path/to/input_dir --output_dir /path/to/output_dir
실행 스크립트
- 실행 스크립트가 없습니다.
파라미터
옵션 | 유형 | 명칭 | 값 | 설명 | 필수값 |
---|---|---|---|---|---|
Input | Folder | input_dir | /path/to/input_dir | 입력 파일이 저장된 디렉토리 경로로 dropletUtils_filterCells 결과 폴더임 | |
Output | Folder | output_dir | /path/to/output_dir | 결과 파일이 저장될 디렉토리 경로 |
결과
scanpy_applyQCthresholds
Scanpy applyQCthreshold는 QC 지표가 계산된 AnnData object(.h5ad 파일)를 불러와 사용자가 지정한 QC 범위에 따라 세포를 필터링합니다. 이 과정에서는 총 UMI 수, 세포별 발현 유전자 수, 미토콘드리아 유전자 비율 등을 기준으로 낮은 품질의 세포를 제거할 수 있습니다. 필터링된 세포는 샘플별 개별 AnnData로 저장하거나 모든 샘플을 통합한 AnnData로 저장할 수 있습니다. 임계값 적용 이후 각 샘플의 QC 지표(n_genes_by_counts, total_counts, pct_counts_mt) 분포는 히스토그램과 산점도 플롯으로 시각화되며, 이를 통해 사용자는 지정한 QC 기준이 적절하게 low-quality 세포를 제거하고, 고품질 세포를 유지했는지 직관적으로 검토할 수 있어 이후 분석의 신뢰성을 높일 수 있습니다.
주요사항
- lower_log1p_total_counts, lower_log1p_n_genes_by_counts, upper_pct_counts_mito 등을 직접 지정하여 데이터 특성과 연구 목적에 맞게 품질 기준을 조정할 수 있습니다.
입력 데이터 예제
- 예제 데이터가 없습니다.
실행 명령어 예시
python scanpy_applyQCthresholds.py --input_dir /path/to/input_dir --output_dir /path/to/output_dir \ --lower_log1p_total_counts 0,0 --lower_log1p_n_genes_by_counts 0,0 --upper_pct_counts_mito 100,100 \ --plotting-only False --concat-samples True
실행 스크립트
파라미터
옵션 | 유형 | 명칭 | 값 | 설명 | 필수값 |
---|---|---|---|---|---|
Input | Folder | input_dir | /path/to/input_dir | 입력 파일이 저장된 디렉토리 경로로 scanpy_plotQCmetrics 결과 폴더임 | |
Output | Folder | output_dir | /path/to/output_dir | 결과 파일이 저장될 디렉토리 경로 | |
Option | String | lower_log1p_total_counts | 0 | 샘플별 log1p_total_counts의 하한값으로, 이 값 이하의 세포를 low-quality로 필터링하는 기준값. 여러 샘플일 경우 쉼표로 구분 | |
Option | String | lower_log1p_n_genes_by_counts | 0 | 샘플별 log1p_n_genes_by_counts의 하한값으로, 이 값 이하의 세포를 low-quality로 필터링하는 기준값. 여러 샘플일 경우 쉼표로 구분 | |
Option | String | upper_pct_counts_mito | 100 | 샘플별 pct_counts_mito의 상한값으로, 이 값 이상인 세포를 low-quality로 필터링하는 기준값. 여러 샘플일 경우 쉼표로 구분 | |
Option | Boolean | plotting_only | True | True: 시각화 파일만을 저장, False: 시각화 파일 및 QC를 마친 AnnData를 저장 | |
Option | Boolean | concat_samples | True | True: 여러 샘플에 대한 AnnData를 병합하여 저장 False: 각각의 샘플에 대한 AnnData를 저장 |
결과
scanpy_normalize
세포의 유형이나 크기에 따라 세포당 총 RNA 수는 크게 달라질 수 있으며, 이러한 차이는 scRNA-seq 데이터 분석에서 발현량 편향이나 downstream 분석 오류를 유발할 수 있습니다. 이러한 문제를 보정하기 위해 Bio-Express에서는 Scanpy에서 제공하는 count depth scaling 방법을 사용하여 각 세포의 총 UMI 수를 기준으로 발현량을 조정합니다. 모든 발현량 조정이 끝난 후에는 각 값에 1을 더하고 자연로그(log1p)를 취하여 발현량 분포의 왜도(skewness)를 완화하고, 극단값에 의한 영향을 줄입니다. 변환된 데이터는 AnnData 객체의 기본 위치(X) 또는 사용자가 지정한 layer에 저장되며, 이후 normalization이 필요한 분석 단계에서 그대로 활용할 수 있습니다. 이를 통해 서로 다른 세포 간의 발현량 비교를 보다 정확하게 수행할 수 있습니다.
주요사항
- scanpy.pp.normalize_total() 함수에서 target_sum 옵션은 각 세포마다 총 발현량(UMI 총합)을 동일하게 정규화하는 기준값을 의미합니다. 이 옵션을 잘못 설정하면 downstream 분석에 영향을 줄 수 있습니다. target_sum 값은 분석 목적에 따라 1e4는 scRNA-seq에서 표준적으로 가장 많이 사용되며, 1e6값은 bulk RNA-seq과 같은 TPM 스타일의 정규화 방식과 유사합니다.
입력 데이터 예제
- 예제 데이터가 없습니다.
실행 명령어 예시
python scanpy_normalize.py --input_dir /path/to/input_dir --output-dir /path/to/output_dir
실행 스크립트
파라미터
옵션 | 유형 | 명칭 | 값 | 설명 | 필수값 |
---|---|---|---|---|---|
Input | Folder | input_dir | /path/to/input_dir | 입력 파일이 저장된 디렉토리 경로로 scanpy_applyQCthresholds 결과 폴더임 | |
Output | Folder | output_dir | /path/to/output_dir | 결과 파일이 저장될 디렉토리 경로 | |
Option | Float | target_sum | 10000 | Normalization 후 각 세포 내 총 UMI count가 target_sum 값과 동일하게 함. None인 경우normalization 이전 각 세포 내 의 총 UMI count의 중앙값과 같도록 함 | |
Option | Boolean | exclude-highly-expressed | FALSE | 각 세포의 normalization 계산 시, 한 세포에서 너무 높은 비율로 발현되는 유전자를 제외할지 여부. 제외되지 않은 유전자 합은 target_sum이 됨 | |
Option | String | key-added | None | 계산된 normalization factor를 저장할 adata.obs 내 필드 이름 | |
Option | String | layer | None | Normalization을 수행할 layer 지정. None이면 기본 X를 normalization함 |
결과
scanpy_findHVGs
단일 세포 발현 매트릭스는 수많은 세포와 유전자를 포함하기 때문에 매우 높은 차원을 가지며, 직접적인 분석은 계산량이 크고 해석이 어려울 수 있습니다. 이를 완화하기 위해, 전체 세포 집단에서 세포 간 발현 차이를 잘 설명할 수 있는 highly variable gene (HVG)를 선별하여 데이터 차원을 감소시키는 것이 일반적입니다. scanpy_findHVG는 log-normalized expression matrix를 기반으로, 각 유전자의 평균 발현량 대비 분산이 높은 유전자들을 HVG로 선정합니다. 선정된 HVG는 downstream 분석에서 주로 사용되며, 결과물로는 HVG가 포함된 AnnData 객체, HVG 리스트, 그리고 mean-dispersion plot이 제공됩니다.
주요사항
- 반드시 Normalization (sc.pp.normalize_total() 및 sc.pp.log1p() ) 수행 후에 실행해야 합니다.
- subset=True 옵션 설정 시 선택된 HVG만 남고 나머지 유전자는 AnnData에서 삭제됩니다.
입력 데이터 예제
- 예제 데이터가 없습니다.
실행 명령어 예시
python scanpy_findHVGs.py --input_dir /path/to/input_dir --output_dir /path/to/output_dir
실행 스크립트
파라미터
옵션 | 유형 | 명칭 | 값 | 설명 | 필수값 |
---|---|---|---|---|---|
Input | Folder | input_dir | /path/to/input_dir | 입력 파일이 저장된 디렉토리 경로로 scanpy_normalize 결과 폴더임 | |
Output | Folder | output_dir | /path/to/output_dir | 결과 파일이 저장될 디렉토리 경로 | |
Option | String | flavor | seurat | HVG를 식별하는 방법 선택. Seurat은 dispersion의 cutoff 사용, Cell Ranger는 dispersion 기반 상위 n개의 유전자를 선별함. [가능한 값: "seurat", "cell_ranger"] | |
Option | Integer | n_top_genes | none | 유지할 상위 HVG의 수. | |
Option | String | layer | none | HVG를 계산의 대상이 될 AnnData 내 발현량의 layer. None인 경우 AnnData의 X를 사용함. (추후 PCA가 X를 이용하여 진행되므로, [layer] 별도 설정을 권장하지 않음) | |
Option | String | min_mean | 0.0125 | HVG 선정에 사용되는 발현량의 mean 최소값 | |
Option | String | max_mean | 3 | HVG 선정에 사용되는 발현량의 mean 최대값 | |
Option | String | min_disp | 0.5 | HVG 선정에 사용되는 발현량의 dispersion의 최소 값 | |
Option | String | max_disp | Inf | HVG 선정에 사용되는 발현량의 dispersion의 최대 값 | |
Option | String | span | 0.3 | loess 모델 fitting에서 dispersion을 추정할 때 사용되는 데이터(세포)의 비율 | |
Option | Integer | n_bins | 20 | 평균 발현량을 binning할 때 사용할 구간 수. 각 구간에 대해 normalization이 수행됨. 특정 구간에 1개의 유전자만 포함되면, 그 유전자의 normalized dispersion은 1로 강제 설정됨 | |
Option | Boolean | subset | FALSE | 전체 유전자가 아닌 HVG에 대한 AnnData를 저장함. (True인 경우 이후 분석 및 시각화에 유의 필요) |
결과
scanpy_scaleData
Log-normalization을 마친 AnnData 객체의 발현량을 바탕으로, 전체 세포 집단에서 각 유전자의 발현량을 Z-score 방식으로 표준화(z-scaling)합니다. 이 과정을 통해 유전자 간 발현량의 차이를 정규화하여, 특정 유전자가 PCA, UMAP, 클러스터링과 같은 downstream 분석에서 지나치게 큰 영향을 미치는 것을 방지합니다. 또한, 모든 유전자의 발현값이 동일한 척도로 변환됨으로써 분석 결과가 보다 공정하고 안정적으로 산출되며, 데이터의 변동성이 높은 유전자가 과도하게 결과에 영향을 주는 것을 막아 차원 축소 및 클러스터링 결과의 신뢰도를 높이는 데 기여합니다. 이 표준화된 데이터는 이후 분석에 최적화된 형태로 활용됩니다.
주요사항
- 극단치(outlier)는 Z-scaling에 영향을 줄 수 있어, 일반적으로 max_value=10으로 제한합니다. 너무 낮게 설정하면 고발현 유전자(HVGs)가 잘릴 수 있으므로 주의가 필요합니다.
입력 데이터 예제
- 예제 데이터가 없습니다.
실행 명령어 예시
python scanpy_scaleData.py --input_dir /path/to/input_dir --output_dir /path/to/output_dir
실행 스크립트
파라미터
옵션 | 유형 | 명칭 | 값 | 설명 | 필수값 |
---|---|---|---|---|---|
Input | Folder | input_dir | /path/to/input_dir | 입력 파일이 저장된 디렉토리 경로로 scanpy_findHVGs 결과 폴더임 | |
Output | Folder | output_dir | /path/to/output_dir | 결과 파일이 저장될 디렉토리 경로 | |
Option | Boolean | zero_center | True | False일 경우, zero-centering variable을 생략하여 sparse한 data(0이 많은 expression matrix)를 효율적으로 처리 가능 | |
Option | Integer | max_value | None | Scaling 이후 [max_value] 이상의 값을 [max_value]로 치환함. None인 경우 치환하지 않음 | |
Option | String | layer | None | Scaling의 대상이 될 AnnData 내 발현량의 layer. None인 경우 AnnData의 X를 사용함. (추후 PCA가 X를 이용하여 진행되므로, layer 별도 설정을 권장하지 않음) |
결과
scanpy_runPCA
scanpy_runPCA는 고차원 유전자 발현 데이터를 저차원으로 축소해 주요 패턴을 추출하는 과정입니다. scRNA-seq 데이터는 차원이 높고 노이즈가 많기 때문에, PCA(Principal Component Analysis, 주성분 분석)를 통해 변동성이 큰 방향을 찾아 요약합니다. 주로 HVG(Highly Variable Genes)를 기반으로 수행하여 생물학적으로 의미 있는 변동성을 반영합니다. 이렇게 얻은 주성분은 데이터의 구조를 유지하면서 계산 효율성을 높이고, 이후 클러스터링이나 시각화(UMAP, t-SNE) 같은 분석의 기초로 활용됩니다.
주요사항
- PCA가 의미 있게 작동하려면 정규화, 로그 변환, HVG 선정, 스케일링 작업이 선행되어야 힙니다. 특히 스케일링을 하지 않으면 분산이 큰 유전자만 PCA에 과도하게 기여합니다.
입력 데이터 예제
- 예제 데이터가 없습니다.
실행 명령어 예시
python scanpy_runPCA.py --input_dir /path/to/input_dir --output_dir/path/to/output_dir --svd_solver auto --n_comps 50 --zero_center True --chunked False --chunk_size None --random_state 0
실행 스크립트
파라미터
옵션 | 유형 | 명칭 | 값 | 설명 | 필수값 |
---|---|---|---|---|---|
Input | Folder | input_dir | /path/to/input_dir | 입력 파일이 저장된 디렉토리 경로로 scanpy_scaleData 결과 폴더임 | |
Output | Folder | output_dir | /path/to/output_dir | 결과 파일이 저장될 디렉토리 경로 | |
Option | Integer | n_comps | 50 | 계산할 principal component의 수. 1을 입력하면 계산 가능한 최소 차원으로 계산됨. | |
Option | Boolean | zero_center | True | True: 공분산 행렬을 통해 표준 PCA를 계산; False: zero-centering을 하지 않고 TruncatedSVD 방식(scikit-learn 또는 dask-ml에서 제공)을 사용. 희소(sparse) 데이터일 때 메모리와 속도 면에서 훨씬 효율적임; None: 데이터가 희소인지 아닌지를 자동으로 판단하여 처리 | |
Option | String | svd_solver | auto | 사용할 SVD solver 선택. 가능한 값: "arpack", "randomized", "auto", 기본값: "auto" ; Auto: scanpy가 자동으로 지정; Arpack: SciPy의 ARPACK wrapper (svds()) 사용하며 dask array에 대해 사용 불가; Randomized: Halko의 randomized 알고리즘 사용 | |
Option | Boolean | chunked | False | True: sklearn IncrementalPCA나 dask-ml IncrementalPCA를 이용해 chunk_size 크기의 segment 단위로 PCA 수행 (자동으로 데이터의 평균을 0으로 만들고, random_seed와 svd_solver 설정을 무시); False: sklearn PCA나 dask-ml PCA를 이용해 full PCA 수행 | |
Option | Integer | chunk_size | None | 각 chunk에 포함할 관측값의 수입니다. ([chunked]=True인 경우 필수) | |
Option | Integer | random_state | 0 | 랜덤 시드 값 |
결과
scanpy_findNeighbors
findNeighbors는 scRNA-seq 발현량 데이터를 기반으로 세포 간 유사성을 평가하여 neighbor graph를 구축하는 과정입니다. 각 세포는 유전자 발현 패턴이 비슷한 이웃 세포들과 연결되며, edge에는 발현 패턴의 유사도에 따라 가중치가 부여됩니다. 이를 통해 각 세포에 대해 유사도가 높은 세포들을 효율적으로 선별할 수 있으며, 생성된 neighbor graph는 후속 군집 분석(clustering), 차원 축소(UMAP, t-SNE) 및 다양한 downstream 분석에서 세포 간 구조를 반영하는 기초 자료로 활용됩니다.
주요사항
- sc.pp.neighbors()는 주로 PCA 결과(obsm['X_pca'])를 사용하므로, PCA를 먼저 수행해야 합니다. PCA 없이 호출하면 adata.X로 계산되어 효율이 떨어지고 결과가 왜곡될 수 있습니다.
입력 데이터 예제
- 예제 데이터가 없습니다.
실행 명령어 예시
python scanpy_findNeighbors.py --input_dir /path/to/input_dir --output_dir /path/to/output_dir \ --n_neighbors 15 --n_pcs 50 --use_rep None --knn True --method umap --metric euclidean --random_state 0
실행 스크립트
파라미터
옵션 | 유형 | 명칭 | 값 | 설명 | 필수값 |
---|---|---|---|---|---|
Input | Folder | input_dir | /path/to/input_dir | 입력 파일이 저장된 디렉토리 경로로 scanpy_runPCA 결과 폴더임 | |
Output | Folder | output_dir | /path/to/output_dir | 결과 파일이 저장될 디렉토리 경로 | |
Option | Integer | n_neighbors | 15 | 각 세포 주변을 살펴볼 이웃의 수로, 값이 클수록 전체 구조를, 작을수록 국소 구조를 반영함. knn=True이면 지정한 수만큼의 이웃만 고려하고, knn=False이면 Gaussian kernel을 이용해 이웃 거리에 따라 가중치를 부여 | |
Option | Integer | n_pcs | 50 | Neighbor graph 계산에 사용할 주성분의 수. [n_pcs]=0일 경우 [use_rep]가 None이면 원본 데이터(.X)를 사용 | |
Option | String | use_rep | None | Neighbor graph 계산에 사용할 데이터 지정. X: 원본 발현 데이터 사용; X_pca: PCA로 축소한 발현 데이터 사용; None: scanpy가 자동으로 결정 | |
Option | Boolean | knn | True | True: 이웃의 수를 [n_neighbors]로 제한하기 위해 hard threshold를 사용함 (k-NN graph 고려); False: Gaussian kernel을 사용하여 [n_neighbors] 이웃보다 더 먼 이웃에 대해 낮은 가중치 할당 | |
Option | String | method | umap | Connectivity를 계산할 때 사용할 방법 지정. 기본값: "umap"; 가능한 값: "umap", "gauss" | |
Option | String | metric | euclidean | 데이터 간의 Distance를 계산하는 metric 명이나 함수 지정. 기본값: 'euclidean'; 가능한 값: 'cityblock', 'cosine', 'euclidean', 'l1', 'l2', 'manhattan', 'braycurtis', 'canberra', 'chebyshev', 'correlation', 'dice', 'hamming', 'jaccard', 'kulsinski', 'mahalanobis', 'minkowski', 'rogerstanimoto', 'russellrao', 'seuclidean', 'sokalmichener', 'sokalsneath', 'sqeuclidean', 'yule' | |
Option | Integer | random_state | 0 | 랜덤 시드 값 |
결과
scanpy_runTSNE
scanpy_runTSNE는 scRNA-seq 데이터에 대해, UMAP 등장 이전에 사용하던 비선형적 차원 축소 방식인 t-stochastic neighbor embedding(t-SNE)를 수행합니다. t-SNE는 고차원 공간에서 각 점과 그 이웃 간의 거리를 보존하는 저차원 공간을 찾습니다. 이를 통해 데이터의 국지적인 구조를 유지함으로써, 복잡한 집단에서 많은 서로 다른 클러스터를 2차원상에서 분리되도록 embedding합니다. 때에 따라 scanpy_runUMAP 단계로 대체할 수 있습니다. (UMAP은 전반적인 데이터의 구조를 유지하지만, t-SNE는 국지 구조만을 유지한다는 단점을 가집니다.)
주요사항
- t-SNE는 확률 분포 기반 유사도를 보존하여 임베딩을 수행하며, 특히 클러스터 내부의 거리와 형태 해석에 신뢰성이 높습니다.
입력 데이터 예제
- 예제 데이터가 없습니다.
실행 명령어 예시
python scanpy_runTSNE.py --input_dir /path/to/input_dir --output_dir /path/to/output_dir --perplexity 30 --early_exaggeration 12 --learning_rate 1000 --random_state 0
실행 스크립트
파라미터
옵션 | 유형 | 명칭 | 값 | 설명 | 필수값 |
---|---|---|---|---|---|
Input | Folder | input_dir | /path/to/input_dir | 입력 파일이 저장된 디렉토리 경로로 scanpy_findNeighbors 결과 폴더임 | |
Output | Folder | output_dir | /path/to/output_dir | 결과 파일이 저장될 디렉토리 경로 | |
Option | Integer | n_pcs | 50 | t-SNE를 계산하기 위해 사용할 주성분의 수. [n_pcs]=0일 경우 [use_rep]가 None이면 원본 데이터(.X)를 사용 | |
Option | String | use_rep | none | t-SNE 계산에 사용할 데이터 선택. X: 원본 발현 데이터 사용; X_pca: PCA로 축소한 발현 데이터 사용; None: scanpy가 자동으로 결정 | |
Option | Integer | perplexity | 30 | 데이터 포인트가 고려하는 이웃 수 조절, 5~50 권장 | |
Option | Integer | early_exaggeration | 12 | 초기 클러스터 간 거리 확대, 값이 클수록 간격 증가 | |
Option | Integer | learning_rate | 1000 | 최적화를 위한 학습률. 보통 100과 1000 사이의 값을 권장. | |
Option | Integer | random_state | 0 | 랜덤 시드 값 |
결과
scanpy_runUMAP
runUMAP은 앞서 계산한 scRNA-seq 데이터의 neighborhood graph를 기반으로, 비선형 차원 축소 기법인 UMAP(Uniform Manifold Approximation and Projection)을 수행합니다. 이 과정은 고차원 유전자 발현 데이터를 저차원 공간으로 변환하면서, 데이터의 전반적인 구조와 세포 간 관계를 최대한 유지하도록 설계되었습니다. UMAP을 통해 얻은 임베딩은 각 세포의 위치 정보를 2차원 또는 3차원 공간에 나타낼 수 있으며, 이를 바탕으로 클러스터링, 시각화, 군집 간 관계 분석 등에 활용할 수 있습니다. 경우에 따라, UMAP 대신 scanpy_runTSNE 단계를 사용하여 국지적 구조를 강조한 비선형 임베딩을 수행할 수도 있습니다.
주요사항
- UMAP은 sc.pp.neighbors()에서 계산한 KNN 그래프(connectivities)를 입력으로 사용하여, 고차원 데이터의 지역 구조(local structure)와 전역 구조(global structure)를 모두 보존하도록 저차원 공간에 임베딩 합니다. 이때 점(세포) 간 거리는 유전자 발현 패턴의 유사성을 반영하며, 가까운 점은 유사한 세포, 먼 점은 발현 패턴이 다른 세포를 의미합니다.
입력 데이터 예제
- 예제 데이터가 없습니다.
실행 명령어 예시
python scanpy_runUMAP.py --input_dir /path/to/input_dir --output_dir /path/to/output_dir
실행 스크립트
파라미터
옵션 | 유형 | 명칭 | 값 | 설명 | 필수값 |
---|---|---|---|---|---|
Input | Folder | input_dir | path/to/input_dir | 입력 파일이 저장된 디렉토리 경로로 scanpy_findNeighbors 또는 scanpy_runTSNE 결과 폴더임 | |
Output | Folder | output_dir | /path/to/output_dir | 결과 파일이 저장될 디렉토리 경로 | |
Option | Float | min_dist | 0.5 | 임베딩된 점(세포)들 간의 최소 거리. 작은 값은 더 밀집된 cluster를 만들고, 클수록 점들이 더 고르게 분포됨. [spread]와의 조합으로 점의 밀집도를 조절함. umap-learn 패키지에서 기본값은 0.1. | |
Option | Float | spread | 1.0 | [min_dist]와 함께 클러스터링의 밀집 정도를 지정, 값이 클수록 넓게 퍼짐 | |
Option | Integer | n_components | 2 | 임베딩할 차원 수 | |
Option | Integer | maxiter | none | 최적화를 위한 반복 횟수(epochs). 기존 UMAP에서는 [n_epochs]로 표기됨. | |
Option | Float | alpha | 1.0 | 임베딩 최적화의 초기 학습률 | |
Option | Float | gamma | 1.0 | 임베딩 최적화 시 negative sample에 적용되는 가중치. 값이 1보다 크면 negative sample에 더 큰 가중치가 부여됨 | |
Option | String | negative_sample_rate | 5 | 저차원 임베딩을 최적화할 때, 유사하다고 판단된 세포 쌍(positive edge) 하나당 사용할 유사하지 않은 세포 쌍(negative edge)의 수 | |
Option | String | init_pos | random | 임베딩의 초기화 방법. 기본값: 'random'; 가능한 값: 'paga', 'spectral', 'random' | |
Option | Integer | random_state | 0 | 랜덤 시드 값 | |
Option | Float | a | none | 임베딩을 제어하는 더 구체적인 parameter. None일 경우 [min_dist]와 [spread]에 의해 자동으로 설정 | |
Option | Float | b | none | 임베딩을 제어하는 더 구체적인 parameter. None일 경우 [min_dist]와 [spread]에 의해 자동으로 설정 |
결과
scanpy_findClusters
scanpy_findClusters 단계는 앞서 계산된 scRNA-seq 데이터의 neighbor graph(FindNeighbors 단계 결과)를 기반으로, 각 세포를 유사한 발현 패턴을 가진 그룹으로 묶는 클러스터링 과정을 수행합니다. 이때 Leiden 또는 Louvain 알고리즘을 사용하여 세포 집단을 자동으로 식별하며, 알고리즘은 세포 간 연결 강도와 구조를 고려하여 최적의 군집을 형성합니다. 클러스터 번호는 세포 수가 많은 그룹부터 0, 1, 2… 순으로 할당되며, 결과는 AnnData 객체의 obs에 저장되어 추후 시각화, 차원 축소(UMAP/t-SNE), 또는 집단 간 차이 분석에 활용할 수 있습니다. 이 과정은 scRNA-seq 데이터에서 세포 유형 및 상태를 탐색하는 핵심 단계입니다.
주요사항
- sc.tl.leiden()과 sc.tl.louvain()은 이웃 그래프를 기반으로 세포 간 유사도에 따라 군집을 나누는 방법입니다. Louvain은 빠르지만 분할이 불안정할 수 있고, Leiden은 이를 개선하여 더 안정적이고 해석력이 높아 Scanpy에서 주로 권장됩니다.
입력 데이터 예제
- 예제 데이터가 없습니다.
실행 명령어 예시
python scanpy_findClusters.py --input_dir /path/to/input_dir --output_dir /path/to/output_dir --algo leiden --resolution 1.0 --use_weights True --random_state 0 --directed none --leiden_n_iter -1
실행 스크립트
파라미터
옵션 | 유형 | 명칭 | 값 | 설명 | 필수값 |
---|---|---|---|---|---|
Input | Folder | input_dir | /path/to/input_dir | 입력 파일이 저장된 디렉토리 경로로 scanpy_runTSNE 또는 scanpy_runUMAP 결과 폴더임 | |
Output | Folder | output_dir | /path/to/output_dir | 결과 파일이 저장될 디렉토리 경로 | |
Option | String | algo | leiden | Clustering에 사용할 알고리즘으로 선택한 알고리즘에 따라 일부 파라미터의 기본값이 달라짐. 기본값: "leiden"; 가능한 값: "louvain", "leiden" | |
Option | Float | resolution | 1.0 | Clustering의 세밀도를 조절하는 파라미터. 높을수록 더 많은 cluster를 생성 | |
Option | Boolean | use_weights | True | k-NN graph의 가중치의 사용 여부. True일 경우 edge weight를 계산에 사용 | |
Option | Integer | random_state | 0 | 최적화를 위한 초기값 | |
Option | Boolean | directed | none | adjacency matrix을 directional graph로 해석할지 여부 설정 | |
Option | String | flavor | vtraag | (Louvain) 클러스터링 계산을 위한 패키지 선택. 기본값: "vtraag":, 가능한 값: "vtraag", "igraph" | |
Option | Integer | leiden_n_iter | -1 | (Leiden) 알고리즘을 몇 번 반복할지 설정. - 2 이상의 양수: 총 반복 횟수 - -1: 알고리즘이 최적의 클러스터링에 도달할 때까지 실행 |
결과
scanpy_scatterPlot
앞서 계산된 UMAP, t-SNE, 혹은 PCA 임베딩 결과를 활용하여 모든 세포에 대한 산점도를 시각화합니다. 이때 각 점은 하나의 세포를 나타내며, 샘플 정보나 findClusters 단계에서 얻은 클러스터 번호에 따라 색상 또는 모양으로 구분할 수 있습니다. 이러한 산점도는 군집 구조 확인을 넘어, 개별 세포 수준에서 특정 유전자의 발현 패턴을 탐색하는 데도 유용합니다. 예를 들어, raw count, log-normalized, scaled 등 다양한 데이터 변환 방식에 따른 발현 강도를 색상으로 표시하면 특정 유전자가 집단 특이적으로 발현되는지, 혹은 전반적으로 균일하게 분포하는지를 효과적으로 파악할 수 있습니다.
주요사항
- 시각화 하고자 하는 적절한 차원 축소방식을 선택해야 합니다. PCA는 전반적 구조 파악에, t-SNE는 국지적 구조 보존에, UMAP은 국지적·전역적 구조를 모두 반영하며 재현성과 속도가 뛰어나 최근 가장 널리 활용됩니다.
입력 데이터 예제
- 예제 데이터가 없습니다.
실행 명령어 예시
python scanpy_scatterPlot.py --input_dir /path/to/input_dir --output_dir /path/to/output_dir --basis umap --layer scaled --color_keys leiden,sample_id --annotated False \ --edges False --edges_width 0.1 --edgens_color grey --legend_loc "right maring" --legend_fontsize none --size none
실행 스크립트
파라미터
옵션 | 유형 | 명칭 | 값 | 설명 | 필수값 |
---|---|---|---|---|---|
Input | Folder | input_dir | /path/to/input_dir | 입력 파일이 저장된 디렉토리 경로로 scanpy_findCluster, scanpy_BBKNNbatchCorrection, scanpy_annotateClusters, scanpy_runCellTypist 등의 결과 폴더임 | |
Output | Folder | output_dir | /path/to/output_dir | 결과 파일이 저장될 디렉토리 경로 | |
Option | Boolean | annotated | False | 세포 유형의 라벨링이 완료된 AnnData 객체(adata_cellType_annotated.h5ad)를 불러올지 여부. 기본값으로는 'adata_scaled.h5ad'을 로드하며, 이 경우 세포 유형은 시각화할 수 없음 | |
Option | String | basis | umap | 시각화에 사용할 임베딩 선택. 기본값: "umap"; 가능한 값: "umap", "tsne", "pca" | |
Option | String | color_keys | sample_id | 시각화할 색상을 기준으로 사용할 이름 (runCellRanger_count의 [add_condition]을 통해 설정한 condition 이름도 가능함). 예시로 'leiden' 또는 'leiden,condition', runCellTypist를 이용해 세포 유형을 부여한 경우 'CellTypist'를 포함 가능 | |
Option | String | layer | normalized | 시각화할 AnnData의 발현 layer 선택. 가능한 값: "raw", "normalized", "scaled" | |
Option | Boolean | edges | False | 세포 간 edge를 표시 여부 | |
Option | Float | edges_width | 0.1 | edge의 선 두께 | |
Option | String | edges_color | grey | edge의 색상, 기본값: "grey" | |
Option | String | legend_loc | "right maring" | 범례 위치. 가능한 값: "on data", "right margin", None 또는 matplotlib legend 위치 키워드 가능 | |
Option | Float | legend_fontsize | none | 범례 글꼴의 크기 (pt 단위) | |
Option | Float | size | none | 점의 크기. None일 경우 자동으로 120000 / n_cells로 계산. | |
Option | String | save | 출력할 그림 파일의 확장자 지정. 기본값: ".pdf" |
결과
scanpy_BBKNNbatchCorrection
scRNA-seq 데이터는 기술적 요인(technical factors)의 영향을 받아 샘플 간 실제 생물학적 변이를 가릴 수 있으며, 이로 인해 연구 결과에 부정적인 영향을 미칠 수 있습니다. 대표적인 기술적 요인 중 하나인 batch effect는 샘플이 서로 다른 그룹이나 배치에서 처리될 때 발생할 수 있습니다. 이러한 영향을 최소화하기 위해 샘플을 동일한 날짜에 처리하고, 동일한 프로토콜과 장비를 사용하는 방법이 권장됩니다. 또한 batch effect correction을 위한 다양한 기법과 패키지(Harmony, MNN, ComBat 등)가 개발되어 있으며, Bio-Express에서는 Scanpy에 탑재된 BBKNN을 활용하여 batch effect correction 기능을 제공합니다.
Batch correction 이후 scanpy_findNeighbors부터 scanpy_scatterPlot까지의 과정을 다시 수행해야 하며, 이를 통해 보정된 데이터 기반의 군집화 및 시각화 결과를 확인할 수 있습니다.
주요사항
- use_rep='X_pca'가 기본값이므로, PCA (sc.tl.pca())를 선행하여 AnnData 객체 내 obsm['X_pca']가 반드시 존재해야 합니다.
- 배치 정보 조건으로 batch_key가 adata.obs 내에 존재해야 하며, 최소 2개 이상의 배치 값이 필요합니다.
입력 데이터 예제
- 예제 데이터가 없습니다.
실행 명령어 예시
python scanpy_BBKNNbatchCorrection.py --input_dir /path/to/input_dir --output_dir /path/to/output_dir --batch_key sample_id --use_rep X_pca --n_pcs 50
실행 스크립트
파라미터
옵션 | 유형 | 명칭 | 값 | 설명 | 필수값 |
---|---|---|---|---|---|
Input | Folder | input_dir | /path/to/input_dir | 입력 파일이 저장된 디렉토리 경로로, PCA 결과를 포함하는 scanpy_runPCA, scanpy_Neighbors, scanpy_runTSNE, scanpy_runUMAP, scanpy_findClusters 등의 결과 폴더임 | |
Output | Folder | output_dir | /path/to/output_dir | 결과 파일이 저장될 디렉토리 경로 | |
Option | String | batch_key | sample_id | adata.obs 내에서 서로 다른 배치를 구분하는 컬럼 이름 | |
Option | String | use_rep | X_pca | 이웃을 찾기 위해 사용할 데이터 선택. 기본값: "X_pca" | |
Option | Integer | n_pcs | 50 | 분석에 사용할 차원 수 (PCA의 경우 주성분 수) | |
Option | Boolean | approx | True | True: 가까운 세포를 찾기 위하여 annoy 또는 PyNNDescent 사용 (큰 데이터셋에서 실행 시간 단축, Batch correction 증가) | |
Option | Boolean | use_annoy | True | [approx]=True일 때만 사용됨. True: annoy를 사용하여 neighbor finding 수행; False: pyNNDescent 사용 | |
Option | String | metric | euclidean | 사용할 distance metric. Neighbor algorithm에 따라 옵션이 달라짐. 기본값:"euclidean"; Annoy의 가능한 값: 'angular', 'euclidean'; PyNNDescent의 가능한 값: 'euclidean', 'manhattan', 'hamming', 'l2', 'sqeuclidean', 'taxicab', 'l1', 'chebyshev', 'linfinity', 'linfty', 'linf', 'minkowski', 'seuclidean', 'standardised_euclidean', 'wminkowski' | |
Option | Integer | neighbors_within_batch | 3 | 각 배치에 대해 몇 개의 상위 이웃을 report할지 설정 | |
Option | Integer | trim | none | 각 세포의 이웃을 상위 [trim]개로 제한하여 클러스터링을 명확하게 함. 값이 작을수록 배치효과가 남고 population이 독립적으로 간주됨. None이면 [neighbors_within_batch] 값에 데이터 내 batch 수를 곱한 값의 10배로 자동 설정 | |
Option | Integer | anny_n_trees | 10 | (Annoy) Annoy forest에서 생성할 tree의 수. 클수록 정확도가 올라가지만 실행 시간 증가 | |
Option | Integer | pynndescent_n_neighbors | 30 | (pyNNDescent) 근사 그래프를 만들 때 고려할 이웃의 수. 클수록 정확도가 올라가지만 실행 시간 증가 | |
Option | Integer | pynndescent_random_state | 0 | (pyNNDescent) 그래프 생성 시 사용할 랜덤 시드 값 | |
Option | Boolean | use_faiss | True | [approx]=False, [metric]=“euclidean”일 때, neighbor 계산에 faiss를 사용하여 약간의 성능 향상 | |
Option | Float | set_op_mix_ratio | 1.0 | UMAP connectivity 계산을 위한 파라미터. 0과 1 사이의 실수 | |
Option | Integer | local_connectivity | 1 | UMAP connectivity 계산을 위한 파라미터, 각 세포에 대해 몇 개의 이웃이 완전히 연결된 것으로 가정되는지 설정 |
결과
scanpy_annotateClusters
Scanpy에서는 연구자가 특정 마커 유전자의 발현 패턴을 기준으로 직접 클러스터에 세포 유형을 부여할 수 있습니다. 예를 들어 T세포 마커(CD3D, CD3E), B세포 마커(MS4A1), 대식세포 마커(LYZ) 등의 발현을 확인하여 해당 클러스터가 어떤 세포 집단인지 판단합니다. 이후 클러스터 번호(예: 0, 1, 2…)에 연구자가 정의한 세포 유형 라벨을 매핑해 adata.obs['celltype'] 같은 새로운 열에 저장할 수 있습니다. 이 방법은 자동 주석 도구 대비 해석자의 전문 지식을 반영할 수 있어, 데이터 특성에 맞는 맞춤형 주석 작업이 가능하다는 장점이 있습니다.
주요사항
입력 데이터 예제
- 예제 데이터가 없습니다.
실행 명령어 예시
python scanpy_annotateClusters.py --input_dir /path/to/input_dir --hvg_path /path/to/input_dir --output_dir /path/to/output_dir \ --query_obs leiden --query_cat 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24 \ --append_obs celltype --append_cat T,T,T,Macrophages,Monocytes,T,Epithelial,Epithelial,Macrophages,Macrophages,B,Monocytes,NK,Macrophages,Macrophages,Macrophages,MAIT,Fibroblasts,Fibroblasts,B,Fibroblasts,Monocytes,T,Fibroblasts,Fibroblasts
실행 스크립트
파라미터
옵션 | 유형 | 명칭 | 값 | 설명 | 필수값 |
---|---|---|---|---|---|
Input | String | input_dir | /path/to/input_dir | 입력 파일이 저장된 디렉토리 경로로, PCA 결과를 포함하는 scanpy_findClusters, scanpy_BBKNNbatchCorrection 등의 결과 폴더임 | |
Input | String | hvg_path | /path/to/input_dir | 입력 파일이 저장된 디렉토리 경로로 scanpy_findHVGs 결과 폴더임 | |
Output | Folder | output_dir | /path/to/output_dir | 결과 파일이 저장될 디렉토리 경로 | |
Option | String | query_obs | leiden | 기준이 되는 adata.obs의 컬럼 이름을 지정 | |
Option | String | query_cat | none | 선택할 카테고리 값을 쉼표로 지정 (예시: 1,2,3,4) | |
Option | String | append_obs | celltype | 새로운 주석 정보를 추가할 adata.obs의 컬럼 이름을 지정 | |
Option | String | append_cat | none | 새롭게 추가할 카테고리 값을 쉼표로 지정 (예시: T-cell,B-cell,Myeloid,Myeloid) | |
Option | String | append_cat_order | none | pandas.Categorical 형식으로 저장할 때 사용할 카테고리 순서를 쉼표로 구분해 지정합니다. 중복되지 않은 값만 입력해야 함 |
결과
scanpy_runCellTypist
CellTypist는 단일세포 전사체 데이터에서 세포 유형을 자동으로 예측하고 주석을 달아주는 Python 기반 패키지입니다. 미리 학습된 reference 모델(예: Immune_All_Low, Immune_All_High, Lung_Immune, Brain_NonImmune, PBMC 등)을 활용하여 각 세포의 발현 패턴을 비교·분류합니다. 사용자는 AnnData 객체를 입력해 간단히 실행할 수 있으며, 결과는 각 세포별 세포 유형 정보로 추가됩니다. 직관적이고 빠른 분류가 가능해 대규모 단일세포 데이터 분석에 유용하며, 연구자의 해석을 보완하는 도구로 널리 활용됩니다.
주요사항
- 모델 목록은 https://www.celltypist.org/models 또는 celltypist.models.models_description() 같은 함수를 통해 확인할 수 있습니다.
입력 데이터 예제
- 예제 데이터가 없습니다.
실행 명령어 예시
python scanpy_runCellTypist.py --input_dir /path/to/input_dir --hvg_path /path/to/input_dir --output_dir /path/to/output_dir \ --model Immune_All_Low --majority_voting True --over_clustering True
실행 스크립트
파라미터
옵션 | 유형 | 명칭 | 값 | 설명 | 필수값 |
---|---|---|---|---|---|
Input | Folder | input_dir | /path/to/input_dir | 입력 파일이 저장된 디렉토리 경로로, PCA 결과를 포함하는 scanpy_findClusters, scanpy_BBKNNbatchCorrection 등의 결과 폴더임 | |
Input | Folder | hvg_path | /path/to/input_dir | 입력 파일이 저장된 디렉토리 경로로 scanpy_findHVGs 결과 폴더임 | |
Output | Folder | output_dir | /path/to/output_dir | 결과 파일이 저장될 디렉토리 경로 | |
Option | String | model | Immune_All_Low | AnnData 내 세포 유형을 예측하는 데 사용되는 모델. listCellTypistModels 을 통해 얻은 경우 celltypist_models.csv 내 파일 목록에서 .pkl 문자열은 제외하여 작성 | |
Option | Boolean | majority_voting | True | Over-clustering 후 majority voting을 시행하여, 예측된 라벨링으로 보정할지 여부 | |
Option | Boolean | over_clustering | False | 이전 clustering 결과에 대해 라벨링할지 여부. False이고 [majority_voting]=True일 경우 입력된 데이터 크기에 따라 heuristic over-clustering 방식을 적용하며, [majority_voting]=False인 경우 이 옵션은 무시됨 |
결과
scanpy_findDEG
분석에 사용되는 AnnData 객체를 기반으로, 각 클러스터(그룹) 내 세포와 나머지 세포 간, 혹은 사용자가 지정한 두 클러스터(그룹) 간의 차별 발현 유전자(Differentially Expressed Gene, DEG)를 선별합니다. 이는 두 세포 집단의 유전자 발현량 차이를 Scanpy의 scanpy.tl.rank_genes_groups() 함수에 내장된 t-test, Wilcoxon rank sum test 등의 통계 기법으로 비교하여 수행됩니다. 결과 파일에서는 두 집단 간 발현 차이를 보이는 유전자 목록을 확인할 수 있으며, 이를 시각화하여 활용할 수 있습니다.
주요사항
입력 데이터 예제
- 예제 데이터가 없습니다.
실행 명령어 예시
python scanpy_findDEG.py --input_dir /path/to/input_dir --output_dir /path/to/output_dir \ --groupby leiden --groups all --method t-test --corr_method benjamini-hochberg \ --log2fc_abs_thr 0.25 --pval_cutoff 0.05 --plot_volcano False
실행 스크립트
파라미터
옵션 | 유형 | 명칭 | 값 | 설명 | 필수값 |
---|---|---|---|---|---|
Input | Folder | input_dir | /path/to/input_dir | 입력 파일을 담고 있는 디렉토리 경로로 scanpy_findClusters, scanpy_BBKNNbatchCorrection, runcelltyplist, scanpy_runCellTypist, scanpy_annotateClusters 등의 결과 폴더임 | |
Output | Folder | output_dir | /path/to/output_dir | 결과 파일이 저장될 디렉토리 경로 | |
Option | String | groupby | leiden | 차등 발현 분석을 수행하기 위해 세포를 구분하는 그룹(예: 클러스터, 조건) 지정 | |
Option | String | groups | all | 비교할 대상이 될 [groupby]의 하위 카테고리로 복수 시 공백 없이 쉼표로 구분 (예: 'g1,g2' 또는 'all'(기본값)). [groups]의 첫 번째 항목은 volcano plot을 그릴 때 control로 사용 | |
Option | Integer | n_genes | none | 반환된 테이블에 나타날 유전자 수로 기본값은 'all' | |
Option | String | method | t-test | 통계기법 선택. 기본값: 't-test'; 가능한 값: 't-test', 't-test_overestim_var', 'wilcoxon', 'logreg' | |
Option | String | corr_method | benjamini-hochberg | p-value 보정 방법. 't-test', 't-test_overestim_var', 'wilcoxon'에만 사용. 가능한 값: 'benjamini-hochberg'(기본값), 'bonferroni' | |
Option | Boolean | tie_correct | False | (Wilcoxon) Wilcoxon 점수에 대해 tie correction을 적용할지 여부 | |
Option | Boolean | pts | False | 유전자를 발현하는 세포의 비율을 계산할지 여부. | |
Option | Float | pval_cutoff | 0.05 | 보정된 p-value의 cutoff. 이 값 이하인 유전자만 반환 | |
Option | Float | log2fc_abs_thr | 0 | 반환할 log2(Fold Change) 절댓값의 threshold. | |
Option | Boolean | plot_volcano | False | 두 그룹 간의 DEG를 volcano plot을 통해 시각화할지 여부. [groups]의 그룹 수가 2인 경우 또는 [groups]=all이면서 [groupby] 내 카테고리의 수가 2인 경우 True 선택 가능 | |
Option | Integer | clip_yaxis | 300 | Volcano plot에서 y축 (-log10 p-value) 최댓값. 이 값 이상은 잘림 | |
Option | String | repel_genes | none | Volcano plot에 표시할 유전자 목록으로 공백없이 쉼표로 구분 | |
Option | Integer | plot_width | 9 | Volcano plot의 너비 | |
Option | Integer | plot_height | 6 | Volcano plot의 높이 |
결과
scanpy_plotGeneExpr
scanpy_plotGeneExprs 함수는 사용자가 지정한 유전자 발현을 scatter plot, dot plot, violin plot, 혹은 heatmap 형태로 시각화하는 기능을 제공합니다. 이 함수는 DEG(차등 발현 유전자)를 계산하지 않으며, 사용자가 직접 지정한 유전자 목록이나 사전에 수행된 DEG 분석 결과를 기반으로 발현 양상을 시각화합니다. 출력된 그래프는 자동으로 파일로 저장되며, 연구자는 이를 통해 각 세포 집단 간 발현 패턴을 직관적으로 비교하고 해석할 수 있습니다. 이러한 시각화는 후속 분석이나 결과 보고에 매우 유용하게 활용됩니다.
주요사항
입력 데이터 예제
- 예제 데이터가 없습니다.
실행 명령어 예시
python scanpy_plotGeneExprs.py --input_dir /path/to/input_dir --output_dir/path/to/output_dir --feature FYN,DLG2,PLP1,CD74 --plot_type scatter
실행 스크립트
파라미터
옵션 | 유형 | 명칭 | 값 | 설명 | 필수값 |
---|---|---|---|---|---|
Input | Folder | input_dir | /path/to/input_dir | 입력 파일을 담고 있는 디렉토리 경로 | |
Output | Folder | output_dir | /path/to/output_dir | 결과 파일이 저장될 디렉토리 경로 | |
Option | String | feature | none | 쉼표로 구분된 문자열로 그릴 유전자 목록을 지정. (예: Pdcd1,Lag3) None이면 각 카테고리당 3개의 up/downregulated gene이 표시됨 | |
Option | String | plot_type | scatter | 유전자 발현을 시각화할 plot 유형 지정. [가능한 값: “scatter”, "dot", "violin", "heatmap"] | |
Option | String | scatter_basis | umap | ([plot_type]이 scatter인 경우) 시각화에 사용할 임베딩 선택. 기본값: "umap"; 가능한 값: "umap", "tsne", "pca" | |
Option | Boolean | dendrogram | False | ([plot_type]이 dot/violin/heatmap인 경우) True인 경우, [groupby] 내 hierarchical clustering에 기반한 dendrogram 추가 | |
Option | Boolean | stack_violin | False | ([plot_type]이 violin이고 [feature] 내 유전자가 2개 이상인 경우) - True: 여러 개의 violin plot을 하나의 plot 안에 시각화 - False: 유전자별로 시각화 | |
Option | String | groupby | leiden | ([plot_type]이 dot/violin/heatmap인 경우) 시각화 시 세포를 구분하는 그룹(예: 클러스터, 조건)을 지정 | |
Option | String | layer | normalized/ scaled | 시각화할 AnnData 내 expression matrix의 type. [가능한 값: "raw", "normalized", "scaled"] - [plot_type]이 scatter, violin: 기본값으로 log-normalized expression이 시각화됨. - [plot_type]이 dot, heatmap: 기본값으로 z-scaled expression이 시각화됨 | |
Option | String | thres | none | ([layer]이 scaled 이고 [plot_type]이 dot 또는 heatmap인 경우)) 시각화할 발현값의 절댓값 cutoff 지정 | |
Option | String | save | 출력할 그림 파일의 확장자 지정. 기본값: ".pdf" |
결과
scanpy_plotCellTypeProportion
scanpy_plotCellTypeProportion 함수는 AnnData 객체 내 두 개의 범주형 변수(예: 클러스터와 세포 유형)를 기반으로 교차 빈도표(contingency table)를 생성합니다. 이를 통해 첫 번째 그룹의 각 카테고리(예: 세포유형)에 속한 세포들이 두 번째 그룹(예: 클러스터)의 각 카테고리에 얼마나 포함되는지 계산할 수 있습니다. 계산된 값은 절대 빈도(absolute counts)와 상대 점유율(relative proportions)로 제공되며, 이를 막대그래프로 시각화하여 각 클러스터에서 어떤 세포 유형이 어느 정도 분포하는지 직관적으로 확인할 수 있습니다.
주요사항
입력 데이터 예제
- 예제 데이터가 없습니다.
실행 명령어 예시
python scanpy_plotCellTypeProportion.py --input_dir /path/to/input_dir --output_dir /path/to/output_dir --group1 sample_id \ --group2 CellTypist
실행 스크립트
파라미터
옵션 | 유형 | 명칭 | 값 | 설명 | 필수값 |
---|---|---|---|---|---|
Input | Folder | input_dir | /path/to/input_dir | 입력 파일을 담고 있는 디렉토리 경로 | |
Output | Folder | output_dir | /path/to/output_dir | 결과 파일이 저장될 디렉토리 경로 | |
Option | String | group1 | none | AnnData 내 첫 번째로 세포를 구분하는 그룹(예: 클러스터, 조건)을 지정 | |
Option | String | group2 | none | AnnData 내 두 번째로 세포를 구분하는 그룹(예: 클러스터, 조건)을 지정 | |
Option | Integer | plot_width | 9 | Bar plot의 너비 | |
Option | Integer | plot_height | 6 | Bar plot의 높이 |
결과
scanpy_extractGenes
scanpy_extractGenes.py는 Scanpy를 이용한 전처리 및 정규화 과정 후, 분석에 사용되는 전체 유전자 목록을 추출하는 프로그램입니다. 이 스크립트는 특히 topGO 분석과 같은 하위 집합 기반 유전자 기능 분석에 필요한 입력 파일을 준비하는 과정에서 사용됩니다. 사용자는 먼저 scanpy_normalize를 통해 정규화된 AnnData 객체를 준비하고, 이를 기반으로 본 프로그램을 실행하여 전체 유전자의 리스트를 추출합니다. 추출된 유전자 리스트는 각 유전자에 대한 식별자 정보와 함께 CSV 또는 텍스트 파일 형태로 저장되며, 이후 topGO의 입력값으로 활용할 수 있습니다.
주요사항
입력 데이터 예제
- 예제 데이터가 없습니다.
실행 명령어 예시
scanpy_extractGenes --input_dir /path/to/input_dir --output_dir /path/to/output_dir
실행 스크립트
파라미터
옵션 | 유형 | 명칭 | 값 | 설명 | 필수값 |
---|---|---|---|---|---|
Input | Folder | input_dir | /path/to/input_dir | 입력 파일을 담고 있는 디렉토리 경로 | |
Output | Folder | output_dir | /path/to/output_dir | 결과 파일이 저장될 디렉토리 경로 | |
Option | String | test | test | 테스트 |
결과
topGO_GOanalysis
TopGO는 특정 유전자 목록을 기반으로 Gene Ontology(GO) 용어의 풍부도를 분석하는 R 패키지입니다. 이를 통해 차이가 있거나 관심 있는 유전자들이 GO의 어떤 기능 범주(Biological Process, Molecular Function, Cellular Component)에 과도하게 포함되어 있는지를 통계적으로 평가할 수 있습니다. GO의 계층 구조를 고려하여 부모-자식 노드 간 의존성을 반영한 보다 정확한 enrichment 분석이 가능하며, Fisher’s exact test, Kolmogorov-Smirnov test, weighted scoring 등 다양한 통계적 방법을 지원합니다.
주요사항
입력 데이터 예제
- 예제 데이터가 없습니다.
실행 명령어 예시
Rscript topGO_GOanalysis.r \ --input_dir /path/to/input_dir --gene_list_dir /path/to/input_dir \ --output_dir /path/to/output_dir \ --species human --subont BP --p_cutoff 0.05 --plot True --groupby leiden
실행 스크립트
파라미터
옵션 | 유형 | 명칭 | 값 | 설명 | 필수값 |
---|---|---|---|---|---|
Input | Folder | input_dir | /path/to/input_dir | 차등 발현 유전자(DEG) 목록 파일들이 저장되어 있는 디렉토리 경로 | |
Input | Folder | gene_list_dir | /path/to/input_dir | 분석에서 참조로 사용할 전체 유전자 목록 파일들이 저장되어 있는 디렉토리 경로 | |
Output | Folder | output_dir | /path/to/output_dir | 결과 파일이 저장될 디렉토리 경로 | |
Option | String | species | human | 현재 "mouse"(Mus musculus)와 "human"(Homo sapiens)을 지원함 | |
Option | Float | deg_pval_cutoff | 0.05 | GO 분석에 사용할 계산된 DEG의 조정된 P-value의 임계값 지정 | |
Option | Float | deg_logfc_abs_thr | 0.5 | GO 분석에 사용할 계산된 DEG의 조정된 logFC 절댓값의 임계값 지정 | |
Option | String | subont | BP | Gene Ontology의 서브 온톨로지. "BP"(Biological Process), "CC"(Cellular Component), "MF"(Molecular Function) 중 선택 | |
Option | Float | p_cutoff | 0.05 | 계산된 Gene Ontology의 P-value(Fisher's exact test 사용) 임계값으로 이 값 이하의 항목은 저장되지 않음 | |
Option | Boolean | plot | TRUE | 계산된 GO term에 대한 막대그래프를 저장할지 여부. 상위 5개의 up/downregulated term 포함 | |
Option | String | groupby | leiden | 세포를 구분하는 그룹(예: 클러스터, 조건) 지정 | |
Option | String | plot_go_id | FALSE | 막대그래프 축 눈금에 GO ID 사용 여부 | |
Option | Integer | plot_width | 16 | 그래프 파일의 가로 길이 | |
Option | Integer | plot_height | 9 | 그래프 파일의 세로 길이 |
결과
scanpy_subsetAnnData
scanpy_subsetAnnData는 특정 그룹 내 특정 카테고리의 세포들에 대해 raw UMI count matrix를 분리하고, 새로운 AnnData로 저장합니다. Subset 후 Normalization과 Scaling을 다시 수행하려면 원본 데이터(raw matrix)를 사용해야 합니다. 이미 가공된 데이터를 기반으로 subset을 수행하면, 기존 통계 정보가 남아 있어 새로운 subset에 적합하지 않은 결과가 나올 수 있습니다. 따라서 adata_qc_passed_concat.h5ad에 있는 가공되지 않은 원본 데이터로 subset을 수행해야 정확한 분석이 가능합니다.
이 프로그램은 특정 세포 유형(예: T 세포)이나 조건별 하위 집단만 별도로 분석하고자 할 때 사용되며, 원하는 subset을 추출한 뒤 해당 데이터에 맞추어 정규화, 스케일링을 포함한 후속 분석 전 과정을 다시 수행할 수 있습니다.
주요사항
입력 데이터 예제
- 예제 데이터가 없습니다.
실행 명령어 예시
python scanpy_subsetAnnData.py \ --input_dir /path/to/input_dir --merged_in /path/to/input_dir \ --output_dir /path/to/output_dir \ --groupby CellTypist --groups "Classical monocytes"
실행 스크립트
파라미터
옵션 | 유형 | 명칭 | 값 | 설명 | 필수값 |
---|---|---|---|---|---|
Input | Folder | input_dir | /path/to/input_dir | adata_cellType_annotated.h5ad 등의 입력 파일이 저장된 디렉토리 경로 | |
Input | Folder | merged_input_dir | /path/to/input_dir | QC 후 가공되지 않은 AnnData object(adata_qc_passed_concat.h5ad)가 저장된 디렉토리 경로 | |
Output | Folder | output_dir | /path/to/output_dir | 결과 파일이 저장될 디렉토리 경로 | |
Option | String | groupby | CellTypist | 추출하고자 하는 세포의 AnnData object 내 변수(컬럼) 이름 | |
Option | String | groups | "Classical monocytes" | 추출하고자 하는 세포의 AnnData object 내 변수(컬럼)의 특정 값. 다수일 경우 쉼표로 구분 |
결과
- 버전2.0
- 마지막 업데이트1시간 전
- 기여자
- 김
- 이
- 더
- 클
- cellranger_mkref
- cellranger_count
- dropletUtils_filterCells
- scanpy_plotQCmetrics
- scanpy_applyQCthresholds
- scanpy_normalize
- scanpy_findHVGs
- scanpy_scaleData
- scanpy_runPCA
- scanpy_findNeighbors
- scanpy_runTSNE
- scanpy_runUMAP
- scanpy_findClusters
- scanpy_scatterPlot
- scanpy_BBKNNbatchCorrection
- scanpy_annotateClusters
- scanpy_runCellTypist
- scanpy_findDEG
- scanpy_plotGeneExpr
- scanpy_plotCellTypeProportion
- scanpy_extractGenes
- topGO_GOanalysis
- scanpy_subsetAnnData