如何从gz压缩包读取10X数据并正确创建Seurat对象
报错核心原因
Read10X() 函数不支持直接读取 .tar.gz 格式的压缩包,该函数的data.dir参数必须传入解压后存放10X测序标准输出文件的本地文件夹路径,要求目标路径下必须存在三个核心文件:表达矩阵文件matrix.mtx、基因名注释文件features.tsv(旧版为genes.tsv)、细胞条码文件barcodes.tsv。你之前用gzfile()读取压缩包再传入函数的写法不符合函数输入要求,自然会运行失败。
正确操作流程
- 第一步:解压下载的压缩包
你可以直接手动右键点击pbmc3k_filtered_gene_bc_matrices.tar.gz,选择解压到当前Downloads文件夹;也可以直接在R控制台运行解压命令,不需要手动操作:
解压完成后,你会看到setwd("C:/Users/myname/Downloads") # 将压缩包解压到当前路径下的pbmc3k_data文件夹中 untar("pbmc3k_filtered_gene_bc_matrices.tar.gz", exdir = "./pbmc3k_data")pbmc3k_data文件夹下的层级为filtered_gene_bc_matrices/hg19/,hg19子文件夹里就存放着Read10X需要的三个核心文件。 - 第二步:传入正确路径读取数据
把解压后存放三个核心文件的文件夹路径传入data.dir参数即可,不需要和教程写的路径完全一致,匹配你本地的实际路径就行:pbmc.data <- Read10X(data.dir = "./pbmc3k_data/filtered_gene_bc_matrices/hg19/")
校验小技巧:运行Read10X前,可以先执行
list.files("./pbmc3k_data/filtered_gene_bc_matrices/hg19/"),如果返回结果里能看到三个核心10X文件,说明路径填写正确,后续读取不会报错。
避坑提示
gzfile()仅能读取单个.gz格式的压缩文件,无法处理包含多层目录结构的tar归档压缩包,不要用该函数处理.tar.gz格式的10X数据包- Windows系统编写文件路径时,不要直接用单斜杠
\,要么替换为正斜杠/,要么用双反斜杠\\,避免触发转义字符报错 - 不用刻意对齐教程里写的示例路径,只要找到你本地存放三个10X核心文件的文件夹,把对应路径填入参数即可正常读取
内容的提问来源于stack exchange,提问作者Mr. George
相关产品推荐
相关产品推荐

