Cross match the output from ADQL queries
#!/usr/bin/python
# author: Eduardo Gonzalez-Solares - 20070821
# mods: Nicholas Walton - 20080111
# this is a cross match of 2MASS against IPHAS
# so gives j,h,k and r,i, Ha fluxes for sources around IC5070
import sys
from math import cos, radians
import time
from astrogrid import acr
from astrogrid import Applications, DSA, MySpace
# Log in
acr.login('leicester')
# Coords for IC 5070
ra, dec = 312.75, 44.37
# Output directory
output_dir = '#iphas'
# Define box bounding box
ra1 = ra - 0.25 / cos(radians(ra))
dec1 = dec - 0.25
ra2 = ra + 0.25 / cos(radians(ra))
dec2 = dec + 0.25
# Query 2MASS
twomass = DSA('ivo://wfau.roe.ac.uk/twomass-dsa/wsa/ceaApplication')
job1 = twomass.query('select * from twomass_psc as x where x.ra between %s and %s and x."dec" between %s and %s' % (ra1, ra2, dec1, dec2),
saveAs='%s/twomass.vot' % output_dir)
while job1.status() in ['INITIALIZING', 'RUNNING', 'UNKNOWN']:
time.sleep(10)
if job1.status() == 'ERROR':
print 'Error querying 2MASS database'
print job1.results()[0]
sys.exit()
print '2MASS Query: ',job1.status()
# Query IPHAS
iphas = DSA('ivo://uk.ac.cam.ast/iphas-dsa-catalog/IDR/ceaApplication')
job2 = iphas.query('select * from PhotoObjBest as x where x.ra between %s and %s and x."dec" between %s and %s' % (ra1, ra2, dec1, dec2),
saveAs='%s/iphas.vot' % output_dir)
while job2.status() in ['INITIALIZING', 'RUNNING', 'UNKNOWN']:
time.sleep(10)
if job2.status() == 'ERROR':
print 'Error querying IPHAS database'
print job2.results()[0]
sys.exit()
print 'IPHAS Query: ',job1.status()
m = MySpace()
# Perform Xmatch using 1.5 arcsec radius
# this uses the TopCat STILTS library to perform the cross match
app = Applications('ivo://uk.ac.starlink/stilts', 'tmatch2')
app.inputs['tmatch2_in1']['value'] = '%s/iphas.vot' % output_dir
app.inputs['tmatch2_in2']['value'] = '%s/twomass.vot' % output_dir
app.inputs['tmatch2_values1']['value'] = 'ra dec'
app.inputs['tmatch2_values2']['value'] = 'ra dec'
app.inputs['tmatch2_params']['value'] = '1.5'
app.inputs['tmatch2_ifmt1']['value'] = '(auto)'
app.inputs['tmatch2_ifmt2']['value'] = '(auto)'
app.inputs['tmatch2_ofmt']['value'] = 'vot'
app.inputs.pop('tmatch2_icmd1')
app.inputs.pop('tmatch2_icmd2')
app.inputs.pop('tmatch2_ocmd')
app.outputs['tmatch2_out']['value'] = '%s/iphas_twomass.vot' % output_dir
job = app.submit()
while job.status() in ['INITIALIZING', 'RUNNING', 'UNKNOWN']:
time.sleep(10)
if job.status() == 'ERROR':
print 'Error running xmatch'
sys.exit()
print 'Xmatch: ', job.status()
# If completed ok the retrieve the result. Print the error message otherwise.
if job.status()=='COMPLETED':
url = job.results()[0]
urllib.urlretrieve(url, 'iphas2mass-xmatch.vot')
else:
print job.results()[0]