Skip to main content

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 N neutrinos
  • 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

vacuum_pmns.jpg matter_constant_test.jpg matter_prem_test.jpg adiabatic_sun_ssm_test.jpg vacuum_2d_pmns.jpg vacuum_2flavors.jpg

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(n_neutrinos=2, mixing_angles=angles)
U_pmns = pmns.build_mixing_matrix()
print(np.round(U_pmns, 3))

# 1 eV^2
spec = Spectrum(n_neutrinos=2, m_lightest=0.)
spec._generate_dm2_matrix({(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,
    flavor_emit=flavors.electron,
    flavor_det=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.2.0.tar.gz (35.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nu_waves-1.2.0-py3-none-any.whl (41.2 kB view details)

Uploaded Python 3

File details

Details for the file nu_waves-1.2.0.tar.gz.

File metadata

  • Download URL: nu_waves-1.2.0.tar.gz
  • Upload date:
  • Size: 35.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for nu_waves-1.2.0.tar.gz
Algorithm Hash digest
SHA256 a55d299908172416ab5692e8348d8547dd97a1aba65d7ca1db1e66c5b0a79e59
MD5 3175e4d38cb1139eb2aca7a2c0e95778
BLAKE2b-256 5ee37d2a5c2f360d164464985d94e3d9aa95cb3493205cdf6c214ff20fe7c2f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for nu_waves-1.2.0.tar.gz:

Publisher: publish.yml on nadrino/neutrino-interferometry

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nu_waves-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: nu_waves-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 41.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for nu_waves-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cd2d4e8dee44958ea338e401fd873f922f77f8cb7f9ce43daefad87e67a6c8cc
MD5 898134c21f93b1ce5d0c4ca1a3c3b0f3
BLAKE2b-256 cc7bba92ab5cabfc65ec7e7566c734f3fa66a6c6a80fc17aecc5c24ab79acc3e

See more details on using hashes here.

Provenance

The following attestation bundles were made for nu_waves-1.2.0-py3-none-any.whl:

Publisher: publish.yml on nadrino/neutrino-interferometry

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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