Tools for multi-wavelength searches of VAST objects
Requirements:
- astroquery
- psrqpy
- astropy
- numpy
- loguru
Install via:
git clone [email protected]:askap-vast/vast-mw.git
pip install .
or:
pip install git+ssh://[email protected]:askap-vast/vast-mw.git
if you don't want to check out the repository.
The services that require a time input will do proper motion corrections.
General interface:
usage: check_all [-h] [-c COORD] [-r RA] [-d DEC] [-t TIME] [-x XML] [-k KEY] [--radius RADIUS] [-u] [-v]
Query all services for a number of positions.  Available services:
        Gaia:   check_gaia
        Simbad: check_simbad
        Pulsar Survey Scraper:  check_pulsarscraper
        ATNF Pulsar Catalog:    check_atnf
        Planets:        check_planets
        TGSS:   check_tgss
        FIRST:  check_first
        NVSS:   check_nvss
        Million Quasar: check_milliquas
        WISEAGN:        check_wiseagn
        Large Quasar Astrometric Catalog:       check_lqac
        SDSS Quasar:    check_sdssqso
        VLASS:  check_vlass
optional arguments:
  -h, --help            show this help message and exit
  -c COORD, --coord COORD
                        Input coordinates (separated by ,) (default: None)
  -r RA, --ra RA        RA to search (hms or deg) - only if not specified with -c (default: None)
  -d DEC, --dec DEC     Dec to search (deg) - only if not specified with -c (default: None)
  -t TIME, --time TIME  Time for input coordinates (default: None)
  -x XML, --xml XML     XML table for input (default: None)
  -k KEY, --key KEY     Source name in XML to search (or 'all') (default: unknown)
  --radius RADIUS       Search radius (arcsec) (default: 15)
  -u, --url             Return URL (default: False)
  -v, --verbosity       Increase output verbosity (default: 0)
