Arp peculiars galaxies catalog __ First steps with Multi-Order Coverage map’s#

Stefania Amodeo¹, Katarina A. Lutz¹, Manon Marchand¹

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


Introduction#

In this tutorial, we will explore Arp’s Catalog of peculiar galaxies. Using Multi-Order Coverage maps, we will find in seconds wich galaxies are present in the Sloan Digital Sky Survey (SDSS) and have been observed by the Galaxy Evolution Explorer (GALEX) satellite.

Figure: Arp147 taken by Joachim Dietrich. Credit: NASA & ESA

# Astronomy tools
import astropy.units as u
from astropy.coordinates import SkyCoord

# Access astronomical databases
import pyvo
from astroquery.cds import cds
from astroquery.vizier import Vizier

# Sky visualization
from ipyaladin import Aladin

Find and download tables from VizieR#

Vizier

We use the Vizier sub-module from the astroquery module.

We will explore the Arp’s Catalog of Peculiar Galaxies compiled by Halton C. Arp and published by Denis Webb.

Hence, we ask Vizier to find all catalogues that have a match with the keywords ‘Arp Galaxies’ and write the result into the variable catalog_list_arp (first line of code). Then we tell Python to print out the query result in a readable way (second line of code).

catalog_list_arp = Vizier.find_catalogs("peculiar galaxies")
for name, item in catalog_list_arp.items():
    print(name, ": ", item.description)
