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
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
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