Version history
1.0.0 (planned changes)
GW power spectrum for low wavenumbers by using the formulae by Giombi et al., 2024.
More polished documentation and examples.
Improve unit testing by using more comprehensive reference data, which are stored externally as HDF5. Test whether Git LFS on GitLab would be a suitable storage.
Improve integration with Cobaya and add examples.
0.9.0
These modifications were Mika’s master’s thesis.
Restructure the project
Provide an object-oriented interface for bubbles and spectra
Replace the fluid profile solver with a new implementation
Add support for equations of state beyond the bag model - Temperature-dependent degrees of freedom and sound speed
Add conversion to the gravitational wave frequencies and amplitudes today (\(\Omega_\text{gw,0}\)): include the omgw0 branch by Chloe Hopling
Add analysis utilities
Improve error handling
Improve documentation and publish it on Read the Docs
Improve compatibility for macOS on ARM
Improve packaging for PyPI and Docker
Update dependencies
License the project with the MIT license
Fix various bugs
0.0.1
These modifications were Mika’s summer project in 2021.
Improve code structure by splitting
pttools.bubbleandpttools.ssmtoolsto multiple submodules.- Improve code quality.
Lint each commit automatically with Pylint.
Improve compliance with PEP8.
Add support for other integrators in addition to
scipy.integrate.odeint()such asscipy.integrate.solve_ivp()and NumbaLSODA.- Speed up the simulations with Numba and NumbaLSODA.
Full GW power spectrum calculations: 5x for 1 CPU, 7x for 4 CPUs
Sine transform: Nx for N CPU cores (trivially parallelisable, minus some overhead)
ODE integration: 20x faster than
scipy.integrate.odeint()with pure Python
- Add unit testing.
Set up CI/CD pipeline on GitHub Actions.
Set up automatic testing with Python versions from 3.6 to 3.9 and with multiple versions of Numba and other libraries.
Set up automatic testing with all major operating systems (GNU/Linux, Windows, macOS).
Set up automatic performance testing using timeit.
Set up automatic profiling (
tests.profiling) of the performance-critical parts of the code such aspttools.ssmtools.spectrum.power_gw_scaled()andtests.paper.ssm_paper_utils.do_all_plot_ps_compare_nuc()using cProfile, Pyinstrument and YAPPI.
Package PTtools with setuptools so that it can be installed with pip. - This prepares the project for being published on PyPI.
Add example scripts for running on Slurm clusters.
Add Sphinx documentation (the one you’re currently reading).
Previous development
2020-06
Bubble
Small improvements to docstrints.
Start introducing checks for physical (\(v_\text{wall}, \alpha_n\)): check_wall_speed, check_physical_parameters
SSMtools
use analytic formula for high-k sin transforms. Should eliminate spurious high-k signal in GWPS from numerical error.
sin_transform now handles array z, simplifying its calling elsewhere
resample_uniform_xi function introduced to simply coding for sin_transform of lam
Allow calls to power spectra and spectral density functions with 2-component params list, i.e. params = [v_wall, alpha_n] (parse_params) exponential nucleation with parameters (1,) assumed.
reduced NQDEFAULT from 2000 to 320, to reduce high-k numerical error when using numerical sin transform
Planned changes
Bubble
Include bubble nucleation calculations of beta (from \(V(T,\phi)\))
SSMtools
Check default nucleation type for nu function.