Multi-instrument, multi-wavelength study of high energy sources with the Virtual Observatory#

François Bonnarel¹, Caroline Bot¹, Françoise Genova¹, René Goosmann¹, Manon Marchand¹, Ada Nebot¹.

  1. Université de Strasbourg, CNRS, Observatoire Astronomique de Strasbourg, UMR 7550, F-67000, Strasbourg, France

This Notebook is based on the Euro-VO “Multi-instrument, multi-wavelength study of high energy sources with the Virtual Observatory” tutorial http://www.euro-vo.org/sites/default/files/documents/tutorial-highenergy_2016Nov.pdf.

Developed by Caroline Bot, François Bonnarel, René Goosmann and Françoise Genova. Adapted to a Jupyter Notebook by Ada Nebot.

CDS


Introduction#

This tutorial demonstrates how to use several standard tools of the Virtual Observatory (VO) for data mining and multiple waveband data analysis. The step-by-step application below focuses on applications in the gamma-ray and high energy domain, but also involves observational data from other wavebands. The user may explore how to:

  1. query astronomical catalogues in the gamma-ray and high energy spectral band using VO tools

  2. cross-correlate catalogues to find an object at different photon energy bands

  3. apply selection criteria when extracting sources from a catalogue

  4. use the observational measures of the selected objects to explore possible correlations

  5. visualize astronomical images from the radio up to the high energy domain

  6. display spectral energy distributions obtained from different photometric data sets

Schematic view of the scientific rationale of the tutorial:

schema

# Standard Library
import pickle
from pathlib import Path

# Astronomy tools
from astropy import units as u
from astropy.coordinates import SkyCoord
from astropy.table import hstack, join, unique, vstack

# Access astronomical databases
from astroquery.simbad import Simbad
from astroquery.vizier import Vizier

# Sky visualization
from ipyaladin import Aladin

# For plots
import plotly.express as px

Step #1 - Obtaining all HESS sources from SIMBAD#

Simbad

How to obtain a catalogue of all published HESS sources from the astronomical database SIMBAD.

The High Energy Stereoscopic System (HESS) is a Cherenkov telescope array detecting cosmic gamma-rays in the GeV—TeV range. Sources detected by HESS include supernova remnants (SNR), wind nebulae pulsars, active galactic nuclei (AGN) and others. The number of detected sources steadily grows and makes it possible to study certain sub-samples of the HESS catalogue. In the following, the HESS sources should be investigated with respect to their gamma-ray properties obtained from the second Fermi-LAT catalogue.

# Check which are the default fields
Simbad.get_votable_fields()
['main_id', 'coordinates']
# Check the available fields in a Simbad astroquery
Simbad.list_votable_fields()
--NOTES--

1. The parameter filtername must correspond to an existing filter. Filters include: B,V,R,I,J,K.  They are checked by SIMBAD but not astroquery.simbad

2. Fields beginning with rvz display the data as it is in the database. Fields beginning with rv force the display as a radial velocity. Fields beginning with z force the display as a redshift

3. For each measurement catalog, the VOTable contains all fields of the first measurement. When applicable, the first measurement is the mean one. 

Available VOTABLE fields:

bibcodelist(y1-y2)
biblio
cel
cl.g
coo(opt)
coo_bibcode
coo_err_angle
coo_err_maja
coo_err_mina
coo_qual
coo_wavelength
coordinates
dec(opt)
dec_prec
diameter
dim
dim_angle
dim_bibcode
dim_incl
dim_majaxis
dim_minaxis
dim_qual
dim_wavelength
dimensions
distance
distance_result
einstein
fe_h
flux(filtername)
flux_bibcode(filtername)
flux_error(filtername)
flux_name(filtername)
flux_qual(filtername)
flux_system(filtername)
flux_unit(filtername)
fluxdata(filtername)
gcrv
gen
gj
hbet
hbet1
hgam
id(opt)
ids
iras
irc
iso
iue
jp11
link_bibcode
main_id
measurements
membership
mesplx
mespm
mk
morphtype
mt
mt_bibcode
mt_qual
otype
otype(opt)
otypes
parallax
plx
plx_bibcode
plx_error
plx_prec
plx_qual
pm
pm_bibcode
pm_err_angle
pm_err_maja
pm_err_mina
pm_qual
pmdec
pmdec_prec
pmra
pmra_prec
pos
posa
propermotions
ra(opt)
ra_prec
rot
rv_value
rvz_bibcode
rvz_error
rvz_qual
rvz_radvel
rvz_type
rvz_wavelength
sao
sp
sp_bibcode
sp_nature
sp_qual
sptype
td1
typed_id
ubv
uvby
uvby1
v*
velocity
xmm
z_value
For more information on a field:
Simbad.get_field_description ('field_name') 
Currently active VOTABLE fields:
 ['main_id', 'coordinates']
# Get more information about the field coordinatse
Simbad.get_field_description("otype")
standard name of the object type

To check all available object types in Simbad go to http://simbad.u-strasbg.fr/simbad/sim-display?data=otypes

# Add the field otype and check that it is now included
Simbad.add_votable_fields("otype")
# Add new columns with the RA and Dec in degrees
# (default cols are h:m:s and d:m:s respectively)
Simbad.add_votable_fields("ra(d)")
Simbad.add_votable_fields("dec(d)")

