From octave-maintainers-request at bevo dot che dot wisc dot edu Fri Dec 5 18:30:36 2003 Subject: Re: More Load/Save stuff From: David Bateman To: octave-maintainers at bevo dot che dot wisc dot edu Date: Sat, 6 Dec 2003 01:30:07 +0100 --mYCpIKhGyMATD0i+ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Updated my load/save patch to include load/saving of N-D real, complex and boolean arrays in HDF5 and ascii files. Not sure of a clean way to treat N-D string arrays, so haven't implemented it. This required some additional functions in liboctave as well that seemed to be missing for N-D arrays. Perhaps these wern't implemented for a reason, so check them.. There was also a bug in ov-typeinfo.cc for the lookup_type function needed by my load/save patch. The returned octave_value wasn't made unique and so it was only possible to reload a single variable of each type.... Regards David According to David Bateman (on 12/01/03): > Dear All, > > Ok, I've bitten the bullet and have been working of distributing the > HDF5 code into the classes so that they can also be used with user > defined types. The idea being that the HDF5 format would become the > default octave binary format. > > The attached patch, against 2.1.52, is where I'm upto, and includes > all of the things from my previous e-mail, plus the changes for the > HDF5 class and code for load/save of structures and lists in ascii > format and cells in HDF5 which weren't present in the previous code. > > I had to make a major change to the HDF5 format. The problem is that > in the current scheme the type of the variable is derived from the > type of the saved variable in the HDF5 file. This is very limiting in > that another user type might very well use the same format. Thus there > needed to be a means of including the octave type in the HDF5 file. > > The way I attacked this is that can be seen in the following example. > Consider saving a scalar value "a=1" with "save -hdf5 hdf5.mat a". > An "h5ls -r -d" on the file will show that the original file has > the format. > > /hdf5.mat/a Dataset {SCALAR} > Data: > (0) 1 > > I propose to change this to be > > /hdf5.mat/a Group > /hdf5.mat/a/type Dataset {SCALAR} > Data: > (0) "scalar" > /hdf5.mat/a/value Dataset {SCALAR} > Data: > (0) 1 > > Where the variable "a" in the HDF5 is now a group containing > explicitly the octave type in the sub-variable "type" and its value in > the sub-variable "value". This makes the probing code of the type much > cleaner and makes it easy to include new types. > > However, there is a downside. Firstly, the proposed file format is > incompatiable with the previous format. Secondly an advantage of the > previous format was that HDF5 files generated by other software could > be easily imported into octave. Without changes in these other packages > this might no longer be the case. > > What I therefore propose it that we create two new oct-files "import" > and "export" that are basically based on the existing load-save code. > This then has the dual function of allowing forward/backward > compatiability, as well as allowing the importation of foriegn HDF5 > files. I'd also suggest moving the matlab file formats to these > oct-files, leaving the core load-save functions much cleaner. > > Basically, the suplied patch is about three quarters of the work > needed to arrive at the above. However, I've now come a long way on > this code without any feedback, or indication whether this code is > likely to be accepted. As I have no desire to see my work wasted, > until there is at least some indication of whether this code will be > accepted, or what needs to be changed to have it accepted, I won't > work on it any further.... > > Cheers > D. > > -- > David Bateman David dot Bateman at motorola dot com > Motorola CRM +33 1 69 35 48 04 (Ph) > Parc Les Algorithmes, Commune de St Aubin +33 1 69 35 77 01 (Fax) > 91193 Gif-Sur-Yvette FRANCE > > The information contained in this communication has been classified as: > > [x] General Business Information > [ ] Motorola Internal Use Only > [ ] Motorola Confidential Proprietary > sh: octet-filter: command not found -- David Bateman David dot Bateman at motorola dot com Motorola CRM +33 1 69 35 48 04 (Ph) Parc Les Algorithmes, Commune de St Aubin +33 1 69 35 77 01 (Fax) 91193 Gif-Sur-Yvette FRANCE The information contained in this communication has been classified as: [x] General Business Information [ ] Motorola Internal Use Only [ ] Motorola Confidential Proprietary --mYCpIKhGyMATD0i+ Content-Type: application/octet-stream Content-Disposition: attachment; filename="patch.gz" Content-Transfer-Encoding: base64 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 GlgDewBeip+RP+zyfv8fb1Kl54nQAQA= --mYCpIKhGyMATD0i+--