WARNING: UnitsWarning: Unit 'Sun' not supported by the VOUnit standard. Did you mean uN? [astropy.units.format.vounit]
J/MNRAS/501/1370 :  Chemical abundances of Seyfert 2 AGNs IV (Dors+, 2021)
J/MNRAS/368/651 :  A3653 galaxies redshift catalogue (Pimbblet+, 2006)
J/A+A/482/53 :  Radial velocities of four LSB galaxies (Pizzella+, 2008)
J/ApJ/903/110 :  Radial velocity and g-i color in M85 globular clusters (Ko+, 2020)
J/A+A/447/473 :  R I CN TiO photometry of DDO190 carbon stars (Battinelli+, 2006)
J/MNRAS/499/2327 :  Ages and abundances from spectral fitting (Goncalves+, 2020)
J/A+A/611/A95 :  Diffuse ionized gas in the Antennae galaxy (Weilbacher+, 2018)
J/MNRAS/465/316 :  Lyman continuum LAEs and LBGs in SSA22 field (Micheva+, 2017)
VII/74A :  Atlas of Peculiar Galaxies (Arp 1966)
J/A+A/543/A131 :  NGC1316 globular cluster candidates photometry (Richtler+, 2012)
J/other/BSAO/50.5 :  Velocities of RFGC galaxies (Karachentsev+, 2000)
J/MNRAS/456/2829 :  Radial velocities of galaxies in A523 field (Girardi+, 2016)
J/ApJ/897/183 :  Chemical abundances of 3 stars in Grus II galaxy (Hansen+, 2020)
J/ApJ/921/91 :  Catastrophic cooling in superwinds. II. (Danehkar+, 2021)
J/MNRAS/402/1005 :  Stellar cluster dynamical masses in NGC3310 (Hagele+, 2010)
J/ApJ/663/734 :  Interacting Galaxies in GEMS and GOODS (Elmegreen+, 2007)
J/MNRAS/406/382 :  Early-type galaxies in the SDSS Stripe82 (Kaviraj, 2010)
J/A+A/397/463 :  The Hamburg/SAO Survey for BCGs. I. (Ugryumov+, 2003)
J/A+AS/136/519 :  Mg2 indices for early-type galaxies (Golev+, 1999)
J/A+A/605/A54 :  ESO 435-02/ESO 435-016 ATCA HI images (Kim+, 2017)
J/MNRAS/445/2677 :  Peculiar velocities in 6dFGS (Springob+, 2014)
J/A+A/597/A134 :  Kohonen selected E+A galaxies from SDSS DR7 (Meusinger+, 2017)
J/A+A/682/A18 :  121 compact extragalactic radio sources (Meusinger+, 2024)
J/ApJS/81/413 :  Southern sky survey of 1355 spiral galaxies (Mathewson+, 1992)
J/ApJ/645/228 :  Velocities of satellites of external disk galaxies (Azzaro+ 2006)
J/MNRAS/321/277 :  EFAR Catalog. VII. (Colless+, 2001)
J/other/Ap/49.450 :  Peculiar velocities of 2MFGC spirals (Karachentsev+, 2006)
J/A+A/617/A113 :  GalMer S0 remnants morphological properties (Eliche-Moral+, 2018)
J/A+A/423/867 :  Abundances of distant luminous infrared galaxies (Liang+, 2004)
J/A+A/592/A122 :  Starburst galaxies in the COSMOS field (Hinojosa-Goni+, 2016)
J/MNRAS/444/2428 :  Disturbance levels of SNe host galaxies (Hakobyan+, 2014)
J/MNRAS/418/1526 :  Dark matter in dSph galaxies (Charbonnier+, 2011)
J/A+A/640/A30 :  Galaxies in the Perseus cluster field (Meusinger+, 2020)
J/A+AS/129/357 :  Morphology of peculiar ring galaxies (Faundez-Abans+ 1998)
J/ApJ/769/39 :  SN Ibn PS1-12sk optical and NIR light curves (Sanders+, 2013)
J/A+A/621/A25 :  Arp 240 Fabry-Perot interferometry (Fuentes-Carrera+, 2019)
J/MNRAS/500/889 :  S2 stream. Shreds of a primitive dwarf galaxy (Aguado+, 2021)
J/MNRAS/496/2902 :  Lithium and beryllium in Gaia-Enceladus galaxy (Molaro+, 2020)
J/MNRAS/442/2216 :  Redshifts of galaxies in Abell 1351 field (Barrena+, 2014)
VII/192 :  Arp's Peculiar Galaxies (Webb 1996)
J/MNRAS/446/2330 :  Overmassive black holes (Savorgnan+, 2015)
J/MNRAS/500/1261 :  Resolved molecular gas in nearby galaxies (Chown+, 2021)
J/A+A/645/A97 :  ALMA cube and GMC catalog of J1023+1952 (Querejeta+, 2021)
J/MNRAS/305/259 :  EFAR galaxies redshifts & velocity dispersions (Wegner+, 1999)
J/A+A/569/A41 :  Radial velocities of NGC1316 globular clusters (Richtler+, 2014)
J/MNRAS/492/468 :  Chemical abundances of Seyfert 2 AGNs - I (Dors+, 2020)
J/AJ/128/62 :  Catalog of double nucleus disk galaxies (Gimeno+, 2004)
J/A+A/554/A11 :  CO observations of polar ring galaxies (Combes+, 2013)
J/AJ/104/2078 :  cD Galaxy in Abell 2107 (Oegerle+ 1992)
J/AJ/128/163 :  Galaxy morphological classification (Lotz+, 2004)
VII/170 :  Catalogue of Southern Peculiar Galaxies and Associations (Arp+, 1987)
J/ApJS/106/1 :  EFAR cluster and galaxy selection (Wegner+, 1996)
J/A+A/465/71 :  21cm observations of 452 galaxies (Theureau+, 2007)
J/MNRAS/292/499 :  EFAR photometric data (Saglia+, 1997)
J/A+A/422/941 :  Gas content in 1038 interacting galaxies (Casasola+, 2004)
J/MNRAS/498/2575 :  Rapidly evolving transients discovered by DES (Wiseman+, 2020)
J/MNRAS/443/3528 :  SDSS peculiar galaxy pairs list (Shamir+, 2014)
VII/198 :  Mark III Catalog of Galaxy Peculiar Velocities (Willick+ 1997)
J/A+A/550/A41 :  CO line survey in 0.2<z<1 of galaxies (Combes+, 2013)
J/MNRAS/487/2061 :  Distances for 2062 nearby spiral galaxies (Hong+, 2019)
J/other/RMxAA/44.161 :  HII regions in NGC 5055 (Rozas+, 2008)
J/MNRAS/497/672 :  Abundance determination in HII regions (Arellano-Cordova+, 2020)
J/A+A/582/A21 :  Merging galaxies (mis)alignments (Barrera-Ballesteros+, 2015)
VI/76 :  Simulation Atlas of Tidal Features in Galaxies (Howard+ 1993)
J/A+A/588/A77 :  NGC 3923 MegaCam image (Bilek+, 2016)

