Flavour-oscillation probabilities for neutrinos with numpy/torch backends.
Project description
Neutrino Interferometry - nu_waves Python library
What is it?
Neutrino Interferometry, or nu_waves, is a simple Python library
that calculate flavor oscillation of neutrinos.
You can input your own parameters and get the oscillation probabilities.
How to install?
pip install nu-waves
Features
- Embedded GPU acceleration (MPS, CUDA)
- Oscillation framework with
Nneutrinos - Vacuum oscillations
- Custom smearing function (L and E)
- Constant matter MSW
- Multi-layer matter MSW
- Earth model (PREM) with
cosz - Adiabatic transitions
Some nice pictures
Examples
2 flavors oscillation in vacuum
import numpy as np
import matplotlib.pyplot as plt
from nu_waves.models.mixing import Mixing
from nu_waves.models.spectrum import Spectrum
from nu_waves.propagation.oscillator import Oscillator
import nu_waves.utils.flavors as flavors
# sterile test
osc_amplitude = 0.1 # sin^2(2\theta)
angles = {(1, 2): np.arcsin(np.sqrt(osc_amplitude)) / 2}
pmns = Mixing(dim=2, mixing_angles=angles)
U_pmns = pmns.get_mixing_matrix()
print(np.round(U_pmns, 3))
# 1 eV^2
spec = Spectrum(n=2, m_lightest=0.)
spec.set_dm2({(2, 1): 1})
spec.summary()
m2_diag = np.diag(spec.get_m2())
# oscillator object that calculates the oscillation probability
osc = Oscillator(mixing_matrix=U_pmns, m2_list=spec.get_m2())
# get the oscillation probabilities
E_fixed = 3E-3
L_min, L_max = 1e-3, 20e-3
L_list = np.linspace(L_min, L_max, 200)
print(L_list)
P = osc.probability(
L_km=L_list, E_GeV=E_fixed,
alpha=flavors.electron,
beta=flavors.electron, # muon could be sterile
antineutrino=True
)
# draw it
plt.figure(figsize=(6.5, 4.0))
plt.plot(L_list * 1000, P, label=r"$P_{e e}$ disappearance", lw=2)
plt.plot(L_list * 1000, [1] * len(L_list), "--", label="Total probability", lw=1.5)
plt.xlabel(r"$L_\nu$ [m]")
plt.ylabel(r"Probability")
plt.title(f"eV$^2$ sterile with $E_\\nu$ = {E_fixed * 1000} MeV")
# plt.xlim(L_min, L_max)
plt.ylim(0, 1.05)
plt.legend()
plt.tight_layout()
plt.show()
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
nu_waves-1.0.0.tar.gz
(29.1 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
nu_waves-1.0.0-py3-none-any.whl
(32.5 kB
view details)
File details
Details for the file nu_waves-1.0.0.tar.gz.
File metadata
- Download URL: nu_waves-1.0.0.tar.gz
- Upload date:
- Size: 29.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2f6f0ef6136878d0379678d56a234e2441f161bdf8183f54ae16da77f1b17db5
|
|
| MD5 |
16119f39432f296cd15dbf3fc7b6682a
|
|
| BLAKE2b-256 |
a79509bf5be8d20aeabf2bbedb9a8d1f5180db356a80986e56f1c2ed5bba7330
|
File details
Details for the file nu_waves-1.0.0-py3-none-any.whl.
File metadata
- Download URL: nu_waves-1.0.0-py3-none-any.whl
- Upload date:
- Size: 32.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e9a826cfdb5fb5629d033fb5dcc536513df222f73d00f2b4b4da174d9fdaaac
|
|
| MD5 |
c8e38a30e8746d71a91f351d9fbec491
|
|
| BLAKE2b-256 |
536521d1fd42d50e330f78c8ab35f8b60538ea66287c39effca8326b1855bc89
|