[Nexus] XML format--A way to serialize binary?
tieman
tieman at aps.anl.gov
Fri Dec 8 15:39:00 GMT 2006
Mark,
Comments inline...
Mark Koennecke wrote:
> Dear Brian Tiemann,
>
> tieman schrieb:
>> Hello all!
>>
>> After much trial and tribulation (linking on Windows is a nightmare!)
>> I have all my windows programs using Nexus 3.0...on to linux!
>>
>> Well, not quite yet...is there a way to serialize binary data into a
>> more compact format with NAPI? I generally need to write image data
>> that can be quite large. The "default" serialization method
>> generates an ascii string for each pixel. While this is very
>> readable--it typically makes the files 4-5 times larger than encoding
>> the data as binary. It would be nice to be able to write the image
>> data as a raw binary dump to save space.
>>
>>
> We implemented NeXus-XML in order to:
> * be buzword compliant
> * allow people to edit their data...
> So the editable data is by design. If you want efficiency, use HDF-5.
> In principle you can
> convert your data into an UINT8 array and print that as hex. The
> NeXus-API allows to set
> the format strings for printing numbers. This will yield a compact
> representation but will not be readable
> with the NeXus-API.
Hmmm...seems like a simple hack in the Nexus-API should handle this. If
the appropriate flag is set, serialize binary data as a byte stream and
tag it such that we can unserialize it properly on read...I'm not sure
I'll ever need this feature, but I do currently have a web app that
reads Nexus nexus files and passes them over the net as serialized XML
in this manner so I did want to at least try writing XML formatted data.
>> I don't anticipate needing the use the XML format often, but XML
>> would make it easier to write a web app that can browse the data
>> online for instance...
>>
>>
> Well, how do you write your web apps? If you do Java servlets, you may
> use the NeXus-Java interface.
> If you do Tcl you may use the SWIG generated wrapper around the
> NeXus-API, if you use perl or php
> you may help out with your knowledge to make the SWIG interface to
> those languages tick. This is
> little work. If you use python, contact Peter Peterson, they have a
> python interface to NeXus.
>
I use Java. I do not, and probably will not, use the NeXus-Java
interface. The reason is that I have a C++ wrapper around Nexus that
I've been using for many years now. The C++ wrapper maps the data file
to a data tree that can be accessed easily by paths and is an even
higher level interface than Napi. This has been linked to Java and
other languages through a simple C wrapper that has also been in use for
years now. In short--now that I have a robust class structure that's
cross platform and well integrated into a number of apps--I don't want
to change it :)
Thanks!
Brian
More information about the NeXus
mailing list