The final phase of these computational tutorials is to determine the age of the star cluster you've chosen to study. Astronomers determine star cluster ages by finding the isochrone that best matches the observed star cluster data.
If you skipped CT-5, download these M67 observed data and isochrone data to use in the following analysis.
#Set up astropy and astroquery
from astropy.table import Table,Column
#from astropy.coordinates import SkyCoord, Distance, CartesianRepresentation
#from astropy import units as u
from astropy.io import ascii
M67_reddening = 0.059
M67_distMod = 9.97
M67_iso = ascii.read('data/m67_isochrones.dat')
M67_iso
Z | log(age/yr) | M_ini | M_act | logL/Lo | logTe | logG | mbol | U | B | V | R | I | J | H | K | int_IMF | stage |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0.019 | 6.0 | 0.09 | 0.09 | -1.3414 | 3.4341 | 3.422 | 8.123 | 14.3 | 13.336 | 11.982 | 10.328 | 8.411 | 6.121 | 5.566 | 5.157 | 1.46765435 | 0 |
0.019 | 6.0 | 0.1 | 0.1 | -1.2408 | 3.4417 | 3.3975 | 7.872 | 13.845 | 12.906 | 11.571 | 9.966 | 8.085 | 5.877 | 5.316 | 4.924 | 1.57040203 | 0 |
0.019 | 6.0 | 0.1158868 | 0.1159 | -1.1067 | 3.4516 | 3.3672 | 7.537 | 13.269 | 12.357 | 11.046 | 9.499 | 7.664 | 5.552 | 4.979 | 4.611 | 1.7140224 | 0 |
0.019 | 6.0 | 0.12 | 0.12 | -1.0749 | 3.4539 | 3.3597 | 7.457 | 13.141 | 12.233 | 10.926 | 9.392 | 7.567 | 5.476 | 4.897 | 4.536 | 1.74782515 | 0 |
0.019 | 6.0 | 0.13960719 | 0.1396 | -0.9418 | 3.4638 | 3.3319 | 7.124 | 12.617 | 11.72 | 10.438 | 8.954 | 7.167 | 5.157 | 4.554 | 4.219 | 1.89318299 | 0 |
0.019 | 6.0 | 0.14 | 0.14 | -0.9392 | 3.464 | 3.3313 | 7.118 | 12.607 | 11.711 | 10.429 | 8.946 | 7.16 | 5.15 | 4.547 | 4.213 | 1.89584959 | 0 |
0.019 | 6.0 | 0.16 | 0.16 | -0.8241 | 3.473 | 3.3102 | 6.83 | 12.178 | 11.282 | 10.027 | 8.582 | 6.823 | 4.877 | 4.244 | 3.935 | 2.0211525 | 0 |
0.019 | 6.0 | 0.20108072 | 0.2011 | -0.6404 | 3.4906 | 3.296 | 6.371 | 11.523 | 10.59 | 9.354 | 7.973 | 6.28 | 4.455 | 3.757 | 3.491 | 2.22647381 | 0 |
0.019 | 6.0 | 0.23470959 | 0.2347 | -0.6006 | 3.5001 | 3.3615 | 6.272 | 11.316 | 10.331 | 9.102 | 7.769 | 6.114 | 4.381 | 3.661 | 3.409 | 2.35701632 | 0 |
0.019 | 6.0 | 0.25695479 | 0.257 | -0.5154 | 3.5092 | 3.3522 | 6.059 | 11.025 | 9.998 | 8.778 | 7.485 | 5.859 | 4.193 | 3.437 | 3.204 | 2.42988706 | 0 |
0.019 | 6.0 | 0.27576727 | 0.2758 | -0.5026 | 3.5133 | 3.3864 | 6.027 | 10.95 | 9.891 | 8.663 | 7.394 | 5.795 | 4.173 | 3.411 | 3.183 | 2.48466825 | 0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
0.019 | 10.0 | 1.06063998 | 0.9589 | 3.2166 | 3.5106 | 0.1976 | -3.271 | 4.025 | 2.189 | 0.625 | -1.057 | -3.029 | -5.088 | -5.991 | -6.298 | 3.15640569 | 7 |
0.019 | 10.0 | 1.0606401 | 0.9588 | 3.2206 | 3.51 | 0.1912 | -3.282 | 4.029 | 2.209 | 0.643 | -1.048 | -3.025 | -5.099 | -6.003 | -6.311 | 3.15640569 | 7 |
0.019 | 10.0 | 1.06064022 | 0.9587 | 3.2239 | 3.5096 | 0.186 | -3.29 | 4.031 | 2.224 | 0.658 | -1.04 | -3.02 | -5.108 | -6.013 | -6.322 | 3.15640569 | 7 |
0.019 | 10.0 | 1.06064034 | 0.9586 | 3.2284 | 3.5089 | 0.1789 | -3.301 | 4.034 | 2.246 | 0.678 | -1.028 | -3.012 | -5.12 | -6.026 | -6.336 | 3.15640569 | 7 |
0.019 | 10.0 | 1.06064057 | 0.9585 | 3.2329 | 3.5083 | 0.1717 | -3.312 | 4.038 | 2.268 | 0.699 | -1.016 | -3.005 | -5.133 | -6.04 | -6.351 | 3.15640569 | 7 |
0.019 | 10.0 | 1.06064081 | 0.9584 | 3.2393 | 3.5074 | 0.1617 | -3.328 | 4.043 | 2.3 | 0.729 | -1.0 | -2.994 | -5.15 | -6.059 | -6.372 | 3.15640593 | 7 |
0.019 | 10.0 | 1.06064117 | 0.9582 | 3.2469 | 3.5063 | 0.1496 | -3.347 | 4.049 | 2.338 | 0.765 | -0.979 | -2.981 | -5.171 | -6.081 | -6.397 | 3.15640593 | 7 |
0.019 | 10.0 | 1.06064153 | 0.958 | 3.255 | 3.5051 | 0.1367 | -3.368 | 4.056 | 2.38 | 0.804 | -0.958 | -2.967 | -5.193 | -6.106 | -6.423 | 3.15640593 | 7 |
0.019 | 10.0 | 1.06064212 | 0.9576 | 3.2762 | 3.502 | 0.1029 | -3.421 | 4.077 | 2.495 | 0.912 | -0.896 | -2.926 | -5.252 | -6.17 | -6.493 | 3.15640616 | 7 |
0.019 | 10.0 | 1.0606426 | 0.9573 | 3.2989 | 3.4986 | 0.0664 | -3.477 | 4.101 | 2.621 | 1.032 | -0.824 | -2.876 | -5.313 | -6.238 | -6.568 | 3.15640616 | 7 |
0.019 | 10.0 | 1.06064272 | 0.9572 | 3.2993 | 3.4985 | 0.0658 | -3.478 | 4.101 | 2.623 | 1.034 | -0.823 | -2.875 | -5.314 | -6.24 | -6.569 | 3.1564064 | 8 |
M67_obs = ascii.read('data/m67.tab', delimiter='\t')
M67_obs
No | Ref | V | B-V | U-B | N |
---|---|---|---|---|---|
1 | 1367 | 13.59 | 0.57 | 0.06 | 2 |
3 | 1367 | 12.89 | 0.54 | 0.08 | 2 |
4 | 1367 | 12.77 | 0.95 | 0.69 | 1 |
5 | 1367 | 13.05 | 0.6 | 0.07 | 1 |
6 | 1367 | 12.82 | 0.55 | 0.03 | 1 |
7 | 1367 | 14.05 | 0.61 | 0.11 | 2 |
9 | 1367 | 13.45 | 0.56 | 0.07 | 2 |
11 | 1367 | 13.62 | 0.66 | 0.09 | 1 |
13 | 1367 | 14.29 | 0.62 | 0.07 | 1 |
14 | 1367 | 13.9 | 0.59 | 0.01 | 1 |
15 | 59 | 13.61 | 0.55 | 0.04 | 1 |
... | ... | ... | ... | ... | ... |
8912 | 1367 | 13.02 | 0.54 | 0.04 | 1 |
8936 | 1367 | 13.84 | 0.62 | 0.04 | 1 |
8947 | 1367 | 13.46 | 0.43 | -0.09 | 1 |
8958 | 1367 | 14.42 | 0.5 | -0.06 | 1 |
8962 | 1367 | 13.01 | 0.55 | 0.05 | 1 |
8982 | 1367 | 14.27 | 0.66 | 0.19 | 1 |
8983 | 1367 | 14.39 | 0.64 | 0.16 | 1 |
8993 | 1367 | 15.65 | 0.6 | -0.02 | 2 |
8996 | 1367 | 15.04 | 0.6 | 0.1 | 3 |
9015 | 1367 | 12.56 | 0.61 | 0.03 | 1 |
9021 | 1367 | 12.29 | 1.17 | 1.08 | 1 |
%config InlineBackend.rc = {}
import matplotlib
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn
Here we will construct a color-magnitude diagram, by
fig = plt.figure (figsize=(10,8))
a2 = fig.add_subplot(111)
a2.scatter(M67_obs['B-V'],M67_obs['V'])
a2.set_title("Color Magnitude Diagram",fontsize=24)
a2.set_xlabel("B-V")
a2.set_ylabel("V")
<matplotlib.text.Text at 0x1f6c4358>
The magnitudes listed in the Isochrone table are Absolute Magnitudes. To compare them with your observed data in Step 3, you'll need to convert them to Apparent Magnitudes using the Distance Modulus. You recorded your cluster's Distance Modulus in CT-5.
To convert from Absolute to Apparent Magnitude, add the Distance Modulus to the Absolute Magnitudes (i.e., Apparent V Magnitude = Absolute V Magnitude + Distance Modulus ). If needed, check out these helpful hints for one way to do this.
V_M67 = M67_iso['V']+ M67_distMod
You'll also need to account for the Reddening (the effect of dust between us and the cluster). You recorded your cluster's Reddening in CT-5.
Add the Reddening value to the color [bmag-vmag] values (i.e., corrected color = [bmag-vmag]+reddening). If needed, check out these helpful hints for one way to do this.
CorrectedColor = M67_iso['B'] - M67_iso['V'] + M67_reddening
fig2 = plt.figure (figsize=(12,10))
a = fig2.add_subplot(111)
a.scatter(M67_obs['B-V'],M67_obs['V'],c='yellow',s=20)
a.scatter(CorrectedColor,V_M67,c=-M67_iso['log(age/yr)'],cmap='RdBu',s=20,edgecolor='none',marker='v')
a.set_title("Color Magnitude Diagram with Isocrons",fontsize=24)
a.set_xlabel("B-V")
a.set_ylabel("V")
<matplotlib.text.Text at 0x22078f98>