In [73]:
from scipy.stats import uniform, norm
from isochrones import get_ichrone
from isochrones.priors import ChabrierPrior, FehPrior, GaussianPrior, SalpeterPrior
from isochrones.populations import StarFormationHistory, StarPopulation, BinaryDistribution
mist = get_ichrone('mist')
sfh = StarFormationHistory() # Constant SFR for 10 Gyr; or, e.g., dist=norm(3, 0.2)
imf = SalpeterPrior(bounds=(0.4, 10)) # bounds on solar masses
binaries = BinaryDistribution(fB=0.4, gamma=0.3)
# feh = FehPrior(halo_fraction=0.2)
feh = GaussianPrior(-0.2, 0.2)
distance = 10 # pc (or this can be an isochrones.prior.Prior object, or anything with a "sample" method, really)
AV = 0. # Same rules as distance
pop = StarPopulation(mist, sfh=sfh, imf=imf, feh=feh, distance=distance, binary_distribution=binaries, AV=AV)
# df = pop.generate(1e3)
In [74]:
df = pop.generate(1e4)
In [75]:
mass_cols = [c for c in df.columns if 'mass' in c]
In [76]:
mag_cols = [c for c in df.columns if 'mag' in c]
df[mass_cols + mag_cols].describe()
Out[76]:
In [77]:
import holoviews as hv
hv.extension('bokeh')
import hvplot.pandas
df['G-J'] = df.G_mag - df.J_mag
hover_cols = ['mass', 'age', 'radius']
options = dict(invert_yaxis=True)
hv.Layout([df.hvplot.scatter('G-J', 'G_mag', size=4, alpha=0.5, color='feh', cmap='viridis', hover_cols=hover_cols).options(**options),
df.hvplot.scatter('G-J', 'G_mag', size=4, alpha=0.5, color='age', cmap='viridis', hover_cols=hover_cols).options(**options)]).cols(1)
Out[77]:
In [ ]:
In [ ]: