Releases: HeloiseS/hoki
SED fitting with BPASS and End-to-end transient progenitor analysis
Description
This new version of hoki
contains the data analysis pipelines used to fit BPASS SEDs to observed SEDs using ppxf
, as well as utility functions that streamline the exploration of the stellar models to make finding transient progenitors faster than ever and easy to automate. These tools were created for the analysis that resulted in the publication Stevance et al. 2023 (in press. with Nature Astronomy).
New features and data
-
sedfitting
subpackage which contains thekvn
andlordcommander
modules which contain helper tools to create SED templates to fit observed SEDs with ppxf and retrieve stellar formation histories and metallicities for individual spectra and data cubes. (NOTE: i want, in time, to rename and refactor these utilities so they are more instinctive to call in the code and not just a 'hommage' to funny cartoon characters. At the present time they are the codes I used for the study attached to this release and as such need to be included as they were during the analysis for reproducibility purposes). The SED fitting full tutorials and data can be found on zenodo:
-
eve.py
contains utility functions to be used with EvE database. The alpha version of that data base can be found on Zenodo -
A BPASSv2.2.1 starter kit has been added to zenodo if users only are interested in the stellar library and fiducial models (standard IMF, not the other 8)
Complex Model Search and Complex Stellar Populations
New Features
csp
subpackage: Create Complex Stellar Populations from the BPASS Simple Stellar Populations! Use them to predict transient rates originating from your population.data_compiler
module: Includes theModelDataCompiler
which allows you to compile a subset of the BPASS stellar library into anpandas.DataFrame
that is easy to search and operate on! This allows you to do some advances model searches to match your stellar population or your transient progenitor.
New tutorials in hoki_tutorials
repository
- Complex Stellar Populations: Shows you how to make Complex Stellar Populations
- Model Data Compiler: Shows you how to compile the data you're interested in from individual text files into a table
- Model Search: Shows you some of the basics of searching through the models with these data formats
Other features in pre-release
data_compiler
comes with another compiler to bring spectral data together into a data product easier to manage for some applications. Contact Max Briel if you are interested.
Updates and upcoming deprecation
-
The
age
subpackage is the new home ofAgeWizard
. It comes with an AgeWizard v2.0 of sorts that can take into account observational errors in Luminosity and Temperature when comparing to HR Diagrams. -
age_utils
is still there for backwards compatibility until v2.0 of hoki but you will get a Deprecation Warning everytime
Associated Data Products
Pre-compiled tables for the stellar libraries with the fiducial IMF (Kroupa with maximum mass 300 solar masses) were compiled by H. F. Stevance and made available here under the following DOI
The Age Wizard Release - Patch - v1.5.1
Patch for the submission of our revised manuscript of "A_systematic_aging_method_I: NGC 300 ...."
Feature Patch
The AgeWizard
algorithm has been slightly amended. [PR39]. Here is a summary of the changes:
- The individual star age probability distribution functions are now such that the probability that a star has an age older than the current age of the Universe is 0
- The total probability density function is now calculated from the individual star PDFs, not from their un-normalised distributions. The original algorithm effectively leads to a higher weighting of stars found in densely populated regions of the HRD and CMDs. As a result, stars in the giant branch carried a significantly lower weight than main sequence stars. This is problematic because these stars carry the most reliable information about age since their evolutionary phase is much shorter lived than the Main Sequence. Consequently, normalising the distributions over time before combining them is a first step towards making the age determination more accurate. Further steps can be taken by the human and these will be described in soon-to-come tutorials and publications. Feel free to contact [email protected] if you need more detail about this.
New Feature
Currently this only contains the starcounts.py
module, which implements the method of Dorn-Wallenstein & Levesque 2020 to retrieve the underlying count ratio of the
- Compatibility with BPASS v2.2.2 (which includes Gaia Filters) [PR22] [29]. Note that BPASS data for Gaia filters are not public yet but you may contact Jan J. Eldridge if you need them ([email protected]).
Bug Fixes:
- HRD plotting - one type had the wrong x axis [PR33]
The `AgeWizard` release
Summary
At the core of v1.5 is the age_utils
module and the AgeWizard
pipeline.
The utilities provided in there allow the easy implementation of the age determination method for resolved stellar populations that is presented in Stevance et al. in prep.
Other more general upgrades were implemented as well and are summarised below.
New Features
New Modules
- hoki.age_utils: Utilities to find ages using BPASS models.
- hoki.utils.exceptions: Hoki specific error messages and warniings created to help debugging
- hoki.utils.hoki_objects: contains the class HokiObject()
New Classes
hoki.age_utils
AgeWizard
: Toolkit and pipeline to find ages by comparing observational data to model HRDs or CMDs.
hoki.utils.exceptions
HokiWarning
HokiUserWarning
HokiDeprecationWarning
HokiFormatWarning
HokiFormatError
HokiFatalError
HokiKeyError
New Functions
find_coordinates
: Matches observational data to model CMD or HRD and retrieves their postional coordinates in Temperature-Luminosity space or Colour-Magnitude spacenormalise_1d
: Divides a 1D array by its total sumcalculate_individual_pdfs
: Calculates the Age Probability Distribution Functions of an ensemble of sources by comparing them to a requested HRD or CMDcalculate_distributions
: Searches through CMD/HRDs to collate the age distributions for a set of locations on the CMD/HRDs
Upgrades
Update to Colour Magnitude diagrams
CMD.make()
now has a parametermag_filter
andcol_filters
instead offilter1
andfilter2
so that the Magnitude Axis filter can be independent of the colour combinationCMD.at_log_age()
now has tests and is included in the tutorials.
Update to hoki classes
Hoki classes like HRDiagrams or CMD are now all HokiObjects. At the moment all they inherit are the following class attributes:
t = hoki.constants.BPASS_TIME_BINS
dt = hoki.constants.BPASS_TIME_INTERVALS
time_weight_grid = hoki.constants.BPASS_TIME_WEIGHT_GRID
Associated Pull Requests:
- Update to AgeWizard
- Update to CMD
- The AgeWizard Pull Request
Closed Issues: 2, 6, 7, 9
Hoki: Making BPASS Accessible Through Python
First Official Release!
hoki
has been reviewed and accepted by JOSS!
It is now out of beta, but will remain in continuous development as the needs of the community and BPASS models evolve.
Many thanks to @ygrange and @KshitijAggarwal for their review, and our editor @arfon.
Fixes
- A bug in the tutorials was uncovered be the referees and fixed
- Clarifications added to the tutorials and READ ME.
- Paper has been finalised! And the pdf is in the
paper
subdirectory
The JOSS clean up - Patch
Identical to the v1.3.1 release but a lot of unnecessary template files and folders left over from setting up the package have been removed to clean up to repository.
This is the last release prior to submission to the Journal of Open Source Software.
Corresponding pypi release
Version 1.3.1
New Feature
load.nebular_lines()
has been added to load the nebular emission line data into data frames with the correct column names. The nebular emission line data download link and more info can be found on this page: https://bpass.auckland.ac.nz/4.html
Dev Feature
OUTPUTS_PATH
variable created inhoki.constants
, as well as theoutputs_path
setting in yaml. This is mostly to make my life easier so I'm not counting it as a "feature" of hoki, although it could be later if I added a way in the code to easily change that setting
Bug Fixes
HRDiagrams.plot()
would crash ifabundances
was not given a tuple. Added safeguards to check the type and let the user know what type is expected.- Now automatically turns
hr_type
into a string to avoid giving people an error if they typed the right code but forgot quotes. spec.dopcor
only accepted wavelength columns under the name 'WL' - now it finds the wavelength within the given dataframe based on column index. The default is 0 because most of the time wavelength is the first column, but this is an option that users can now change.
Corresponding pypi release
Patch 1.2.1
First Beta Release of Hoki
The CMD Release
New Features
-
hoki.cmd
: a module containing theCMD
class which allows users to make their own synthetic Colour-Magnitude Diagrams from the BPASS models. It includes a plotting function like the one contained inHRDiagrams
. -
hoki.load.unpickle()
: a quick function to unpickle your files in one line instead of 3. Useful for those pickling CMD objects. -
hoki.load.set_models_path()
: A function to update thesettings.yaml
file with the users's own absolute path to the stellar models so they don't have to locatesettings.yaml
and edit it manually`.
Why is it in beta now?
We've done more user testing, fixed a few bugs and have added most core features of hoki
.
We now look forward to users breaking the code and reporting the bugs.
What's next?
Spectra ! I've started working on Integral Field Unit data and will be playing with putting together BPASS spectra and observations.
If you have any feature request, let me know by opening an issue!
Corresponding pypi release
Feature added - spec.dopcor()
hoki v1.1.0-alpha
A small and basic doppler correction feature was added - dopcor
.
The spec.py
module was created - this is where dopcor
resides. We enticipate that spec
will contain an extensive suites of spectroscopic utilities in the future to use with the BPASS synthetic spectra (and potential other spectra in similar formats).
Backwards compatibility should be conserved - please raise an issue if that is not the case.