def save(self, filename, append=False, clobber=False):
ext = '.oif.fits'
if filename.find(ext)==-1: filename += ext
if append:
hdulist = pf.open(filename, mode='append')
else:
hdulist = pf.HDUList()
hdu = pf.PrimaryHDU()
hdu.header.set('DATE', strftime('%Y%m%dT%H%M%S'), comment='Creation Date')
hdu.header.set('EXT', 'OBJ', comment='Type of information in the HDU')
hdu.header.set('NAME', str(self.name), comment='Name of the object')
hdu.header.set('TYP', str(self.typ), comment='Unit-model of the object')
hdu.header.set('NVALUE', len(self._vkeys), comment='Number of set parameters in the model')
hdu.header.set('NPARAM', len(self._pkeys), comment='Number of free parameters in the model')
hdu.header.set('NSAVE', len(getattr(self, '_save', {})), comment='Number of additional parameters in the model')
for i, k in enumerate(self._vkeys):
hdu.header.set('VALUE'+str(i), k, comment='Name of the set parameter '+str(i))
hdu.header.set(k, getattr(self, "_"+k), comment='Value of the set parameter '+str(i))
for i, k in enumerate(self._pkeys):
hdu.header.set('PARAM'+str(i), k, comment='Name of the free parameter '+str(i))
hdu.header.set(k, getattr(self, "_"+k, 'NONE'), comment='Prior of the free parameter '+str(i))
hdu.header.set(k+'L', getattr(self, k+"_bounds")[0], comment='Value of the lower prior-bound ')
hdu.header.set(k+'H', getattr(self, k+"_bounds")[1], comment='Value of the higher prior-bound ')
for i, k in enumerate(getattr(self, '_save', [])):
hdu.header.set('SAVE'+str(i), k, comment='Name of the additional parameter '+str(i))
if not isinstance(getattr(self, k), (np.ndarray, list, tuple)):
hdu.header.set(k, getattr(self, k), comment='Value of the additional parameter '+str(i))
else:
hdu.header.set(k, 'ARRAY', comment='Value of the additional parameter '+str(i))
key = 'K'+str(int(time()/100%1*10**7))
hdu.header.set('KEY'+str(i), key, comment='Unique key to find the parameter value '+str(i))
paramhdu = pf.PrimaryHDU()
paramhdu.header.set('DATE', strftime('%Y%m%dT%H%M%S'), comment='Creation Date')
paramhdu.header.set('NAME', str(self.name), comment='Name of the object')
paramhdu.header.set('TYP', str(self.typ), comment='Unit-model of the object')
paramhdu.header.set('SAVE'+str(i), k, comment='Name of the additional parameter '+str(i))
paramhdu.header.set('EXT', key, comment='Type of information in the HDU : unique key')
paramhdu.data = np.asarray(getattr(self, k))
hdulist.append(paramhdu)
hdu.header.add_comment('Written by Guillaume SCHWORER')
hdulist.append(hdu)
if append:
hdulist.flush()
hdulist.close()
else:
hdulist.writeto(filename, clobber=clobber)
return filename
评论列表
文章目录