Skip to main content

Framework for implementing high-performance numerical consistency conditions for multifield inflation models.

Project description

inflatox_banner

Inflatox - multifield inflation consistency conditions in python

License: EUPL v1.2 arXiv PyPi CI

Inflatox provides utilities to compute slow-roll parameters and turn-rates for two-field inflation models, based on the consistency condition from Generalised consistency condition first presented in Anguelova & Lazaroiu (2023)[^1] and later generalised for the purposes of this package in Wolters, Iarygina & Achúcarro (2024)[^3] arXiv:2405.11628. The consistency conditions can be used in a parameter sweep of a two-field model to find possible inflation trajectories.

[!NOTE] If this software has proven useful to your research, please consider citing JCAP07(2024)079[^3]

Features

  • symbolic solver for components of the Hesse matrix of an inflationary model with non-canonical kinetic terms, powered by sympy.
  • transpiler to transform sympy expressions into executable compiled (C) code.
  • (experimental) support for special function transpilation using the GSL
  • built-in multithreaded rust module for high-performance calculations of consistency conditions that interfaces directly with numpy and python.
  • utilities for performing parameter sweeps.
  • extendability: inflatox' exposes a python interface to calculate any intermediate quantity, which can be used to extend it with additional consistency conditions.
  • no need to read, write or compile any rust or C code manually (this is all done automatically behind the scenes).
  • no system dependencies, everything needed to run the package can be automatically installed by pip.

Installation and Dependencies

[!IMPORTANT] Inflatox requires at least python version 3.8.

The latest version of inflatox can be installed using pip:

pip install inflatox

Inflatox can be updated using:

pip install --upgrade inflatox

Example programme

The following code example shows how inflatox can be used to calculate the potential and components of the Hesse matrix for a two-field hyperinflation model.

#import inflatox
import inflatox
import sympy as sp
import numpy as np
from IPython.display import display
sp.init_printing()

#define model
φ, θ, L, m, φ0 = sp.symbols('φ θ L m φ0')
fields = [φ, θ]

V = (1/2*m**2*(φ-φ0)**2).nsimplify()
g = [
  [1, 0],
  [0, L**2 * sp.sinh(φ/L)**2]
]

#print metric and potential
display(g, V)

#symbolic calculation
calc = inflatox.SymbolicCalculation.new(fields, g, V)
hesse = calc.execute()

#run the compiler
out = inflatox.Compiler(hesse).compile()

#evaluate the compiled potential and Hesse matrix
from inflatox.consistency_conditions import GeneralisedAL
anguelova = GeneralisedAL(out)

params = np.array([1.0, 1.0, 1.0])
x = np.array([2.0, -2.0])
print(anguelova.calc_V(x, params))
print(anguelova.calc_H(x, params))

extent = [-1., 1., -1., 1.]
consistency_condition, epsilon_V, epsilon_H, eta_H, delta, omega = anguelova.complete_analysis(params, *extent)

Special function support

Inflatox features (experimental) support for transpiling special functions from scipy to C using the GSL library. The GSL (GNU Scientific Library) is not packaged together with inflatox due to its conflicting license. Inflatox merely generates code that calls GSL functions, you must still provide the headers and compiled shared libraries (libgsl and libgslcblas) yourself.

If you intend on using this feature, make sure that:

  • The GSL is installed and can be found
  • GSLCBLAS is installed and can be found
  • The GSL headers are installed and can be found

Check out the documentation of the Compiler class for a list of currently supported special functions, and the docs.md file for more technical details. If you are experiencing any issues with the gsl feature (or if a special function you need is missing), please open an issue on github or contact the authors.

Supported Architectures

The combinations of OS and CPU architecture listed down below have pre-compiled binary distributions of inflatox available via PiPy. If your arch is not listed here, you will have to compile inflatox manually.

  • Intel/AMD x86/i686 (32 bit)
    • linux/gnu (glibc >= 2.17, kernel >= 3.2)
  • Intel/AMD x86_64/amd64 (64 bit)
    • linux/gnu (glibc >= 2.17, kernel >= 3.2)
    • windows 10+
    • macOS 10.12+ / Sierra+
  • ARM aarch64 (64 bit)
    • linux/gnu (glibc >= 2.17, kernel >= 4.1)
    • macOS 11.0+ / Big Sur+

[!TIP] Apple silicon M-series chips are supported (aarch64)*

License

License: EUPL v1.2

[!CAUTION] Inflatox is explicitly not licensed under the dual Apache/MIT license common to the Rust ecosystem. Instead it is licensed under the terms of the European Union Public License v1.2.

Inflatox is a science project and embraces the values of open science and free and open software. Closed and paid scientific software suites hinder the development of new technologies and research methods, as well as diverting much- needed public funds away from researchers to large publishing and software companies.

See the LICENSE.md file for the EUPL text in all 22 official languages of the EU, and LICENSE-EN.txt for a plain text English version of the license.

References and footnotes