Simbad.get_votable_fields()
['main_id', 'coordinates', 'otype', 'ra(d)', 'dec(d)']
# Query Simbad by catalog containing the keyword 'hess'
# and display the result in pretty notebook format
hess_simbad = Simbad.query_catalog("hess")
hess_simbad
Table length=113
MAIN_IDRADECRA_PRECDEC_PRECCOO_ERR_MAJACOO_ERR_MINACOO_ERR_ANGLECOO_QUALCOO_WAVELENGTHCOO_BIBCODEOTYPERA_dDEC_dSCRIPT_NUMBER_ID
"h:m:s""d:m:s"masmasdegdegdeg
objectstr13str13int16int16float32float32int16str1str1objectobjectfloat64float64int32
HESS J0232+20202 32 53.2+20 16 2155----0D2007A&A...475L...9Agamma38.2217000020.272500001
HESS J0534+22005 34+22.022----0E2008ApJ...682L..41Hgamma83.5000000022.000000001
4FGL J0535.2-673605 36 00.01-67 35 07.566----0DX2012ApJ...759..123SHighMassXBin84.00004000-67.585420001
HD 25944006 32 59.2566+05 48 01.16014140.0180.01690AO2020yCat.1350....0GHighMassXBin98.246902535.800322431
NAME MONOCEROS NEB06 38 43+06 30.24431000.00018000.00094E1988IRASP.C......0JSNRemnant99.679000006.503000001
NAME Vela X08 33 08.880-45 11 24.3677----0D2015ApJS..217....2MPulsar128.28700000-45.190100001
NAME Vela Jr SN08 52.0-46 2033----0ER2009BASI...37...45GSNRemnant133.00000000-46.330000001
2MASS J10185560-585645910 18 55.5875-58 56 45.97514140.0090.00990AO2020yCat.1350....0GHighMassXBin154.73161488-58.946104241
PSR J1016-5810 16 21.266-58 57 11.70771213.000710.00090DR2015ApJ...814..128KPulsar154.08860800-58.953250001
FGES J1023.3-574710 23 15.1831-57 46 34.78499----0EG2018A&A...612A...1Hgamma155.81326306-57.776328891
PSR J1028-581910 28 27.888-58 19 06.147753.00030.00090BR2015ApJ...814..128KPulsar157.11620000-58.318372001
Mrk 42111 04 27.3140+38 12 31.79814140.0120.01590AO2020yCat.1350....0GBLLac166.1138086838.208832921
PSR J1119-612711 19 14.30-61 27 49.566----0D2000ApJ...541..367CPulsar169.80958000-61.463750001
CPD-63 249513 02 47.6544-63 50 08.62614140.0090.01090AO2020yCat.1350....0GPulsar195.69856001-63.835729711
PSR J1301-630513 02 47.9992-63 10 48.0011111----0D2022ApJS..260...53APulsar195.69999695-63.180000311
PSR J1357-642913 57 02.525-64 29 29.8977----0CR2015MNRAS.452.3273KPulsar209.26052100-64.491636001
HESS J1357-64513 57 00.0-64 30 0055----0Dgamma209.25000000-64.500000001
PSR J1418-605814 18 42.725-60 58 01.89771749.0001270.00090DR2015ApJ...814..128KPulsar214.67802100-60.967192001
PSR J1420-604814 20 08.190-60 48 14.8577----0CX2010ApJ...711.1168VPulsar215.03412500-60.804125001
HESS J1427-60814 27 52.0-60 51 0055----0D2008A&A...477..353Agamma216.96670000-60.850000001
SNR G315.0-02.314 43 00-62 30.044----0ER2014BASI...42...47GSNRemnant220.75000000-62.500000001
SNR G318.2+00.114 54.8-59 0433----0ER2009BASI...37...45GSNRemnant223.70000000-59.070000001
PSR J1459-6014 59 30.1228-60 53 20.53614140.0520.06190AO2020yCat.1350....0GPulsar224.87551193-60.889037951
HESS J1507-62215 07 30-62 25.044----0E2011A&A...525A..45Agamma226.87500000-62.417000001
3A 1510-59015 13 17.000-59 04 54.0077----0D2015ApJS..217....2MPulsar228.32083300-59.081667001
PSR J1615-513716 15 12.62-51 34 53.3662300.0001900.00076DR2013MNRAS.432.1294PPulsar243.80258000-51.581470001
AJG 4416 17 33.000-51 02 00.0077----0D2015ApJS..217....2MPulsar244.38750000-51.033333001
HESS J1616-50916 16-50.922----0EG2006ApJ...651..190Lgamma244.00000000-50.900000001
HESS J1626-49016 26 04.0-49 05 1355----0D2008A&A...477..353Agamma246.51670000-49.086900001
AX J1631.9-475216 32 01.87-47 52 28.366300.000300.00090CX2012ApJ...756...27LHighMassXBin248.00778000-47.874520001
HESS J1634-47216 34 51.1192-47 14 01.93699----0EG2018A&A...612A...1Hgamma248.71299694-47.233871111
3EG J1639-470216 40 43.2-46 31 4855----0EG2022ApJS..260...53Agamma250.18000000-46.530000001
HESS J1702-42017 02 44.0-42 00 5755----0D2008A&A...477..353Agamma255.68330000-42.015800001
HESS J1708-41017 08 24.0-41 05 2455----0D2008A&A...477..353Agamma257.10000000-41.090000001
HESS J1708-44317 07 59.5384-44 17 19.04699----0EG2018A&A...612A...1Hgamma256.99807694-44.288623891
.............................................
HAWC J1928+17819 28.4+17 4933----0EG2021ApJ...917....6Agamma292.1000000017.820000001
SNR G054.1+00.319 30 10.6+18 50 2255314633.000314633.00090EG2020ApJ...905...76ASNRemnant292.5440000018.839400001
2MASS J19435624+211823319 43 56.244+21 18 23.3877110.000110.00090CI2003yCat.2246....0CBlazar295.9843500021.306494001
QSO B2005-48920 09 25.3903-48 49 53.72514140.0260.02090AO2020yCat.1350....0GBLLac302.35579329-48.831590291
QSO B2155-30421 58 52.0652-30 13 32.11814140.0170.01490AO2020yCat.1350....0GBLLac329.71693844-30.225588461
QSO B2356-30923 59 07.9034-30 37 40.67114140.0940.07290AO2020yCat.1350....0GBLLac359.78293125-30.627964191
HESS J0535-69105 35 55.0-69 11 1055----0E2019A&A...621A.138Kgamma83.97920000-69.186100001
HESS J0537-69105 37 44.0-69 09 5755----0D2012A&A...545L...2Hgamma84.43330000-69.165800001
HESS J1018-58910 18-58.922----0E2012Sci...335..189Agamma154.50000000-58.900000001
HESS J1502-42115 02-42.122----0Egamma225.50000000-42.100000001
HESS J1503-58215 03-58.222----0E2012ApJ...753...83Agamma225.70000000-58.200000001
HESS J1504-41815 04-41.822----0Egamma226.00000000-41.800000001
4FGL J1533.9-5712e15 34 43.1982-57 09 35.9991111----0D2022ApJS..260...53ASNRemnant233.67999268-57.159999851
HESS J1554-55015 54.6-55 0533----0E2013ApJ...773...77Agamma238.65000000-55.080000001
HESS J1641-46316 41 01.7-46 18 1155----0D2013ApJ...774...74Fgamma250.25710000-46.303100001
HESS J1645-45516 45-45.522----0Dgamma251.30000000-45.500000001
HESS J1646-45816 46 00.0-45 48 0055----0D2012A&A...537A.114Agamma251.50000000-45.800000001
HESS J1647-46516 47-46.522----0Dgamma251.80000000-46.500000001
HESS J1649-46016 49-46.022----0Dgamma252.20000000-46.000000001
HESS J1652-46216 52-46.222----0Dgamma253.00000000-46.200000001
HESS J1702-420A17 02.1-42 0733----0D2021A&A...653A.152Agamma255.52000000-42.120000001
HESS J1702-420B17 02.5-42 0033----0D2021A&A...653A.152Agamma255.64000000-42.010000001
HESS J1729-34517 28 58.4325-34 31 35.81499----0EG2018A&A...612A...1Hgamma262.24346889-34.526615001
HESS J1746-30817 46 17.1314-30 50 28.02599----0EG2018A&A...612A...1Hgamma266.57138111-30.841118061
HESS J1747-24817 47 49.0-24 48 3055----0D2011A&A...531L..18Agamma266.95420000-24.808300001
Fermi J1808.2-202918 08 00.0-20 24 0055----0D2013ApJ...774...74Fgamma272.00000000-20.400000001
HESS J1818-15418 16.1-15 1233----0E2013ApJ...773...77Agamma274.02000000-15.200000001
HESS J1828-09918 28-09.922----0EG2017MNRAS.468.2093Dgamma277.00000000-9.900000001
HESS J1832-08518 32-08.522----0EG2017MNRAS.468.2093Dgamma278.00000000-8.500000001
HESS J1844-03018 44 40.0-03 06 0055----0E2017A&A...602A..31Cgamma281.16670000-3.100000001
HESS J1852-00018 52+00.022----0E2011ApJ...743....4Zgamma283.000000000.000000001
HESS J1854+01318 54+01.322----0EG2021ApJ...917....6Agamma283.500000001.300000001
HESS J1915+11519 15+11.522----0EG2021ApJ...917....6Agamma288.8000000011.500000001
HESS J1923+14019 23+14.022----0EG2021ApJ...917....6Agamma290.8000000014.000000001
HESS J1943+21519 43 00+21 31.144----0E2012PASJ...64..100Ygamma295.7500000021.518000001
f"There are {len(hess_simbad)} HESS sources in Simbad database."
'There are 113 HESS sources in Simbad database.'

Exercise: Do you know how to count how many HESS sources in Simbad are classified as HMXB? And as SNR? (answer in next cell, we use the pandas functionnalities)

df_hess_simbad = hess_simbad.to_pandas()
df_hess_simbad.groupby("OTYPE").count()["MAIN_ID"]
OTYPE
BLLac            4
Blazar           1
HighMassXBin     6
LowMassXBin      1
Pulsar          22
Region           1
SNRemnant       16
XrayBin          1
gamma           61
Name: MAIN_ID, dtype: int64

Step #2 - Projecting HESS sources onto the Fermi sky#

Aladin

Display the HESS sources in Galactic coordinates and overlay it on a view of an all-sky image survey conducted with Fermi LAT.

# Display the Fermi color HiPS
aladin = Aladin(survey="P/Fermi/color")
aladin
# Display the sources on top
aladin.add_table(hess_simbad)
# Increase height of the widget
aladin.height = 600

** zoom out and move to see the points **

The HESS sources are overlayed on top of the Fermi images. If you don’t see them, zoom out and move around the sky to locate them around the Galactic Plane. By selecting a source you will see the main Simbad information of that source at the bottom of the AladinLite widget. You can change the image by selecting the stack layer.

# Select the "SNR" sources and overlay them
# Note that characters in python need that extra "b"
idx_SNR = hess_simbad["OTYPE"] == ["SNRemnant"]
aladin.add_table(hess_simbad[idx_SNR])

Step #3 - Cross-identify HESS and Fermi LAT sources#

Xmatch

Here we will cross-correlate the HESS source list with the complete set of objects appearing in the 3rd Fermi LAT catalogue.

