def writeto(filename, data, header=None, output_verify='exception', clobber=False, checksum=False): """ Create a new FITS file using the supplied data/header. Parameters ---------- filename : file path, file object, or file like object File to write to. If opened, must be opened for append (ab+). data : array, record array, or groups data object data to write to the new file header : `Header` object (optional) the header associated with `data`. If `None`, a header of the appropriate type is created for the supplied data. This argument is optional. output_verify : str Output verification option. Must be one of ``"fix"``, ``"silentfix"``, ``"ignore"``, ``"warn"``, or ``"exception"``. See :ref:`verify` for more info. clobber : bool (optional) If `True`, and if filename already exists, it will overwrite the file. Default is `False`. checksum : bool (optional) If `True`, adds both ``DATASUM`` and ``CHECKSUM`` cards to the headers of all HDU's written to the file. """ hdu = _makehdu(data, header) if hdu.is_image and not isinstance(hdu, PrimaryHDU): hdu = PrimaryHDU(data, header=header) hdu.writeto(filename, clobber=clobber, output_verify=output_verify, checksum=checksum)
def insert(self, index, hdu): """ Insert an HDU into the `HDUList` at the given `index`. Parameters ---------- index : int Index before which to insert the new HDU. hdu : _BaseHDU instance The HDU object to insert """ if not isinstance(hdu, _BaseHDU): raise ValueError('%s is not an HDU.' % hdu) num_hdus = len(self) if index == 0 or num_hdus == 0: if num_hdus != 0: # We are inserting a new Primary HDU so we need to # make the current Primary HDU into an extension HDU. if isinstance(self[0], GroupsHDU): raise ValueError( "The current Primary HDU is a GroupsHDU. " "It can't be made into an extension HDU, " "so another HDU cannot be inserted before it.") hdu1 = ImageHDU(self[0].data, self[0].header) # Insert it into position 1, then delete HDU at position 0. super(HDUList, self).insert(1, hdu1) super(HDUList, self).__delitem__(0) if not isinstance(hdu, (PrimaryHDU, _NonstandardHDU)): # You passed in an Extension HDU but we need a Primary HDU. # If you provided an ImageHDU then we can convert it to # a primary HDU and use that. if isinstance(hdu, ImageHDU): hdu = PrimaryHDU(hdu.data, hdu.header) else: # You didn't provide an ImageHDU so we create a # simple Primary HDU and append that first before # we append the new Extension HDU. phdu = PrimaryHDU() super(HDUList, self).insert(0, phdu) index = 1 else: if isinstance(hdu, GroupsHDU): raise ValueError('A GroupsHDU must be inserted as a ' 'Primary HDU.') if isinstance(hdu, PrimaryHDU): # You passed a Primary HDU but we need an Extension HDU # so create an Extension HDU from the input Primary HDU. hdu = ImageHDU(hdu.data, hdu.header) super(HDUList, self).insert(index, hdu) hdu._new = True self._resize = True self._truncate = False # make sure the EXTEND keyword is in primary HDU if there is extension self.update_extend()