This is a BIG set of changes! It includes the following:
- The XML files now have the new 'file_version' attribute within the 'relax' XML element. This is
now set to '2', and if unset it is assumed that the file version should be 1.
- The file_version integer value is now propagated through all of the from_xml() methods so it can
be passed into the data.relax_xml.xml_to_object() function. This prevents a mixture of v1 and v2
being assumed for different parts of the XML.
- An XML namespace fix - the xmlns="http://www.nmr-relax.com" attribute is now finally visible.
- The data.relax_xml.object_to_xml() function has been added for creating the new relax XML syntax.
This will handle and convert many more basic Python object types into IEEE-754 byte arrays, for
example lists and dictionaries of floats, or numpy vectors and matrices. This function is now used
throughout the code base for converting Python objects to XML.
- The data.relax_xml.xml_to_object() function has been expanded to match the functionality of
data.relax_xml.object_to_xml().
- The Python object XML elements now have the 'type' attribute indicating the Python object type.
This is important for the processing of the file, especially for handling all types of numpy
structures.
- The Python object value is now stored in a sub XML element called '<value>'. If it is a float, or
is a simple type which contains floats, then the sub XML element <ieee_754_byte_array> is created
for storing a full precision version of the floats. The <ieee_754_byte_array> value will always
trump the <value> value!
- The v1 and v2 of the format together with the pre- and post-Python 2.7.3 XML toprettyxml() changes
are now represented as test_suite/shared_data/model_free/OMP/final_results_trunc_1.3*.bz2 files. A
5th file is added to test the IEEE-754 conversions by corrupting many of the floats. Each results
file is tested with 5 new model-free system tests.