From: Anthony S. <sc...@gm...> - 2012-06-17 02:00:19
|
On Sat, Jun 16, 2012 at 8:50 PM, Andre' Walker-Loud <wal...@gm...>wrote: > Hi Anthony, > > I forgot to say Thanks! > > I tried using the _v_depth attr but that didn't give me an answer I > understood. for example, the _v_depth of f.root was 0, and the _v_depth of > my final data path was 2. But I have something that works now. > > also - help like this > > > Just one quick comment. You probably shouldn't test the string of the > type of the data. > > Use the builtin isinstance() instead: > > > > found_array = isinstance(data, tables.Array) > > is very helpful to me. I have not been properly trained in any > programming, I have just hacked as needed for work/research, so things like > this are not yet common for me to realize. > No worries, that is what we are here for ;) > > > Cheers, > > Andre > > > > > > On Jun 14, 2012, at 3:28 PM, Anthony Scopatz wrote: > > > On Thu, Jun 14, 2012 at 4:30 PM, Andre' Walker-Loud <wal...@gm...> > wrote: > > Hi Anthony, > > > > On Jun 14, 2012, at 11:30 AM, Anthony Scopatz wrote: > > > > > On Wed, Jun 13, 2012 at 8:23 PM, Andre' Walker-Loud < > wal...@gm...> wrote: > > > Hi All, > > > > > > Still trying to sort out a recursive walk through an hdf5 file using > pytables. > > > > > > I have an hdf5 file with an unknown depth of groups/nodes. > > > > > > I am trying to write a little function to walk down the tree (with > user input help) until a data file is found. > > > > > > I am hoping there is some function one can use to query whether you > have found simply a group/node or an actual numpy array of data. So I can > do something like > > > > > > if f.getNode('/',some_path) == "data_array": > > > return f.getNode('/',some_path), True > > > else: > > > return f.getNode('/',some_path), False > > > > > > where I have some function that if the second returned variable is > True, will recognize the file as data, where as if it is False, it will > query the user for a further path down the tree. > > > > > > > > > I suppose I could set this up with a try: except: but was hoping there > is some built in functionality to handle this. > > > > > > Yup, I think that you are looking for the File.walkNodes() method. > http://pytables.github.com/usersguide/libref.html#tables.File.walkNodes > > > > I wasn't sure how to use walkNodes in an interactive search. Here is > what I came up with so far (it works on test cases I have given it). > Comments are welcome. > > > > One feature I would like to add to the while loop in the second function > is an iterator counting the depth of the search. I want to compare this to > the maximum tree/node/group depth in the file, so if the search goes over > (maybe my collaborators used createTable instead of createArray) the while > loop won't run forever. > > > > Is there a function to ask the deepest recursion into the hdf5 file? > > > > Hello Andre, > > > > Every Node object has a _v_depth attr that you can access ( > http://pytables.github.com/usersguide/libref.html#tables.Node._v_depth). > In your walk function, therefore, you could test to see if you are over or > under the maximal value that you set. > > > > > > Cheers, > > > > Andre > > > > > > def is_array(file,path): > > data = file.getNode(path) > > if str(type(data)) == "<class 'tables.array.Array'>": > > found_array = True > > > > Just one quick comment. You probably shouldn't test the string of the > type of the data. > > Use the builtin isinstance() instead: > > > > found_array = isinstance(data, tables.Array) > > > > Be Well > > Anthony > > > > else: > > found_array = False > > for g in file.getNode(path): > > print g > > return data, found_array > > > > def pytable_walk(file): > > found_data = False > > path = '' > > while found_data == False: > > for g in file.getNode('/',path): > > print g > > path_new = raw_input('which node would you like?\n ') > > path = path+'/'+path_new > > data,found_data = is_array(file,path) > > return path,data > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------------ > > Live Security Virtual Conference > > Exclusive live event will cover all the ways today's security and > > threat landscape has changed and how IT managers can respond. Discussions > > will include endpoint security, mobile security and the latest in malware > > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > > _______________________________________________ > > Pytables-users mailing list > > Pyt...@li... > > https://lists.sourceforge.net/lists/listinfo/pytables-users > > > > > ------------------------------------------------------------------------------ > > Live Security Virtual Conference > > Exclusive live event will cover all the ways today's security and > > threat landscape has changed and how IT managers can respond. Discussions > > will include endpoint security, mobile security and the latest in malware > > threats. > http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/_______________________________________________ > > Pytables-users mailing list > > Pyt...@li... > > https://lists.sourceforge.net/lists/listinfo/pytables-users > > > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > Pytables-users mailing list > Pyt...@li... > https://lists.sourceforge.net/lists/listinfo/pytables-users > |