The catalogue that we are interested in today is VII/192 and its description is “Arp’s Peculiar Galaxies (Webb 1996)”. In the TAP query we already see that there are two tables in this catalogue: VII/192/arplist and VII/192/arpord. To be able to work with these data, let’s load them into this notebook.

Again we can use either astroquery or pyvo. Which one you chose is up to you and which one you like better.

In oder to get the full catalogue with astroquery, we first set the row limit to infinite (i.e. -1 in the notation of this package) and then ask Vizier to write the content of the catalogue into the variable catalogs_arp:

catalogs_arp = Vizier(row_limit=-1).get_catalogs("VII/192")
catalogs_arp
TableList with 2 tables:
	'0:VII/192/arpord' with 12 column(s) and 338 row(s) 
	'1:VII/192/arplist' with 13 column(s) and 592 row(s) 

Now let’s inspect, what we got:

for catalog in catalogs_arp:
    print(f"{catalog.meta['ID']}: {catalog.meta['description']}")
VII_192_arpord: list of Arp views with imaging data
VII_192_arplist: list and info for involved galaxies

As we have seen in the first part of the tutorial, the catalogue “Arp’s Peculiar Galaxies (Webb 1996)” comes with two tables: arpord and arplist. As you can see from the printout Vizier has downloaded both of them. However, we are still only interested in the arplist (index 1 in the TableList). Therefore, we write only the arplist table into a new variable table_arplist (first line) and then display the table (second line):

