[Nexus] About application definitions

V. Armando Sole sole at esrf.fr
Sat Jan 16 16:29:11 GMT 2016


Happy New Year!

At the ESRF we do not intend to use the old fashion way of writing the 
application definitions at the top level inside an NXentry but inside 
one (or several) NXsubentry. That will allow us to treat the files in 
the same way whether they are single or multiple technique files.

I am revising the documentation concerning NXsubentry but I do not know 
if the latest documentation is the one at:

http://download.nexusformat.org/sphinx/classes/base_classes/NXsubentry.html?highlight=nxsubentry

So, I would like to get that point confirmed.

I have to say (repeat?) that the way definitions are presented to the 
potential users look very tedious. We *do* intend to recreate the NeXus 
structure as much as we can, but as definitions are currently presented 
they almost imply to repeat the NXentry structure in the NXsubentry. For 
you it was easy to say "we have foreseen a single application definition 
at the NXentry level, we just give the option to have it at an 
NXsubentry level and that's all". My point is that when having it at the 
NXentry level, you needed some structure to keep things tidy, but when 
NXsubentry appeared, the structure is overkill.

 From a practical point of view, a simple definition for technique XXXX, 
requiting datasets I0 and It and a set of energies, it would require:

entry at NXentry
     ...
     whatever_name at NXsubentry
         definition (NX_CHAR="XXXX", @version, @URL)
         I0 [NXFLOAT]
         It [NX_FLOAT]
         energy [NX_FLOAT]

So, it continues to look a mistake to me, to present the definitions as 
forcing to have "energy" inside an NXmonochromator group, I0 inside an 
NXmonitor or an NXdetector and It inside an NXdetector. Please note that 
I am not saying it is a bad idea to have them inside those groups!. What 
I am saying is that to validate that a file implements the above 
definition, one only needs to validate the presence of I0, It and 
energy. Whether they are datasets of links to actual datasets is 
irrelevant.

You may say that since we intend to implement the NeXus structure, we 
should not worry so much and you are correct. The point is, and I repeat 
myself, that some communities and/or facilities are elaborating their 
own "data exchange" formats based on HDF5 that are *nothing else* than 
the equivalent of an application definition the way I have presented it 
here.

I would aim to present application definitions in that way. The entrance 
ticket for the potential users just interested on data analysis would be 
"less expensive". All what you would be asking compared to community 
driven definitions would be to include strings specifying the technique 
they implement, the version (optional but great!) and the URL describing 
it (optional but also great!).

You could go as far as presenting that approach as the "official NeXus 
approach to incorporate community driven definitions". I think you have 
no choice, so better show some flexibility.

Best wishes,

Armando



More information about the NeXus mailing list