def to_hdf5(self, hf, df, **kwargs):
"""
Add datasets to a group for an HDF5 file handler
"""
if self.dielectronic:
grp_name = '/'.join([self.element, self.ion_name, 'dielectronic', self.filetype])
else:
grp_name = '/'.join([self.element, self.ion_name, self.filetype])
if grp_name not in hf:
grp = hf.create_group(grp_name)
grp.attrs['chianti_version'] = df.meta['chianti_version']
grp.attrs['footer'] = df.meta['footer']
else:
grp = hf[grp_name]
hf['/'.join([self.element, self.ion_name])].attrs['element'] = self.element
hf['/'.join([self.element, self.ion_name])].attrs['ion'] = self.ion_name
for name in df.colnames:
col = df[name]
if type(col) == u.Quantity:
data = col.value
else:
data = col.data
if '<U' in data.dtype.str:
numchar = data.dtype.str[2:]
data = data.astype('|S{}'.format(numchar))
if name in grp:
ds = grp[name]
else:
if data.dtype == np.dtype('O'):
ragged_dtype = h5py.special_dtype(vlen=np.dtype('float64'))
ds = grp.create_dataset(name, data=data, dtype=ragged_dtype)
else:
ds = grp.create_dataset(name, data=data, dtype=data.dtype)
if col.unit is None:
ds.attrs['unit'] = 'SKIP'
else:
ds.attrs['unit'] = col.unit.to_string()
ds.attrs['description'] = df.meta['descriptions'][name]
评论列表
文章目录