{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Quickstart\n", "\n", "This quickstart tutorial gets you from installing `kiauhoku` to interpolating a model from a grid." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Installation\n", "\n", "If necessary, uncomment the next cell and run it to install `kiauhoku`." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# %pip install kiauhoku" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Import `kiauhoku` and load the Dartmouth grid\n", "\n", "If you don't have the Dartmouth grid downloaded, this will perform a one-time download from Zenodo." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import kiauhoku as kh\n", "\n", "dart = kh.load_eep_grid(\"dartmouth\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Get models from the grid" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3a. Defined models and tracks\n", "\n", "The EEP grid contains stellar evolution tracks re-sampled to Equivalent Evolutionary Phases. Each EEP represents a model of dependent parameters—temperature, luminosity, surface gravity, etc.—given the dependent parameters of mass, initial metallicity, and EEP or time step. We can access a Solar-like track by asking for the model at (mass, initial_metallicity) = (1.0, 0.0):" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Age (yrs)Log TLog gLog LLog RY_coreZ_core(Z/X)_surfL_HL_HeM_He_coreM_CO_coreX_core
eep
01.419635e+033.6291702.4178501.4901901.0100100.2740200.0188500.0266580.0000000.0000000.0000000.07.071300e-01
12.487531e+033.6300412.4387741.4727370.9995440.2740200.0188500.0266580.0000000.0000000.0000000.07.071300e-01
23.633402e+033.6309032.4598581.4551030.9890020.2740200.0188500.0266580.0000000.0000000.0000000.07.071300e-01
34.860224e+033.6317582.4810661.4373240.9784020.2740200.0188500.0266580.0000000.0000000.0000000.07.071300e-01
46.185908e+033.6326022.5024171.4193490.9677240.2740200.0188500.0266580.0000000.0000000.0000000.07.071300e-01
..........................................
9471.218217e+103.493549-0.0263603.3918912.2321110.9792100.0207930.0266742443.0976982.7139180.4694090.0-2.861621e-06
9481.218219e+103.493250-0.0300353.3943682.2339460.9792100.0207930.0266742457.0256023.4880030.4700380.0-3.355518e-06
9491.218221e+103.492951-0.0337103.3968452.2357810.9792100.0207940.0266742470.9535064.2620880.4706680.0-3.849415e-06
9501.218223e+103.492655-0.0374913.3994452.2376730.9792060.0207950.0266742485.65671856.8070750.4715900.0-7.194609e-07
9511.218226e+103.492360-0.0413203.4021002.2395900.9792000.0207960.0266742500.700000132.0600000.4726400.04.000000e-06
\n", "

952 rows × 13 columns

\n", "
" ], "text/plain": [ " Age (yrs) Log T Log g Log L Log R Y_core Z_core \\\n", "eep \n", "0 1.419635e+03 3.629170 2.417850 1.490190 1.010010 0.274020 0.018850 \n", "1 2.487531e+03 3.630041 2.438774 1.472737 0.999544 0.274020 0.018850 \n", "2 3.633402e+03 3.630903 2.459858 1.455103 0.989002 0.274020 0.018850 \n", "3 4.860224e+03 3.631758 2.481066 1.437324 0.978402 0.274020 0.018850 \n", "4 6.185908e+03 3.632602 2.502417 1.419349 0.967724 0.274020 0.018850 \n", ".. ... ... ... ... ... ... ... \n", "947 1.218217e+10 3.493549 -0.026360 3.391891 2.232111 0.979210 0.020793 \n", "948 1.218219e+10 3.493250 -0.030035 3.394368 2.233946 0.979210 0.020793 \n", "949 1.218221e+10 3.492951 -0.033710 3.396845 2.235781 0.979210 0.020794 \n", "950 1.218223e+10 3.492655 -0.037491 3.399445 2.237673 0.979206 0.020795 \n", "951 1.218226e+10 3.492360 -0.041320 3.402100 2.239590 0.979200 0.020796 \n", "\n", " (Z/X)_surf L_H L_He M_He_core M_CO_core X_core \n", "eep \n", "0 0.026658 0.000000 0.000000 0.000000 0.0 7.071300e-01 \n", "1 0.026658 0.000000 0.000000 0.000000 0.0 7.071300e-01 \n", "2 0.026658 0.000000 0.000000 0.000000 0.0 7.071300e-01 \n", "3 0.026658 0.000000 0.000000 0.000000 0.0 7.071300e-01 \n", "4 0.026658 0.000000 0.000000 0.000000 0.0 7.071300e-01 \n", ".. ... ... ... ... ... ... \n", "947 0.026674 2443.097698 2.713918 0.469409 0.0 -2.861621e-06 \n", "948 0.026674 2457.025602 3.488003 0.470038 0.0 -3.355518e-06 \n", "949 0.026674 2470.953506 4.262088 0.470668 0.0 -3.849415e-06 \n", "950 0.026674 2485.656718 56.807075 0.471590 0.0 -7.194609e-07 \n", "951 0.026674 2500.700000 132.060000 0.472640 0.0 4.000000e-06 \n", "\n", "[952 rows x 13 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dart.loc[1, 0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can get a specific time step or EEP by adding an extra indexer:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Age (yrs) 2.258148e+09\n", "Log T 3.758194e+00\n", "Log g 4.501619e+00\n", "Log L -7.750308e-02\n", "Log R -3.187953e-02\n", "Y_core 4.443106e-01\n", "Z_core 1.930241e-02\n", "(Z/X)_surf 2.469866e-02\n", "L_H 8.369097e-01\n", "L_He 0.000000e+00\n", "M_He_core 0.000000e+00\n", "M_CO_core 0.000000e+00\n", "X_core 5.363870e-01\n", "Name: (1.0, 0.0, 250), dtype: float64" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dart.loc[1, 0, 250]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3b. Interpolating models and tracks\n", "\n", "`kiauhoku` contains tools for interpolating new tracks and models from existing model grids. Do do this, you must either load an existing interpolator or cast an EEP grid to a `StarGridInterpolator`." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# dart_interp = kh.load_interpolator(\"dartmouth\") # loads from file, or\n", "dart_interp = dart.to_interpolator() # creates the interpolator from the model grid" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Age (yrs)Log TLog gLog LLog RY_coreZ_core(Z/X)_surfL_HL_HeM_He_coreM_CO_coreX_core
01.137909e+033.6082122.3374261.3646350.9891530.2864200.0255830.0371860.0000000.0000000.0000000.06.879970e-01
11.937412e+033.6089882.3569551.3482030.9793860.2864200.0255830.0371860.0000000.0000000.0000000.06.879970e-01
22.786553e+033.6097572.3765931.3316380.9695700.2864200.0255830.0371860.0000000.0000000.0000000.06.879970e-01
33.700308e+033.6105152.3963801.3148880.9596740.2864200.0255830.0371860.0000000.0000000.0000000.06.879970e-01
44.674406e+033.6112662.4162861.2980030.9497230.2864200.0255830.0371860.0000000.0000000.0000000.06.879970e-01
..........................................
9473.427606e+103.459313-0.2900263.3964902.3028790.9667120.0332850.0344372468.9777152.0637720.4699540.02.876900e-06
9483.427608e+103.458979-0.2939193.3990492.3048240.9667120.0332860.0344372483.5859413.7080470.4706420.02.130430e-06
9493.427610e+103.458647-0.2978753.4016752.3067990.9667120.0332870.0344372498.64068411.1960250.4713760.01.290611e-06
9503.427612e+103.458315-0.3018673.4043402.3087920.9667120.0332880.0344372513.91762428.8642010.4721440.04.258629e-07
9513.427615e+103.457985-0.3059373.4070792.3108340.9667120.0332890.0344372529.530000171.3850000.4733760.0-1.100000e-06
\n", "

952 rows × 13 columns

\n", "
" ], "text/plain": [ " Age (yrs) Log T Log g Log L Log R Y_core Z_core \\\n", "0 1.137909e+03 3.608212 2.337426 1.364635 0.989153 0.286420 0.025583 \n", "1 1.937412e+03 3.608988 2.356955 1.348203 0.979386 0.286420 0.025583 \n", "2 2.786553e+03 3.609757 2.376593 1.331638 0.969570 0.286420 0.025583 \n", "3 3.700308e+03 3.610515 2.396380 1.314888 0.959674 0.286420 0.025583 \n", "4 4.674406e+03 3.611266 2.416286 1.298003 0.949723 0.286420 0.025583 \n", ".. ... ... ... ... ... ... ... \n", "947 3.427606e+10 3.459313 -0.290026 3.396490 2.302879 0.966712 0.033285 \n", "948 3.427608e+10 3.458979 -0.293919 3.399049 2.304824 0.966712 0.033286 \n", "949 3.427610e+10 3.458647 -0.297875 3.401675 2.306799 0.966712 0.033287 \n", "950 3.427612e+10 3.458315 -0.301867 3.404340 2.308792 0.966712 0.033288 \n", "951 3.427615e+10 3.457985 -0.305937 3.407079 2.310834 0.966712 0.033289 \n", "\n", " (Z/X)_surf L_H L_He M_He_core M_CO_core X_core \n", "0 0.037186 0.000000 0.000000 0.000000 0.0 6.879970e-01 \n", "1 0.037186 0.000000 0.000000 0.000000 0.0 6.879970e-01 \n", "2 0.037186 0.000000 0.000000 0.000000 0.0 6.879970e-01 \n", "3 0.037186 0.000000 0.000000 0.000000 0.0 6.879970e-01 \n", "4 0.037186 0.000000 0.000000 0.000000 0.0 6.879970e-01 \n", ".. ... ... ... ... ... ... \n", "947 0.034437 2468.977715 2.063772 0.469954 0.0 2.876900e-06 \n", "948 0.034437 2483.585941 3.708047 0.470642 0.0 2.130430e-06 \n", "949 0.034437 2498.640684 11.196025 0.471376 0.0 1.290611e-06 \n", "950 0.034437 2513.917624 28.864201 0.472144 0.0 4.258629e-07 \n", "951 0.034437 2529.530000 171.385000 0.473376 0.0 -1.100000e-06 \n", "\n", "[952 rows x 13 columns]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Interpolate a track at M/Msun = 0.755, [Z/H]_0 = 0.15\n", "dart_interp.get_track((0.755, 0.15))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, you can interpolate specific EEPs from the grid as well:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Age (yrs) 1.051701e+10\n", "Log T 3.667182e+00\n", "Log g 4.576931e+00\n", "Log L -6.389981e-01\n", "Log R -1.306025e-01\n", "Y_core 5.673465e-01\n", "Z_core 2.817389e-02\n", "(Z/X)_surf 3.108779e-02\n", "L_H 2.306751e-01\n", "L_He 0.000000e+00\n", "M_He_core 0.000000e+00\n", "M_CO_core 0.000000e+00\n", "X_core 4.044796e-01\n", "dtype: float64" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dart_interp.get_star_eep((0.755, 0.15, 303.3))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. Summary\n", "\n", "Congratulations! You've installed `kiauhoku`, loaded a model grid, and interpolated new models from the grid. Try it out with other grids, like `yrec`, `mist`, or `garstec`. For scientific use, you might want to check out the `StarGridInterpolator` fitting and sampling functions `fit_star`, `gridsearch_fit`, and `mcmc_star`. See the documentation and the demo notebooks." ] } ], "metadata": { "kernelspec": { "display_name": "gyro", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.3" } }, "nbformat": 4, "nbformat_minor": 2 }