Cyril, A Tuesday 28 April 2009, cyril giraudon escrigué: > Hi, > > I use HDF5 to store complex numbers and I see two ways of defining a > complex number (since I believe there is no official manner):
Yes, as far as I know there is not an blessed way to declare complex types in HDF5. In fact, PyTables chose the compound approach back in 2004 (in fact, contributed by Tom Hedley) and frankly, as it seems to work quite well, we have never looked back (in fact, Octave follows the same strategy when writes to HDF5 files, except that the compound fields are called 'real' and 'imag' instead of the PyTables 'r' and 'i' convention, but this is supported by PyTables for reading too). In addition, lately the h5py project seems to have chosen the same approach than PyTables to represent complex numbers. So, even though it is true that there is not an 'official' way to specify complex numbers, there is an a certain tradition in doing it the PyTables' way (let's call it this way). > 1. A compound datatype : one real for the real part and one real for > the imaginery part > 2. A 2 element array datatype : two reals in an array A, A(0) is the > real part and A(1) is the imaginary part. > > Pytables read directly the compound datatype as a complex number but > read "logically" the array datatype as an array. > Is it possible pytables read directly an array datatype as a complex > number without any conversion ? > > Why this question ? It is very simpler to manipulate an array > datatype from C, fortran ... than a compound datatype and the new > lite API allows easily the creation of such a structure. Yes, this should be possible, but provided that it already exists a way, I think there is not much point in changing it. Perhaps you may want to create your complex arrays out of your HDF5 data by operating with NumPy, like for example: In [66]: r = np.array([1,2,3], dtype='f8') In [67]: i = np.array([4,5,6], dtype='f8') In [68]: cplx = r+i*1.j In [69]: cplx Out[69]: array([ 1.+4.j, 2.+5.j, 3.+6.j]) which should be fast enough for most of applications. HTH, -- Francesc Alted "One would expect people to feel threatened by the 'giant brains or machines that think'. In fact, the frightening computer becomes less frightening if it is used only to simulate a familiar noncomputer." -- Edsger W. Dykstra "On the cruelty of really teaching computer science" ------------------------------------------------------------------------------ Register Now & Save for Velocity, the Web Performance & Operations Conference from O'Reilly Media. Velocity features a full day of expert-led, hands-on workshops and two days of sessions from industry leaders in dedicated Performance & Operations tracks. Use code vel09scf and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf _______________________________________________ Pytables-users mailing list Pytables-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/pytables-users