Using the nexsciTAP Server with the TAP+ Client to Access Data From KOA In Asynchronous Mode

The nexsciTAP server

The NASA Exoplanet Science Institute (NExScI) (visit https://nexsci.caltech.edu) has developed a Python-based server to implement an API that complies with the Virtual Observatory (VO) Table Access Protocol(TAP) version 1.1 (September 2019) (http://ivoa.net/documents/TAP/20190927/index.html), a standard recommended by the International Virtual Observatory alliance (IVOA) (http://ivoa.net).

The TAP API enables a rich variety of searches against tabular data, includung cone, box or all-sky searches, temporal searches, combinations of spatial searches and temporal searches, searches against instrumental attributes and program attributes.

This tutorial supports demonstrates how to use the TAP+ client to perform synchronous TAP-based queries for public raw science and calibration data acquired with the DEep Imaging Multi-Object Spectrograph (DEIMOS) ; these data are hosted at the Keck Observatory Archive (KOA; https://koa.ipac.caltech.edu).

Requirements

TAP+ was developed at the ESAC Space Data Centre (ESDC: http://www.cosmos.esa.int/web/esdc/) and can be installed from PyPI as part of the astroquery package:

$ pip install --upgrade astroquery

The tutorial requires Python 3.6 (or above), plus the table read and write functions from Astropy. We have tested with Astropy 4.0.1, but any version should work. We recommend using the Ananconda Python distribution.

A note on output records

The number of records returned here may differ from those returned here because new data are released daily.

Version 1.0 (March, 2021)

In [5]:
import numpy as np
from astroquery.utils.tap.core import TapPlus
koa = TapPlus(url="https://koa.ipac.caltech.edu/TAP")
Created TAP+ (v1.2.1) - Connection:
	Host: koa.ipac.caltech.edu
	Use HTTPS: True
	Port: 443
	SSL Port: 443

Search by date

In [6]:
sql = "select koaid, filehand from koa_deimos where koaid like '%20150901%' "
job = koa.launch_job_async(sql)
r = job.get_results()
print(r)
print(job)
INFO: Query finished. [astroquery.utils.tap.core]
        koaid                                 filehand                       
---------------------- ------------------------------------------------------
DE.20150901.07424.fits /koadata37/DEIMOS/20150901/lev0/DE.20150901.07424.fits
DE.20150901.08740.fits /koadata37/DEIMOS/20150901/lev0/DE.20150901.08740.fits
DE.20150901.08811.fits /koadata37/DEIMOS/20150901/lev0/DE.20150901.08811.fits
DE.20150901.08879.fits /koadata37/DEIMOS/20150901/lev0/DE.20150901.08879.fits
DE.20150901.08950.fits /koadata37/DEIMOS/20150901/lev0/DE.20150901.08950.fits
DE.20150901.09052.fits /koadata37/DEIMOS/20150901/lev0/DE.20150901.09052.fits
DE.20150901.09522.fits /koadata37/DEIMOS/20150901/lev0/DE.20150901.09522.fits
<Table length=7>
  name   dtype 
-------- ------
   koaid object
filehand object
Jobid: tap_v1k0hkyf
Phase: COMPLETED
Owner: None
Output file: async_20210303140100.vot
Results: None

Write the output to the IPAC ASCII, VOtable CSV and TSV formats

In [7]:
job = koa.launch_job_async(sql, dump_to_file=True, output_file='KoaTapDate.tbl', \
                           output_format='ipac')
job = koa.launch_job_async(sql, dump_to_file=True, output_file='KoaTapDate2.vot', 
                           output_format='votable') 
job = koa.launch_job_async(sql, dump_to_file=True, output_file='KoaTapDate3.csv', \
                           output_format='csv')
job = koa.launch_job_async(sql, dump_to_file=True, output_file='KoaTapDate4.tsv', \
                           output_format='tsv')

Select all keywords for data acquired on UT Date

In [8]:
sql = "select * from koa_deimos where koaid like '%20150901%'"
job = koa.launch_job_async(sql)
r = job.get_results()
print(r)
print(job)

job = koa.launch_job_async(sql, dump_to_file=True, output_file='AllFields.tbl', \
                           output_format='ipac')
INFO: Query finished. [astroquery.utils.tap.core]
        koaid               ofname     filesize_mb ...  spt_ind   cntr 
---------------------- --------------- ----------- ... --------- ------
DE.20150901.07424.fits d0827_0037.fits          -- ... 132000000 150853
DE.20150901.08740.fits d0827_0038.fits          -- ... 132000000 150854
DE.20150901.08811.fits d0827_0039.fits          -- ... 132000000 150855
DE.20150901.08879.fits d0827_0040.fits          -- ... 132000000 150856
DE.20150901.08950.fits d0827_0041.fits          -- ... 132000000 150857
DE.20150901.09052.fits d0827_0042.fits          -- ... 132000000 150858
DE.20150901.09522.fits d0827_0043.fits          -- ... 132000000 150859
<Table length=7>
    name     dtype  n_bad
----------- ------- -----
      koaid  object     0
     ofname  object     0
filesize_mb float64     7
     progid  object     0
   proginst  object     0
     progpi  object     0
   progtitl  object     0
   koaimtyp  object     0
     camera  object     0
    obsmode  object     0
   datlevel   int32     0
   detsec01  object     0
   detsec02  object     0
   detsec03  object     0
   detsec04  object     0
   detsec05  object     0
   detsec06  object     0
   detsec07  object     0
   detsec08  object     0
   detsec09  object     0
   detsec10  object     0
   detsec11  object     0
   detsec12  object     0
   detsec13  object     0
   detsec14  object     0
   detsec15  object     0
   detsec16  object     0
   dispscal float64     0
   dqa_date  object     0
   dqa_vers  object     0
   fcskoaid  object     0
     filter  object     0
   guidfwhm float64     7
   guidtime  object     0
        mjd float64     0
     nexten   int32     0
    npixsat   int32     0
         oa  object     0
    propint   int32     0
   semester  object     0
   spatscal float64     0
    specres float64     0
         ut  object     0
   waveblue   int32     0
   wavecntr   int32     0
    wavered   int32     0
   wxdomhum float64     7
   wxdomtmp float64     7
     wxdwpt float64     7
   wxouthum float64     7
   wxouttmp float64     7
    wxpress float64     7
     wxtime  object     0
    wxwndir float64     7
    wxwndsp float64     7
     abfreq   int32     0
    airmass float64     0
   airpress  object     0
    amplist  object     0
    ampmode  object     0
   amppsize  object     0
    antiblm  object     0
   autopane   int32     0
   autoshut  object     0
    axestat  object     0
         az float64     0
    baybfan  object     0
    baycfan  object     0
    binning  object     0
     bitpix   int32     0
     bscale   int32     0
      bzero   int32     0
    calocal float64     0
    ccdgain  object     0
   ccdpsize  object     0
   ccdspeed  object     0
     ccdsum  object     0
    celocal float64     0
   checksum  object     0
    coolfan  object     0
   coolflow  object     0
   currinst  object     0
   darktime float64     0
    datasum  object     0
    date_ut  object     0
   date_beg  object     0
   date_end  object     0
   date_obs  object     0
    dcsstat  object     0
    dcsvers  object     0
       ddec float64     0
       cdec  object     0
   detcnfid   int32     0
   detector  object     0
   detlsize  object     0
   domeposn float64     0
   domestat  object     0
        dra float64     0
     dtrack  object     0
   dwfilcal  object     0
   dwfilfop  object     0
   dwfilmod  object     0
   dwfilnam  object     0
   dwfilord   int32     0
   dwfilraw   int32     0
   dwfilsta  object     0
   dwfiltor float64     0
   dwfiltrg   int32     0
   dwfilval float64     0
   dwfoccal  object     0
   dwfocfop  object     0
   dwfocmod  object     0
   dwfocnam  object     0
   dwfocord   int32     0
   dwfocraw   int32     0
   dwfocsta  object     0
   dwfoctor float64     0
   dwfoctrg   int32     0
   dwfocval float64     0
   dwxl8cal  object     0
   dwxl8fop  object     0
   dwxl8mod  object     0
   dwxl8nam  object     0
   dwxl8ord   int32     0
   dwxl8raw   int32     0
   dwxl8sta  object     0
   dwxl8tor float64     0
   dwxl8trg   int32     0
   dwxl8val float64     0
         el float64     0
   elaptime   int32     0
    equinox float64     0
   erasecnt   int32     0
   erasline  object     0
    exptime float64     0
     extend  object     0
   fcsccnox   int32     0
   fcsccnoy   int32     0
   fcscusel  object     0
   fcsexnox   int32     0
   fcsexnoy   int32     0
   fcsimgfi  object     0
    fcsmode  object     0
   fcsreffi  object     0
   fcsrmsx1 float64     0
   fcsrmsx2 float64     0
   fcsrmsxd float64     0
   fcsrmsxm float64     0
   fcsrmsy1 float64     0
   fcsrmsy2 float64     0
   fcsrmsyd float64     0
   fcsrmsym float64     0
   fcsskips   int32     0
   fcstrack  object     0
     flamp3  object     0
     flamp4  object     0
     flamp5  object     0
     flamp6  object     0
     flamps  object     0
   flimagin  object     0
   flspectr  object     0
   focalstn  object     0
   focusdif float64     0
   focusmod  object     0
   focusoff float64     0
   focusraw   int32     0
   focustof   int32     0
   focustrg   int32     0
   focustus   int32     0
   focususr float64     0
   focusval float64     0
      frame  object     0
    frameno   int32     0
   g3tltcal  object     0
   g3tltenc   int32     0
   g3tltfop  object     0
   g3tltmod  object     0
   g3tltnam  object     0
   g3tltnom   int32     0
   g3tltoff   int32     0
   g3tltord   int32     0
   g3tltraw   int32     0
   g3tltsta  object     0
   g3tlttor float64     0
   g3tlttrg   int32     0
   g3tltval float64     0
   g3tltwav float64     0
   g4tltcal  object     0
   g4tltenc   int32     0
   g4tltfop  object     0
   g4tltmod  object     0
   g4tltnam  object     0
   g4tltnom   int32     0
   g4tltoff   int32     0
   g4tltord   int32     0
   g4tltraw   int32     0
   g4tltsta  object     0
   g4tlttor float64     0
   g4tlttrg   int32     0
   g4tltval float64     0
   g4tltwav float64     0
   gclp1pos  object     0
   gclp1trg  object     0
   gclp2pos  object     0
   gclp2trg  object     0
   gclp4pos  object     0
   gclp4trg  object     0
   gclp5pos  object     0
   gclp5trg  object     0
   gratefop  object     0
   gratenam  object     0
   gratepin  object     0
   gratepos   int32     0
   gratesta  object     0
   gratetrg   int32     0
   grselcal  object     0
   grselfop  object     0
   grselmod  object     0
   grselnam  object     0
   grselord   int32     0
   grselraw   int32     0
   grselsta  object     0
   grseltor float64     0
   grseltrg   int32     0
         ha  object     0
   hatchpos  object     0
   hatchtrg  object     0
   hplogtim  object     0
     imtype  object     0
   instangl float64     0
   instflip  object     0
   instrume  object     0
   ionpump1  object     0
   ionpump2  object     0
   keepprep  object     0
      lamps  object     0
   latitude float64     0
        lst  object     0
    mjd_obs  object     0
    mosmode  object     0
      naxis   int32     0
    nsubint   int32     0
    nvidinp   int32     0
     object  object     0
   observer  object     0
    obstype  object     0
     outdir  object     0
    outfile  object     0
   ovrflush   int32     0
       pane  object     0
      pane1  object     0
     pane10  object     0
     pane11  object     0
     pane12  object     0
     pane13  object     0
     pane14  object     0
     pane15  object     0
     pane16  object     0
      pane2  object     0
      pane3  object     0
      pane4  object     0
      pane5  object     0
      pane6  object     0
      pane7  object     0
      pane8  object     0
      pane9  object     0
   panefits  object     0
   panelist  object     0
   panerror  object     0
     parang float64     0
   parantel float64     0
       pmfm float64     0
     poname  object     0
    poname1  object     0
    poname2  object     0
    poname3  object     0
    poname4  object     0
    poname5  object     0
    poname6  object     0
    poname7  object     0
    poname8  object     0
    poname9  object     0
   postline   int32     0
    postpix   int32     0
     poxoff float64     0
     poxpos float64     0
    poxpos1 float64     0
    poxpos2 float64     0
    poxpos3 float64     0
    poxpos4 float64     0
    poxpos5 float64     0
    poxpos6 float64     0
    poxpos7 float64     0
    poxpos8 float64     0
    poxpos9 float64     0
     poyoff float64     0
     poypos float64     0
    poypos1 float64     0
    poypos2 float64     0
    poypos3 float64     0
    poypos4 float64     0
    poypos5 float64     0
    poypos6 float64     0
    poypos7 float64     0
    poypos8 float64     0
    poypos9 float64     0
     precol   int32     0
   preflush   int32     0
    preline   int32     0
     prerow   int32     0
   progname  object     0
        cra  object     0
   rota1gof   int32     0
   rota1iof   int32     0
   rota1qof   int32     0
   rota1tof   int32     0
   rota2gof   int32     0
   rota2iof   int32     0
   rota2qof   int32     0
   rota2tof   int32     0
   rotatalg  object     0
   rotatcal  object     0
   rotatcmt  object     0
   rotatdcs  object     0
   rotatfop  object     0
   rotatmod  object     0
   rotatnam  object     0
   rotatord   int32     0
   rotatsta  object     0
   rotatstq float64     0
   rotattor float64     0
   rotattrk  object     0
   rotatttk   int32     0
   rotattva float64     0
   rotatval float64     0
   rotatvel float64     0
    rotbase float64     0
    rotdest float64     0
   rotercnt   int32     0
    roterrs  object     0
    rotmode  object     0
     rotoff float64     0
   rotpdest float64     0
   rotpdsts float64     0
    rotposn float64     0
   rotpposn float64     0
   rotrefan float64     0
     rotsel  object     0
   rotsrver float64     0
    rotstst  object     0
    rotzero float64     0
    rowshft float64     0
   secfocus float64     0
   secthetx float64     0
   secthety float64     0
   shblcltm float64     0
   shbloptm float64     0
   shclocnt   int32     0
   shlatclo float64     0
   shlatopn float64     0
   shopncnt   int32     0
     simple  object     0
   simulate  object     0
   slarmpos  object     0
   slarmtrg  object     0
   slmskbar  object     0
   slmskcas  object     0
   slmskfoo  object     0
   slmskfop  object     0
   slmskloc  object     0
   slmskmal  object     0
   slmsknam  object     0
   slmskpos   int32     0
   slmsksta  object     0
   slmsktrg   int32     0
   slselcal  object     0
   slselfop  object     0
   slselmod  object     0
   slselnam  object     0
   slselord   int32     0
   slselraw   int32     0
   slselsta  object     0
   slseltor float64     0
   slseltrg   int32     0
         st  object     0
    targdec  object     0
   targepoc float64     0
   targequi float64     0
   targfram  object     0
   targname  object     0
   targplax float64     0
   targpmdc float64     0
   targpmra float64     0
     targra  object     0
   targradv float64     0
   tbar1val float64     0
   tbar2val float64     0
   tbar3val float64     0
   tbar4val float64     0
   tbar5val float64     0
   tbar6val float64     0
   tbar7val float64     0
   tbar8val float64     0
   tcam1val float64     0
   tcam2val float64     0
   tcam3val float64     0
   tcam4val float64     0
   tcam5val float64     0
   tcam6val float64     0
   tcam7val float64     0
   tcam8val float64     0
   tdis1val float64     0
   tdis2val float64     0
   tdis3val float64     0
   tdis4val float64     0
   tdis5val float64     0
   tdis6val float64     0
   tdis7val float64     0
   tdis8val float64     0
   telescop  object     0
   telfocus float64     0
    tempdet float64     0
    tempset float64     0
   tgra1val float64     0
   tgra2val float64     0
   tgra3val float64     0
   tmirrnam  object     0
   tmirrord   int32     0
   tmirrraw   int32     0
   tmirrtrg   int32     0
   tmirrval float64     0
    tmpcinc float64     0
   tmpcoolc float64     0
   tmpcoutc float64     0
   tmptvcoc float64     0
      ttime   int32     0
   tubetemp float64     0
   tva2spow  object     0
   tvcampow  object     0
   tvcoflow  object     0
   tvfilcal  object     0
   tvfilfop  object     0
   tvfilmod  object     0
   tvfilnam  object     0
   tvfilord   int32     0
   tvfilraw   int32     0
   tvfilsta  object     0
   tvfiltor float64     0
   tvfiltrg   int32     0
     tvflip  object     0
   tvfoccal  object     0
   tvfocfop  object     0
   tvfocmod  object     0
   tvfocnam  object     0
   tvfocord   int32     0
   tvfocraw   int32     0
   tvfocsta  object     0
   tvfoctor float64     0
   tvfoctrg   int32     0
   tvpowset  object     0
   tvs2fpow  object     0
   utb15ven  object     0
   utb30ven  object     0
    utbm15v float64     0
    utbp15v float64     0
    utbp30v float64     0
     utbp5v float64     0
    utbtemp float64     0
        utc  object     0
    utc_end  object     0
    vidoff1   int32     0
   vidoff10   int32     0
   vidoff11   int32     0
   vidoff12   int32     0
   vidoff13   int32     0
   vidoff14   int32     0
   vidoff15   int32     0
   vidoff16   int32     0
    vidoff2   int32     0
    vidoff3   int32     0
    vidoff4   int32     0
    vidoff5   int32     0
    vidoff6   int32     0
    vidoff7   int32     0
    vidoff8   int32     0
    vidoff9   int32     0
         ra float64     0
        dec float64     0
 utdatetime  object     0
   filehand  object     0
      semid  object     0
          x float64     0
          y float64     0
          z float64     0
    spt_ind   int32     0
       cntr   int32     0
Jobid: tap_vqstlnd1
Phase: COMPLETED
Owner: None
Output file: async_20210303140146.vot
Results: None

Select columns acquired on UT Date

In [9]:
sql = "select koaid, filehand  from koa_deimos \
    where koaid like '%20150901%' "
job = koa.launch_job_async(sql, dump_to_file=True, output_file='columns.tbl', output_format='ipac')
r = job.get_results()
print(r)
print('\n\n')
print(job)
        koaid                                 filehand                       
---------------------- ------------------------------------------------------
DE.20150901.07424.fits /koadata37/DEIMOS/20150901/lev0/DE.20150901.07424.fits
DE.20150901.08740.fits /koadata37/DEIMOS/20150901/lev0/DE.20150901.08740.fits
DE.20150901.08811.fits /koadata37/DEIMOS/20150901/lev0/DE.20150901.08811.fits
DE.20150901.08879.fits /koadata37/DEIMOS/20150901/lev0/DE.20150901.08879.fits
DE.20150901.08950.fits /koadata37/DEIMOS/20150901/lev0/DE.20150901.08950.fits
DE.20150901.09052.fits /koadata37/DEIMOS/20150901/lev0/DE.20150901.09052.fits
DE.20150901.09522.fits /koadata37/DEIMOS/20150901/lev0/DE.20150901.09522.fits



<Table length=7>
  name   dtype
-------- -----
   koaid str22
filehand str54
Jobid: tap_th33df4b
Phase: COMPLETED

Owner: None
Output file: columns.tbl
Results: None

Select a maximum number of records

In [10]:
sql="select top 5 koaid, filehand, frameno from koa_deimos \
    where koaid like '%20150901%'"

job = koa.launch_job_async(sql, dump_to_file=True, output_file='top20.tbl', output_format='ipac')
r = job.get_results()
print(r)
print('\n\n')
print(job)
        koaid          ... frameno
---------------------- ... -------
DE.20150901.08740.fits ...      38
DE.20150901.08811.fits ...      39
DE.20150901.08879.fits ...      40
DE.20150901.08950.fits ...      41
DE.20150901.09522.fits ...      43



<Table length=5>
  name   dtype
-------- -----
   koaid str22
filehand str54
 frameno int64
Jobid: tap_x3eisr33
Phase: COMPLETED

Owner: None
Output file: top20.tbl
Results: None

Select columns and search by date range

In [11]:
sql="select koaid, filehand from koa_deimos \
     where (utdatetime >= to_date('2015-09-01 00:00:00', \
    'yyyy-mm-dd HH24:MI:SS') and \
     utdatetime <= to_date('2015-09-30 23:59:59', 'yyyy-mm-dd HH24:MI:SS'))"


job = koa.launch_job_async(sql, dump_to_file=True, output_file='DateRange.tbl', output_format='ipac')
r = job.get_results()
print(r)
print('\n\n')
print(job)
        koaid                                 filehand                       
---------------------- ------------------------------------------------------
DE.20150901.07424.fits /koadata37/DEIMOS/20150901/lev0/DE.20150901.07424.fits
DE.20150901.08740.fits /koadata37/DEIMOS/20150901/lev0/DE.20150901.08740.fits
DE.20150901.08811.fits /koadata37/DEIMOS/20150901/lev0/DE.20150901.08811.fits
DE.20150901.08879.fits /koadata37/DEIMOS/20150901/lev0/DE.20150901.08879.fits
DE.20150901.08950.fits /koadata37/DEIMOS/20150901/lev0/DE.20150901.08950.fits
DE.20150901.09052.fits /koadata37/DEIMOS/20150901/lev0/DE.20150901.09052.fits
DE.20150901.09522.fits /koadata37/DEIMOS/20150901/lev0/DE.20150901.09522.fits
DE.20150902.68203.fits /koadata37/DEIMOS/20150902/lev0/DE.20150902.68203.fits
DE.20150902.68248.fits /koadata37/DEIMOS/20150902/lev0/DE.20150902.68248.fits
DE.20150902.68293.fits /koadata37/DEIMOS/20150902/lev0/DE.20150902.68293.fits
                   ...                                                    ...
DE.20150928.74389.fits /koadata37/DEIMOS/20150929/lev0/DE.20150928.74389.fits
DE.20150928.75494.fits /koadata37/DEIMOS/20150929/lev0/DE.20150928.75494.fits
DE.20150928.77735.fits /koadata37/DEIMOS/20150929/lev0/DE.20150928.77735.fits
DE.20150928.77781.fits /koadata37/DEIMOS/20150929/lev0/DE.20150928.77781.fits
DE.20150928.77829.fits /koadata37/DEIMOS/20150929/lev0/DE.20150928.77829.fits
DE.20150928.77877.fits /koadata37/DEIMOS/20150929/lev0/DE.20150928.77877.fits
DE.20150928.77922.fits /koadata37/DEIMOS/20150929/lev0/DE.20150928.77922.fits
DE.20150928.77970.fits /koadata37/DEIMOS/20150929/lev0/DE.20150928.77970.fits
DE.20150928.78015.fits /koadata37/DEIMOS/20150929/lev0/DE.20150928.78015.fits
DE.20150929.00207.fits /koadata37/DEIMOS/20150929/lev0/DE.20150929.00207.fits
DE.20150929.00555.fits /koadata37/DEIMOS/20150929/lev0/DE.20150929.00555.fits
Length = 1055 rows



<Table length=1055>
  name   dtype
-------- -----
   koaid str22
filehand str54
Jobid: tap_69bx4oxy
Phase: COMPLETED

Owner: None
Output file: DateRange.tbl
Results: None

Search by program ID

In [12]:
sql= ("select koaid, filehand, progid, ha, az, detector, gratenam \
    from koa_deimos where (progid = 'U024') ")



job = koa.launch_job_async(sql, dump_to_file=True, output_file='ProgramID.tbl', output_format='ipac')

r = job.get_results()
print(r)
print('\n\n')
print(job)
        koaid          ... gratenam
                       ...         
---------------------- ... --------
DE.20190605.06053.fits ...    600ZD
DE.20190605.10617.fits ...    600ZD
DE.20190605.10691.fits ...    600ZD
DE.20190605.12860.fits ...    600ZD
DE.20190605.12938.fits ...    600ZD
DE.20190605.13014.fits ...    600ZD
DE.20190605.13089.fits ...    600ZD
DE.20190605.13197.fits ...    600ZD
DE.20190605.13275.fits ...    600ZD
DE.20190605.13351.fits ...    600ZD
                   ... ...      ...
DF.20190606.09732.fits ...     830G
DF.20190705.10814.fits ...    600ZD
DF.20190705.10919.fits ...    600ZD
DF.20190705.11248.fits ...    600ZD
DF.20190705.11506.fits ...     830G
DF.20190706.06286.fits ...    600ZD
DF.20190706.06705.fits ...    600ZD
DF.20190706.06915.fits ...    600ZD
DF.20190706.07219.fits ...     830G
DF.20190706.07433.fits ...     830G
Length = 222 rows



<Table length=222>
  name    dtype    unit     class     n_bad
-------- ------- ------- ------------ -----
   koaid   str22               Column     0
filehand   str54               Column     0
  progid    str4               Column     0
      ha   str12         MaskedColumn    13
      az float64 degrees MaskedColumn    13
detector   str14         MaskedColumn    13
gratenam    str6               Column     0
Jobid: tap_4ifbh1hg
Phase: COMPLETED

Owner: None
Output file: ProgramID.tbl
Results: None
In [14]:
sql=("select koaid, filehand, ra, dec from koa_deimos where \
    contains(point('icrs', ra, dec), \
    circle('icrs', 23.4, 30.60,1.0)) = 1")

job = koa.launch_job_async(sql, dump_to_file=True, output_file='ConeSearch.tbl', output_format='ipac')

r = job.get_results()
print(r)
print('\n\n')
print(job)
        koaid          ...   dec   
---------------------- ... --------
DE.20031018.19913.fits ... 30.95914
DE.20031018.20064.fits ... 30.95914
DE.20031018.20249.fits ... 30.95881
DE.20031018.20392.fits ... 30.95872
DE.20031018.20535.fits ... 30.95878
DE.20031018.21134.fits ... 30.95325
DE.20031018.21289.fits ... 30.95297
DE.20031018.21429.fits ...   30.953
DE.20031018.21616.fits ...   30.953
DE.20031018.22378.fits ... 30.95336
                   ... ...      ...
DE.20181204.26084.fits ... 30.73564
DE.20181204.27263.fits ... 30.73564
DE.20181204.28434.fits ... 30.73564
DE.20181204.29603.fits ... 30.73564
DE.20181204.31202.fits ... 30.60358
DE.20181204.31296.fits ... 30.60375
DE.20181204.31462.fits ... 30.60375
DE.20181204.32522.fits ... 30.60375
DE.20181204.33582.fits ... 30.60375
DE.20181204.34642.fits ... 30.60375
DE.20181204.35702.fits ... 30.60375
Length = 401 rows



<Table length=401>
  name    dtype 
-------- -------
   koaid   str22
filehand   str54
      ra float64
     dec float64
Jobid: tap_xs2k9rhg
Phase: COMPLETED

Owner: None
Output file: ConeSearch.tbl
Results: None
In [15]:
sql=("select koaid, filehand, ra, dec from koa_deimos where \
     contains(point('icrs', ra, dec), \
     box('icrs',23.4, 30.60,1.0,120)) = 1")

job = koa.launch_job_async(sql, dump_to_file=True, output_file='Spat_Box.tbl', \
                           output_format='ipac')
r = job.get_results()
print(r)
print('\n\n')
print(job)
        koaid          ...   dec   
---------------------- ... --------
DE.20020810.12784.fits ... 89.98549
DE.20020810.12904.fits ... 89.98549
DE.20020810.13013.fits ... 89.98549
DE.20020810.13122.fits ... 89.98549
DE.20020810.13271.fits ... 89.98549
DE.20020810.13393.fits ... 89.98549
DE.20020810.13504.fits ... 89.98549
DE.20020810.13613.fits ... 89.98549
DE.20020810.13777.fits ... 89.98549
DE.20020810.13913.fits ... 89.98549
                   ... ...      ...
DE.20190825.76600.fits ...    90.01
DE.20190825.77507.fits ...    90.01
DE.20190825.77609.fits ...    90.01
DE.20190825.80669.fits ...    90.01
DE.20190825.82643.fits ...    90.01
DE.20190825.82739.fits ...    90.01
DE.20190825.84498.fits ...    90.01
DE.20190825.85012.fits ...    90.01
DE.20190825.85257.fits ...    90.01
DE.20190825.85455.fits ...    90.01
DE.20190825.85569.fits ...    90.01
Length = 2464 rows



<Table length=2464>
  name    dtype 
-------- -------
   koaid   str22
filehand   str54
      ra float64
     dec float64
Jobid: tap_oah50mod
Phase: COMPLETED

Owner: None
Output file: Spat_Box.tbl
Results: None
In [16]:
sql=("select koaid, filehand, ra, dec from koa_deimos  where \
    contains(point('icrs', ra, dec), \
    polygon('icrs',209.80225,53.34894,209.80225,55.34894,211.80225,54.34894)) = 1")

job = koa.launch_job_async(sql, dump_to_file=True, output_file='Spat_Poly.tbl', \
                           output_format='ipac')
r = job.get_results()
print(r)
        koaid          ...   dec   
---------------------- ... --------
DE.20100313.56134.fits ... 54.34917
DE.20100313.56233.fits ... 54.34917
DE.20100313.56356.fits ... 54.34917
DE.20100313.56466.fits ... 54.34917
DE.20100313.56584.fits ... 54.34917
DE.20100313.56780.fits ... 54.34917
DE.20100313.56898.fits ... 54.34917
DE.20100313.57009.fits ... 54.34917
DE.20120226.55210.fits ... 54.26819
DE.20120226.55594.fits ... 54.26869
                   ... ...      ...
DE.20160428.47679.fits ... 54.39894
DE.20160428.48021.fits ...  54.4045
DE.20160704.30504.fits ... 54.45833
DE.20160704.30975.fits ... 54.45833
DE.20160704.31540.fits ... 54.45833
DE.20160704.31910.fits ... 54.45833
DE.20160704.32336.fits ... 54.45833
DE.20160704.32707.fits ... 54.45833
DE.20180705.24528.fits ... 54.43911
DE.20180705.26500.fits ... 54.43772
DE.20180705.26576.fits ... 54.43772
Length = 37 rows

Count number of records in date range

In [17]:
sql=("select count(*) from koa_deimos where \
    (utdatetime >= to_date('2009-01-01 00:00:00', 'yyyy-mm-dd HH24:MI:SS') and \
     utdatetime <= to_date('2009-01-31 23:59:59', 'yyyy-mm-dd HH24:MI:SS'))"  )



job = koa.launch_job_async(sql, dump_to_file=True, output_file='Count_daterange.tbl', \
                           output_format='ipac')
r = job.get_results()
print(r)
print('\n\n')
print(job)
count(*)
--------
     404



<Table length=1>
  name   dtype
-------- -----
count(*) int64
Jobid: tap_jg7i3mqi
Phase: COMPLETED

Owner: None
Output file: Count_daterange.tbl
Results: None

Count total number of records in table

In [18]:
sql="select count(*) as total from koa_deimos"

job = koa.launch_job_async(sql, dump_to_file=True, output_file='Count_table.tbl', \
                           output_format='ipac')
r = job.get_results()
print(r)
print('\n\n')
print(job)
total 
------
172291



<Table length=1>
 name dtype
----- -----
total int64
Jobid: tap_vk5j57fv
Phase: COMPLETED

Owner: None
Output file: Count_table.tbl
Results: None

Note that in asynchronous mode, TAP+ returns all records.


Visit KOA at https://koa.ipac.caltech.edu.

The Keck Observatory Archive (KOA) is a collaboration between the NASA Exoplanet Science Institute (NExScI) and the W. M. Keck Observatory (WMKO). NExScI is sponsored by NASA's Exoplanet Exploration Program, and operated by the California Institute of Technology in coordination with the Jet Propulsion Laboratory (JPL).

Need help? Submit your questions to the KOA Help Desk at https://koa.ipac.caltech.edu/cgi-bin/Helpdesk/nph-genTicketForm?projname=KO

In [ ]: