Esempio n. 1
0
def getWebSpectrum(cube, x, y, xyorig=None, byradec=False):
    ''' Get and format a spectrum for the web '''
    webspec = None
    default_bintype = datamodel[cube.release].default_bintype.name
    has_models = cube.data.has_modelspaxels(name=default_bintype) if hasattr(
        cube.data, 'has_modelspaxels') else False

    # set the spaxel kwargs
    kwargs = {'xyorig': xyorig, 'maps': False}
    kwargs['modelcube'] = has_models
    if byradec:
        kwargs.update({'ra': x, 'dec': y})
    else:
        kwargs.update({'x': x, 'y': y})

    # get the spaxel
    try:
        spaxel = cube.getSpaxel(**kwargs)
    except Exception as e:
        specmsg = 'Could not get spaxel: {0}'.format(e)
    else:
        # get error and wavelength
        error = convertIvarToErr(spaxel.flux.ivar)
        wave = spaxel.flux.wavelength

        # retrieve the index bounds for DONOTUSE pixel regions
        badspots = get_flagged_regions(
            spaxel.flux.pixmask.get_mask('DONOTUSE'),
            value=spaxel.flux.pixmask.labels_to_value('DONOTUSE'))

        # try to get the model flux
        try:
            modelfit = spaxel.full_fit
        except Exception as e:
            modelfit = None

        # make input array for Dygraph
        if not isinstance(modelfit, type(None)):
            webspec = [[
                wave.value[i], [s, error[i]], [modelfit.value[i], 0.0]
            ] for i, s in enumerate(spaxel.flux.value)]
        else:
            webspec = [[wave.value[i], [s, error[i]]]
                       for i, s in enumerate(spaxel.flux.value)]

        specmsg = "Spectrum in Spaxel (j, i)=({2},{3}) at RA, Dec = ({0}, {1})".format(
            spaxel.ra, spaxel.dec, spaxel.x, spaxel.y)

    return webspec, specmsg, badspots
Esempio n. 2
0
def getWebSpectrum(cube, x, y, xyorig=None, byradec=False):
    ''' Get and format a spectrum for the web '''
    webspec = None

    # set the spaxel kwargs
    kwargs = {'xyorig': xyorig, 'properties': False}
    if cube.release != 'MPL-4':
        kwargs['models'] = True
    if byradec:
        kwargs.update({'ra': x, 'dec': y})
    else:
        kwargs.update({'x': x, 'y': y})

    # get the spaxel
    try:
        spaxel = cube.getSpaxel(**kwargs)
    except Exception as e:
        specmsg = 'Could not get spaxel: {0}'.format(e)
    else:
        # get error and wavelength
        error = convertIvarToErr(spaxel.flux.ivar)
        wave = spaxel.flux.wavelength

        # try to get the model flux
        try:
            modelfit = spaxel.full_fit
        except Exception as e:
            modelfit = None

        # make input array for Dygraph
        if not isinstance(modelfit, type(None)):
            webspec = [[
                wave.value[i], [s, error[i]], [modelfit.value[i], 0.0]
            ] for i, s in enumerate(spaxel.flux.value)]
        else:
            webspec = [[wave.value[i], [s, error[i]]]
                       for i, s in enumerate(spaxel.flux.value)]

        specmsg = "Spectrum in Spaxel ({2},{3}) at RA, Dec = ({0}, {1})".format(
            x, y, spaxel.x, spaxel.y)

    return webspec, specmsg
Esempio n. 3
0
def getWebSpectrum(cube, x, y, xyorig=None, byradec=False):
    ''' Get and format a spectrum for the web '''
    webspec = None
    try:
        if byradec:
            spaxel = cube.getSpaxel(ra=x,
                                    dec=y,
                                    xyorig=xyorig,
                                    modelcube=True,
                                    properties=False)
        else:
            spaxel = cube.getSpaxel(x=x,
                                    y=y,
                                    xyorig=xyorig,
                                    modelcube=True,
                                    properties=False)
    except Exception as e:
        specmsg = 'Could not get spaxel: {0}'.format(e)
    else:
        # get error and wavelength
        error = convertIvarToErr(spaxel.spectrum.ivar)
        wave = spaxel.spectrum.wavelength

        # try to get the model flux
        try:
            modelfit = spaxel.model.flux
        except Exception as e:
            modelfit = None

        # make input array for Dygraph
        if not isinstance(modelfit, type(None)):
            webspec = [[wave[i], [s, error[i]], [modelfit[i], 0.0]]
                       for i, s in enumerate(spaxel.spectrum.flux)]
        else:
            webspec = [[wave[i], [s, error[i]]]
                       for i, s in enumerate(spaxel.spectrum.flux)]

        specmsg = "Spectrum in Spaxel ({2},{3}) at RA, Dec = ({0}, {1})".format(
            x, y, spaxel.x, spaxel.y)

    return webspec, specmsg