Linux 下基于R语言打开hdf5(.h5)文件异常的处理方法

简介: 本文分享了如何在 Linux 中关闭 hdf5 文件锁定,让rhdf5 能够调用 HDF5库解析 h5文件的处理方法,以供参考

Linux 平台使用无法通过R语言的 rhdf5::H5Fopenhdf5r::H5File$new打开H5格式文件,抛出异常“HDF5. File accessibility. Unable to open file.” 参考 https://github.com/GreenleafLab/ArchR/issues/248?spm=a2c6h.13046898.0.0.5ae16ffa2qPYS6 完成Debug 过程记录:

1、异常 INFO

  • 1.rhdf5::H5Fopen 函数异常 error:
    data.h5 <- H5Fopen(name = "exp_matrix.hdf5")
    Error in H5Fopen(name = "exp_matrix.hdf5",  : 
    HDF5. File accessibility. Unable to open file.
    
  • 2.hdf5r::H5File$new 函数异常 error:

    hdf5r::H5File$new("exp_matrix.hdf5", mode="r")
    Error in H5File.open(filename, mode, file_create_pl, file_access_pl) : 
    HDF5-API Errors:
      error #000: H5F.c in H5Fopen(): line 620: unable to open file
          class: HDF5
          major: File accessibility
          minor: Unable to open file
    
      error #001: H5VLcallback.c in H5VL_file_open(): line 3501: failed to iterate over available VOL connector plugins
          class: HDF5
          major: Virtual Object Layer
          minor: Iteration failed
    
      error #002: H5PLpath.c in H5PL__path_table_iterate(): line 578: can't iterate over plugins in plugin path '(null)'
          class: HDF5
          major: Plugin for dynamically loaded library
          minor: Iteration failed
    
      error #003: H5PLpath.c in H5PL__path_table_iterate_process_path(): line 620: can't open directory: ~/local/Minconda/envs/scRNA/lib/hdf5/plugin
          class: HDF5
          major: Plugin for dynamically loaded library
          minor: Can't open directory or file
    
      error #004: H5VLcallback.c in H5VL__file_open(): line 3351: open faile
    

2、处理策略

引发该异常的原因是系统默认打开了使用HDF5库时启用文件锁定。解决方案:编辑Linux 用户的配置文件(.bashrc)添加以下两句环境变量:

export HDF5_USE_FILE_LOCKING="FALSE"
export RHDF5_USE_FILE_LOCKING="FALSE"

然后执行source ~/.bashrc,就可以解决Linux环境下无法读取h5文件的错误了。

Reference

Error in H5Fopen(file): Unable to open HDF5 file when using subsetArchRProject to create new arrow files · Issue #248 · GreenleafLab/ArchR (github.com)

目录
相关文章
|
1月前
|
数据可视化 Ubuntu 数据挖掘
linux中使用R语言
R语言是一种专用于统计计算和数据分析的编程语言,以其强大的数据处理能力和丰富的可视化功能著称。在Linux中安装R非常简单,通过`sudo apt install r-base`即可完成。R支持基本数据分析和复杂的数据可视化,如使用ggplot2包绘制精美图形。此外,R还能生成甘特图等项目管理工具,帮助清晰展示项目进度。无论是数据处理还是可视化,R都表现出色,适合各种数据分析任务。
73 3
|
13天前
|
安全 Linux
阿里云linux服务器使用脚本通过安全组屏蔽异常海外访问ip
公网网站可能会遭受黑客攻击导致访问异常,使用此脚本可以屏蔽掉异常IP 恢复访问。也可自行设置定时任务定期检测屏蔽。
112 28
|
9天前
|
Linux Shell
Linux系统下快速批量创建和删除文件的方法
总的来说,使用shell脚本来批量处理文件是一种非常强大的工具,只要你愿意花时间学习和实践,你会发现它能大大提高你的工作效率。
65 19
|
1月前
|
监控 Linux
Linux基础:文件和目录类命令分析。
总的来说,这些基础命令,像是Linux中藏匿的小矮人,每一次我们使用他们,他们就把我们的指令准确的传递给Linux,让我们的指令变为现实。所以,现在就开始你的Linux之旅,挥动你的命令之剑,探索这个充满神秘而又奇妙的世界吧!
73 19
|
1月前
|
Linux
Linux 常用文件查看命令
`cat` 命令用于连接文件并打印到标准输出,适用于快速查看和合并文本文件内容。常用示例包括:`cat file1.txt` 查看单个文件,`cat file1.txt file2.txt` 合并多个文件,`cat &gt; filename` 创建新文件,`cat &gt;&gt; filename` 追加内容。`more` 和 `less` 命令用于分页查看文件,`tail` 命令则用于查看文件末尾内容,支持实时追踪日志更新,如 `tail -f file.log`。
72 5
Linux 常用文件查看命令
|
27天前
|
缓存 Linux
如何创建Linux交换文件?Linux交换文件最新创建方法
Swap是Linux中的虚拟内存空间,用于在物理内存不足时将非活动进程移至磁盘,从而优化活动进程的性能。通过创建交换文件(如1GB),可灵活调整交换空间而无需重新分区。步骤包括:使用`fallocate`或`dd`创建文件、设置权限 (`chmod 600`)、格式化 (`mkswap`)、启用交换 (`swapon`)、修改`/etc/fstab`以持久化配置,以及调整`vm.swappiness`值(默认60,建议从10开始)来平衡内存与交换的使用。最后通过`swapon -s`检查状态并重启生效。此方法适用于VPS和专用服务器,需以root用户操作。
49 2
|
2月前
|
存储 Linux Shell
Linux|Transfer.sh 轻松实现文件共享
Linux|Transfer.sh 轻松实现文件共享
Linux|Transfer.sh 轻松实现文件共享
|
2月前
|
存储 网络协议 Linux
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
129 34
|
1月前
|
Linux 网络安全 虚拟化
linux怎么把文件传到docker里面
在现代应用开发中,Docker作为流行的虚拟化工具,广泛应用于微服务架构。文件传输到Docker容器是常见需求。常用方法包括:1) `docker cp`命令直接复制文件;2) 使用`-v`选项挂载宿主机目录,实现数据持久化和实时同步;3) 通过SCP/FTP协议传输文件;4) 在Dockerfile中构建镜像时添加文件。选择合适的方法并确保网络安全是关键。
208 1
|
2月前
|
Linux
Linux文件与目录的日常
目录的切换 一般使用(”pwd“)显示当前所在的目录 比如:当前目录是在home下面的,与用户名相同的文件夹,可以使用(”cd“)命令来切换目录; 进入下载目录(”cd home/a/下载“)这种从给目录开头的一长串路经”叫做绝对路径“; 进入图片目录(”cd .. /图片/“)".."代表当前路径的上级路径,相对于当前的目录而言的”叫做相对路径“,(”.“)代表当前路径; 如果,想快速切换,上一个所在目录可以(”cd - / cd..“); 如果,想快速切换,追原始的目录可以(”cd --“); 查看目录及文件
58 14
下一篇
oss创建bucket