1. 初识单细胞数据:从拿到文件到理解结构
当你第一次拿到单细胞转录组测序数据时,可能会有点懵。别担心,这种感觉我也有过。通常,测序公司会给你一个数据包,里面装着看起来有点神秘的文件夹和文件。咱们先别急着跑代码,花点时间搞清楚这些文件到底是什么,这能帮你省下后面很多排查错误的时间。
以最常见的10X Genomics平台数据为例,公司交付的文件夹里通常会有一个名为filtered_feature_bc_matrix的目录。这个目录就是后续所有分析的基石,里面有三个核心的压缩文件,它们共同构成了一个表达矩阵。我习惯把它们想象成一个巨大的Excel表格:barcodes.tsv.gz文件是列名,每一行代表一个被捕获的细胞,每个细胞都有一个独一无二的条形码(Barcode);features.tsv.gz文件是行名,每一行代表一个被检测到的基因,通常是基因的官方符号(Gene Symbol);而matrix.mtx.gz就是这个表格的内容本身,它记录了每个细胞中每个基因的表达量,这个值通常是UMI计数。
这里有个关键点:单细胞数据是高度稀疏的。什么意思呢?想象一下,你有一个包含2万多个基因(行)和几千个细胞(列)的大表格,但里面超过90%的格子都是0。这是因为在一个细胞里,大多数基因根本不表达,或者表达量低到技术手段检测不到。所以,这个矩阵文件通常会用一种特殊的“稀疏矩阵”格式存储,只记录那些非零值的位置和数值,这样能极大节省存储空间。我第一次看到这个特性时还挺惊讶,但后来明白了,这正是单细胞数据的本质——每个细胞只“打开”了它那套庞大基因组中的一小部分。
除了10X,你可能还会遇到BD Rhapsody平台的数据。它处理后的结果通常是一个巨大的CSV文件,比如RSEC_MolsPerCell.csv。虽然格式不同,但内核是一样的:行是基因,列是细胞,格子里的数字是表达量。这个文件往往特别大,直接用Excel打开可能会卡死,所以我们都是在R或Python里用代码读取。而Smart-seq2技术的数据又有所不同,它测的是基因的全长,所以给出的表达量通常是经过标准化的RPKM或TPM值,更像传统的Bulk RNA-seq数据,处理时需要额外注意标准化步骤。
2. 分析前的准备:搭建你的R环境与安装必备工具
工欲善其事,必先利其器。在开始分析之前,我们需要一个稳定、高效的工作环境。对于单细胞分析,R语言生态下的Seurat包是目前最主流、社区最活跃的工具。下面我就手把手带你搭建这个环境,并分享一些我踩过坑才总结出来的配置技巧。
首先,你需要安装R和RStudio。R是引擎,RStudio是漂亮好用的驾驶舱。去R官网下载最新版本的R安装包,安装完成后,再安装RStudio Desktop。这两个步骤都很简单,一路点“下一步”就行。安装好后,打开RStudio,我们首先要做一件非常重要的事:更换软件包安装镜像源。默认的源在国外,下载速度慢且容易失败。在RStudio控制台里输入下面两行代码,换成国内的清华镜像源,速度会飞起。
options(BioC_mirror="https://mirrors.tuna.tsinghua.edu.cn/bioconductor")
options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
接下来就是安装核心的分析包了。我建议你按照功能模块分批安装,这样思路更清晰。首先是数据处理与基础绘图包,它们就像你的螺丝刀和扳手:
install.packages("stringr") # 处理文本和字符
install.packages("dplyr") # 数据操作的神器,会用管道符 %>%,代码会简洁很多
install.packages("ggplot2") # 绘图系统的王者,几乎所有的图都能用它定制
install.packages("ggpubr") # 基于ggplot2,方便快速拼图和添加统计标记
install.packages("ggsci") # 提供一系列科学期刊风格的配色方案,让你的图更专业
然后是单细胞分析的核心——Seurat包。它集成了从数据读入、质控、降维、聚类到差异分析的全套流程。
install.packages("Seurat")
单细胞分析计算量不小,尤其是当你的细胞数上万时。为了加速,我们需要启用并行计算。安装下面两个包,它们能让你的电脑多核火力全开。
install.packages("future")
install.packages("future.apply")
很多高级分析功能,比如通路富集、细胞轨迹推断等,需要从Bioconductor这个生物信息学专用的软件仓库安装。我们先安装Bioconductor的管理器,然后用它来安装其他包。
install.packages("BiocManager")
library(BiocManager)
BiocManager::install("limma") # 差异表达分析的经典工具
BiocManager::install("clusterProfiler") # 做GO、KEGG富集分析必备
BiocManager::install("org.Hs.eg.db") # 人类的基因注释数据库,用于ID转换
BiocManager::install("ComplexHeatmap") # 绘制复杂热图,功能非常强大
BiocManager::install("monocle") # 拟时序分析,研究细胞分化轨迹
最后,还有一些非常有用但需要通过GitHub安装的“神器”包。比如检测双细胞(Doublets)的DoubletFinder,做细胞间通讯分析的CellChat,以及用于批次效应校正的Harmony。
install.packages("devtools") # 安装GitHub包的工具
library(devtools)
devtools::install_github('chris-mcginnis-ucsf/DoubletFinder')
devtools::install_github("sqjin/CellChat")
devtools::install_github("immunogenomics/harmony")
安装过程中如果遇到询问“Update all/some/none? [a/s/n]”,直接输入 a 回车。如果问“Do you want to install from sources the packages which need compilation? (Yes/no/cancel)”,输入 no 回车。全部安装完成后,用 library() 函数逐一加载它们,确保没有报错。环境搭好,我们就可以正式开启数据分析之旅了。
3. 数据读入与初筛:把原始数据变成Seurat对象
现在,我们手里有了数据文件,也配好了分析武器。接下来第一步,就是把原始数据“喂”给Seurat,创建一个Seurat对象。这个对象就像一个智能容器,后续所有的数据、中间结果和图表都会存放在里面。这一步看似简单,但设置好初始的过滤参数,能为后续分析打下坚实基础。
首先,用setwd()函数设置你的工作目录到数据所在的文件夹。假设你的10X数据放在./Data/10X/SRR780_outs/路径下。然后,使用Read10X()函数读取数据。这个函数很聪明,它能自动识别filtered_feature_bc_matrix文件夹下的那三个核心文件,并把它们组合成一个稀疏矩阵。
library(Seurat)
library(dplyr)
setwd("./Data/10X/")
SRR780_data <- Read10X(data.dir = "SRR780_outs/filtered_feature_bc_matrix/")


4062

被折叠的 条评论
为什么被折叠?



