diff --git a/src/external/nexus/Usage.md b/src/external/nexus/Usage.md index 1d81c66f..8b422d1b 100644 --- a/src/external/nexus/Usage.md +++ b/src/external/nexus/Usage.md @@ -718,7 +718,8 @@ PNeXus(const std::string& filename, bool printDebug = false); | Method | Description | |--------|-------------| | `GetFileName()` | Get the NeXus filename | -| `GetHdf5Version()` / `GetHdf4Version()` | Get HDF library version | +| `GetHdf5LibVersion()` / `GetHdf4LibVersion()` | Get HDF library version (runtime) | +| `GetHdf5Version()` / `GetHdf4Version()` | Get HDF version from the file | | `GetNeXusVersion()` | Get NeXus format version | | `GetIdfVersion()` | Get IDF version (1 or 2) | diff --git a/src/external/nexus/examples/hdf4/main.cpp b/src/external/nexus/examples/hdf4/main.cpp index 1d3230a9..c8b16866 100644 --- a/src/external/nexus/examples/hdf4/main.cpp +++ b/src/external/nexus/examples/hdf4/main.cpp @@ -324,14 +324,14 @@ void h4nexus_writeTest(const nxH4::PNeXus *nxs, const std::string& outFileName, "units", std::string("picoseconds")); // spectrum_index - for (unsigned int i=0; i<66000; i++) + for (unsigned int i=0; i<16; i++) ival.push_back(i+1); - nxs_out->AddDataset("/raw_data_1/instrument/detector_1/spectrum_index", ival, {66000}, nxH4::H4DataType::INT32); + nxs_out->AddDataset("/raw_data_1/instrument/detector_1/spectrum_index", ival, {16}, nxH4::H4DataType::INT32); ival.clear(); // dead_time - std::vector deadTime(66000, 0.0); - nxs_out->AddDataset("/raw_data_1/instrument/detector_1/dead_time", deadTime, {66000}, nxH4::H4DataType::FLOAT32); + std::vector deadTime(16, 0.0); + nxs_out->AddDataset("/raw_data_1/instrument/detector_1/dead_time", deadTime, {16}, nxH4::H4DataType::FLOAT32); // attributes dead_time nxs_out->AddDatasetAttribute("/raw_data_1/instrument/detector_1/dead_time", "available", 0); diff --git a/src/external/nexus/examples/hdf5/docu/Usage.md b/src/external/nexus/examples/hdf5/docu/Usage.md index 9fa476dd..d1c7629b 100644 --- a/src/external/nexus/examples/hdf5/docu/Usage.md +++ b/src/external/nexus/examples/hdf5/docu/Usage.md @@ -33,6 +33,7 @@ h5nexus --fn [options] | `--out ` | Output NeXus HDF5 file (enables write mode) | | `-d, --debug` | Enable debug output | | `-dt, --dead_time_estimate` | Calculate dead time corrections | +| `--data idx ` | Write single ASCII dataset with index `idx` to `` | | `-h, --help` | Show help message | | `-v, --version` | Show version information | @@ -58,6 +59,11 @@ h5nexus --fn EMU00139040.nxs --out output.nxs h5nexus --fn EMU00139040.nxs --dead_time_estimate --out corrected.nxs ``` +**Extract single detector data to ASCII file:** +```bash +h5nexus --fn EMU00139040.nxs --dead_time_estimate --data 0 detector0.txt +``` + --- ## Reading NeXus Files @@ -520,7 +526,7 @@ NeXus uses the `NX_class` attribute to identify group types: |------------|----------------|-------------| | `/raw_data_1` | `NXentry` | Top-level entry for a measurement | | `/raw_data_1/instrument` | `NXinstrument` | Instrument information | -| `/raw_data_1/detector_1` | `NXdetector` | Detector group | +| `/raw_data_1/detector_1` | `NXdata` | Data group (IDF v2) | | `/raw_data_1/sample` | `NXsample` | Sample information | | `/raw_data_1/user_1` | `NXuser` | User information | @@ -535,7 +541,7 @@ int main() { // Add some example data std::vector counts(96 * 2048, 0); nexus.AddDataset("/raw_data_1/detector_1/counts", counts, - {1, 96, 2048}, H5::PredType::NATIVE_INT32); + {1, 96, 2048}, H5::PredType::NATIVE_INT); // Set up proper NeXus group structure with NX_class attributes nexus.AddGroupAttribute("/raw_data_1", "NX_class", std::string("NXentry")); @@ -1667,7 +1673,7 @@ int main() { // Add some detector data std::vector counts(96 * 2048, 100); nexus.AddDataset("/raw_data_1/detector_1/counts", counts, - {1, 96, 2048}, H5::PredType::NATIVE_INT32); + {1, 96, 2048}, H5::PredType::NATIVE_INT); // Add time information std::vector timeAxis(2049); @@ -1942,7 +1948,7 @@ nexus.WriteNexusFile("output.nxs"); nxH5::PNeXus nexus; // Add data nexus.AddDataset("/raw_data_1/detector_1/counts", counts, dims, - H5::PredType::NATIVE_INT32); + H5::PredType::NATIVE_INT); // Add NeXus group structure nexus.AddGroupAttribute("/raw_data_1", "NX_class", std::string("NXentry")); nexus.AddGroupAttribute("/raw_data_1/instrument", "NX_class", std::string("NXinstrument")); diff --git a/src/external/nexus/examples/hdf5/main.cpp b/src/external/nexus/examples/hdf5/main.cpp index 0c216454..a97637f2 100644 --- a/src/external/nexus/examples/hdf5/main.cpp +++ b/src/external/nexus/examples/hdf5/main.cpp @@ -415,14 +415,14 @@ void h5nexus_writeTest(const nxH5::PNeXus *nxs, const std::string& outFileName, "units", std::string("picoseconds")); // spectrum_index - for (unsigned int i=0; i<66000; i++) + for (unsigned int i=0; i<16; i++) ival.push_back(i+1); - nxs_out->AddDataset("/raw_data_1/instrument/detector_1/spectrum_index", ival, {66000}, H5::PredType::NATIVE_FLOAT); + nxs_out->AddDataset("/raw_data_1/instrument/detector_1/spectrum_index", ival, {16}, H5::PredType::NATIVE_INT); ival.clear(); // dead_time - std::vector deadTime(66000, 0.0); - nxs_out->AddDataset("/raw_data_1/instrument/detector_1/dead_time", deadTime, {66000}, H5::PredType::NATIVE_FLOAT); + std::vector deadTime(16, 0.0); + nxs_out->AddDataset("/raw_data_1/instrument/detector_1/dead_time", deadTime, {16}, H5::PredType::NATIVE_FLOAT); // attributes dead_time nxs_out->AddDatasetAttribute("/raw_data_1/instrument/detector_1/dead_time", "available", 0);