table_arplist = catalogs_arp[1]
table_arplist
Table length=592
ArpNameVTu_VTdim1dim2u_dim2MTypeUchartRAJ2000DEJ2000SimbadNED
magarcminarcmin
int16str16float32str1float32float32str1str14int16str10str9str6str3
249UGC 1289116.2------00 00 19.3+22 59 26SimbadNED
249UGC 1289116.21.30.5--00 00 21.6+22 59 42SimbadNED
112NGC 780513.31.20.9SAB0^0: pec8900 01 26.9+31 26 02SimbadNED
112NGC 780613.51.10.8SA(rs)bc? pec8900 01 30.2+31 26 33SimbadNED
130IC 537815.60.5--SBc--00 02 37.7+16 39 08SimbadNED
130IC 537815.3----E--00 02 37.8+16 38 37SimbadNED
51MGC-02-01-2415.00.8----00 06 16.8-13 26 53SimbadNED
144NGC 782814.40.90.5Ring A26000 06 27.1-13 24 58SimbadNED
144NGC 782914.60.7--Ring B pec26000 06 29.0-13 25 15SimbadNED
146ARP 146--0.70.6Ring A--00 06 44.0-06 38 07SimbadNED
146VV 790------Pec--00 06 44.4-06 38 10SimbadNED
146ARP 146--0.70.6Ring A--00 06 44.8-06 38 14SimbadNED
246NGC 783714.40.40.217000 06 51.4+08 21 05SimbadNED
246NGC 783814.30.70.317000 06 53.7+08 21 00SimbadNED
235NGC 001412.72.82.1(R)IB(S)m pec17000 08 46.2+15 48 56SimbadNED
113NGC 007014.51.41.2SA(rs)c III8900 18 22.4+30 04 50SimbadNED
256MCG-02-01-5213.61.10.8SB(S)c pec--00 18 50.0-10 21 42SimbadNED
256MCG-02-01-5114.81.10.6SB(S)c pec--00 18 50.9-10 22 37SimbadNED
256VV 352--------00 18 51.4-10 22 33SimbadNED
65NGC 009113.72.2--SAB(S)c pec I12600 21 51.7+22 24 01SimbadNED
35UGC 0021215.5----SP--00 22 21.4-01 20 47SimbadNED
35UGC 0021215.01.50.7SB--00 22 23.0-01 18 13SimbadNED
201UGC 0022416.00.50.3Disrupted--00 23 33.7-00 29 22SimbadNED
201UGC 0022416.0------00 23 37.7-00 30 35SimbadNED
100IC 001815.01.50.8--00 28 38.1-11 34 25SimbadNED
100IC 001915.00.80.5--00 28 39.5-11 38 27SimbadNED
19NGC 014513.21.81.3SB(s)dm21600 31 45.0-05 09 12SimbadNED
282NGC 016912.42.70.7SA(s)ab: sp12600 36 52.0+23 59 30SimbadNED
282IC 155914.00.80.5SAB pec:12600 36 52.2+23 59 04SimbadNED
127NGC 019112.51.51.2SAB(rs)C:pec26100 38 59.2-09 00 07SimbadNED
127IC 156314.20.70.4I 0--00 39 00.1-09 00 52SimbadNED
168MESSIER 329.08.86.5cE26000 42 41.8+40 51 52SimbadNED
231IC 157514.5------00 43 33.3-04 07 05SimbadNED
230IC 005113.01.41.2SO pec?26100 46 24.2-13 26 32SimbadNED
140NGC 027413.01.5--SAB(r:)0^0^ p26100 51 01.7-07 03 24SimbadNED
140NGC 027512.51.61.1S pec26100 51 04.6-07 03 48SimbadNED
251VV 67415.50.90.4Triple--00 53 46.9-13 51 40SimbadNED
121MCG-01-03-05214.50.90.7Disrupted--00 59 23.3-04 48 50SimbadNED
.......................................
3MCG-01-57-01613.42.52.1SA(s)m--22 36 34.0-02 54 19SimbadNED
15NGC 739312.62.00.9SAB?(r:)b?25822 51 39.3-05 33 28SimbadNED
110MCG-03-58-01115.90.70.6S--22 54 08.8-15 14 14SimbadNED
314MCG-01-58-00913.71.10.9?(R')SA(s)bc:--22 58 01.0-03 46 08SimbadNED
314MCG-01-58-01013.81.31.1?SB(rs)cd: pec--22 58 07.0-03 47 23SimbadNED
314MCG-01-58-01116.01.10.9?(R')SB(s)dm p--22 58 11.0-03 48 55SimbadNED
13NGC 744811.62.71.2SA(rs)bc21323 00 02.4+15 59 22SimbadNED
298NGC 746912.31.51.1(R')SAB(rs)a21323 03 15.6+08 52 26SimbadNED
298IC 528313.80.80.4SA(r)cd pec?21323 03 18.1+08 53 36SimbadNED
99NGC 754713.71.10.5(R')SAB(s)0/a:16823 15 03.6+18 58 23SimbadNED
99NGC 755012.21.41.2SA0-16823 15 16.0+18 57 41SimbadNED
99NGC 754913.02.80.7SB(s)cd pec16823 15 17.2+19 02 30SimbadNED
170NGC 7578A13.81.4--S0^0 pec16923 17 11.9+18 42 03SimbadNED
170NGC 7578B13.81.1--E116923 17 13.4+18 42 28SimbadNED
223NGC 758511.42.32.0SA?0^0 pec25923 18 02.1-04 38 56SimbadNED
92NGC 760313.21.61.0SA(rs)0+: pec25923 18 56.6+00 14 38SimbadNED
150NGC 760914.11.31.1Pec21423 19 29.9+09 30 29SimbadNED
150NGC 7609A15.0----Sc irr--23 19 31.0+09 30 10SimbadNED
212NGC 762512.11.61.5SA(rs)a pec16923 20 30.0+17 13 32SimbadNED
182NGC 767413.21.11.0SA(r)bc pec21423 27 56.7+08 46 45SimbadNED
182UGC 1260813.60.20.2SBb--23 27 58.8+08 46 58SimbadNED
28NGC 767811.82.41.7SAB(rs)c I-II16923 28 27.8+22 25 16SimbadNED
216NGC 767912.91.40.9(R':)Sc? pec25923 28 46.8+03 30 41SimbadNED
216NGC 768213.21.21.1SB(r)a: pec25923 29 03.9+03 32 00SimbadNED
46UGC 1266515.01.20.9SBT7P--23 33 41.1+30 02 35SimbadNED
284NGC 771412.51.91.4SB:(s)b? pec25923 36 14.1+02 09 18SimbadNED
284NGC 771514.22.60.5Sa? pec sp25923 36 22.0+02 09 24SimbadNED
222NGC 772710.64.73.6SAB:(s?)0/a p26023 39 54.2-12 17 31SimbadNED
295MCG-01-60-02114.51.90.3Sc--23 41 47.9-03 40 37SimbadNED
295ARP 29514.60.90.5?Sb pec--23 42 04.1-03 35 21SimbadNED
86NGC 775214.30.80.5?I0:8923 46 58.5+29 27 32SimbadNED
86NGC 775312.03.32.1SAB(rs)bc I8923 47 04.7+29 29 01SimbadNED
68NGC 775712.72.51.8SAB(rs)c21523 48 45.1+04 10 24SimbadNED
323NGC 778313.01.30.6S0^0: sp21523 54 10.0+00 22 58SimbadNED
323NGC 7783B14.00.40.3S021523 54 12.0+00 22 38SimbadNED
262MCG+03-01-00314.60.50.4S12523 56 43.8+16 48 27SimbadNED
262UGC 1285613.22.4--IB(s)m12523 56 44.9+16 48 45SimbadNED
50IC 152014.00.50.5--23 57 58.0-14 01 48SimbadNED

Nice, we got the data we want. Before moving on, let’s have a look at how to use pyVO to get the same table wiht a Table Access Protocol (TAP) query.

First, we set the TAPService of pyvo to the server of Vizier that will receive our TAP query.

Then we write a simple query telling VizieR that we want all the rows and all (all is written * in SQL) the columns from the table VII/192/arplist. Note that we have to encompass the table name with quotation marks due to the special character / in the table name.

tap_vizier = pyvo.dal.TAPService("https://tapvizier.cds.unistra.fr/TAPVizieR/tap/")
query = """SELECT  *  FROM "VII/192/arplist" """
table_arplist = tap_vizier.search(query).to_table()
table_arplist
Table length=592
recnoArpNameVTu_VTdim1dim2u_dim2MTypeUchartRAJ2000DEJ2000
magarcminarcmindegdeg
int32int16objectfloat64str1float64float64str1objectint16float64float64
112333NGC 102412.13.91.4(R')SA(r)ab17539.8008333333333310.847222222222221
120200NGC 113412.12.50.9S?17543.4212499999999913.015277777777776
119190UGC 0232015.20.50.3Multiple Sys--42.5829166666666612.889444444444443
89290IC 019514.31.60.8S0--30.93583333333332814.708611111111109
90290IC 019614.22.81.4S0---30.9583333333333314.73972222222222
111258UGC 02140A15.50.90.2SB.0*/--39.7887499999999918.367499999999996
110258UGC 0214015.41.70.7IBS9P--39.7758333333333318.382777777777775
109258Hickson 18C16.1----S?--39.77458333333332518.388333333333332
108258Hickson 18D14.6----S?--39.7691666666666618.393888888888885
105276IC 180114.81.30.6SBB:--37.04916666666666519.57333333333333
104276NGC 093512.91.71.1Scd:13037.0454166666666619.59972222222222
8256UGC 0143214.60.90.6Sbc--29.3570833333333317.217499999999998
8778NGC 077013.91.10.7E3--29.8066666666666618.95444444444444
8878NGC 077210.37.34.3SA(s)b I +12929.83458333333332719.006111111111107
8031IC 016713.62.91.9SAB(s)c--27.78416666666666421.914166666666663
84166NGC 075113.51.4--E pec9229.3858333333333333.206111111111106
83166NGC 075012.91.71.3E pec9229.38499999999999433.209999999999994
6470UGC 0093417.0------20.86166666666666530.77222222222222
6570UGC 0093415.01.70.6S?--20.86791666666666230.784722222222218
49331NGC 038814.30.90.8E39116.9462532.309999999999995
46331NGC 038413.01.10.9E39116.85416666666666432.29277777777777
47331NGC 038512.91.11.0LA-*9116.86532.32111111111111
48331NGC 038614.10.90.8E39116.8832.362222222222215
44331NGC 038214.00.7--E09116.84916666666666532.403611111111104
45331NGC 038311.91.61.4SA0-9116.85374999999999832.412499999999994
43331NGC 038012.51.41.2E29116.82532.483888888888885
42331NGC 037912.61.40.8S09116.81541666666666432.521388888888886
7498UGC 0109515.00.3--?S? C?--23.06999999999999732.09027777777777
7398UGC 0109516.01.10.5--23.03541666666666332.10361111111111
66229NGC 050714.13.1--Sa(r)0^09120.91541666666666533.256388888888885
67229NGC 050813.51.3--E0:9120.91916666666666233.28083333333333
69158NGC 052313.52.50.7Pec9121.33166666666666334.024722222222216
98273UGC 0181315.31.50.4SB--35.38539.35638888888889
97273UGC 0181013.72.21.5S(b)--35.3695833333333339.375277777777775
113135NGC 10239.38.83.0SB(rs)0-6240.09999999999999439.062777777777775
99145ARP 14513.8----Ring B--35.7833333333333341.37
101145ARP 14517.8----Ring A--35.7974999999999941.36805555555555
100145UGC 0184018.81.61.3Pec Loop--35.78541.37222222222222
....................................
128332NGC 123015.40.60.2LB0?P--47.06833333333333-22.984166666666663
126332NGC 122913.91.40.9SB(s)ab: pec31147.04583333333333-22.960277777777776
127332NGC 122813.21.50.9(R')SB(rs)031147.04583333333333-22.92444444444444
124108ESO 547-G00215.00.60.4S0:--45.77291666666666-22.21722222222222
125108ESO 547-G00314.01.00.7SC?--45.779999999999994-22.206666666666663
13939NGC 134713.01.61.3SB(s)c: pec31152.42499999999999-22.279166666666665
13141NGC 123210.17.56.5SAB(rs)c I-II31147.43874999999999-20.578888888888887
13241NGC 1232A14.70.90.8SB(s)dm III31147.43874999999999-20.578888888888887
117131MCG-03-08-2514.51.00.7--41.832499999999996-14.801944444444443
118131MCG-03-08-2615.00.70.4--41.89124999999999-14.774999999999999
133304NGC 124112.02.81.7SAB(rs)bc II26647.811249999999994-8.92222222222222
135304NGC 124213.71.20.7SB:(s:)cd III26647.82999999999999-8.901944444444442
107309NGC 094211.23.4--S0: pec26537.2925-10.83611111111111
106309NGC 094311.43.4--S0^0: pec26537.28916666666666-10.826944444444443
123179NPM1G -04.013416.6------45.42041666666666-4.671666666666666
235252ESO 566-IG00715.30.80.5SB3P?--146.2433333333333-19.72555555555555
236252ESO 566-IG00815.60.70.5S--146.2483333333333-19.7125
238245NGC 299312.61.40.9I0? pec or278146.45208333333332-14.368055555555554
237245NGC 299212.23.61.1S0 pec sp278146.42499999999998-14.326388888888888
1897MCG-03-23-00914.51.31.0SB(rs) bc:--132.57333333333332-16.576388888888886
211275NGC 288114.1----278141.47875-12.000277777777777
212275NGC 288113.31.10.9S?278141.47875-11.98361111111111
220221MCG-02-25-00614.01.31.1--144.1158333333333-11.32861111111111
191257UGC 0463815.00.60.3S pec--132.9095833333333-2.3663888888888884
190257UGC 0463817.01.50.8SP--132.90791666666664-2.3541666666666665
399153NGC 51286.825.920.1S0 pec403201.36499999999998-43.01916666666666
475254NGC 591714.51.50.9Sb pec?289230.38416666666663-7.377222222222221
462261MCG-02-38-01613.4----IB(s)m pec--222.3770833333333-10.173055555555553
465261ARP 26114.5----IB(s)m pec--222.3870833333333-10.164166666666665
464261ARP 261--------222.38624999999996-10.163055555555554
463261ARP 261--------222.38624999999996-10.156666666666665
54914NGC 731410.94.62.1SAB(rs)c: II347338.94041666666664-26.05083333333333
54793NGC 728411.92.11.5SB(s)0^0 pec347337.15-24.844166666666663
54893NGC 728511.92.41.4SB(rs)a pec347337.1583333333333-24.84083333333333
546226NGC 725211.42.01.6SAB0^0? pec347335.1866666666666-24.678611111111106
541325ESO 601- G 01816.1------331.6008333333333-21.079166666666662
540325ESO 601- G 01817.9------331.59666666666664-21.077499999999997
539325ESO 601- G 01818.11.70.7--331.5925-21.072499999999998

There we go, we now know two nifty ways to get VizieR tables with Python. Obviously there are many other things you can do with this tools. For example if you set your TAP endpoint to https://simbad.cds.unistra.fr/simbad/sim-tap instead of the VizieR enpoint, you can query SIMBAD just like that.

Aladin

Note that not all rows but only the first and last 10 rows for all columns are shown in the display. To finish off this little excursion, we now want to visualise the location of the entries of this table in an Aladin Lite widget. To do so, we tell Python to take the variable aladin and add the table table_arplist to it:

aladin = Aladin(show_fullscreen_control=True, height=600)
aladin
aladin.add_table(table_arplist)

Now explore the Aladin Lite widget. You will find that the location of the sources in the arplist table are marked with coloured symbols. You can zoom in and out to look at the different sources and check their peculiarity. If you click on one of the colour symbols, you will be able to see the corresponding row in the bottom of the Aladin Lite widget.

Note if you are using Jupyter Lab instead of single Jupyter notebooks, you can open two notebooks that share a kernel. Then one notebook could contain your working environment, where you get and work on your tables ect. The other notebook could contain the Aladin Lite widget, and just remain visible all the time. This way there would be no need to scroll up and down.

MOCs in Python#

We can use MOCs to find out whether any of these galaxies have been observed both by SDSS and GALEX. For this task we use the cds module of astroquery and the functionalities of MOCpy to get the intersection of the MOCs. First let’s query the MOC server for all things SDSS and all things GALEX.

info_sdss = cds.find_datasets(meta_data="ID=*SDSS*")
info_sdss[["ID"]]
Table length=14
ID
str25
CDS/J/ApJ/749/10/SDSS-obs
CDS/P/HLA/SDSSg
CDS/P/HLA/SDSSr
CDS/P/HLA/SDSSz
CDS/P/HST/SDSSg
CDS/P/HST/SDSSr
CDS/P/HST/SDSSz
CDS/P/SDSS9/color
CDS/P/SDSS9/color-alt
CDS/P/SDSS9/g
CDS/P/SDSS9/i
CDS/P/SDSS9/r
CDS/P/SDSS9/u
CDS/P/SDSS9/z
info_galex = cds.find_datasets(meta_data="ID=*GALEX*")
info_galex[["ID"]]
Table length=6
ID
str24
CDS/P/GALEXGR6/AIS/FUV
CDS/P/GALEXGR6/AIS/NUV
CDS/P/GALEXGR6/AIS/color
CDS/P/GALEXGR6_7/FUV
CDS/P/GALEXGR6_7/NUV
CDS/P/GALEXGR6_7/color

Now that we know what the relevant data sets are called, we can move on to download the corresponding MOCs,

moc_sdss = cds.find_datasets(meta_data="ID=CDS/P/SDSS9/color", return_moc=True)
moc_galex = cds.find_datasets(meta_data="ID=CDS/P/GALEXGR6/AIS/color", return_moc=True)

and calculate the intersection of these two MOCs.

moc_intersection = moc_sdss & moc_galex
print(
    f"The intersection of SDSS and GALEX covers"
    f" {round(moc_intersection.sky_fraction *100., 1)}% of the sky",
)
The intersection of SDSS and GALEX covers 31.5% of the sky

Now we can use this MOC to filter our table of Peculiar Galaxies.

coords = SkyCoord(
    ra=table_arplist["RAJ2000"],
    dec=table_arplist["DEJ2000"],
    unit=(u.deg, u.deg),
)
mask = moc_intersection.contains_skycoords(coords)
print(
    f"Among the {len(table_arplist)} peculiar galaxies, {len(table_arplist[mask])} are observed by both GALEX and SDSS!",
)
Among the 592 peculiar galaxies, 425 are observed by both GALEX and SDSS!

mask is a boolean table that is True where a peculiar galaxy is contained in the intersection of SDSS and GALEX MOCs. Doing table_arplist[mask] results in a smaller table corresponding to the lines that are True in mask.

To visualise only the galaxies within the MOC, we can add the filtered table to the AladinLite widget. This table will show up in a different colour than the first one we visualised.

aladin.add_table(table_arplist[mask])

The last thing to do with our MOC is to visualise it. We can either plot it using matplotlib (see the MOCpy documentation, how to do this) or add it to our AladinLite widget:

aladin.add_moc_from_dict(
    moc_intersection.serialize(format="json"),
    {"color": "red", "opacity": 0.45},
)
/tmp/ipykernel_1755486/1482112876.py:1: DeprecationWarning: add_moc_from_dict is replaced by add_moc that detects automaticallythat the MOC was given as a dictionary.
  aladin.add_moc_from_dict(

Before leaving the tutorial, don’t forget to scroll back up and look at the results in the Aladin widget ;)