def get_mcat_data(skypos,rad): # Try once with the default radius. out = np.array(gQuery.getArray( gQuery.mcat_visit_sources(skypos[0],skypos[1],rad))) # If no MCAT sources found, try again with a radius 5 times bigger. if len(out) == 0: out = np.array(gQuery.getArray( gQuery.mcat_visit_sources(skypos[0],skypos[1],rad*5.))) # FIXME: The APER entries should really be generated try: return {'objid':np.array(out[:,0],dtype='int64'), 'ra':np.array(out[:,1],dtype='float32'), 'dec':np.array(out[:,2],dtype='float32'), 'NUV':{'mag':np.array(out[:,3],dtype='float32'), 'skybg':np.array(out[:,6],dtype='float32'), 'expt':np.array(out[:,11],dtype='float32'), 'fwhm':np.array(out[:,8],dtype='float32'), 1:{'mag':np.array(out[:,19],dtype='float32')+zpmag('NUV'), 'err':np.array(out[:,33],dtype='float32')}, 2:{'mag':np.array(out[:,20],dtype='float32')+zpmag('NUV'), 'err':np.array(out[:,34],dtype='float32')}, 3:{'mag':np.array(out[:,21],dtype='float32')+zpmag('NUV'), 'err':np.array(out[:,35],dtype='float32')}, 4:{'mag':np.array(out[:,22],dtype='float32')+zpmag('NUV'), 'err':np.array(out[:,36],dtype='float32')}, 5:{'mag':np.array(out[:,23],dtype='float32')+zpmag('NUV'), 'err':np.array(out[:,37],dtype='float32')}, 6:{'mag':np.array(out[:,24],dtype='float32')+zpmag('NUV'), 'err':np.array(out[:,38],dtype='float32')}, 7:{'mag':np.array(out[:,25],dtype='float32')+zpmag('NUV'), 'err':np.array(out[:,39],dtype='float32')} }, 'FUV':{'mag':np.array(out[:,4],dtype='float32'), 'skybg':np.array(out[:,7],dtype='float32'), 'expt':np.array(out[:,10],dtype='float32'), 'fwhm':np.array(out[:,9],dtype='float32'), 1:{'mag':np.array(out[:,12],dtype='float32')+zpmag('FUV'), 'err':np.array(out[:,26],dtype='float32')}, 2:{'mag':np.array(out[:,13],dtype='float32')+zpmag('FUV'), 'err':np.array(out[:,27],dtype='float32')}, 3:{'mag':np.array(out[:,14],dtype='float32')+zpmag('FUV'), 'err':np.array(out[:,28],dtype='float32')}, 4:{'mag':np.array(out[:,15],dtype='float32')+zpmag('FUV'), 'err':np.array(out[:,29],dtype='float32')}, 5:{'mag':np.array(out[:,16],dtype='float32')+zpmag('FUV'), 'err':np.array(out[:,30],dtype='float32')}, 6:{'mag':np.array(out[:,17],dtype='float32')+zpmag('FUV'), 'err':np.array(out[:,31],dtype='float32')}, 7:{'mag':np.array(out[:,18],dtype='float32')+zpmag('FUV'), 'err':np.array(out[:,32],dtype='float32')} } } except IndexError: # If there are STILL no detections, then pass a dict with empty values. # A default set of values will then be used. return {'objid':None,'ra':None,'dec':None,'NUV':None,'FUV':None} except: raise
def get_mcat_data(skypos,rad): out = np.array(gQuery.getArray( gQuery.mcat_visit_sources(skypos[0],skypos[1],rad))) # FIXME: The APER entries should really be generated try: return {'objid':np.array(out[:,0],dtype='int64'), 'ra':np.array(out[:,1],dtype='float32'), 'dec':np.array(out[:,2],dtype='float32'), 'NUV':{'mag':np.array(out[:,3],dtype='float32'), 'skybg':np.array(out[:,6],dtype='float32'), 'expt':np.array(out[:,11],dtype='float32'), 'fwhm':np.array(out[:,8],dtype='float32'), 1:{'mag':np.array(out[:,19],dtype='float32')+zpmag('NUV'), 'err':np.array(out[:,33],dtype='float32')}, 2:{'mag':np.array(out[:,20],dtype='float32')+zpmag('NUV'), 'err':np.array(out[:,34],dtype='float32')}, 3:{'mag':np.array(out[:,21],dtype='float32')+zpmag('NUV'), 'err':np.array(out[:,35],dtype='float32')}, 4:{'mag':np.array(out[:,22],dtype='float32')+zpmag('NUV'), 'err':np.array(out[:,36],dtype='float32')}, 5:{'mag':np.array(out[:,23],dtype='float32')+zpmag('NUV'), 'err':np.array(out[:,37],dtype='float32')}, 6:{'mag':np.array(out[:,24],dtype='float32')+zpmag('NUV'), 'err':np.array(out[:,38],dtype='float32')}, 7:{'mag':np.array(out[:,25],dtype='float32')+zpmag('NUV'), 'err':np.array(out[:,39],dtype='float32')} }, 'FUV':{'mag':np.array(out[:,4],dtype='float32'), 'skybg':np.array(out[:,7],dtype='float32'), 'expt':np.array(out[:,10],dtype='float32'), 'fwhm':np.array(out[:,9],dtype='float32'), 1:{'mag':np.array(out[:,12],dtype='float32')+zpmag('FUV'), 'err':np.array(out[:,26],dtype='float32')}, 2:{'mag':np.array(out[:,13],dtype='float32')+zpmag('FUV'), 'err':np.array(out[:,27],dtype='float32')}, 3:{'mag':np.array(out[:,14],dtype='float32')+zpmag('FUV'), 'err':np.array(out[:,28],dtype='float32')}, 4:{'mag':np.array(out[:,15],dtype='float32')+zpmag('FUV'), 'err':np.array(out[:,29],dtype='float32')}, 5:{'mag':np.array(out[:,16],dtype='float32')+zpmag('FUV'), 'err':np.array(out[:,30],dtype='float32')}, 6:{'mag':np.array(out[:,17],dtype='float32')+zpmag('FUV'), 'err':np.array(out[:,31],dtype='float32')}, 7:{'mag':np.array(out[:,18],dtype='float32')+zpmag('FUV'), 'err':np.array(out[:,32],dtype='float32')} } } except IndexError: return False except: raise
def get_mags(band,ra0,dec0,radius,maglimit,mode='coadd', zpmag={'NUV':20.08,'FUV':18.82},verbose=0): """Given RA, Dec and search radius, searches the coadd MCAT for sources. Returns a dict() which contains magnitudes for all of the APER settings. Note: Visit mode returns a lot more sources, more slowly than coadd mode given the same search parameters. You should probably use smaller search radii in visit mode. If you're just trying to find unique sources in a large region, use coadd mode and then pass the result through the parse_unique_sources() function contained in this module. """ zpf,zpn = zpmag['FUV'],zpmag['NUV'] if mode=='coadd': out =np.array(gQuery.getArray( gQuery.mcat_sources(band,ra0,dec0,radius,maglimit=maglimit), verbose=verbose)) if not len(out): print "Warning: No sources found!" return 0 return {'ra':out[:,0],'dec':out[:,1], 'FUV':{'mag':out[:,3],1:out[:,9]+zpf,2:out[:,10]+zpf, 3:out[:,11]+zpf,4:out[:,12]+zpf,5:out[:,13]+zpf, 6:out[:,14],7:out[:,15]+zpf}, 'NUV':{'mag':out[:,2],1:out[:,16]+zpn,2:out[:,17]+zpn, 3:out[:,18]+zpn,4:out[:,19]+zpn,5:out[:,20]+zpn, 6:out[:,21]+zpn,7:out[:,22]+zpn}} elif mode=='visit': out = np.array(gQuery.getArray( gQuery.mcat_visit_sources(ra0,dec0,radius), verbose=verbose)) # NOTE: For runtime considerations, mcat_visit_sources() does not # make any slices on time or maglimit, so we need to do it here. ix = np.where((out[:,2 if band=='NUV' else 3]<maglimit) & (out[:,2 if band=='NUV' else 3]>0)) return {'ra':out[:,0][ix],'dec':out[:,1][ix], 'NUV':{'mag':out[:,2][ix],'expt':out[:,8][ix], 1:out[:,18][ix]+zpn,2:out[:,19][ix]+zpn,3:out[:,20][ix]+zpn, 4:out[:,21][ix]+zpn,5:out[:,22][ix]+zpn,6:out[:,23][ix]+zpn, 7:out[:,24][ix]+zpn}, 'FUV':{'mag':out[:,3][ix],'expt':out[:,9][ix], 1:out[:,11][ix]+zpf,2:out[:,12][ix]+zpf,3:out[:,13][ix]+zpf, 4:out[:,14][ix]+zpf,5:out[:,15][ix]+zpf,6:out[:,16][ix]+zpf, 7:out[:,17][ix]+zpf}} else: print "mode must be in [coadd,visit]" return
def get_mcat_data(skypos, rad): # Try once with the default radius. out = np.array(gQuery.getArray(gQuery.mcat_visit_sources(skypos[0], skypos[1], rad))) # If no MCAT sources found, try again with a radius 5 times bigger. if len(out) == 0: out = np.array(gQuery.getArray(gQuery.mcat_visit_sources(skypos[0], skypos[1], rad * 5.0))) # FIXME: The APER entries should really be generated try: return { "objid": np.array(out[:, 0], dtype="int64"), "ra": np.array(out[:, 1], dtype="float32"), "dec": np.array(out[:, 2], dtype="float32"), "NUV": { "mag": np.array(out[:, 3], dtype="float32"), "skybg": np.array(out[:, 6], dtype="float32"), "expt": np.array(out[:, 11], dtype="float32"), "fwhm": np.array(out[:, 8], dtype="float32"), 1: { "mag": np.array(out[:, 19], dtype="float32") + zpmag("NUV"), "err": np.array(out[:, 33], dtype="float32"), }, 2: { "mag": np.array(out[:, 20], dtype="float32") + zpmag("NUV"), "err": np.array(out[:, 34], dtype="float32"), }, 3: { "mag": np.array(out[:, 21], dtype="float32") + zpmag("NUV"), "err": np.array(out[:, 35], dtype="float32"), }, 4: { "mag": np.array(out[:, 22], dtype="float32") + zpmag("NUV"), "err": np.array(out[:, 36], dtype="float32"), }, 5: { "mag": np.array(out[:, 23], dtype="float32") + zpmag("NUV"), "err": np.array(out[:, 37], dtype="float32"), }, 6: { "mag": np.array(out[:, 24], dtype="float32") + zpmag("NUV"), "err": np.array(out[:, 38], dtype="float32"), }, 7: { "mag": np.array(out[:, 25], dtype="float32") + zpmag("NUV"), "err": np.array(out[:, 39], dtype="float32"), }, }, "FUV": { "mag": np.array(out[:, 4], dtype="float32"), "skybg": np.array(out[:, 7], dtype="float32"), "expt": np.array(out[:, 10], dtype="float32"), "fwhm": np.array(out[:, 9], dtype="float32"), 1: { "mag": np.array(out[:, 12], dtype="float32") + zpmag("FUV"), "err": np.array(out[:, 26], dtype="float32"), }, 2: { "mag": np.array(out[:, 13], dtype="float32") + zpmag("FUV"), "err": np.array(out[:, 27], dtype="float32"), }, 3: { "mag": np.array(out[:, 14], dtype="float32") + zpmag("FUV"), "err": np.array(out[:, 28], dtype="float32"), }, 4: { "mag": np.array(out[:, 15], dtype="float32") + zpmag("FUV"), "err": np.array(out[:, 29], dtype="float32"), }, 5: { "mag": np.array(out[:, 16], dtype="float32") + zpmag("FUV"), "err": np.array(out[:, 30], dtype="float32"), }, 6: { "mag": np.array(out[:, 17], dtype="float32") + zpmag("FUV"), "err": np.array(out[:, 31], dtype="float32"), }, 7: { "mag": np.array(out[:, 18], dtype="float32") + zpmag("FUV"), "err": np.array(out[:, 32], dtype="float32"), }, }, } except IndexError: # If there are STILL no detections, then pass a dict with empty values. # A default set of values will then be used. return {"objid": None, "ra": None, "dec": None, "NUV": None, "FUV": None} except: raise