The Cosmicflows-2 is a compendium of galaxy distances measured independently of redshift. Subtracting off the Hubble flow gives peculiar velocities for over 8,000 galaxies. Averaging velocities of galaxies in groups improves the accuracy of the velocity field. While only line of sight velocities can be measured, this catalog has been used to attempt to reconstruct the three dimensional velocity field, and infer the inital conditions of our local Universe.
Six techniques are used to measure galaxy distances. Most distances come from the Tully-Fisher Relationship (for spirals) and the Fundamental Plane Relatonship (for ellipticals). A smaller number of more accurate distances come from Surface Brightness Fluctuations, Type-Ia Supernovae, The Cepheid Period-Luminosity Relationship and measuring the Tip of the Red Giant Branch.
The paper describing the data is COSMICFLOWS-2: The Data by Tully et. al 2013
from astropy.table import Table,Column
from astropy.coordinates import CartesianRepresentation, SkyCoord, Distance
from astroquery.vizier import Vizier
from astropy import units as u
Vizier catalog: J/AJ/146/86
#Create Vizier object, turn off default row limit
v=Vizier(columns=['N1']) #Need to ask for N1 explicitly as it is not part of the standard returned elements
v.ROW_LIMIT = -1
Cats = v.get_catalogs('J/AJ/146/86')
CosmicFlows=Cats[1]
CosmicFlows.keep_columns(["GGLON","GGLAT","__Dist_","__PV_","__Bmag_","N1"])
CosmicFlows.rename_column('__Dist_', 'Dist')
CosmicFlows.rename_column('__PV_', 'PV')
CosmicFlows.rename_column('__Bmag_', 'Bmag')
C:\Anaconda\lib\site-packages\astroquery\vizier\core.py:556: UserWarning: VOTABLE parsing raised exception: warnings.warn("VOTABLE parsing raised exception: {0}".format(ex))
coordsCol=SkyCoord(CosmicFlows['GGLAT'],CosmicFlows['GGLON'],unit=(u.degree, u.degree),\
distance=Distance(CosmicFlows['Dist'],u.Mpc),frame='galactic')
CosmicFlows.add_column(Column(coordsCol.represent_as(CartesianRepresentation).x.to(u.Mpc),name='x_coord',meta={'ucd': 'pos.cartesian.x'}),0)
CosmicFlows.add_column(Column(coordsCol.represent_as(CartesianRepresentation).y.to(u.Mpc),name='y_coord',meta={'ucd': 'pos.cartesian.y'}),1)
CosmicFlows.add_column(Column(coordsCol.represent_as(CartesianRepresentation).z.to(u.Mpc),name='z_coord',meta={'ucd': 'pos.cartesian.z'}),2)
print len(CosmicFlows)
CosmicFlows
5224
x_coord | y_coord | z_coord | N1 | Dist | GGLAT | GGLON | Bmag | PV |
---|---|---|---|---|---|---|---|---|
Mpc | Mpc | Mpc | Mpc | deg | deg | mag | km / s | |
0.00999999977648 | 0.0 | 0.0 | 16 | 0.01 | 0.0000 | 0.0000 | -6.00 | 90 |
-0.395026353367 | 0.554236096283 | -0.338195971629 | 39 | 0.76 | 125.4790 | -26.4230 | 3.40 | -541 |
-0.374575487999 | -1.09629270748 | 0.731256122281 | 4 | 1.37 | 251.1360 | 32.2601 | 9.75 | 589 |
-0.968075170923 | 0.265489292352 | 0.932333584161 | 1 | 1.37 | 164.6640 | 42.8855 | 13.75 | 28 |
0.145491678676 | 1.35664898828 | 1.33657606089 | 1 | 1.91 | 83.8788 | 44.4092 | 16.69 | -262 |
-0.333592331544 | -0.590873044226 | -1.90262584995 | 7 | 2.02 | 240.5520 | -70.3721 | 7.64 | -307 |
-0.751420776242 | -0.0626495415852 | 2.13050271271 | 4 | 2.26 | 184.7660 | 70.5101 | 13.67 | 259 |
2.07070478775 | -1.26639557941 | -0.781616066401 | 1 | 2.55 | 328.5510 | -17.8494 | 11.52 | 133 |
-0.457147752309 | 1.18214524744 | 2.31584738279 | 1 | 2.64 | 111.1420 | 61.3082 | 13.94 | 0 |
-1.19682017791 | 2.24483858128 | -1.16975251174 | 2 | 2.80 | 118.0640 | -24.6938 | 10.93 | -595 |
1.4607269477 | -2.3317612635 | -0.780234320092 | 2 | 2.86 | 302.0650 | -15.8315 | 11.71 | 321 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
140.543218748 | 167.256204008 | 332.813050106 | 1 | 398.11 | 49.9601 | 56.7183 | 15.92 | -11132 |
-57.4816657518 | 344.545936773 | 198.542606314 | 1 | 401.79 | 99.4716 | 29.6134 | 0.00 | -2915 |
-56.6639282015 | 348.692879772 | 202.881599006 | 1 | 407.38 | 99.2301 | 29.8688 | 0.00 | -4431 |
221.533521583 | 168.808539395 | 305.019455541 | 1 | 413.05 | 37.3074 | 47.6001 | 17.07 | -2197 |
-343.575199729 | -77.6737944996 | 233.608227659 | 1 | 422.67 | 192.7390 | 33.5522 | 17.83 | -1278 |
-60.5528643446 | 365.192656507 | 211.986224074 | 1 | 426.58 | 99.4146 | 29.7980 | 17.90 | -6601 |
-119.458161737 | 141.36464945 | -397.560490127 | 1 | 438.53 | 130.1990 | -65.0363 | 17.31 | -10540 |
-24.7920732137 | 335.814329613 | -293.491234944 | 1 | 446.68 | 94.2223 | -41.0753 | 19.39 | -11196 |
207.399006392 | -314.656588532 | 251.187754305 | 1 | 452.90 | 303.3900 | 33.6846 | 0.00 | -3273 |
-74.4815885899 | 444.350700835 | 254.803933573 | 1 | 517.61 | 99.5154 | 29.4899 | 18.42 | -12282 |
CosmicFlows.filled(-9999).write("CosmicFlows/CosmicFlows.raw",format='ascii.no_header')
#initalize plotting
%config InlineBackend.rc = {}
import matplotlib
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn
fig = plt.figure (figsize=(13,20))
ax = fig.add_subplot(311,projection="mollweide", axisbg='black')
ax.grid(False)
ax.get_xaxis().tick_bottom()
ax.scatter(coordsCol.l.wrap_at(180.*u.degree).radian,\
coordsCol.b.radian,s=2*CosmicFlows['N1']+4,c=-1*CosmicFlows['PV'],\
cmap='RdBu',vmin=-2500.,vmax=2500.,lw=0)
a2 = fig.add_subplot(312)
a2.hist(CosmicFlows['PV'],bins=100)
a2.set_title("Galaxy Group Peculiar Velocities")
a2.set_xlabel("PV")
#a2.set_yscale('log')
<matplotlib.text.Text at 0x1fee6588>
There are two rendering passes, one draws the galaxy group halo and the other draws the arrow along the line of site colorcoded by velocity.