Package: kiauhoku
KīauhōkūPython utilities for stellar model grid interpolation.If you find this package useful, please citeClaytor et al. (2020).Download the model grids fromZenodo.(C)Zachary R. ClaytorInstitute for AstronomyUniversity of Hawaiʻi2021 July 13KīauhōkūFrom Hawaiian:vt. To sense the span of a star's existence (i.e., its age).n. The speed of a star (in this case, its rotational speed).This name was created in partnership with Dr. Larry Kimura and Bruce Torres Fischer, a student participant inA Hua He Inoa, a program to bring Hawaiian naming practices to new astronomical discoveries. We are grateful for their collaboration.Kīauhōkū is a suite of Python tools to interact with, manipulate, and interpolate between stellar evolutionary tracks in a model grid. It was designed to work with the model grid used inClaytor et al. (2020), which was generated using YREC with the magnetic braking law ofvan Saders et al. (2013), but other stellar evolution model grids are available.InstallationKīauhōkū requires the use of Python 3 and uses the following Python packages:numpyscipypandasmatplotlibminiutilspyarrow (or some package that supports parquet files)numbaemceePersonally, I create a conda environment for this. In this example I'll call it "stars".condacreate-nstarsnumpyscipypandasmatplotlibpyarrownumbaemcee
condaactivatestars
pipinstallgit+https://github.com/zclaytor/kiauhokuBrand new: Kīauhōkū is on PyPI! It requires Python 3, but you can finally do this:pipinstallkiauhokuYou still need to download the grids from Zenodo and follow grid-specific install instructions. I'm working on including the basic files with the pip install.Quickstart GuideDownload the model grids fromZenodo.Open an interactive Python session in the directory with the install script. Here we'll install the "fastlaunch" grid, which is a YREC grid that's been processed with the Rotevol rotation tracer code:fromkiauhokuimportrotevolpath_to_grid=wherever_you_installed_grids+'/grids/fastlaunch'rotevol.install(path_to_grid)You're ready to go! You can import and interpolate away.importkiauhokuaskhgrid=kh.load_interpolator('fastlaunch')How it worksWe start with output evolution tracks from your favorite stellar modeling software. Forrotevoloutput, these are the *.out files. Each *.out file has, for one specific initial metallicity and alpha-abundance, a series of evolution tracks for a range of initial masses. The "fastlaunch" grid forkiauhokuhas eight *.out files, corresponding to[M/H] ~ [-1.0, -0.5, 0.0, 0.5] and[alpha/M] ~ [0.0, 0.4].Each file contains 171 evolution tracks for 0.30 <= M/Msun <= 2.00 in steps of 0.01*Msun.First we load the tracks into a pandas MultiIndexed DataFrame and save to a parquet file.Age is not an optimal dimension for comparing consecutive evolution tracks. For this reason we condense each evolution track in the time domain to a series of Equivalent Evolutionary Phases (EEPs) after the method of Dotter (2016). The EEP-based tracks are packaged into a MultiIndexed DataFrame and saved to parquet.We finally load the EEP-based tracks into akiauhoku.stargrid.StarGridInterpolatorobject. TheStarGridInterpolatoris based on the DataFrameInterpolator (DFInterpolator) from Tim Morton'sisochronespackage. It performs linear interpolation between consecutive evolution tracks for an input mass, metallicity, alpha-abundance, and either age or EEP-index. We then pickle the interpolator so it can be accessed quickly and easily.Basic UsageOnce you have everything running, try doing this:importkiauhokuaskhgrid=kh.load_interpolator('fastlaunch')star=grid.get_star_eep((1,0,0,330))If it works, you should get something close to the sun. The argument to get_star_eep is a tuple containing the model grid indices. In this case, those are mass (in solar units), metallicity, alpha-abundance, and EEP index. See the documentation for more details.Kīauhōkū comes with MCMC functionality throughemcee. See the jupyter notebookmcmc.ipynbfor an example.Installing Custom Model GridsTo install your own custom grid, you will want to create a setup script (seecustom_install.pyfor an example). The only requirements are that your setup file contains (1) a function calledsetupthat returns a pandas MultiIndexed DataFrame containing all your evolution tracks, (2) a variablenamethat is set to whatever you want your installed grid to be named, and (3) a variableraw_grids_paththat sets the path to wherever your custom raw grid is downloaded.The index for this DataFrame is what all the "get" functions will use to get and interpolate tracks and EEPs. Thus, if you want to access your grid using mass and metallicity, you'll want the DataFrame returned bysetupto have mass and metallicity, as well as a column to represent the time/EEP step.You can also use the setup file to define custom EEP functions (seecustom_install.my_RGBump) for an example) and to tellkiauhokuwhich columns to use in its default EEP functions.Once your setup file is ready, you can install your custom grid usingimportkiauhokuaskhkh.install_grid('custom_install')If you create a setup file for your favorite model grid and you'd like it to be public, create a pull request and I'll add you as a contributor!