Then we use the CDS XMatch service (http://cdsxmatch.u-strasbg.fr/) via the astroquery.XMatch.query module to look for spatial crossmatches

The cross-correlation will create a new, sub-catalogue of all HESS sources found in Simbad that also appear in the 3rd Fermi-LAT catalogue.

The Fermi Gamma Ray Space Telescope was launched in 2008 and observes astronomical objects across the 10 keV – 300 GeV band. The main instrument of the Fermi satellite is the Large Area Telescope (LAT), an imaging high-energy gamma-ray telescope covering the spectral range of 20 MeV – 300 GeV. The LAT has a very wide field of view, covering 20% of the sky at any time and scanning the complete sky every three hours. In the third Fermi-LAT catalogue (3FGL) all identified Fermi sources after 4 years of continuous survey were published together with basic measurements such as photometric fluxes in different spectral bands, an estimated gamma-ray spectral slope, or a variability flag.

In the following cross-identification process, it is assumed that the HESS source and its Fermi counterpart have an apparent angular distance of less then 1°, which is guided by the average angular resolution of the Fermi-LAT across the gamma-ray waveband. The angular resolution of the Fermi-LAT drops from 3° at 100 MeV to 0.04° at 100 GeV. Choosing a different limit for the angular distance thus favors associations with more objects at the low or at the high energy end of the Fermi-LAT band.

Find the VizieR name of the 3rd Fermi LAT catalogue.

catalog_list = Vizier.find_catalogs("Fermi LAT third catalog")
for k, v in catalog_list.items():
    print(k, ": ", v.description)
J/ApJS/218/23 :  Fermi LAT third source catalog (3FGL) (Acero+, 2015)
J/ApJS/232/18 :  The third Fermi-LAT >10GeV catalog (3FHL) (Ajello+, 2017)
J/MNRAS/462/3180 :  3FGL Blazar of Unknown Type classification (Chiaro+, 2016)

Check the list of cadidate catalogs and select the one that interests us, i.e. “Fermi LAT third source catalog (3FGL) (Acero+, 2015)”. It’s identifier is: J/ApJS/218/23. VizieR might have several tables associated to this catalog. The next step is to see if the catalog has more than one table associated. We display table names and metadata:

# these two lines are commented out to prevent this pretty large catalog to be queried a lot of times.
# They should be executed the first time you do the tutorial to store the result in a pickle file.

# Vizier.ROW_LIMIT = -1
# catalog = Vizier.get_catalogs("J/ApJS/218/23")
# with open(Path.cwd() / "Data" / "J_ApJS_218_23" / "J_ApJS_218_23.pkl", "wb") as file:
#     catalog2 = pickle.dump(catalog, file)

# Here we just get the catalog from the file system.

with Path.open(
    Path.cwd() / "Data" / "J_ApJS_218_23" / "J_ApJS_218_23.pkl",
    "rb",
) as file:
    catalog = pickle.load(file)  # noqa: S301

print(catalog)
print("Metadata of each table: ")
print(catalog[0].meta)
TableList with 3 tables:
	'0:J/ApJS/218/23/table4' with 19 column(s) and 4984 row(s) 
	'1:J/ApJS/218/23/table8' with 13 column(s) and 3034 row(s) 
	'2:J/ApJS/218/23/table3' with 2 column(s) and 12 row(s) 
Metadata of each table: 
{'ID': 'J_ApJS_218_23_table4', 'name': 'J/ApJS/218/23/table4', 'description': 'LAT 4-year catalog (3034 unique 3FGL sources)'}

There are three tables, each with a different number of columns and rows. To see what could be of interest, let’s display their description.

for i in range(len(catalog)):
    print(catalog[i].meta["name"], ": ", catalog[i].meta["description"])
J/ApJS/218/23/table4 :  LAT 4-year catalog (3034 unique 3FGL sources)
J/ApJS/218/23/table8 :  LAT 4-year catalog: spectral information
J/ApJS/218/23/table3 :  Definitions of the analysis flags

We can even visualise the first element of each table to have an idea of their content.

table0 = catalog[0]
table0[0]
Row index=0
_3FGLNaRAJ2000DEJ2000amajaminphiSigF35S25GammaModVarFlagAssocTeVClassIDSimbad
degdegdegdegdeg1e-05 / (s m2)fW / m2
str13int16float32float32float32float32int16float32float32float32float32str2str1str12str18str1str5str26str6
J0000.1+654510.03865.7520.1020.078416.81.013.62.41PL32FGL J2359.6+6543cSimbad
table1 = catalog[1]
table1[0]
Row index=0
File_3FGLLCF1E_F1F2E_F2F3E_F3F4E_F4F5E_F5
0.0001 / (s m2)0.0001 / (s m2)0.0001 / (s m2)0.0001 / (s m2)1e-05 / (s m2)1e-05 / (s m2)1e-06 / (s m2)1e-06 / (s m2)1e-06 / (s m2)1e-06 / (s m2)
str13str13str2float32float32float32float32float32float32float32float32float32float32
J0000.1p6545J0000.1+6545LC1.810.820.690.141.240.230.580.490.280.19
table2 = catalog[2]
table2[0]
Row index=0
FlagNote
int16str347
1Source with TS>35, which went to TS<25 when changing the diffuse model (Section 3.7.3) or the analysis method (Section 3.7.4). Sources with TS<=35 are not flagged with this bit because normal statistical fluctuations can push them to TS<25.

J/ApJS/218/23/table4 and J/ApJS/218/23/table8 contain positional and spectral information respectively. The first table has several entries for the same source, so before performing the match, let’s restric the table to unique entries for the same source. We then match the tables based on the names in column _3FGL to get all information in a single table.

table0 = unique(table0, keys="_3FGL")
FERMI = join(
    table0,
    table1,
    keys="_3FGL",
    join_type="inner",
    metadata_conflicts="silent",
)
print("Number of matches :", len(FERMI))
FERMI[0]
Number of matches : 3034
Row index=0
_3FGLNaRAJ2000DEJ2000amajaminphiSigF35S25GammaModVarFlagAssocTeVClassIDSimbadFileLCF1E_F1F2E_F2F3E_F3F4E_F4F5E_F5
degdegdegdegdeg1e-05 / (s m2)fW / m20.0001 / (s m2)0.0001 / (s m2)0.0001 / (s m2)0.0001 / (s m2)1e-05 / (s m2)1e-05 / (s m2)1e-06 / (s m2)1e-06 / (s m2)1e-06 / (s m2)1e-06 / (s m2)
str13int16float32float32float32float32int16float32float32float32float32str2str1str12str18str1str5str26str6str13str2float32float32float32float32float32float32float32float32float32float32
J0000.1+654510.03865.7520.1020.078416.81.013.62.41PL32FGL J2359.6+6543cSimbadJ0000.1p6545LC1.810.820.690.141.240.230.580.490.280.19

We have a new table with 3034 FERMI sources with spatial and spectral information. We move on to cross-match this table with the HESS-Simbad sources. This time the match will be based on positions.

Lets have a look again a the hess_simbad table and it’s content.

hess_simbad[0:5]
Table length=5
MAIN_IDRADECRA_PRECDEC_PRECCOO_ERR_MAJACOO_ERR_MINACOO_ERR_ANGLECOO_QUALCOO_WAVELENGTHCOO_BIBCODEOTYPERA_dDEC_dSCRIPT_NUMBER_ID
"h:m:s""d:m:s"masmasdegdegdeg
objectstr13str13int16int16float32float32int16str1str1objectobjectfloat64float64int32
HESS J0232+20202 32 53.2+20 16 2155----0D2007A&A...475L...9Agamma38.2217000020.272500001
HESS J0534+22005 34+22.022----0E2008ApJ...682L..41Hgamma83.5000000022.000000001
4FGL J0535.2-673605 36 00.01-67 35 07.566----0DX2012ApJ...759..123SHighMassXBin84.00004000-67.585420001
HD 25944006 32 59.2566+05 48 01.16014140.0180.01690AO2020yCat.1350....0GHighMassXBin98.246902535.800322431
NAME MONOCEROS NEB06 38 43+06 30.24431000.00018000.00094E1988IRASP.C......0JSNRemnant99.679000006.503000001
# Create a skycoord object from the RA_d and DEC_d columns
c_hess_simbad = SkyCoord(hess_simbad["RA_d"], hess_simbad["DEC_d"])
c_fermi = SkyCoord(FERMI["RAJ2000"], FERMI["DEJ2000"])
# Set the maximum separation
max_sep = 1.0 * u.deg
# For each row in the first catalog, look for the closest neighbor
idx, d2d, d3d = c_hess_simbad.match_to_catalog_sky(c_fermi, 1)
sep_constraint = d2d < max_sep

# limit the tables to matches within the maximum separation
hess_simbad_matches = hess_simbad[sep_constraint]
fermi_matches = FERMI[idx[sep_constraint]]

# Look at the number of matches in each table within the maximum separation
print("Number of possible hess-simbad matches:", len(hess_simbad_matches))
print("Number of possible fermi matches:", len(fermi_matches))
Number of possible hess-simbad matches: 97
Number of possible fermi matches: 97

There are 83 HESS-Simbad-FERMI possible matches within 1 degree for each row in the first table! Tables hess_simbad_matches and fermi_matches are the matched sources in hess_simbad and fermi, respectively, which are separated by less than 1 deg. But ideally we would like to have the result as a single table including the angular separation between the matches. Let’s go do that.

# Add the separation to the fermi Table and concatenate the matched tables
fermi_matches["Ang_Sep"] = d2d[sep_constraint]
hess_simbad_fermi = hstack(
    [hess_simbad_matches, fermi_matches],
    metadata_conflicts="silent",
)

print("Number of possible HESS-Simbad-Fermi matches", len(hess_simbad_fermi))
Number of possible HESS-Simbad-Fermi matches 97

Note that the same Fermi source can be associated to different HESS sources. You can investigate those possible matches within 1deg (recommended) or limit to have unique entries. For the purpose of the exercice we choose option 2, but in general, we recommend to look at all possible matches to see which might be the true association (if any).

# Limit to unique 3FGL sources, this will keep the first row of each duplicate
# Note that one could sort them before that
hess_simbad_fermi.sort("Ang_Sep")
hess_simbad_fermi = unique(hess_simbad_fermi, keys="_3FGL", keep="first")
hess_simbad_fermi
Table length=73
MAIN_IDRADECRA_PRECDEC_PRECCOO_ERR_MAJACOO_ERR_MINACOO_ERR_ANGLECOO_QUALCOO_WAVELENGTHCOO_BIBCODEOTYPERA_dDEC_dSCRIPT_NUMBER_ID_3FGLNaRAJ2000DEJ2000amajaminphiSigF35S25GammaModVarFlagAssocTeVClassIDSimbadFileLCF1E_F1F2E_F2F3E_F3F4E_F4F5E_F5Ang_Sep
"h:m:s""d:m:s"masmasdegdegdegdegdegdegdegdeg1e-05 / (s m2)fW / m20.0001 / (s m2)0.0001 / (s m2)0.0001 / (s m2)0.0001 / (s m2)1e-05 / (s m2)1e-05 / (s m2)1e-06 / (s m2)1e-06 / (s m2)1e-06 / (s m2)1e-06 / (s m2)deg
objectstr13str13int16int16float32float32int16str1str1objectobjectfloat64float64int32str13int16float32float32float32float32int16float32float32float32float32str2str1str12str18str1str5str26str6str13str2float32float32float32float32float32float32float32float32float32float32float64
HESS J0232+20202 32 53.2+20 16 2155----0D2007A&A...475L...9Agamma38.2217000020.272500001J0232.8+2016138.21920.2710.0550.047-47.20.44.92.03PLPbll1ES 0229+200SimbadJ0232.8p2016LC0.230.290.180.050.250.110.460.310.420.220.0029425561444406073
HESS J0534+22005 34+22.022----0E2008ApJ...682L..41Hgamma83.5000000022.000000001J0534.5+2201183.63722.0240.0120.0119030.7157.31471.92.23ECT1FHL J0534.5+2201PPSRPSR J0534+2200SimbadJ0534.5p2201LC6.31--3.33--14.47--90.0429.8656.022.840.12926188080586082
HD 25944006 32 59.2566+05 48 01.16014140.0180.01690AO2020yCat.1350....0GHighMassXBin98.246902535.800322431J0633.7+0632498.4386.5410.0180.0187157.917.1124.42.16EC2FGL J0633.7+0633PSRLAT PSR J0633+0632SimbadJ0633.7p0632LC8.431.054.670.2114.080.5025.801.611.050.350.7646571241230271
NAME Vela X08 33 08.880-45 11 24.3677----0D2015ApJS..217....2MPulsar128.28700000-45.190100001J0833.1-4511e3128.287-45.190--------18.3244.82.41PL51FHL J0833.1-4511eEPWNVela XSimbadJ0833.1-4511eLC37.18--8.19--14.46--31.87--6.87--0.00010275196628192117
NAME Vela Jr SN08 52.0-46 2033----0ER2009BASI...37...45GSNRemnant133.00000000-46.330000001J0852.7-4631e3133.200-46.520------30.313.0147.11.94PLT101FGL J0854.0-4632ESNRVela JrSimbadJ0852.7-4631eLC9.392.213.410.287.540.6319.792.3913.221.280.23474752621627573
PSR J1016-5810 16 21.266-58 57 11.70771213.000710.00090DR2015ApJ...814..128KPulsar154.08860800-58.953250001J1016.3-58582154.079-58.9670.0310.029-8618.97.865.52.35EC52FGL J1016.5-5858EPSRPSR J1016-5857SimbadJ1016.3-5858LC7.613.732.200.437.330.6313.161.510.800.340.014613267157310738
2MASS J10185560-585645910 18 55.5875-58 56 45.97514140.0090.00990AO2020yCat.1350....0GHighMassXBin154.73161488-58.946104241J1018.9-58564154.730-58.9460.0140.0142852.227.1250.32.30LP1FHL J1018.9-5855EHMB1FGL J1018.6-5856SimbadJ1018.9-5856LC26.671.0811.410.5521.920.7832.611.971.420.430.0008413415787791289
FGES J1023.3-574710 23 15.1831-57 46 34.78499----0EG2018A&A...612A...1Hgamma155.81326306-57.776328891J1023.1-57453155.790-57.7590.0180.018-3231.219.9148.12.25EC1FGL J1023.0-5746EPSRLAT PSR J1023-5746SimbadJ1023.1-5745LC0.327.016.330.6417.511.0225.371.961.590.470.021317658460516295
PSR J1028-581910 28 27.888-58 19 06.147753.00030.00090BR2015ApJ...814..128KPulsar157.11620000-58.318372001J1028.4-58195157.123-58.3200.0120.012-7457.533.3251.22.18EC1FHL J1028.4-5819PSRPSR J1028-5819SimbadJ1028.4-5819LC13.983.659.390.6826.780.9150.112.323.550.600.003926177933532794
Mrk 42111 04 27.3140+38 12 31.79814140.0120.01590AO2020yCat.1350....0GBLLac166.1138086838.208832921J1104.4+38127166.11838.2100.0070.007-12190.330.3383.01.77PLT1FHL J1104.4+3812PBLLMkn 421SimbadJ1104.4p3812LC10.190.304.800.0917.980.3982.342.4042.611.710.003490934012772948
PSR J1119-612711 19 14.30-61 27 49.566----0D2000ApJ...541..367CPulsar169.80958000-61.463750001J1119.1-61272169.794-61.4660.0290.027-8627.06.784.92.36PL2FGL J1118.8-6128EPSRPSR J1119-6127SimbadJ1119.1-6127LC7.391.662.720.225.570.4310.591.241.390.400.0077716619802548955
PSR J1301-630513 02 47.9992-63 10 48.0011111----0D2022ApJS..260...53APulsar195.69999695-63.180000311J1303.0-6312e2195.750-63.200------7.61.622.71.64PL2FGL J1303.7-6316cEPWNHESS J1303-631SimbadJ1303.0-6312eLC0.001.010.470.300.970.502.671.403.500.700.03014314809054314
HESS J1357-64513 57 00.0-64 30 0055----0Dgamma209.25000000-64.500000001J1356.6-64282209.164-64.4800.0670.055-7517.92.641.82.56PL2FGL J1356.0-6436EPSRPSR J1357-6429SimbadJ1356.6-6428LC8.560.971.910.152.260.283.010.750.210.240.042089720952951805
PSR J1418-605814 18 42.725-60 58 01.89771749.0001270.00090DR2015ApJ...814..128KPulsar214.67802100-60.967192001J1418.6-60585214.665-60.9710.0140.0133940.040.7310.42.27EC51FHL J1418.6-6059EPSRLAT PSR J1418-6058SimbadJ1418.6-6058LC18.737.3112.520.8633.411.3558.793.193.180.690.007381440394919851
PSR J1420-604814 20 08.190-60 48 14.8577----0CX2010ApJ...711.1168VPulsar215.03412500-60.804125001J1420.0-60486215.008-60.8150.0240.0234823.017.5161.22.27EC1FHL J1420.1-6047EPSRPSR J1420-6048SimbadJ1420.0-6048LC23.797.115.490.8215.941.2332.742.713.160.640.01675455503204872
PSR J1459-6014 59 30.1228-60 53 20.53614140.0520.06190AO2020yCat.1350....0GPulsar224.87551193-60.889037951J1459.4-60533224.866-60.9000.0200.0205237.412.4110.42.37EC2FGL J1459.4-6054EPSRLAT PSR J1459-6053SimbadJ1459.4-6053LC12.902.144.720.3410.870.5315.531.330.490.270.011902020254320914
HESS J1503-58215 03-58.222----0E2012ApJ...753...83Agamma225.70000000-58.200000001J1503.5-58012225.893-58.0290.0710.0534412.84.335.52.42LP2FGL J1503.9-5800cESimbadJ1503.5-5801LC4.541.501.850.233.380.465.771.200.110.280.19908390421276995
HESS J1507-62215 07 30-62 25.044----0E2011A&A...525A..45Agamma226.87500000-62.417000001J1506.6-62192226.668-62.3310.0720.053-17.20.89.31.86PL1FHL J1507.0-6223ESimbadJ1506.6-6219LC3.551.100.010.120.500.211.830.621.090.360.1288758433293687
3A 1510-59015 13 17.000-59 04 54.0077----0D2015ApJS..217....2MPulsar228.32083300-59.081667001J1513.9-59082228.482-59.136------7.41.145.03.12PL1,31FGL J1513.2-5904PSRPSR J1513-5908SimbadJ1513.9-5908LC20.782.791.380.280.770.442.201.191.240.640.09898727559002514
PSR J1615-513716 15 12.62-51 34 53.3662300.0001900.00076DR2013MNRAS.432.1294PPulsar243.80258000-51.581470001J1615.3-5146e3243.830-51.780------19.89.3109.41.86PL3,101FGL J1614.7-5138cEsppSimbadJ1615.3-5146eLC0.001.600.820.388.510.7927.022.619.581.200.19925545657554808
HESS J1616-50916 16-50.922----0EG2006ApJ...651..190Lgamma244.00000000-50.900000001J1616.2-5054e4244.060-50.910------21.013.9156.12.14PLT0FGL J1615.6-5049EPWNHESS J1616-508SimbadJ1616.2-5054eLC19.363.755.640.5610.370.9825.412.879.281.270.039134779260579344
HESS J1626-49016 26 04.0-49 05 1355----0D2008A&A...477..353Agamma246.51670000-49.086900001J1626.2-49112246.569-49.1970.0810.065875.42.123.22.11PL61FGL J1626.0-4917cESimbadJ1626.2-4911LC8.092.791.300.451.430.643.661.521.240.520.11529354987915028
AX J1631.9-475216 32 01.87-47 52 28.366300.000300.00090CX2012ApJ...756...27LHighMassXBin248.00778000-47.874520001J1633.0-4746e3248.250-47.770------32.022.6252.32.11PLT101FGL J1632.7-4733cEPWNHESS J1632-478SimbadJ1633.0-4746eLC5.915.367.530.7218.461.0644.963.2010.891.370.19332284457737461
HESS J1634-47216 34 51.1192-47 14 01.93699----0EG2018A&A...612A...1Hgamma248.71299694-47.233871111J1636.2-4709c4249.058-47.1600.1730.105-4710.46.068.72.21PL3,5,6,7,9,102FGL J1635.4-4717csppSimbadJ1636.2-4709cLC21.086.553.440.746.740.9010.142.021.380.690.2457844079652012
3EG J1639-470216 40 43.2-46 31 4855----0EG2022ApJS..260...53Agamma250.18000000-46.530000001J1640.4-4634c5250.118-46.5800.0300.0277810.43.237.61.86PL61FHL J1640.5-4634EsppSimbadJ1640.4-4634cLC0.065.331.080.972.960.918.051.954.110.780.06571355818666404
HESS J1641-46316 41 01.7-46 18 1155----0D2013ApJ...774...74Fgamma250.25710000-46.303100001J1641.1-4619c1250.283-46.3300.0490.039-37.94.557.92.38PL3,6PsppSimbadJ1641.1-4619cLC13.173.032.640.742.170.898.801.931.540.560.032309837326703825
HESS J1649-46016 49-46.022----0Dgamma252.20000000-46.000000001J1648.3-46113252.096-46.1960.0380.033-6013.96.538.22.18EC32FGL J1648.4-4612EPSRPSR J1648-4611SimbadJ1648.3-4611LC0.002.280.660.405.010.6818.071.970.720.400.2088464548366243
HESS J1652-46216 52-46.222----0Dgamma253.00000000-46.200000001J1651.5-46261252.898-46.4340.0600.047-904.91.213.91.92PL5ESimbadJ1651.5-4626LC0.064.150.420.531.030.573.271.240.760.430.24437314101658925
HESS J1708-41017 08 24.0-41 05 2455----0D2008A&A...477..353Agamma257.10000000-41.090000001J1705.5-4128c1256.396-41.4810.1410.084-645.11.429.22.77PL1,4,6SimbadJ1705.5-4128cLC9.981.881.540.301.570.604.881.460.710.470.6578198826574352
HESS J1708-44317 07 59.5384-44 17 19.04699----0EG2018A&A...612A...1Hgamma256.99807694-44.288623891J1709.7-44295257.432-44.4870.0060.0069360.8187.31314.82.02EC1FHL J1709.7-4429EPSRPSR J1709-4429SimbadJ1709.7-4429LC77.121.1144.450.33152.151.24341.545.1825.091.410.36811912530249963
SNR G347.3-00.517 12 27-39 41.244----0D2012ApJ...756....5LSNRemnant258.11200000-39.687000001J1713.5-3945e4258.390-39.760------14.44.566.91.62PL31FGL J1711.7-3944cESNRRX J1713.7-3946SimbadJ1713.5-3945eLC0.612.581.060.272.020.6511.992.199.321.170.22594837665754253
SNR G348.5+00.117 14 31.780-38 28 34.5077----0D2015ApJS..217....2MSNRemnant258.63241700-38.476250001J1714.5-38324258.643-38.5490.0290.026-1229.214.0130.52.30LP0FGL J1714.7-3827EsnrCTB 37ASimbadJ1714.5-3832LC12.554.454.530.3511.940.7228.282.221.370.590.07322214172245492
SNR G349.7+00.217 18 10.160-37 18 53.8077----0D2015ApJS..217....2MSNRemnant259.54233300-37.314944001J1718.0-37263259.506-37.4480.0300.026-3513.14.448.82.13PL31FHL J1717.9-3725PsnrSNR G349.7+00.2SimbadJ1718.0-3726LC8.363.781.360.313.180.5910.791.662.850.640.13615112422764997
HESS J1718-38517 18 07-38 33.044----0E2007A&A...472..489Agamma259.52900000-38.550000001J1718.1-38252259.545-38.4280.0340.0306224.411.582.42.39EC2FGL J1718.3-3827EPSRPSR J1718-3825SimbadJ1718.1-3825LC0.642.763.630.339.890.6416.751.790.190.390.12264101249818238
HESS J1741-30217 41 15.7982-30 22 37.20499----0EG2018A&A...612A...1Hgamma265.31582611-30.377001111J1741.1-30532265.290-30.8940.1170.1052211.47.142.32.28LP32FGL J1740.4-3054csnrMSH 17-39SimbadJ1741.1-3053LC0.292.101.280.384.770.769.261.960.230.370.5174722010276819
.............................................................................................................................................
HESS J1747-24817 47 49.0-24 48 3055----0D2011A&A...531L..18Agamma266.95420000-24.808300001J1748.0-24472267.012-24.7880.0280.025-4831.611.173.12.26LPT12FGL J1748.0-2447EglcTerzan 5SimbadJ1748.0-2447LC4.111.242.560.229.140.5219.101.630.910.400.056254860665358834
SNR G000.9+00.117 47.3-28 0933----0ER2009BASI...37...45GSNRemnant266.82000000-28.150000001J1748.3-2815c1267.092-28.2590.0300.029-4215.18.242.32.19LP3,6,12SimbadJ1748.3-2815cLC0.093.310.450.344.620.7428.812.812.700.710.2633325830862214
HESS J1800-240C17 58 52-24 03.144----0E2008A&A...481..401Agamma269.71700000-24.052000001J1758.8-24021269.705-24.0370.0770.071-345.32.325.61.99PL52FGL J1758.8-2402cSimbadJ1758.8-2402LC0.002.910.880.461.420.928.101.951.490.660.018584855663023432
HESS J1800-24018 00 37-23 59.844----0E2008A&A...481..401Agamma270.15400000-23.997000001J1800.8-24022270.222-24.0350.0350.034-317.510.373.32.12LP2FGL J1800.8-2400ESimbadJ1800.8-2402LC5.733.093.210.527.570.8522.412.362.810.730.07280389881752108
SNR G006.4-00.118 00 31.2011-23 25 48.0011111----0E2022ApJS..260...53ASNRemnant270.13000488-23.430000311J1801.3-2326e6270.340-23.440------62.753.5415.52.15LPT0FGL J1801.6-2327ESNRW28SimbadJ1801.3-2326eLC29.343.1716.850.5442.681.2186.333.7910.861.340.19292901002748447
1AGLR J1807-210318 03 52.1-21 10 5455981194.000981194.00090EG2020ApJ...905...76Agamma270.96700000-21.181800001J1805.6-2136e5271.408-21.612------33.224.2204.42.07LPT0FGL J1805.3-2138ESNRW30SimbadJ1805.6-2136eLC11.462.076.300.4719.211.0149.143.2611.241.310.5946919973852035
Fermi J1808.2-202918 08 00.0-20 24 0055----0D2013ApJ...774...74Fgamma272.00000000-20.400000001J1809.2-2016c1272.324-20.2820.0560.046175.42.632.12.33PL4SimbadJ1809.2-2016cLC9.263.322.290.482.790.774.841.670.810.450.32591211797204006
HESS J1809-19318 10 31-19 18.044----0E2007A&A...472..489Agamma272.62900000-19.300000001J1810.1-19101272.545-19.1680.1080.086425.12.123.72.10PL3,5EsppSimbadJ1810.1-1910LC0.022.461.990.371.690.715.531.651.210.550.1539896283917415
HESS J1813-12618 13 21.66-12 41 13.666----0D2017ApJ...843...40Agamma273.34025000-12.687110001J1813.4-12463273.350-12.7700.0160.0154476.227.3265.42.40EC2FGL J1813.4-1246PSRLAT PSR J1813-1246SimbadJ1813.4-1246LC32.111.5511.610.3023.740.6730.911.920.860.380.08343467466402162
NAME AGPS 273.4-17.818 13 35.05-17 49 58.1661000.0001000.00090CX2012ApJ...756...27LSNRemnant273.39604000-17.832810001J1814.0-1757c1273.514-17.9610.0970.061-865.42.831.32.18PL61AGL J1815-1732SimbadJ1814.0-1757cLC0.003.241.110.602.780.837.371.850.310.490.1703954057905834
HESS J1818-15418 16.1-15 1233----0E2013ApJ...773...77Agamma274.02000000-15.200000001J1818.7-15281274.696-15.4700.0920.0696513.37.565.22.42LPT7sppSimbadJ1818.7-1528LC4.612.183.400.536.120.827.841.810.690.440.7056422850083076
PSR B1823-1318 26 13.06-13 34 48.166800.000800.00090CX2012ApJ...756...27LPulsar276.55441000-13.580040001J1824.5-1351e4276.130-13.852------16.87.8161.21.59LP1FGL J1825.7-1410cEPWNHESS J1825-137SimbadJ1824.5-1351eLC0.032.260.010.361.071.2232.405.0124.382.510.49391805741813904
PSR J1826-125618 26 08.570-12 56 33.53773050.000627.0000DR2015ApJ...814..128KPulsar276.53570800-12.942647001J1826.1-12565276.538-12.9430.0130.0128976.353.4414.72.26EC2FGL J1826.1-1256PSRLAT PSR J1826-1256SimbadJ1826.1-1256LC34.312.0117.100.4545.271.0775.063.261.910.610.002256034259107956
V* V479 Sct18 26 15.0561-14 50 54.24714140.0130.01190AO2020yCat.1350....0GHighMassXBin276.56273398-14.848402021J1826.2-14504276.568-14.8470.0190.018235.119.1280.72.57LP1FHL J1826.2-1450PHMBLS 5039SimbadJ1826.2-1450LC46.402.8311.010.4918.280.9419.552.132.240.620.005273025783382512
SNR G021.5-00.918 33 33.612-10 34 07.69773200.000702.0000DR2015ApJ...814..128KSNRemnant278.39005000-10.568803001J1833.5-10332278.394-10.5600.0350.030-4016.96.079.22.39PL2FGL J1833.6-1032PSRPSR J1833-1034SimbadJ1833.5-1033LC14.742.122.570.326.460.6310.241.671.450.530.009626070016564436
SNR G023.3-00.318 34 51.80-08 44 38.266----0D2006ApJ...651..190LSNRemnant278.71583000-8.743940001J1834.5-08413278.629-8.6840.0300.0253213.96.371.12.17PL30FGL J1834.4-0841EsnrW 41SimbadJ1834.5-0841LC2.942.541.750.365.020.7815.952.292.920.750.10468770412857564
PSR J1838-065518 38 03.13-06 55 33.466----0D2008ApJ...681..515GPulsar279.51304000-6.925940001J1838.9-06461279.728-6.7760.0780.059-667.12.630.01.92PLSimbadJ1838.9-0646LC0.003.780.020.462.410.708.381.821.640.630.26082720872953696
ARGO J1839-062718 40 55.0-05 33 0055----0D2008A&A...477..353APulsar280.22920000-5.550000001J1840.9-0532e1280.230-5.550------16.811.8145.81.81PLTEPWNHESS J1841-055SimbadJ1840.9-0532eLC0.524.481.080.668.561.2732.374.1510.871.750.0008071845947890818
ARGO J1841-033218 43 56.6-03 28 1655208540.000208540.00090EG2020ApJ...905...76Agamma280.98600000-3.471200001J1843.7-03221280.928-3.3770.0850.077-2513.18.194.02.48LPSimbadJ1843.7-0322LC11.721.824.550.456.540.866.241.860.000.390.11056482992371776
HESS J1848-01818 47 48.72-01 45 12.566311859.000311859.00090EG2020ApJ...905...76Agamma281.95300000-1.753460001J1848.4-01413282.118-1.6930.0810.0572018.712.9114.62.36LP32FGL J1848.2-0139cESimbadJ1848.4-0141LC10.793.665.480.638.070.9514.142.310.450.430.17566892486519234
PSR J1849-000118 49 01.83-00 01 19.166120.000110.00087CI2003yCat.2246....0CPulsar282.25762000-0.021970001J1850.5-00242282.632-0.4050.0550.04469.44.357.62.42PL4,52FGL J1850.7-0014cSimbadJ1850.5-0024LC6.294.462.760.483.340.665.811.560.850.430.535594343756059
HESS J1852-00018 52+00.022----0E2011ApJ...743....4Zgamma283.000000000.000000001J1853.2+00061283.3010.1090.1470.079-3012.25.453.22.45LP3,41FGL J1853.1+0032cpsrPSR J1853-0004SimbadJ1853.2p0006LC7.692.732.260.373.490.633.251.410.770.390.3201230988434265
HESS J1854+01318 54+01.322----0EG2021ApJ...917....6Agamma283.500000001.300000001J1855.9+0121e6283.9901.355------68.370.7535.72.20LPT0FGL J1855.9+0126SNRW44SimbadJ1855.9p0121eLC27.027.2220.680.8457.021.45102.684.067.841.130.49293665293776606
HESS J1858+02018 58 20.0+02 05 2455----0D2008A&A...477..353Agamma284.583300002.090000001J1857.9+02102284.4902.1700.0600.0581315.28.268.02.36LP3,42FGL J1857.6+0211ESimbadJ1857.9p0210LC10.143.582.340.465.840.719.601.720.500.440.12286043195785046
HAWC J1907+08519 07.2+08 3433----0EG2021ApJ...917....6Agamma286.790000008.570000001J1904.9+08181286.2438.3060.1070.079234.71.417.02.30PL4,5SimbadJ1904.9p0818LC0.072.001.330.290.290.401.950.930.760.370.6020375632968104
ARGO J1907+062719 08 12.24+06 23 30.866208416.000208416.00090EG2020ApJ...905...76Agamma287.051000006.391880001J1907.9+06024286.9866.0390.0130.013-4684.038.4319.12.24EC1FHL J1907.7+0600EPSRLAT PSR J1907+0602SimbadJ1907.9p0602LC30.881.7612.220.3231.160.8060.892.653.080.620.35874848502120615
ARGO J1912+102619 12 14.9+10 21 0655306640.000306640.00090EG2020ApJ...905...76Agamma288.0620000010.351600001J1908.9+10221287.22810.3750.1260.096-826.41.727.22.59PL3,4SimbadJ1908.9p1022LC3.881.571.050.241.570.431.100.880.370.300.8207313998263459
W 49b19 11 09.000+09 06 24.0077----0D2015ApJS..217....2MSNRemnant287.787500009.106667001J1910.9+09064287.7449.1010.0170.016-8041.820.3183.52.18LP1FHL J1911.0+0905snrW 49BSimbadJ1910.9p0906LC17.511.845.990.4213.300.7443.122.457.330.920.04333592910904275
HESS J1915+11519 15+11.522----0EG2021ApJ...917....6Agamma288.8000000011.500000001J1915.9+11122289.00011.2160.1470.120210.73.838.22.41LP3,42FGL J1916.1+1106sppSimbadJ1915.9p1112LC6.281.221.810.273.050.584.211.420.000.340.34511568175831536
HESS J1923+14119 23.0+14 0633----0E2010ApJ...709L...6Agamma290.7500000014.100000001J1923.2+1408e5290.81814.145------75.039.6345.82.15LP0FGL J1923.0+1411ESNRW51CSimbadJ1923.2p1408eLC25.152.2411.350.3529.470.8276.453.0016.421.270.07983070024905828
SNR G054.1+00.319 30 10.6+18 50 2255314633.000314633.00090EG2020ApJ...905...76ASNRemnant292.5440000018.839400001J1928.4+18381292.11318.6340.1750.131-235.81.621.92.42PL1,4,5SimbadJ1928.4p1838LC0.271.950.990.261.260.391.650.930.640.370.4569211730658385
HAWC J1928+17819 28.4+17 4933----0EG2021ApJ...917....6Agamma292.1000000017.820000001J1928.9+17393292.23717.6570.0800.058-58.53.525.02.32LP3,42FGL J1928.8+1740cSimbadJ1928.9p1739LC3.541.611.070.272.140.494.381.240.210.280.20879630393332074
QSO B2005-48920 09 25.3903-48 49 53.72514140.0260.02090AO2020yCat.1350....0GBLLac302.35579329-48.831590291J2009.3-48494302.349-48.8280.0180.018-3340.33.644.91.77PLT1FHL J2009.4-4849PBLLPKS 2005-489SimbadJ2009.3-4849LC1.170.250.520.052.090.1710.150.934.750.630.005735961234812638
QSO B2155-30421 58 52.0652-30 13 32.11814140.0170.01490AO2020yCat.1350....0GBLLac329.71693844-30.225588461J2158.8-30136329.720-30.2270.0090.009-87142.121.7230.51.83LPT1FHL J2158.8-3013PbllPKS 2155-304SimbadJ2158.8-3013LC6.470.453.620.0913.420.3657.342.1023.981.350.002998369565210434
QSO B2356-30923 59 07.9034-30 37 40.67114140.0940.07290AO2020yCat.1350....0GBLLac359.78293125-30.627964191J2359.3-30383359.829-30.6460.0540.051-711.10.66.62.02PL1FHL J2359.2-3037PbllH 2356-309SimbadJ2359.3-3038LC0.770.280.120.040.440.101.270.400.560.250.04355625621824756
f"There are {len(hess_simbad_fermi)} FERMI-HESS-Simbad matches"
'There are 73 FERMI-HESS-Simbad matches'

Some of these associations are of known nature.

Vizier

Let’s query the ViZier catalog J/ApJ/810/14 : Third catalog of LAT-detected AGNs (3LAC) (Ackermann+, 2015). It lists 3LAC sources classified as AGNS. Let’s have a look at the catalog in question:

Vizier.ROW_LIMIT = -1
catalog = Vizier.get_catalogs("J/ApJ/810/14")
for tab in catalog:
    print(tab.meta["name"], ": ", tab.meta["description"])
J/ApJ/810/14/highlat :  High latitude (|b|>10deg) 3LAC full  sample and fluxes
J/ApJ/810/14/lowlat :  Low latitude (|b|<10deg) sample  and fluxes
J/ApJ/810/14/table7 :  Sources from earlier FGL catalogs missing in 3LAC
J/ApJ/810/14/table10 :  Properties of the 3FGL very-high-energy (VHE) AGNs
J/ApJ/810/14/table2 :  *List of ATCA blazar candidates

Table J/ApJ/810/14/table10 lists the properties of very-high-energy ANGs. Let’s have a look at that table:

table10 = catalog[3]
table10
Table length=55
_3FGLLLVHESpClSEDClzalphae_alphaVar
str12str1str21str6str3float32float32float32float64
J0013.9-1853SHBL J001355.9-185406bllHSP0.0941.9350.16736.46
J0033.6-1921KUV 00311-1938bllHSP0.6101.7150.03564.62
J0035.9+5949L1ES J0033+595bllHSP--1.8980.04269.55
J0136.5+3905RGB J0136+391bllHSP--1.6960.02562.30
J0152.6+0148RGB J0152+017bllHSP0.0801.8870.10351.76
J0222.6+43013C 66AbllISP0.4441.8800.017885.04
J0232.8+20161ES 0229+200bllHSP0.1392.0250.15049.16
J0303.4-2407PKS 0301-243bllHSP0.2601.9180.022676.85
J0316.6+4119IC 310rdgHSP0.0191.9020.14338.74
J0319.8+1847RBS 0413bllHSP0.1901.5720.10276.33
J0319.8+4130NGC 1275rdgISP0.0181.9850.014622.21
J0349.2-11581ES 0347-121bllHSP--1.7340.15644.26
J0416.8+01041ES 0414+009bllHSP0.2871.7450.11455.85
J0449.4-4350PKS 0447-439bllHSP0.2051.8490.015230.17
J0508.0+67361ES 0502+675bllHSP0.3401.5230.04077.94
J0521.7+2113LVER J0521+211bllISP0.1081.9230.024239.79
J0550.6-3217PKS 0548-322bllHSP0.0691.6150.16448.44
J0648.9+1516LVER J0648+152bllHSP0.1791.8310.07136.04
J0650.7+25031ES 0647+250bllHSP0.2031.7210.04763.85
J0710.3+5908RGB J0710+591bllHSP0.1251.6610.09455.54
J0721.9+7120S5 0716+714bllISP0.1271.9480.0121818.04
J0809.8+52181ES 0806+524bllHSP0.1381.8760.024485.15
J0847.1+1134RX J0847.1+1133bllHSP0.1991.7400.11544.90
J1010.2-31201RXS J101015.9-311909bllHSP0.1431.5760.10086.30
J1015.0+49251ES 1011+496bllHSP0.2121.8330.017110.46
J1103.5-23291ES 1101-232bllHSP0.1861.6450.14536.51
J1104.4+3812Markarian 421bllHSP0.0311.7720.008755.10
J1136.6+7009Markarian 180bllHSP0.0451.8240.04743.04
J1217.8+30071ES 1215+303bllHSP0.1301.9740.023206.36
J1221.3+30101ES 1218+304bllHSP0.1821.6600.03892.45
J1221.4+2814W ComaebllISP0.1032.1020.027204.24
J1224.5+2436MS 1221.8+2452bllHSP0.2181.8870.09454.19
J1224.9+21224C +21.35fsrqLSP0.4352.1850.01218067.45
J1230.9+1224M 87rdgLSP0.0042.0400.06654.28
J1256.1-05473C 279fsrqLSP0.5362.2330.0144198.44
J1314.7-42371ES 1312-423bllHSP--2.0820.21445.02
J1325.4-4301Centaurus Ardg-0.0022.7030.02959.33
J1427.0+2347PKS 1424+240bllISP--1.7600.022210.25
J1428.5+4240H 1426+428bllHSP0.1291.5750.08559.46
J1442.8+12001ES 1440+122bllHSP0.1631.7960.11750.46
J1512.8-0906PKS 1510-089fsrqLSP0.3602.3050.00911014.00
J1517.6-2422AP LibbllLSP0.0482.1120.02660.31
J1555.7+1111PG 1553+113bllHSP--1.6040.025123.55
J1653.9+3945Markarian 501bllHSP0.0341.7160.016251.47
J1725.0+11521H 1720+117bllHSP--1.8850.04579.88
J1728.3+50131ES 1727+502bllHSP0.0551.9600.06554.08
J1743.9+19341ES 1741+196bllHSP0.0841.7770.10838.27
J2000.0+65091ES 1959+650bllHSP0.0471.8830.022158.37
J2001.1+4352LMAGIC J2001+435bllISP--1.9710.022341.11
J2009.3-4849PKS 2005-489bll-0.0711.7730.031131.06
J2158.8-3013PKS 2155-304bllHSP0.1161.7500.018618.50
J2202.7+4217BL LacertaebllISP0.0692.1610.0172340.22
J2250.1+3825B3 2247+381bllHSP0.1191.9120.07452.42
J2347.0+5142L1ES 2344+514bllHSP0.0441.7820.039100.97
J2359.3-3038H 2356-309bllHSP0.1652.0220.11540.97

There are no coordinates, only names are given in column _3FGL. Let’s see how many of these AGNs are within our table of matches hess_simbad_fermi:

hess_simbad_fermi_AGN = join(
    hess_simbad_fermi,
    table10,
    keys="_3FGL",
    join_type="inner",
    metadata_conflicts="silent",
)
print("Number of matches :", len(hess_simbad_fermi_AGN))
hess_simbad_fermi_AGN
Number of matches : 5
Table length=5
MAIN_IDRADECRA_PRECDEC_PRECCOO_ERR_MAJACOO_ERR_MINACOO_ERR_ANGLECOO_QUALCOO_WAVELENGTHCOO_BIBCODEOTYPERA_dDEC_dSCRIPT_NUMBER_ID_3FGLNaRAJ2000DEJ2000amajaminphiSigF35S25GammaModVar_1FlagAssocTeVClassIDSimbadFileLCF1E_F1F2E_F2F3E_F3F4E_F4F5E_F5Ang_SepLLVHESpClSEDClzalphae_alphaVar_2
"h:m:s""d:m:s"masmasdegdegdegdegdegdegdegdeg1e-05 / (s m2)fW / m20.0001 / (s m2)0.0001 / (s m2)0.0001 / (s m2)0.0001 / (s m2)1e-05 / (s m2)1e-05 / (s m2)1e-06 / (s m2)1e-06 / (s m2)1e-06 / (s m2)1e-06 / (s m2)deg
objectstr13str13int16int16float32float32int16str1str1objectobjectfloat64float64int32str13int16float32float32float32float32int16float32float32float32float32str2str1str12str18str1str5str26str6str13str2float32float32float32float32float32float32float32float32float32float32float64str1str21str6str3float32float32float32float64
HESS J0232+20202 32 53.2+20 16 2155----0D2007A&A...475L...9Agamma38.2217000020.272500001J0232.8+2016138.21920.2710.0550.047-47.20.44.92.03PLPbll1ES 0229+200SimbadJ0232.8p2016LC0.230.290.180.050.250.110.460.310.420.220.00294255614444060731ES 0229+200bllHSP0.1392.0250.15049.16
Mrk 42111 04 27.3140+38 12 31.79814140.0120.01590AO2020yCat.1350....0GBLLac166.1138086838.208832921J1104.4+38127166.11838.2100.0070.007-12190.330.3383.01.77PLT1FHL J1104.4+3812PBLLMkn 421SimbadJ1104.4p3812LC10.190.304.800.0917.980.3982.342.4042.611.710.003490934012772948Markarian 421bllHSP0.0311.7720.008755.10
QSO B2005-48920 09 25.3903-48 49 53.72514140.0260.02090AO2020yCat.1350....0GBLLac302.35579329-48.831590291J2009.3-48494302.349-48.8280.0180.018-3340.33.644.91.77PLT1FHL J2009.4-4849PBLLPKS 2005-489SimbadJ2009.3-4849LC1.170.250.520.052.090.1710.150.934.750.630.005735961234812638PKS 2005-489bll-0.0711.7730.031131.06
QSO B2155-30421 58 52.0652-30 13 32.11814140.0170.01490AO2020yCat.1350....0GBLLac329.71693844-30.225588461J2158.8-30136329.720-30.2270.0090.009-87142.121.7230.51.83LPT1FHL J2158.8-3013PbllPKS 2155-304SimbadJ2158.8-3013LC6.470.453.620.0913.420.3657.342.1023.981.350.002998369565210434PKS 2155-304bllHSP0.1161.7500.018618.50
QSO B2356-30923 59 07.9034-30 37 40.67114140.0940.07290AO2020yCat.1350....0GBLLac359.78293125-30.627964191J2359.3-30383359.829-30.6460.0540.051-711.10.66.62.02PL1FHL J2359.2-3037PbllH 2356-309SimbadJ2359.3-3038LC0.770.280.120.040.440.101.270.400.560.250.04355625621824756H 2356-309bllHSP0.1652.0220.11540.97

There are a few AGNs ! Let’s have a look at their properties and see how they compare with the rest of the population.

Step #4 - Searchig for relative locations in a “high-energy color-color diagram”#

How to trace various object properties of a given catalogue against each other and to point out specific sub-samples in the resulting plot.

The next goal is to look for correlations between different high-energy gamma-ray colors of the HESS sources that are also detected by Fermi. In stellar astronomy, tracing optical colors against each other gives a rather robust classification of different star types without having to do (more ambitious) spectroscopy. In the HESS-FERMI catalogue there is not much spectroscopic information available, but the different fluxes in F1—F5 coming from the 3FGL part can be used to eventually discriminate different sub-samples of the catalogue. Since a color is basically an observed flux ratio between two bands, constructing a color-color diagram has the great advantage to be independent of the distance to the objects.

The “color-color” diagram to be computed involves the following high-energy gamma-ray fluxes as measured by Fermi-LAT:

  • F1: flux over 100 – 300 MeV

  • F2: flux over 300 - 1000 MeV

  • F3: flux over 1 - 3 GeV

  • F4: flux over 3 - 10 GeV

  • F5: flux over 10 - 100 GeV

Merge all the tables in one, but keeping their origin by adding a column with name Source. Add a column for the object type TYPE.

# Create a column with name Source to know  which will contain types as "All" for FERMI,
FERMI["Source"] = "FGL3"
hess_simbad_fermi["Source"] = "HESS-Simbad-3FGL"
hess_simbad_fermi_AGN["Source"] = "AGNs-3LAC"
# Create a column with name TYPE which will contain types as "All" for FERMI,
# Have to change to str since OTYPE is of object type
FERMI["TYPE"] = "ALL"
hess_simbad_fermi["TYPE"] = hess_simbad_fermi["OTYPE"].astype(str)
hess_simbad_fermi_AGN["TYPE"] = "AGN"
# Merge the tables vertically using vstack
Data = vstack(
    [FERMI, hess_simbad_fermi, hess_simbad_fermi_AGN],
    metadata_conflicts="silent",
)
# Create two new columns with the flux ratios
Data["F2_F1"] = Data["F2"] / Data["F1"]
Data["F4_F3"] = Data["F4"] / Data["F3"]

Save the file into for instance csv format and into a Panda kind of table to be able to use Plotly

# Write Table to csv format and to panda format
Data.write("Data" / Path("Data_FERMI-HESS-SIMBAD-AGN.csv"), overwrite=True)
Data = Data.to_pandas()

And now lets plot using Plotly:

  • Flux ratios F2/F1 vs F4/F3

  • In a log. scale

  • Color coded according to the Source

  • Using fancy markers

  • Adding a legend

fig = px.scatter(
    Data,
    x="F2_F1",
    y="F4_F3",
    log_x=True,
    log_y=True,
    color="Source",
    hover_name="TYPE",
)
fig.update_traces(
    marker={"size": 12, "line": {"width": 2, "color": "DarkSlateGrey"}},
    selector={"mode": "markers"},
)
fig.show()