import h5py def loadDataset(filename): hid = h5py.File(filename, "r") snap = loadSnap(hid) data = loadData(hid) act = loadActuator(hid) hid.close() return data,act,snap def loadSnap(hid): snap={} if not 'experiment' in hid.keys(): return None for key1 in hid['experiment'].keys(): if isinstance(hid['experiment'][key1],h5py.Group): for key2 in hid['experiment'][key1].keys(): val = hid['experiment'][key1][key2][()] snap[key1+':'+key2]=val else: snap[key1]=hid['experiment'][key1][()] return snap def loadData(hid,scanrun=1): run='scan_%d' % scanrun data = {} for key1 in hid[run]['data'].keys(): if isinstance(hid[run]['data'][key1],h5py.Group): for key2 in hid[run]['data'][key1].keys(): val = hid[run]['data'][key1][key2][()] data[key1+':'+key2]=val else: data[key1]=hid[run]['data'][key1][()] return data def loadActuator(hid,scanrun=1): run='scan_%d' % scanrun data = {} if 'actuators' in hid[run]['method'].keys(): for key1 in hid[run]['method']['actuators'].keys(): if isinstance(hid[run]['method']['actuators'][key1],h5py.Group): for key2 in hid[run]['method']['actuators'][key1].keys(): val = hid[run]['method']['actuators'][key1][key2][()] data[key1+':'+key2]={'val':val} else: data[key1]=hid[run]['method']['actuators'][key1][()] return data