% Writes a NeXus HDF5 file using matlab disp 'Write a NeXus HDF5 file' filename = 'prj_test.nexus.hdf5'; timestamp = '2010-10-18T17:17:04-0500'; % read input data A = load('input.dat'); mr = A(:,1); I00 = int32(A(:,2)); % clear out old file, if it exists delete(filename); % using the simple h5 interface, there is no way to create a group without % first creating a dataset; creating the dataset creates all intervening % groups. % store x h5create(filename,'/entry/mr_scan/mr',[length(mr)]); h5write(filename,'/entry/mr_scan/mr',mr); h5writeatt(filename,'/entry/mr_scan/mr','units','degrees'); h5writeatt(filename,'/entry/mr_scan/mr','long_name','USAXS mr (degrees)'); % store y h5create(filename,'/entry/mr_scan/I00',[length(I00)],'DataType','int32'); h5write(filename,'/entry/mr_scan/I00',I00); h5writeatt(filename,'/entry/mr_scan/I00','units','counts'); h5writeatt(filename,'/entry/mr_scan/I00','long_name','USAXS I00 (counts)'); % indicate that we are plotting y vs. x h5writeatt(filename,'/','default','entry'); h5writeatt(filename,'/entry','default','mr_scan'); h5writeatt(filename,'/entry/mr_scan','signal','I00'); h5writeatt(filename,'/entry/mr_scan','axes','mr_scan'); h5writeatt(filename,'/entry/mr_scan','mr_scan_indices', int32(0)); % add NeXus metadata h5writeatt(filename,'/','file_name',filename); h5writeatt(filename,'/','file_time',timestamp); h5writeatt(filename,'/','instrument','APS USAXS at 32ID-B'); h5writeatt(filename,'/','creator','basic_writer.m'); h5writeatt(filename,'/','NeXus_version','4.3.0'); h5writeatt(filename,'/','HDF5_Version','1.6'); % no 1.8 features used in this example h5writeatt(filename,'/entry','NX_class','NXentry'); h5writeatt(filename,'/entry/mr_scan','NX_class','NXdata'); h5disp(filename);