程序,用于将NeXus (.nxs) 扫描文件转换为经典的ASCII SRS .dat文件。
项目描述
nexus2srs
程序,用于将NeXus (.nxs) 扫描文件转换为经典的ASCII SRS .dat文件。
由Dan Porter, Diamond Light Source Ltd. 2023-2024编写
用法
从终端
$ python -m nexus2srs '12345.nxs' '12345.dat' -tiff
在Python脚本中
from nexus2srs import nxs2dat
nxs2dat('12345.nxs', '/spool', write_tiff=False)
需求
python 3.10+,hdfmap,h5py,numpy,以及用于写入TIFF图像的pillow
安装
从PyPI
$ python -m pip install nexus2srs
方法
文件转换遵循以下协议
- 使用h5py打开.nxs HDF文件,并使用hdfmap创建所有数据集和组的列表
- 通过寻找'dataset_header'数据集或通过填充日期、时间和运行号来生成标题的顶部部分
- 通过选择大小小于或等于1的数据集来生成标题中的元数据项列表,如可用
- 搜索具有属性@local_name的数据集,保存的名称将是此名称的最后一部分
- 如果没有找到任何 @local_name 数据集,则采用文件中所有 size <= 1 数据集的名称。每个数据集以 'name' 和 'group_name' 保存。
- 通过选择具有相同形状且 size >= 1 的数据集,构建扫描数据点的表。
- 从名为 'scan_fields' 的数据集中获取字段名称,在第一个 NXdata 组或名为 'measurement' 的组中查找这些数据集。
- 或者,采用默认或第一个 NXdata 或名为 'measurement' 的组中的所有数据集,其形状与该组中第一个数据集的形状相同。
- 或者,采用文件中形状与最常见数据集形状相同的所有数据集。
- 搜索 'image_data' 数据集,从第一个包含的 TIFF 图像路径生成模板并添加到元数据中。
- 在所有 NXdetector 组中查找 3D+ 数组,生成并将 TIFF 图像路径添加到元数据中。
对于元数据和扫描数据表,如果数据集包含 @decimals 属性,将相应地进行四舍五入。
转换完成后,将组件合并成一个包含标题、元数据和扫描数据表的字符串。默认情况下,*'folder/file.nxs' 会被保存为 'folder/file.dat'。如果启用了 TIFF 写入,所有 NXdetector 组中 3+D 数组的探测器图像数据将保存为 TIFF 图像到子文件夹,如 'folder/RunNo_DetectorName_files/00001.tif'。如果文件已存在,则不会覆盖文件。
测试(2023年1月)
- 已在数千个旧的 I16、I10 和 I21 nexus 文件上进行了测试。
- 在这些文件中没有发现意外的故障,然而没有文件符合新的理想 nexus 结构。
- 本地文件在无图像转换的情况下每文件转换大约需要 0.3 秒。
- 有关更多信息,请参阅 Jupyter notebook nexus2srs_tests.ipynb。
- 在 I16 15/12/2023 上使用 nxs2dat jupyter 处理器进行测试,更新了 TIFF 文件写入。
2024年9月更新
对代码进行了重大重构,包括 hdfmap 包。HdfMap 函数负责创建可扫描的表和元数据,使用当前的 NeXus 最佳实践。这允许正确识别元数据并使用 "local_names" 和 "decimals" 属性。
项目详情
下载文件
下载适合您平台的文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。
源分发
nexus2srs-1.0.0.tar.gz (18.6 kB 查看哈希值)
构建分发
nexus2srs-1.0.0-py3-none-any.whl (16.1 kB 查看哈希值)
关闭
nexus2srs-1.0.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1aa7b2ca6e4f50275bac226e6d81927b60ecfab47b43a75aeadec6ba8be5ea19 |
|
MD5 | a000194715cd3e506dfc7920e949fe68 |
|
BLAKE2b-256 | 6899666e03631424a11d83636a77da3fbcb0e16db740a386cc006aa023815a98 |