Skip to main content

absnoise

PyPI DOI tests

Andreev-bound-state occupation noise in proximity Josephson junctions, computed from the level structure to the detector budget: the exact finite-length Andreev spectrum, the intrinsic occupation-noise limit of Andreev thermometry, and the resulting temperature, frequency-noise and calorimetric energy resolutions of an inductively read junction. The package exists because the occupation of Andreev levels fluctuates even in equilibrium, and that fluctuation, not the readout, is what ultimately limits a proximity Josephson thermal detector.

Decoding occupation from readout traces (new in v0.4)

The decode module solves the inverse problem the rest of the package predicts: given a noisy sampled readout of the two-state occupation, a hidden-Markov decoder returns the exact posterior occupation probability at every sample (forward-backward), the most probable state path (Viterbi), and maximum-likelihood estimates of f, tauA and the readout levels from the trace alone (Baum-Welch EM, whose log-likelihood is provably non-decreasing, a property the tests check). Validated against the package's own telegraph Monte Carlo: state recovery above 99.9 percent at high SNR, posterior confidence matching realized accuracy to better than a percent, and rate estimates landing within the transition-count statistical error of the ground truth.

from absnoise.decode import TelegraphHMM, fit_hmm
model, logliks = fit_hmm(y_trace)          # EM from the raw trace
f_hat, tau_hat = model.rates(dt)
posterior = model.posterior(y_trace)       # P(occupied) per sample

Status

v0.4.0 (alpha). Implemented and tested:

  • exact finite-length ABS solver from the closed-form secular equation cos(2 arccos(E/Delta) - eta(E)) = 1 - tau + tau cos(phi), with the continuum (E > Delta) free energy from the scattering phase
  • weak-coupling BCS gap Delta(T) solved from the gap equation itself (tabulated once per process; no data file), because the widely used tanh interpolation misrepresents dDelta/dT at low temperature
  • closed-form short-junction ensemble: current-phase relation, critical current, Josephson inductance, occupation-channel responsivity and noise sums, Andreev heat capacity, and the Cauchy-Schwarz temperature-resolution bound var(T) >= 2 kB T^2 tauA / (C_A t)
  • level-resolved finite-length sums and the bound-saturation deficit
  • four-state (pair-process) master equation with exact spectra, activated exchange times, and the nonequilibrium occupation penalty
  • telegraph-noise Monte Carlo and single-sided PSD estimation
  • device budgets: phonon thermal-fluctuation noise, resonator fractional-frequency noise spectra, matched-filter calorimetric energy resolution
  • six cited graphene junction contact recipes (Jung et al., Table I) and graphene electronic thermodynamics (heat capacity, electron-phonon cooling, Lee et al.)
  • matched-level design and nonlinear click dynamics (new in v0.2): the matched condition Delta*(T0) = 2.3994 kB T0 solved from the gap equation (matched_Tc, matched_recipe), the full nonlinear post-deposit response with a stiffness-safe exponential integrator (click_template), a whitened matched-filter single-photon click Monte Carlo with all three noise channels (click_monte_carlo), and the exact self-heating steady state (steady_temperature)

Verified against closed forms in the test suite rather than asserted: the short-junction limit E = Delta sqrt(1 - tau sin^2(phi/2)) to 1e-12; Kulik levels at tau = 1 to 1e-10; the ballistic anchor Ic = 2 e Delta / hbar per orbital mode to 5e-3 (phase-grid limited); exact vanishing of the continuum phase dependence at L = 0; the BCS midpoint u(0.5) = 0.956887 and both asymptotes; exact saturation of the Cauchy-Schwarz bound by uniform-transparency short junctions to 1e-9, and its non-violation by dispersing finite-length levels; the analytic occupation responsivity to 1e-5; the pair-process master equation's exact singles limit, equilibrium-variance invariance, monotone shortening of the correlation time, probability conservation, and spectrum-to-variance sum rule; the telegraph Monte Carlo Lorentzian plateau, knee, and the variance convention var = S(0)/(2t) (statistics-limited tolerances); and the exact Lorentzian knee of the predicted resonator frequency-noise spectrum.

For v0.2 the test suite additionally asserts: the matched-level condition to 1e-9 from the solved gap equation; energy conservation of the click integrator to machine precision through the exact peak-temperature identity; dip-and-recovery of the occupation template in both exchange scenarios; photon-versus-dark ordering of the click Monte Carlo; and the exact closed-form round trip of the self-heating steady state.

Not yet implemented, stated plainly because they matter physically: continuum contributions to the occupation channel are neglected (bound levels dominate for L < xi; the largest L/xi in the recipe set is 0.43; continuum_share quantifies the supercurrent-channel analog), and phonon-bath heating by the substrate is treated only through the steady-state electron temperature, not dynamically.

Install and use

pip install absnoise

For development, clone the repository and pip install -e .[test].

import numpy as np
from absnoise import RECIPES, SensorBudget

budget = SensorBudget(RECIPES[1])          # Ti/Al/Au recipe, Jung et al.
T = 0.3 * budget.recipe.Tc                 # operating temperature (K)
tauA = 1e-6                                # occupation correlation time (s)

achieved, sums = budget.dT_andreev(T, tauA, t=1.0)
print(f"temperature resolution {achieved*1e6:.2f} uK in 1 s")