[^1]: Anguelova, L., & Lazaroiu, C. (2023). Dynamical consistency conditions for rapid-turn inflation. Journal of Cosmology and Astroparticle Physics, May 2023(20). https://doi.org/10.1088/1475-7516/2023/ 05/020 [^2]: 32-bit windows is no longer considered a tier-1 target by the rust project, and unsupported by some of Inflatox's dependencies. [^3]: Wolters, R, Iarygina & O. Achúcarro, A (2024). Generalised conditions for rapid-turn inflation. Journal of Cosmology and Astroparticle Physics, July 2024(79). https://doi.org/10.1088/1475-7516/2024/07/079

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

inflatox-0.9.1.tar.gz (665.6 kB view details)

Uploaded Source

Built Distributions

inflatox-0.9.1-cp37-abi3-win_amd64.whl (536.0 kB view details)

Uploaded CPython 3.7+ Windows x86-64

inflatox-0.9.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (654.3 kB view details)

Uploaded CPython 3.7+ manylinux: glibc 2.17+ x86-64

inflatox-0.9.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (636.5 kB view details)

Uploaded CPython 3.7+ manylinux: glibc 2.17+ ARM64

inflatox-0.9.1-cp37-abi3-manylinux_2_12_i686.manylinux2010_i686.whl (669.4 kB view details)

Uploaded CPython 3.7+ manylinux: glibc 2.12+ i686

inflatox-0.9.1-cp37-abi3-macosx_11_0_arm64.whl (599.8 kB view details)

Uploaded CPython 3.7+ macOS 11.0+ ARM64

inflatox-0.9.1-cp37-abi3-macosx_10_12_x86_64.whl (620.5 kB view details)

Uploaded CPython 3.7+ macOS 10.12+ x86-64

File details

Details for the file inflatox-0.9.1.tar.gz.

File metadata

  • Download URL: inflatox-0.9.1.tar.gz
  • Upload date:
  • Size: 665.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.7.4

File hashes

Hashes for inflatox-0.9.1.tar.gz
Algorithm Hash digest
SHA256 d11fd722fa641925b28abc133d4e2d0222e8b15ba51d7f622432f24742fbe0e1
MD5 9d7f4227772bf8f5bbf504a329fee4e1
BLAKE2b-256 93e6c96c59dd1a06d033a1abbc3d997bc53e3b8072fd0d86157ea92d0831a4cb

See more details on using hashes here.

File details

Details for the file inflatox-0.9.1-cp37-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for inflatox-0.9.1-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 07a62859dbb1de623fbcf80a8783b46755a291a44325f828c0a52512572234dd
MD5 10d9af0372ea2fd1acb88958486eda90
BLAKE2b-256 3df8c9ceb86850c39437766353ce34ebd45a43882291fa3813bafd8eb3801ac4

See more details on using hashes here.

File details

Details for the file inflatox-0.9.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for inflatox-0.9.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6be81acdc2aef51a1b204eb72d907de2f07285b6a6bc68e75ec4f8f6269147c6
MD5 72d158b12871d881ad633e475ccebbd6
BLAKE2b-256 d7a2a071a12a39109662a56689b62ac956c9d6db6f24fb7fa43cb1c8f6001264

See more details on using hashes here.

File details

Details for the file inflatox-0.9.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for inflatox-0.9.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ffe8c31fe61bdbf32a1df05749b59aaa6303046264c8bab26e36667a5110110b
MD5 4ced9a20c450ef8faf061ca2c76df14e
BLAKE2b-256 99bde8f235dc0a1733c55217cf177319d17f0144389aafee2e0c190d6356d5ab

See more details on using hashes here.

File details

Details for the file inflatox-0.9.1-cp37-abi3-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for inflatox-0.9.1-cp37-abi3-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 1c7df2fb90dbef2443f24d9b548fa3086ca859ea40c3554eb9783a9eb831aa6d
MD5 a4cdf9ae42abcab5b1d935cdea768957
BLAKE2b-256 c31a708b01b2d454d939427db7719b6814fafdd3a3e3b5a2f53b90f684ecf8f4

See more details on using hashes here.

File details

Details for the file inflatox-0.9.1-cp37-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for inflatox-0.9.1-cp37-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2277af9f5d2f1b17a691abc4b32b5785c30be3e898f0a885ccc405567085da25
MD5 f448962b79b0f1451e57baaccc1d0b6e
BLAKE2b-256 510161ed9d260648b02c70d341ca7f468cfcc11d27ac2d39bcdbd42f89dd7f97

See more details on using hashes here.

File details

Details for the file inflatox-0.9.1-cp37-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for inflatox-0.9.1-cp37-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 684d08ebaed0500f8be3098c7dba2660c1e230b04a74c27c5edc513f1313185a
MD5 e9d0fc9605cc00acd6621f544634606c
BLAKE2b-256 05433d0bc4d121fcc6ba82ed0639a5aa60c707336f5bc45cff3df1bd42e6d1c2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page