使用DropletUtils读取10x数据时BiocParallel报错:未找到barcode文件
DropletUtils read10xCounts 无法找到barcode文件的解决方法
使用R的SingleCellExperiment和DropletUtils搭建单细胞分析流程时,运行read10xCounts持续报错,已尝试解压barcode文件、修改目录权限,问题仍存在。
运行代码
seq_data_martin <- "/home/.../GSE134809_RAW" samples <- list.files(path = seq_data_martin, pattern = "*matrix.mtx.gz") samples <- gsub("_matrix.mtx.gz$", "", samples) sce <- DropletUtils::read10xCounts( samples = paste0("seq_data_martin/", samples, "_"), sample.names = samples, type = "prefix", BPPARAM = BiocParallel::MulticoreParam() )
错误信息
Error: BiocParallel errors 31 remote errors, element index: 1, 2, 3, 4, 5, 6, ... 0 unevaluated and other errors first remote error: Error in .check_for_compressed(barcode.loc, compressed): cannot find 'seq_data_martin/GSM3972009_69_barcodes.tsv' or its gzip-compressed form
目标目录文件确认
目标目录下的相关文件确实存在:
/GSE134809_RAW$ ll | head total 592568 drwxrwxr-x 2 localadmin localadmin 4096 May 23 14:19 ./ drwxr-xr-x 39 localadmin localadmin 4096 May 23 14:16 ../ -rw-rw-r-- 1 localadmin localadmin 1155350 May 23 14:19 GSM3972009_69_barcodes.tsv.gz -rw-rw-r-- 1 localadmin localadmin 264786 Jul 24 2019 GSM3972009_69_genes.tsv.gz -rw-rw-r-- 1 localadmin localadmin 12020368 Jul 24 2019 GSM3972009_69_matrix.mtx.gz -rw-rw-r-- 1 localadmin localadmin 1920076 Jul 24 2019 GSM3972010_68_barcodes.tsv.gz -rw-rw-r-- 1 localadmin localadmin 264786 Jul 24 2019 GSM3972010_68_genes.tsv.gz -rw-rw-r-- 1 localadmin localadmin 21788688 Jul 24 2019 GSM3972010_68_matrix.mtx.gz -rw-rw-r-- 1 localadmin localadmin 2280347 Jul 24 2019 GSM3972011_122_barcodes.tsv.gz
问题原因
代码中拼接路径时使用了相对路径"seq_data_martin/",但R的工作目录可能不在该目录的上级目录,导致程序无法定位文件。此外,并行计算(MulticoreParam)可能会引入工作目录不一致的问题,进一步加剧路径错误。
解决方法
使用绝对路径拼接
替换路径拼接逻辑,基于已定义的绝对路径变量seq_data_martin生成完整前缀路径,确保程序不受工作目录影响:sce <- DropletUtils::read10xCounts( samples = paste0(seq_data_martin, "/", samples, "_"), sample.names = samples, type = "prefix", BPPARAM = BiocParallel::MulticoreParam() )提前验证路径正确性
在运行read10xCounts前,先打印生成的路径,确认是否与实际文件路径匹配:sample_paths <- paste0(seq_data_martin, "/", samples, "_") print(sample_paths)检查输出的路径是否能对应到实际的barcode、genes、matrix文件前缀。
暂时关闭并行计算
并行计算可能引入路径上下文问题,先尝试单线程运行,排除并行导致的错误:sce <- DropletUtils::read10xCounts( samples = paste0(seq_data_martin, "/", samples, "_"), sample.names = samples, type = "prefix" )
内容的提问来源于stack exchange,提问作者user1751873
相关产品推荐
相关产品推荐

