def load_spectrum_fits_messed_x(filename, sp_ref=None):
    """Loads FITS file spectrum that does not have the proper headers. Returns a Spectrum"""
    import f311.filetypes as ft

    # First tries to load as usual
    f = load_with_classes(filename, (ft.FileSpectrumFits,))

    if f is not None:
        ret = f.spectrum
    else:
        hdul = fits.open(filename)

        hdu = hdul[0]
        if not hdu.header.get("CDELT1"):
            hdu.header["CDELT1"] = 1 if sp_ref is None else sp_ref.delta_lambda
        if not hdu.header.get("CRVAL1"):
            hdu.header["CRVAL1"] = 0 if sp_ref is None else sp_ref.x[0]

        ret = ft.Spectrum()
        ret.from_hdu(hdu)
        ret.filename = filename
        original_shape = ret.y.shape  # Shape of data before squeeze
        # Squeezes to make data of shape e.g. (1, 1, 122) into (122,)
        ret.y = ret.y.squeeze()

        if len(ret.y.shape) > 1:
            raise RuntimeError(
                "Data contains more than 1 dimension (shape is {0!s}), "
                "FITS file is not single spectrum".format(original_shape))

    return ret
def load_spectrum_fits_messed_x ( filename , sp_ref = None ) : import f311 . filetypes as ft f = load_with_classes ( filename , ( ft . FileSpectrumFits , ) ) if f is not None : ret = f . spectrum else : hdul = fits . open ( filename ) hdu = hdul [ 0 ] if not hdu . header . get ( "CDELT1" ) : hdu . header [ "CDELT1" ] = 1 if sp_ref is None else sp_ref . delta_lambda if not hdu . header . get ( "CRVAL1" ) : hdu . header [ "CRVAL1" ] = 0 if sp_ref is None else sp_ref . x [ 0 ] ret = ft . Spectrum ( ) ret . from_hdu ( hdu ) ret . filename = filename original_shape = ret . y . shape ret . y = ret . y . squeeze ( ) if len ( ret . y . shape ) > 1 : raise RuntimeError ( "Data contains more than 1 dimension (shape is {0!s}), " "FITS file is not single spectrum" . format ( original_shape ) ) return ret
Loads FITS file spectrum that does not have the proper headers. Returns a Spectrum