가정1. 10x Genomics Single Cell Solution을 통해 얻은 서열 데이터를 사용 가정2. 리눅스(Ubuntu 22.04.3 LTS x86_64) OS를 사용하며 기본적인 shell 명령어를 앎 가정3. 패키지 매니저인 Anaconda에 대한 사용법을 알고 있음 터미널을 열고 원하는 폴더로 이동합니다. 저는 /home/fkt/Downloads에서 시작하도록 하겠습니다.
$pwd/home/fkt/Downloads
터미널을 열고 원하는 폴더로 이동합니다. 저는 /home/fkt/Downloads에서 시작하도록 하겠습니다. 저는 아래와 같은 가정을 한 상태로 진행합니다.
1.1 가상환경 사용하기
정확하게는 velocyto를 사용하기 위해 가상환경을 만들어 사용합니다. 먼저 TutorialEnvironment.yml 파일을 다음 명령어로 다운받습니다.
자세한 것은 https://www.10xgenomics.com/support/software/cell-ranger
2.1 System Requirements
Hardware Cell Ranger pipelines run on Linux systems that meet these minimum requirements:
8-core Intel or AMD processor (16 cores recommended).
64GB RAM (128GB recommended).
1TB free disk space.
64-bit CentOS/RedHat 7.0 or Ubuntu 14.04 - See the 10x Genomics OS Support page for details.
2.1.1 Cell Ranger 7.2.0 (Sep 13, 2023)
Chromium Single Cell Software Suite Self-contained, relocatable tar file. Does not require centralized installation. Contains binaries pre-compiled for CentOS/RedHat 7.0 and Ubuntu 14.04. Runs on Linux systems that meets the minimum compute requirements.
이제 ./cellranger명령어를 입력하면 아래와 같이 cell ranger 실행이 가능합니다.
./cellrangercellranger cellranger-7.2.0Process 10x Genomics Gene Expression, Feature Barcode, and Immune Profiling dataUsage: cellranger <COMMAND>Commands:count Count gene expression and/or feature barcode reads from a single sample and GEM wellmulti Analyze multiplexed data or combined gene expression/immune profiling/feature barcode datamulti-template Output a multi config CSV templatevdj Assembles single-cell VDJ receptor sequences from 10x Immune Profiling librariesaggr Aggregate data from multiple Cell Ranger runsreanalyze Re-run secondary analysis (dimensionality reduction, clustering, etc)mkvdjref Prepare a reference for use with CellRanger VDJmkfastq Run Illumina demultiplexer on sample sheets that contain 10x-specific sample index setstestrun Execute the 'count' pipeline on a small test datasetmat2csv Convert a gene count matrix to CSV formatmkref Prepare a reference for use with 10x analysis software. Requires a GTF and FASTAmkgtf Filter a GTF file by attribute prior to creating a 10x referenceupload Upload analysis logs to 10x Genomics supportsitecheck Collect linux system configuration informationhelp Print this message or the help of the given subcommand(s)Options:-h,--help Print help-V,--version Print version
3 예제 FASTQ 파일과 레퍼런스 데이터 다운로드
사람과 마우스 데이터 두 종류를 모두 다운로드 합니다. 이미 많은 예제에서 Human 1k PBMC를 다루고 있으므로 저는 Mouse 1k neuron으로 진행해보겠습니다. Human 1k PBMC은 직접해보시기 바랍니다.
3.0.1 Human PBMC 1k data
mkdir data &&cd data# Human PBMC 1k = 5.17GBwget https://cf.10xgenomics.com/samples/cell-exp/3.0.0/pbmc_1k_v3/pbmc_1k_v3_fastqs.tartar-xvf pbmc_1k_v3_fastqs.tar# Human reference (GRCh38) = 11GBwget https://cf.10xgenomics.com/supp/cell-exp/refdata-gex-GRCh38-2020-A.tar.gztar-zxvf refdata-gex-GRCh38-2020-A.tar.gz
RNA velocity이란? 스플라이싱된 RNA와 아직 스플라이싱되지 않은 RNA를 구분해 세포의 상태를 예측하는 기법으로 scRNA 데이터에서 클러스터간에 분화 과정에 대한 단서를 얻을 수 있습니다. 예를 들어 아래 그림에서 보면 cluster4에서 cluster2로의 방향성을 확인 할 수 있습니다.
RNA velocity 분석을 위해서는 추가적으로 velocyto이라는 도구를 사용해 loom파일을 얻어야 합니다. 아래 명령어를 사용하면 간단하게 얻을 수 있습니다.
# conda install -c bioconda scveloimport scvelo as scv# load loom files for spliced/unspliced matrices for each sampleloom = scv.read(f"{file_path}/run_count_mNeuron1k.loom", validate=False, cache=False)# rename barcodes in order to merge:barcodes = [bc.split(":")[1] for bc in loom.obs.index.tolist()]barcodes = [bc[0 : len(bc) -1] +"-1"for bc in barcodes]loom.obs.index = barcodes# make variable names uniqueloom.var_names_make_unique()# merge matrices into the original adata objectadata = scv.utils.merge(adata, loom)adata
R에 좀 더 익숙하시다면 Seurat을 사용하세요. 저는 파이썬 문법을 더 좋아하지만 솔직히 분석 도구의 완성도 측면에서는 Seurat이 더 나은 것 같습니다. 아래 코드는 jupyter notebook에서 R코드를 사용하기 위해 필요한 것으로 rStudio를 사용하신다면 %%R이 포함된 셀의 코드만 사용하시면 됩니다.
import loggingimport rpy2.rinterface_lib.callbacks as rcb# import rpy2.robjects as rorcb.logger.setLevel(logging.ERROR)%load_ext rpy2.ipython
%%Rlibrary(dplyr)library(Seurat)
WARNING: The R package "reticulate" only fixed recently
an issue that caused a segfault when used with rpy2:
https://github.com/rstudio/reticulate/pull/1188
Make sure that you use a version of that package that includes
the fix.
An object of class Seurat
32285 features across 1311 samples within 1 assay
Active assay: RNA (32285 features, 0 variable features)
Seurat object를 파일로 저장하는 방법에도 여러가지가 있지만 R에서 많이 사용되는 *.rds를 사용하는 코드는 아래와 같습니다.
%%RsaveRDS(obj, file="../output/mNeuron1k.rds")
7 마치며
이것으로 scRNA seq 데이터의 전처리 과정을 알아봤습니다. 여기 적힌 방법 외에도 더 효율적이고 나은 방법도 있고 앞으로도 더 생겨날 것입니다. 그러나 저도 배우는 입장에서 다른 분들에게 도움이 되고자 정리를 해봤습니다. 실제 실험을 통해 얻은 데이터를 분석하는데 도움이 되길 바랍니다.