无法安装Bioconductor的ShortRead包,求fastq.gz转fasta解决方案
ShortRead包安装失败排查及fastq.gz转fasta替代方案
问题背景
在R 4.1.1(对应Bioconductor 3.14)环境中,尝试安装并加载ShortRead包以使用readFastq函数时,遭遇多类错误,无法正常完成操作,需排查故障或寻求更简便的fastq.gz转fasta方法。
错误信息
1. 包加载失败
> library(ShortRead) Error in library(Shortread) : there is no package called 'ShortRead'
2. 依赖包编译失败(核心错误)
ln: failed to create symbolic link 'libhts.so.2': Operation not supported make: *** [Makevars:28: populate-usrlib-dir] Error 1 ERROR: compilation failed for package ‘Rhtslib’ * removing ‘/home/jovyan/work/__dag_config__/R/libs/Rhtslib’ ERROR: dependency ‘Rhtslib’ is not available for package ‘Rsamtools’ * removing ‘/home/jovyan/work/__dag_config__/R/libs/Rsamtools’ ERROR: dependency ‘Rsamtools’ is not available for package ‘GenomicAlignments’ * removing ‘/home/jovyan/work/__dag_config__/R/libs/GenomicAlignments’ ERROR: dependencies ‘Rsamtools’, ‘GenomicAlignments’, ‘Rhtslib’ are not available for package ‘ShortRead’ * removing ‘/home/jovyan/work/__dag_config__/R/libs/ShortRead’
3. textshaping/ragg包配置失败
ERROR: configuration failed for package ‘textshaping’ * removing ‘/opt/conda/envs/r/lib/R/library/textshaping’ * restoring previous ‘/opt/conda/envs/r/lib/R/library/textshaping’ * installing *source* package ‘ragg’ ... ** package ‘ragg’ successfully unpacked and MD5 sums checked ** using staged installation
ERROR: configuration failed for package ‘ragg’ * removing ‘/opt/conda/envs/r/lib/R/library/ragg’ * restoring previous ‘/opt/conda/envs/r/lib/R/library/ragg’ The downloaded source packages are in ‘/tmp/RtmpgByRyT/downloaded_packages’
已执行的安装命令
#Installing ShortRead package containing the readFastq function if (!require("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager::install(version="3.14") BiocManager::install("GenomeInfoDbData") BiocManager::install("GenomeInfoDb") BiocManager::install("ShortRead") #Loading the library library(ShortRead)
当前会话信息
> sessionInfo() R version 4.1.1 (2021-08-10) Platform: x86_64-conda-linux-gnu (64-bit) Running under: Ubuntu 22.04.1 LTS Matrix products: default BLAS/LAPACK: /opt/conda/envs/r/lib/libopenblasp-r0.3.21.so locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 [4] LC_COLLATE=en_US.UTF-8 LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 [7] LC_PAPER=en_US.UTF-8 LC_NAME=C LC_ADDRESS=C [10] LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] BiocManager_1.30.19 loaded via a namespace (and not attached): [1] compiler_4.1.1 fastmap_1.1.0 cli_3.4.1 htmltools_0.5.3 tools_4.1.1 [6] rstudioapi_0.14 yaml_2.3.6 rmarkdown_2.17 knitr_1.40 xfun_0.34 [11] digest_0.6.30 rlang_1.0.6 evaluate_0.17
故障排查建议
1. 解决Rhtslib编译失败问题(核心)
错误提示ln: failed to create symbolic link 'libhts.so.2': Operation not supported,通常因安装目录无软链接权限或文件系统不支持软链接导致:
- 切换可写安装目录:修改R包安装路径到本地有完整权限的目录,再重新安装:
.libPaths(c("/home/jovyan/R/libs", .libPaths())) BiocManager::install("ShortRead") - 用conda安装预编译包:conda环境下直接安装二进制包,跳过源码编译:
conda install -c bioconda bioconductor-shortread - 手动修改Rhtslib源码:下载对应版本的Rhtslib源码包,将Makevars文件中的
ln -s命令替换为cp(复制文件替代软链接),再本地安装:install.packages("path/to/Rhtslib.tar.gz", repos = NULL, type = "source")
2. 解决textshaping/ragg配置失败问题
这两个包依赖系统图形库,conda环境下直接用conda安装:
conda install -c conda-forge r-textshaping r-ragg
3. 验证Bioconductor版本匹配
确认当前Bioconductor版本为3.14,若不匹配则更新并重启R:
BiocManager::install(version = "3.14", update = TRUE, ask = FALSE)
替代方案:fastq.gz转fasta
若不想安装ShortRead,可选用以下更简便的方法:
1. Linux命令行工具(最快)
直接用zcat+awk处理压缩文件,无需启动R:
zcat input.fastq.gz | awk 'NR%4==1{print ">"substr($0,2)}NR%4==2{print}' > output.fasta
解释:提取fastq文件的第1行(替换@为>作为fasta标题)和第2行(序列内容)
2. R基础包实现
无需额外安装包,用R基础函数完成转换:
# 读取压缩的fastq文件 fastq_lines <- readLines(gzfile("input.fastq.gz")) # 提取fasta格式的行 fasta_lines <- c( paste0(">", substr(fastq_lines[seq(1, length(fastq_lines), 4)], 2)), fastq_lines[seq(2, length(fastq_lines), 4)] ) # 写入fasta文件 writeLines(fasta_lines, "output.fasta")
内容的提问来源于stack exchange,提问作者Anna Keisha Boateng
相关产品推荐
相关产品推荐

