From a3235390a424075185e81f3fa80ccfbe411251e8 Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Wed, 8 Apr 2026 15:15:22 +0200 Subject: [PATCH] README: Update --- README.md | 67 ++++++++++++++++++------------------------------------- 1 file changed, 22 insertions(+), 45 deletions(-) diff --git a/README.md b/README.md index 7081032..2d7cde2 100644 --- a/README.md +++ b/README.md @@ -8,14 +8,24 @@ See: * https://www.dectris.com/features/features-eiger-x/hdf5-and-nexus * https://strucbio.biologie.uni-konstanz.de/xdswiki -## Get Durin +## Paul Scherrer Institute fork +This fork is maintained by Paul Scherrer Institute. +The plugin is based on the code developed by the Diamond Light Source and modified by Global Phasing. +Modifications from PSI side: +* Using CMake for building the plugin +* HDF5 is built as part of the CMake process +* Bitshuffle/LZ4 is updated to the latest version +* HDF5 filter is automatically registered for virtual dataset HDF5 files +* Docker image to build the plugin on x86/RH7 is provided. +* Generated versioned shared library, so the used version can be tracked. -Latest release at https://github.com/DiamondLightSource/durin/releases/tag/2019v1 +## Get Durin +Linux x86 version is automatically built on RHEL 7 and available from the Gitea release page. ## Usage In your XDS.INP add: ``` -LIB=[path to durin-plugin.so] +LIB=[path to libdurin-plugin.so] NAME_TEMPLATE_OF_DATA_FRAMES=[data_path]/data_images_??????.h5 ``` XDS will instruct the plugin to load `[data_path]/data_images_master.h5` and this must be the @@ -27,55 +37,25 @@ the master file contains an `NXdata` or `NXdetector` group with either a dataset series of datasets named `data_000001`, `data_000002`, etc. -## Requirements -* HDF5 Library (https://www.hdfgroup.org/downloads) - - ## Building - -### Building HDF5 library -The HDF5 library used when building durin must have been compiled with specific switches enabled -to allow the durin plugin to be built and used. - -Download the HDF5 source code (https://www.hdfgroup.org/downloads/hdf5/source-code) and extract -to any directory (referred to as `/hdf5_dir`), and run the following commands. +Requires CMake version 3.19 or later + GCC compiler. There is no need to build HDF5 separately. +To build: ``` -cd /hdf5_dir mkdir build cd build -export CFLAGS=-fPIC -../configure --enable-threadsafe --enable-deprecated-symbols --enable-hl --enable-unsupported -make -make check -make install +cmake .. +make -j ``` -The hdf5 tools and libraries should now be located in `/hdf5_dir/build/hdf5` - -For reference, the plugin requires the thread-safe switch and the optimised chunk read function. -The chunk read function may be defined in the high level library instead of the regular library, -depending on the exact HDF5 version downloaded (hence the --enable-deprecated-symbols _and_ --enable-hl). -The unsupported flag enables building with both threadsafe and high-level enabled. - - -### Building durin plugin -The plugin makefile will use the "h5cc" compiler wrapper, provided by the HDF5 library, which -must be on your PATH. -Download or clone the plugin source code (https://github.com/DiamondLightSource/durin) -into any directory (referred to as `/durin_dir`) and run the following commands. -``` -cd /durin_dir -PATH=/hdf5_dir/build/hdf5/bin:$PATH -make -``` -The plugin is located at `/durin_dir/build/durin-plugin.so` and should be added to the -XDS.INP file as `LIB=/durin_dir/build/durin-plugin.so` - +The plugin is located at `build/libdurin-plugin.so` and should be added to the +XDS.INP file as `LIB=/build/libdurin-plugin.so`. +Alternatively, versioned copy is also provided, e.g. `libdurin-plugin.so.1.0.0`, allowing to track +the current version of the plugin. ## Example XDS.INP ``` DETECTOR=PILATUS MINIMUM_VALID_PIXEL_VALUE=0 OVERLOAD=4096 -LIB=/opt/durin/build/durin-plugin.so +LIB=/opt/durin/build/libdurin-plugin.so SENSOR_THICKNESS= 0.450 !SENSOR_MATERIAL / THICKNESS Si 0.450 !SILICON= 3.953379 @@ -95,6 +75,3 @@ TRUSTED_REGION= 0.0 1.41 DATA_RANGE= 1 600 JOB=XYCORR INIT COLSPOT IDXREF DEFPIX INTEGRATE CORRECT ``` - -N.B. the master file is needed, not the .nxs one which follows the -standard.