Sy, Snu = budget.freq_noise_spectrum(T, tauA, np.array([0.0, 1e3, 1e6]))
sigE = budget.energy_resolution(T, tauA)
print(f"matched-filter energy resolution {sigE:.3e} J")

Units are SI throughout; PSDs are single-sided with the variance convention var(t-average) = S(0)/(2t), validated by Monte Carlo in the test suite.

Allan variance (new in v0.3)

Occupation noise is exponentially correlated, so the practical question for a thermometer readout is stability versus integration time: averaging helps until the correlation time is passed, then improves only as the white floor S(0)/(2T). allan_variance computes the overlapping two-sample variance of a sampled series (Allan, Proc. IEEE 54, 221 (1966); Riley, NIST SP 1065, 2008), and avar_exponential gives the closed form this package's own noise obeys,

AVAR(T) = var (tau/T^2) (2T - 3 tau + 4 tau e^(-T/tau)
          - tau e^(-2T/tau)),

with avar_white the S0/(2T) floor. The closed form is not taken on faith: the test suite integrates the defining double integrals numerically and checks both limits, a machine-precision drift identity, and seeded telegraph Monte Carlo against it.

Cited constants

The six junction recipes ship with full provenance: Table I of W. Jung, E. G. Arnault, B. Huang, J. Park, S. Jang, K. Watanabe, T. Taniguchi, D. Englund, K. C. Fong and G.-H. Lee, "Engineering Andreev Bound States for Thermal Sensing in Proximity Josephson Junctions", Phys. Rev. Applied 26, 014078 (2026) (arXiv:2503.06850). Graphene electron-phonon cooling follows the measured coupling of G.-H. Lee et al., Nature 586, 42 (2020) (resonant-supercollision regime, delta = 3, Sigma ~ 2 W m^-2 K^-3). Physical constants are CODATA 2018. The test suite locks every recipe number to the source; a change to any of them must arrive with a new source.

Methodological basis

T. M. Mahim, A. S. M. Mohsin and M. M. Rahman, "Andreev occupation noise sets the sensitivity limit of proximity Josephson thermal detectors"; code for the paper: https://github.com/Tanvir-Mahmud-Mahim/andreev-occupation-noise

This package is the general-purpose engine (v0.2 includes the matched-level design and the nonlinear click Monte Carlo); the paper repository reproduces the specific study: the device grids, the figures, the approximation-resolution analysis, and the archived trial data.

Citing the tool

The repository carries a CITATION.cff file with citation metadata. If this software contributes to a publication, please cite the versioned DOI you used.

Support and governance

The package is written and maintained by Tanvir Mahmud Mahim (Department of Electrical and Electronic Engineering, BRAC University), who reviews every change and takes the final decision on scope and releases. There is no separate governance body; design questions are discussed in the open in issues and pull requests, and the standing rule of CONTRIBUTING.md binds the maintainer exactly as it binds contributors: a change that touches physics arrives with a test, and a constant arrives with its source.

Support runs through the issue tracker at https://github.com/TaN-MM-Org/absnoise/issues. Usage questions are welcome there alongside bug reports; a docstring that left a unit or a sign convention unclear is treated as a documentation bug, not as user error. The maintainer aims to respond within a week.

While the version is below 1.0 the API may still move between minor versions; such changes are called out in the release notes. Recipe constants are governed by the same rule as code: the test suite locks every number to its cited source, and a replacement number must arrive with a new source.

License

Apache-2.0

Download files

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

Source Distribution

absnoise-0.4.0.tar.gz (43.0 kB view details)

Uploaded Source

Built Distribution

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

absnoise-0.4.0-py3-none-any.whl (37.0 kB view details)

Uploaded Python 3

File details

Details for the file absnoise-0.4.0.tar.gz.

File metadata

  • Download URL: absnoise-0.4.0.tar.gz
  • Upload date:
  • Size: 43.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for absnoise-0.4.0.tar.gz
Algorithm Hash digest
SHA256 6ab97aa1d844d110358547e923f1d1ed6f264bbb081f3f4dbc5338a2b99255fc
MD5 a3ad956a92b85cf876ef0babe4c27822
BLAKE2b-256 8fc249edd65015235f3ad5619fc43745f64cb58211d1cd2ff4888b4ca1d5db64

See more details on using hashes here.

Provenance

The following attestation bundles were made for absnoise-0.4.0.tar.gz:

Publisher: publish.yml on TaN-MM-Org/absnoise

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

File details

Details for the file absnoise-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: absnoise-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 37.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for absnoise-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 afe43bba3782e00f949b46fc8f6a69e35600b17b65a0d4adb8b6ecd2dee051ac
MD5 e10fa71cc40b5d951a4b66a95b5dfb69
BLAKE2b-256 0e50d4c97ac74812712172b79204d91f9e78aa3d01112caa0e6b772f36a9517b

See more details on using hashes here.

Provenance

The following attestation bundles were made for absnoise-0.4.0-py3-none-any.whl:

Publisher: publish.yml on TaN-MM-Org/absnoise

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

Release history Release notifications | RSS feed

0.5.0

2 files

This release

0.4.0 This release

2 files

0.3.0

2 files

0.2.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page