一般得到10X Genomics的下机数据之后,我们需要使用Cellranger软件进行上游数据的处理,并且生成网页报告。
其中就包括了Barcode Rank Plot——细胞鉴定曲线图
细胞鉴定曲线图横坐标是Barcodes,纵坐标是UMI counts,都取log19.图中是将所有测序得到的Barcode按照其包含的UMI数进行降序排列,并且对细胞和非细胞标注不同的颜色,帮助区分。
然后基于细胞鉴定曲线图,设定一个cutoff值,决定去除掉哪些barcodes,并且保留下来部分Barcodes用于下游的数据分析。
使用seurat来进行单细胞下游的数据分析,一般我们下载读取的数据都是经过上游cellranger流程处理过后的数据,保留下来几千到上万的barcodes来进行后续的数据分析。
但GSE139829
这个数据就有所不同,它是提供了原始的矩阵信息,11个样品的数据量就高达一个G
如果使用简单的min.cells = 5,min.features = 500进行一个硬过滤,那就会去除掉绝大多数没有意义的Barcodes。不过我们也可以使用下游矩阵数据来复现一下cellranger的细胞鉴定曲线,找一下过滤的标准。
#读取数据创建seurat对象
counts = Read10X("outputs/UMM061/")
sce=CreateSeuratObject(counts = counts )
> dim(sce)
[1] 33694 737280
创建完seurat对象之后,在不进行任何操作时,seurat会为每个细胞创建一个元数据,保存在meta.data里面
每一列的内容:
orig.ident
:通常包含所知的样品名,默认为我们赋给project的值,如果不赋值那就是SeuratProjectnCount_RNA
:每个细胞的UMI数目nFeature_RNA
:每个细胞所检测到的基因数目那我们就可以使用nCount_RNA
或者nFeature_RNA
在R语言里面绘制细胞鉴定曲线,找到一个合适的cutoff值。
cellranger是将所有测序得到的Barcode按照其包含的UMI数进行降序排列,并且对细胞和非细胞标注不同的颜色,帮助区分。那我们也按照对应的数据进行绘图。
a <- sort(log10(sce$nCount_RNA+1),decreasing = TRUE)
plot(a,
xlab = "Barcodes",
ylab = "nCount_RNA",
xlim = c(100,100000)
)
从cellranger的3.0以后的版本,是把所有的barcodes按照UMI数进行排序后,取前1%的那个barcode所包含的UMI数量,记为m然后再去这个m的1/10作为cutoff值
那对应到我们的737280的数据,取1%就是7372,对应的UMI差不多是5000然后再取1/10,也就是500
如果使用nFeature_RNA同样的取log10之后作图,然后按照barcode包含的基因数进行排序,因为平均一个细胞的一个基因有10个左右的UMI,所以换算为基因的阈值就无需再取1/10,那根据取1%的barcode再对应到feature上差不多就是300-500左右的样子
log_data <- log10(sce$nFeature_RNA+1)
plot(sort(log_data,decreasing = TRUE),
xlab = "Barcodes",
ylab = "nFeature_RNA",
xlim = c(100,100000))
基于细胞中至少要表达300个基因来对数据进行过滤
#基于min.features = 300进行过滤
sce2=CreateSeuratObject(counts = counts,
min.cells = 5,
min.features = 300)
> dim(sce2)
[1] 19222 9755
一般很少会有下游是原始的rawcounts的数据,所以对于处理后的数据集我们可以可视化一下nFeature_RNA和nCount_RNA来辅助进行质控
那下期我们可以看看nFeature_RNA和nCount_RNA!