Note -r/--ra vs --radius.
check_gaia -c "11h05m21.52536s,+43d31m34.9932s" -t "2023-12-21 21:07:40" --radius=45 -vv
DEBUG   : Input time is '2023-12-21 21:07:40.000'
INFO    : For source at '11h05m21.53s, +43d31m35.0s' = '166.340d, +43.526d', found 2 Gaia matches within 45.0 arcsec
VAST J1105.3+4332	Gaia DR3 778947608243864320:  6.3 arcsec
VAST J1105.3+4332	Gaia DR3 778947814402602752: 37.5 arcsec
check_gaia -c "11h05m21.52536s,+43d31m34.9932s" -t "2023-12-21 21:07:40" --radius=45 -vv --url
DEBUG   : Input time is '2023-12-21 21:07:40.000'
INFO    : For source at '11h05m21.53s, +43d31m35.0s' = '166.340d, +43.526d', found 2 Gaia matches within 45.0 arcsec
VAST J1105.3+4332	Gaia DR3 778947608243864320:  6.3 arcsec	https://gaia.ari.uni-heidelberg.de/singlesource.html#gaiadr3_id=778947608243864320
VAST J1105.3+4332	Gaia DR3 778947814402602752: 37.5 arcsec	https://gaia.ari.uni-heidelberg.de/singlesource.html#gaiadr3_id=778947814402602752
By default, only looks for sources with name unknown:
check_gaia -x ~/Downloads/RACS-low3_cp_summary.xml                                      
VAST J1706.5-0824[unknown]	Gaia DR3 4336579344345914240:  0.6 arcsec
VAST J1706.5-0824[unknown]	Gaia DR3 4336579348644101120:  5.3 arcsec
VAST J1706.5-0824[unknown]	Gaia DR3 4336579348644340224: 13.7 arcsec
check_gaia -x ~/Downloads/RACS-low3_cp_summary.xml -k "* alf For B"
VAST J0312.0-2859[* alf For B]	Gaia DR3 5059349158319689344:  1.2 arcsec
VAST J0312.0-2859[* alf For B]	Gaia DR3 5059348952161258624:  5.9 arcsec
VAST J0312.0-2859[* alf For B]	Gaia DR3 5059349192679586304: 10.4 arcsec
VAST J0312.0-2859[* alf For B]	Gaia DR3 5059349158319689344:  0.9 arcsec
VAST J0312.0-2859[* alf For B]	Gaia DR3 5059348952161258624:  6.0 arcsec
VAST J0312.0-2859[* alf For B]	Gaia DR3 5059349192679586304: 10.1 arcsec
May be slow, as searches are not vectorized
check_gaia -x ~/Downloads/RACS-low3_cp_summary.xml -k all          
VAST J1554.6-2515[*   3 Sco]	Gaia DR3 6235747125966268928:  0.7 arcsec
VAST J1554.6-2515[*   3 Sco]	Gaia DR3 6235747125967029120: 10.2 arcsec
VAST J1554.6-2515[*   3 Sco]	Gaia DR3 6235747881879907712: 13.6 arcsec
VAST J0312.0-2859[* alf For B]	Gaia DR3 5059349158319689344:  1.2 arcsec
VAST J0312.0-2859[* alf For B]	Gaia DR3 5059348952161258624:  5.9 arcsec
VAST J0312.0-2859[* alf For B]	Gaia DR3 5059349192679586304: 10.4 arcsec
VAST J0312.0-2859[* alf For B]	Gaia DR3 5059349158319689344:  0.9 arcsec
VAST J0312.0-2859[* alf For B]	Gaia DR3 5059348952161258624:  6.0 arcsec
VAST J0312.0-2859[* alf For B]	Gaia DR3 5059349192679586304: 10.1 arcsec
VAST J0734.5+3153[* alf Gem A]	Gaia DR3 892348694913501952:  8.0 arcsec
VAST J1955.3+0624[* bet Aql]	Gaia DR3 4296708789289490816:  0.6 arcsec
VAST J1955.3+0624[* bet Aql]	Gaia DR3 4296708789290712064: 12.8 arcsec
VAST J0743.3+2853[* sig Gem]	Gaia DR3 878467085735262720:  4.4 arcsec
...
from vast_mw import vast_mw
results = vast_mw.check_gaia(source, t=..., radius=...)source is a astropy.coordinates.SkyCoord.  If an obstime is supplied as part of that object, then the Gaia coordinates are corrected (proper motion only) to that time.  Otherwise the time can be specified with t (astropy.time.Time).
The returned object is a dictionary containing pairs of Gaia ID, angular separation.
check_simbad -r 24.771674208211856 -d -17.947682860008488 -t 2016 -vv --radius=60                
DEBUG   : Input time is '2016-01-01 00:00:00.000'
INFO    : For source at '1h39m05.20s, -17d56m51.7s' = '24.772d, -17.948d', found 3 Gaia matches within 60.0 arcsec
VAST J0139.0-1757	G 272-61B:  0.0 arcsec	https://simbad.u-strasbg.fr/simbad/sim-id?Ident=G+272-61B&submit=SIMBAD+search&NbIdent=1
VAST J0139.0-1757	G 272-61:  1.6 arcsec	https://simbad.u-strasbg.fr/simbad/sim-id?Ident=G+272-61&submit=SIMBAD+search&NbIdent=1
VAST J0139.0-1757	G 272-61A:  2.3 arcsec	https://simbad.u-strasbg.fr/simbad/sim-id?Ident=G+272-61A&submit=SIMBAD+search&NbIdent=1
Note that the positions in Simbad are epoch 2000. This means you need a large search radius in cases like these (which is UV Ceti). The query first looks for matches with the epoch 2000 position and the requested position, and only for those matches are the separations at the desired epoch (2016 in this case) computed. (I think this is a bug in the Simbad query interface but don't have confirmation yet.)
Note that the Simbad query also prints out the single-source URLs if requested with --url.
from vast_mw import vast_mw
results = vast_mw.check_simbad(source, t=..., radius=...)source is a astropy.coordinates.SkyCoord.  If an obstime is supplied as part of that object, then the Gaia coordinates are corrected (proper motion only) to that time.  Otherwise the time can be specified with t (astropy.time.Time).
The returned object is a dictionary containing pairs of Simbad ID, angular separation. The URL can be further constructed by vast_mw.simbad_url(name).
check_pulsarscraper -x ~/Downloads/RACS-low3_cp_summary.xml -k "PSR B0301+19"
VAST J0304.5+1933[PSR B0301+19]	B0301+19[ATNF]:  0.0 deg
from vast_mw import vast_mw
results = vast_mw.check_pulsarscraper(source, radius=...)source is a astropy.coordinates.SkyCoord.
The returned object is a dictionary containing pairs of Pulsar name (including survey), angular separation.
check_atnf -x ~/Downloads/RACS-low3_cp_summary.xml -k "PSR B0301+19"
VAST J0304.5+1933[PSR B0301+19]	J0304+1932:  4.5 arcsec
from vast_mw import vast_mw
results = vast_mw.check_atnf(source, radius=...)source is a astropy.coordinates.SkyCoord.
The returned object is a dictionary containing pairs of Pulsar name, angular separation.
check_planets -c "347.498197, -7.741003" -t "2024-09-10 15:24:05"  -r 60 -vv
DEBUG   : Input time is '2024-09-10 15:24:05.000'
INFO    : For source at '23h09m59.57s, -07d44m27.6s' = '347.498d, -7.741d', found 1 planets within 60 arcsec
VAST J2309.9-0744	saturn: 0.01 deg
Note that you might use a larger radius here, since the planet ephemerides can be a bit uncertain.
from vast_mw import vast_mw
results = vast_mw.check_planets(source, t=..., radius=..., obs=...)source is a astropy.coordinates.SkyCoord.  An obstime must be supplied as part of that object or as a separate argument, or with t (astropy.time.Time). obs is the name of an observatory.
The returned object is a dictionary containing pairs of planet name, angular separation.
Search for matches in TGSSADR1 catalog (same interface for NVSS, FIRST, VLASS, Milliquas, WISE AGN, LQAC, SDSS QSO):
check_tgss -c "10:00:00, +00:00:00" --radius 1200 -vv --url                                                          
INFO    : For source at '10h00m00.00s, +00d00m00.0s' = '150.000d, +0.000d', found 5 TGSSADR1 matches within 1200.0 arcsec
VAST J1000.0+0000	J100016.5+000525:  0.1 deg	https://vizier.cds.unistra.fr/viz-bin/VizieR-5?-source=J%2FA%2BA%2F598%2FA78%2Ftable3&TGSSADR=J100016.5%2B000525
VAST J1000.0+0000	J100018.4+000519:  0.1 deg	https://vizier.cds.unistra.fr/viz-bin/VizieR-5?-source=J%2FA%2BA%2F598%2FA78%2Ftable3&TGSSADR=J100018.4%2B000519
VAST J1000.0+0000	J100030.3-000315:  0.1 deg	https://vizier.cds.unistra.fr/viz-bin/VizieR-5?-source=J%2FA%2BA%2F598%2FA78%2Ftable3&TGSSADR=J100030.3-000315
VAST J1000.0+0000	J095939.8+001439:  0.3 deg	https://vizier.cds.unistra.fr/viz-bin/VizieR-5?-source=J%2FA%2BA%2F598%2FA78%2Ftable3&TGSSADR=J095939.8%2B001439
VAST J1000.0+0000	J100025.4+001451:  0.3 deg	https://vizier.cds.unistra.fr/viz-bin/VizieR-5?-source=J%2FA%2BA%2F598%2FA78%2Ftable3&TGSSADR=J100025.4%2B001451
Specifying --url will give URLs that give the full source details through Vizier.
from vast_mw import vast_mw
results = vast_mw.check_tgss(source, radius=...)source is a astropy.coordinates.SkyCoord.
The returned object is a dictionary containing pairs of source name, angular separation.
Note that this interface is different from the others, and is not included in check_all
check_casda -c "12:34:56,+39:00:00" --tstart=60000                            
   obs_id         t_min                 start          t_exptime     Frequency              obs_collection         
                    d                                      s            MHz                                        
----------- ------------------ ----------------------- --------- ----------------- --------------------------------
ASKAP-55588      60298.9521875 2023-12-20 22:51:09.000   905.748 943.4909994999999 The Rapid ASKAP Continuum Survey
ASKAP-55589  60298.96336226852 2023-12-20 23:07:14.500   905.748 943.4909994999999 The Rapid ASKAP Continuum Survey
ASKAP-55590  60298.97453587963 2023-12-20 23:23:19.900   895.795 943.4909994999999 The Rapid ASKAP Continuum Survey
ASKAP-55591 60298.985594907404 2023-12-20 23:39:15.400   905.748 943.4909994999999 The Rapid ASKAP Continuum Survey
ASKAP-55665  60299.95082175926 2023-12-21 22:49:11.000   895.795 943.4909994999999 The Rapid ASKAP Continuum Survey
ASKAP-55666 60299.961880787036 2023-12-21 23:05:06.500   905.748 943.4909994999999 The Rapid ASKAP Continuum Survey
ASKAP-55667  60299.97305555556 2023-12-21 23:21:12.000   895.795 943.4909994999999 The Rapid ASKAP Continuum Survey
ASKAP-55668  60299.98434490741 2023-12-21 23:37:27.400   905.748 943.4909994999999 The Rapid ASKAP Continuum Survey
from vast_mw import vast_mw
result = vast_mw.check_casda(source,allcolumns=True)
source is a astropy.coordinates.SkyCoord.
The returned object is a astropy.table.Table.
Note that this interface is different from the others, and is not included in check_all
check_vla -r 18:32:48.41 --dec="-09:11:15.8" -v --group --tstart=59000 
INFO    : For source at '18h32m48.41s, -09d11m15.8s' = '278.202d, -9.188d', found 3 VLA/EVLA matches within None arcsec
               obs_publisher_did                  target_name       Separation           t_min              t_max        t_exptime   freq_max   configuration
                                                                      arcmin                                                                                 
------------------------------------------------ -------------- ------------------ ------------------ ------------------ --------- ------------ -------------
 20A-087.sb38658939.eb38659647.59112.17612017361    G22.90+0.00  16.36948764293314  59112.17612847222 59112.266087951386      44.9  464000000.0         {'B'}
 20A-087.sb37821358.eb38688477.59125.91483408565    G22.90+0.00  16.36948764293314 59125.914842592596  59126.00370717593     44.85  464000000.0         {'B'}
21A-285.sb39768958.eb39990570.59405.256784178244 HESS_J1832-093 10.675953504240203 59405.256791087966  59405.31905960648     839.7 1968000000.0         {'C'}
These are additionally grouped by scheduling block.
from vast_mw import vast_mw
result = vast_mw.check_vla(source,allcolumns=True)
source is a astropy.coordinates.SkyCoord.
The returned object is a astropy.table.Table.
check_all -r 24.771674208211856 -d -17.947682860008488 -t 2016 -vv --radius=60
DEBUG   : Input time is '2016-01-01 00:00:00.000'
INFO    : For source at '1h39m05.20s, -17d56m51.7s' = '24.772d, -17.948d', found 4 Gaia matches within 60.0 arcsec
VAST J0139.0-1757	Gaia DR3 5140693571158946048:  0.0 arcsec
VAST J0139.0-1757	Gaia DR3 5140693571158739712:  0.5 arcsec
VAST J0139.0-1757	Gaia DR3 5140693571158739840:  2.3 arcsec
VAST J0139.0-1757	Gaia DR3 5140693773021476224: 33.1 arcsec
INFO    : For source at '1h39m05.20s, -17d56m51.7s' = '24.772d, -17.948d', found 3 Simbad matches within 60.0 arcsec
VAST J0139.0-1757	G 272-61B:  0.0 arcsec
VAST J0139.0-1757	G 272-61:  1.6 arcsec
VAST J0139.0-1757	G 272-61A:  2.3 arcsec
WARNING : For source at '1h39m05.20s, -17d56m51.7s' = '24.772d, -17.948d', found 0 Pulsar Survey Scraper matches within 60.0 arcsec
WARNING : For source at '1h39m05.20s, -17d56m51.7s' = '24.772d, -17.948d', found 0 ATNF Pulsar Catalog matches within 60.0 arcsec
In addition to the individual catalogs/citations above, this tool makes use of the SIMBAD database, CDS, Strasbourg Astronomical Observatory, France and of the VizieR catalogue access tool, CDS, Strasbourg Astronomical Observatory, France (DOI : 10.26093/cds/vizier, Ochsenbein et al. 2000, A&AS, 143, 230).