您的位置:

cellranger: 一个用于单细胞RNA测序分析的完整分析管道

一、简介

cellranger是10x Genomics公司开发的一个基于Illumina测序平台的单细胞RNA测序(scRNA-seq)分析工具,主要用于处理10x Genomics的单细胞bead-based测序数据。它是一个完整的分析管道,可以执行从原始数据到表达矩阵、细胞聚类、细胞分型和单细胞基因表达分析等一系列分析,支持多种分析流程,包括 5’ gene expression、3’ gene expression、VDJ和feature barcode分析。

二、安装

cellranger官方提供了Linux和MacOS的二进制安装包,可在任何支持Bash的操作系统上安装。安装步骤如下:

1. 下载安装包:https://support.10xgenomics.com/single-cell-gene-expression/software/downloads/latest
2. 解压缩安装包:tar -xzvf cellranger-VERSION.tar.gz
3. 添加cellranger到PATH环境变量:export PATH=$PATH:/path/to/cellranger-VERSION

三、使用

1. 准备数据

在使用cellranger之前,需要将原始数据(fastq格式)拆分成多个样本的fastq文件,每个样本一个文件夹,文件夹名称为样本名称。拆分后的文件夹存储在一个主目录下。

Main_directory/
├── Sample1/
│   ├── R1.fastq.gz
│   └── R2.fastq.gz
├── Sample2/
│   ├── R1.fastq.gz
│   └── R2.fastq.gz
└── Sample3/
    ├── R1.fastq.gz
    └── R2.fastq.gz

2. 运行分析管道

在运行分析管道前,需要准备好参考基因组和注释信息。cellranger支持多个物种的常见基因组和注释信息。可以从10x Genomics网站中下载相应物种的参考数据,也可以使用自己的自定义参考数据。

cellranger count \
    --id=Sample1_count \
    --transcriptome=/opt/refdata-cellranger-GRCh38-3.0.0 \
    --fastqs=Main_directory/Sample1 \
    --sample=Sample1

3. 分析结果

cellranger会生成一个报告文件,包括不同质量控制步骤的图表和统计信息。报告文件位于输出目录下的“outs/web_summary.html”。

同时,在输出目录还包含多个输出文件:

  • barcodes.tsv.gz: 包含每个细胞的唯一barcode。
  • genes.tsv.gz: 包含所有基因的信息。
  • matrix.mtx.gz: 包含每个细胞和每个基因的测序计数。
  • web_summary.html: cellranger在分析过程中生成的报告文件。

四、扩展

1. Seurat和Scanpy

虽然cellranger可以执行许多重要的分析步骤,但不足以涵盖整个单细胞RNA-seq数据分析的范围。为了进一步分析和可视化结果,需要使用其他工具,例如Seurat(R语言包)和Scanpy(Python包)。Seurat可以帮助您执行聚类、图形可视化和差异表达分析等操作,而Scanpy提供了与Scipy、Numpy和Pandas等Python库的无缝集成,可以进行类似的分析。

2. 参考数据

当处理不同物种或具有不同基因组的样本时,需要进行参考数据的自定义。cellranger提供了一个参考数据制作工具,可以帮助您准备自己的参考数据,以便用于分析同种类中的多个样本。

cellranger mkref \
    --genome=MyGenome \
    --fasta=/path/to/genome.fa \
    --genes=/path/to/genes.gtf

3. 结果后处理

在聚类后,可以使用Seurat对聚类结果进行可视化、交互式探索和差异表达分析。Seurat提供了多种应用和技术,包括降维、聚类、比较、集群显著性分析和可视化。可以使用以下示例代码从cellranger输出创建Seurat对象:

library(Seurat)
counts <- Read10X(data.dir = 'path/to/outs/filtered_feature_bc_matrix')
seurat_obj <- CreateSeuratObject(counts, project = 'MyProject')
seurat_obj