From: Mathieu D. <dub...@ya...> - 2013-07-05 23:52:07
|
Hi, Sorry for the late response. First of all, I have managed to achieve what I wanted to do differently. Then the code Francesc send works well (I had to adapt it because I use version 2.3.1 under Ubuntu 12.04). I was able to reproduce something similar with a class like this (copied & pasted from the tutorial): import tables as tb import numpy as np class Subject(tb.IsDescription): # Subject information Id = tb.UInt16Col() Image = tb.Float32Col(shape=(121, 145, 121)) h5file = tb.openFile("tutorial1.h5", mode = "w", title = "Test file") group = h5file.createGroup("/", 'subject', 'Suject information') table = h5file.createTable(group, 'readout', Subject, "Readout example") subject = table.row for i in xrange(10): subject['Id'] = i subject['Image'] = np.ones((121, 145, 121)) subject.append() This code works well too. So I don't really know why nothing was working yesterday: this was the same class and a very close program. I will try to investigate later on this. Thanks for everything, Mahtieu Le 05/07/2013 16:54, Anthony Scopatz a écrit : > > > > On Fri, Jul 5, 2013 at 8:40 AM, Francesc Alted <fa...@gm... > <mailto:fa...@gm...>> wrote: > > On 7/5/13 1:33 AM, Mathieu Dubois wrote: > > tables.tableExtension.Table._createTable > (tables/tableExtension.c:2181) > >> > >> tables.exceptions.HDF5ExtError: Problems creating the table > >> > >> I think that the size of the column is too large (if I > remove the > >> Image > >> field, everything works perfectly). > >> > >> > >> Hi Mathieu, > >> > >> This shouldn't be the case. What is the value of IMAGE_SIZE? > > > > IMAGE_SIZE is a tuple containing (121, 145, 121). > > This is a bit large for a row in the Table object. My recommendation > for these cases is to use an associated EArray with shape (0, 121, > 145, > 121) and then append the images there. You can always refer to the > image by issuing a __getitem__() operation on the EArray object > with the > index of the row in the table. Easy as a pie and you will allow the > compression library (in case you are using compression) to work much > more efficiently for the table. > > > > Hi Francesc, > > I disagree that this shape is too large for a table. Here is a > minimal example that works for me: > > import tables as tb > import numpy as np > > images = np.ones(100, dtype=[('id', np.uint16), > ('image', np.float32, (121, 145, 121)) > ]) > > with tb.open_file('temp.h5', 'w') as f: > f.create_table('/', 'images', images) > > I think that there is something else going on with the initialization > but Mathieu hasn't given us enough information to figure it out =/. A > minimal failing script would be super helpful here! > > (BTW Mathieu, Tables can also take advantage of compression. Though > Francesc's solution is nicer for a lot of reason too.) > > Be Well > Anthony > > > HTH, > > -- Francesc Alted > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by Windows: > > Build for Windows Store. > > http://p.sf.net/sfu/windows-dev2dev > _______________________________________________ > Pytables-users mailing list > Pyt...@li... > <mailto:Pyt...@li...> > https://lists.sourceforge.net/lists/listinfo/pytables-users > > > > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by Windows: > > Build for Windows Store. > > http://p.sf.net/sfu/windows-dev2dev > > > _______________________________________________ > Pytables-users mailing list > Pyt...@li... > https://lists.sourceforge.net/lists/listinfo/pytables-users |