示例#1
0
def get_SDSS_simple(ra, dec, rad=1/60., dir='./', name='', silent=False):
    '''
    >> data = get_SDSS_simple(ra, dec, rad=1, dir='./' name='mydata')

    call the DR12 skyserver with single [ra, dec] and download cvs file
    input:
     ra, dec (deg)
    optional input:
      radius=1/60. (deg).
      dir='./' directory for fits file
      name name for file, if not give we use IAU name of input coords
      silent=False shut it.

    note, make 1e5 lines are returned, only basic imaging data (magnitudes)

    '''
    url = SDSSurl_radec.replace('__RA__',str(float(ra))).replace('__DEC__', str(float(dec))).replace('__RAD__',str(rad*60))
    #cas = SDSS_cas..replace('__RA__',str(ra)).replace('__DEC__', str(dec)).replace('__RAD__',str(rad))
    
    if not(name):
        name = 'SDSS-'+iau_name(ra, dec)+'.csv'

    com = '''curl '''+url+''' > ''' +dir+name

    if not silent: print com

    os.system(com)
    
    # the (stupid?) format with two tables
    f = open(dir+name,'r')
    lines = ''
    for l in f.readlines():
        #print l
        if l.count('#Table2')==1: 
            break
        lines+=l

    lines= lines.split('\n')
    print lines[1]
    print lines[2:]
    data = readascii(lines=lines[2:], delimiter=',', names=lines[1].split(','))
    
    return data
示例#2
0
def get_SDSS(ra0, dec0, rad=1/60., name='', silent=False, debug=False):
    '''
    >> data = get_SDSS(ra, dec, rad=1, dir='./' name='mydata')

    submit CAS job via sqlcl
    input:
     ra, dec (deg), can be arrays
    optional input:
      radius=1/60. (deg)
      name if given, we write file name
      silent=False shut it.
    note:
     slow for many object because we loop over input coords; 
     this could be log(N) faster if I knew how 
     to upload coordinates and run fgetNearByObjEq on this list. 

    '''
    if np.isscalar(ra0):
        ra0 = [ra0]
        dec0 = [dec0]

    out_list = [] 
    for ra, dec in zip(ra0, dec0):
        cas = SDSS_cas.replace('__RA__',str(ra)).replace('__DEC__', str(dec)).replace('__RAD__',str(rad*60))
    
        if not(silent):
            print 'running CASjob:\n',cas

        result = sqlcl.query(cas)

        if not(silent):
            print 'CAS job done, now reading query...'

        #print result.readlines()
        lines = result.readlines()

        if debug:
            print ra, dec, lines

        if len(lines)<=2:
            print 'no sources found, for ra,dec:', ra, dec
        else:
            data = readascii(lines=lines[2:], names=lines[1].split(','), delimiter=',')
            out_list.append(data)

    if len(out_list)==0:
        return None # no data, with one input

    if len(out_list)==1:
        out = out_list[0]

    if len(out_list)>1:
        data_arr = np.repeat(out_list[0],1)
        for dd in out_list[1:]:
            data_arr = rec.merge_rec(data_arr, np.repeat(dd,1))
            #data_arr =  np.concatenate(data_arr, dd)
        out= data_arr

    if name: 
        if not(silent):
            print '# of entries:', len(out)
            print 'writing to ', name
        pyfits.writeto(name, out, clobber=True)
    
    return out