Skip to main content

jacscanomaly

Documentation Status

jacscanomaly is a Python package for scan-based anomaly detection in time-series light curves.

The package is designed to detect microlensing planetary anomalies by scanning residuals after fitting a single lens model (e.g., PSPL), with low-memory C++ backends for large survey light curves and JAX-based fitters for flexible model development.


Features

  • Scan-based anomaly detection on residuals after single-lens fitting
  • C++ survey backends for the PSPL fit and anomaly grid scan
  • JAX model components for flexible single-lens and higher-order models
  • Candidate quality diagnostics: effective contributing points, peak-contribution fraction, and time-correlation metrics
  • Built-in visualization: PSPL fit, residuals, and anomaly scan summary

Documentation

The full documentation is available on ReadTheDocs:

https://jacscanomaly.readthedocs.io/en/latest/

Start with:


Installation

pip install jacscanomaly

Quick Example

import numpy as np
import matplotlib.pyplot as plt
from jacscanomaly import CandidateCriteria, Finder, FinderConfig

# load data (time, flux, flux_err)
data = np.load("example_data.npy")
time, flux, ferr = data[:, 0], data[:, 1], data[:, 2]

# run anomaly finder
config = FinderConfig(
    fitter_kind="pspl",
    candidate_criteria=CandidateCriteria(min_n_eff=2.0),
)
finder = Finder(config)
result = finder.run(time, flux, ferr)

# For magnitude data, pass mag and magerr in the same positions and select it:
# result = finder.run(time, mag, magerr, data_kind="mag")

# You can still pass an explicit initial guess if desired:
# p0 = np.array([10000, 10, 0.3])
# result = finder.run(time, flux, ferr, p0)

result.print_summary()

# In notebooks, get a one-row table:
# display(result.summary_table())

Visualization

finder.plot_result()
finder.plot_anomaly_window()
plt.show()

These commands produce two complementary visualizations:

  1. Three-panel summary plot (finder.plot_result)

    • Top: Observed light curve with the best-fit baseline model (PSPL)
    • Middle: Residuals after baseline fitting
    • Bottom: Anomaly scan result (Δχ² vs. time), showing where localized deviations from the baseline model are detected
  2. Focused anomaly window plot (finder.plot_anomaly_window)

    • A zoomed-in view around the best anomaly candidate
    • Residuals are shown together with the anomaly template and the flat model

Example notebooks are available in example/:

  • template_scan_example.ipynb for the standard bell-template scan
  • template_free_example.ipynb for the template-free residual chi-square scan

For a refined planetary residual, measure its peaks and dips directly:

features = signal.measure_features()
print(features.n_peaks, features.n_dips)
for feature in features.features:
    print(feature.kind, feature.time, feature.timescale, feature.strength)

This measurement does not assign a caustic shape or estimate binary-lens parameters.


Method Overview

The workflow of jacscanomaly is:

  1. First fitting Fit a single lens model (e.g. PSPL) to the full light curve.

  2. Residual analysis Compute residuals:

    residual = data − single_lens_model
    
  3. Local anomaly scan For each grid point (t0, teff), compare:

    • a flat model
    • an anomaly template model within a local time window.
  4. Detection statistic The improvement is measured by:

    Δχ² = χ²_flat − χ²_anomaly
    

Anomaly Score

To quantify how significant the best anomaly candidate is relative to others, we define a score:

score = (Δχ²_best − median(Δχ²_others)) / robust_scale(Δχ²_others)

The reference population is restricted to raw clusters from the same observing season and a comparable teff. Candidate-quality cuts are applied only after raw cluster extraction, so changing those cuts does not redefine the score background. The center and scale are estimated robustly with the median and MAD. Strong secondary candidates are removed with adaptive one-sided clipping rather than an unconditional percentile cut.

This measures how strongly the best candidate stands out from the rest of the grid.

Since v0.4.0, the score background is local to the candidate's observing season and timescale, with robust median/MAD normalization. Quality cuts do not change that background, and strong secondary clusters are removed only by adaptive one-sided clipping. In checks on four retained Roman light curves, the selected candidate and its Δχ² were unchanged while the score changed moderately, indicating that the normalization is less sensitive to unrelated seasons and timescales. Existing simscan efficiency maps using score thresholds should be recalibrated with v0.4.0 scores.


Candidate Quality Diagnostics

Large Δχ² values can sometimes be dominated by one or two points. To make this visible, jacscanomaly stores per-candidate support diagnostics in result.best.quality and per-grid diagnostics in result.grid_metrics_all.

For the best candidate:

q = result.best.quality
print(q.n_window)     # points in the local chi2 window
print(q.n_contrib)    # points above the per-point improvement threshold
print(q.n_eff)        # effective number of contributing points
print(q.peak_frac)    # strongest-point fraction of total positive improvement
print(q.rho1)         # lag-1 autocorrelation of per-point improvements
print(q.longest_run)  # longest consecutive run of contributing points

The effective point count is computed from positive per-point improvements using a participation-ratio style statistic:

n_eff = (sum_i u_i)^2 / sum_i u_i^2

where u_i = max(0, chi2_flat_i - chi2_anomaly_i). A one-point-dominated candidate has n_eff close to 1 and a large peak_frac.

result.grid_metrics_all is a NumPy array with columns:

[t0, teff, dchi2, n_window, n_contrib, n_eff, peak_frac, rho1, longest_run]

Result Summaries

AnomalyResult provides both CLI-friendly and notebook-friendly summaries:

result.print_summary()       # print formatted text
text = result.summary_text() # return formatted text
row = result.summary_dict()  # return a plain dictionary
table = result.summary_table()  # pandas.DataFrame when pandas is installed

print(result) also shows the formatted summary text.


Configuration

Key parameters are controlled via FinderConfig:

from jacscanomaly import CandidateCriteria, FinderConfig

config = FinderConfig(
    grid_backend="cpp",  # default for PSPL survey scans
    single_fit_backend="cpp",
    teff_init=0.03,      # initial anomaly timescale
    teff_grid_n=20,      # number of teff grid points
    sigma=3.0,           # per-point improvement threshold for n_contrib
    candidate_criteria=CandidateCriteria(min_n_eff=2.0),
    best_score_teff_ratio=2.0,
    best_score_upper_clip_sigma=5.0,
)

See FinderConfig for the full list of options.

For finite-source single-lens baselines without JAX autodiff, use the VBMicrolensing finite-difference fitters:

config = FinderConfig(
    fitter_kind="fspl_vbm_fd",
    grid_backend="cpp",
)

For GULLS-convention spacecraft parallax, use the standard native model and select the coordinate convention explicitly:

config = FinderConfig(
    fitter_kind="fspl_space_parallax",
    grid_backend="cpp",
    ra_deg=267.3,
    dec_deg=-29.9,
    tref=2461504.0,
    satellite_ephemeris_path="gulls_orbit5_heliocentric.dat",
    parallax_observer_convention="gulls",
    parallax_time_scale="hjd",
)

Parallax fitters evaluate the trajectory and finite-source magnification in the compiled C++/VBMicrolensing backend and optimize nonlinear parameters with SciPy trust-region least squares.


Example Data

The light curves used as examples in this repository are drawn from an original set of 2,371 simulated Roman light curves generated by the Roman Galactic Exoplanet Survey Project Infrastructure Team (RGES PIT), WG07 Survey Simulations and Pipeline Validation (Farzaneh Zohrabi, Matthew Penny, Macy Huston, Ali Crisp, et al).

This representative sample of 2,371 light curves was selected assuming the Cassan exoplanet mass function and consists of simulated Roman light curves of planetary microlensing events, including higher-order effects such as parallax and orbital motion.


Algorithmic Background

The anomaly scan implemented in jacscanomaly is inspired by the systematic anomaly search methodology developed for microlensing surveys (e.g., the KMTNet AnomalyFinder series). In particular, the approach of scanning residual light curves over a grid of anomaly times and durations is based on key ideas presented in:

Zang, W., Jung, Y., Yee, J., et al. (2021). Systematic KMTNet Planetary Anomaly Search, Paper I: OGLE-2019-BLG-1053Lb, A Buried Terrestrial Planet. The Astronomical Journal, 162, 163.
DOI: 10.3847/1538-3881/ac12d4 :contentReference[oaicite:3]{index=3}

This work described a semi-automated search algorithm that iteratively scans events for localized deviations relative to a baseline model and quantifies the significance of detected signals — an idea that is central to the grid-scan and Δχ² evaluation in jacscanomaly.


Finite-source magnification (FSPL)

jacscanomaly provides a standard FSPL fitter and a CPU/VBMicrolensing variant. All annual and space-parallax FSPL models use the compiled native trajectory/VBMicrolensing backend.

VBMicrolensing is installed as a required dependency because the native FSPL and parallax extensions are part of the standard build. The historical extra remains an accepted no-op:

pip install -e ".[vbm]"

The VBM fitters keep the anomaly grid scan in the compiled C++ backend when grid_backend="cpp" is selected.

For the JAX/microjax FSPL fitters, finite-source magnifications are computed using an external JAX-based implementation.

The original FFT-based extended-source algorithm is from: https://github.com/git-sunao/fft-extended-source

This algorithm is provided in JAX form by: https://github.com/ShotaMiyazaki94/microjax

Specifically, jacscanomaly uses the FFT disk-integration implementation available through:

from microjax.fastlens import fspl_disk

Note: jacscanomaly currently requires the GitHub source version of microjax. The PyPI package microjaxx==0.1.1 may not expose microjax.fastlens.fspl_disk.

Install microjax from source before using FSPL functionality:

git clone https://github.com/ShotaMiyazaki94/microjax.git
cd microjax
python -m pip install -e .

You can verify the installation with:

from microjax.fastlens import fspl_disk

Citation

If you use jacscanomaly in academic work, including journal articles, conference proceedings, or theses, please cite the software.

Citation metadata is provided in the citation.cff file in this repository, which can be used directly by GitHub and reference managers.


Requirements

  • Python ≥ 3.9
  • numpy
  • jax
  • scipy
  • matplotlib

VBMicrolensing ≥ 5.5 is also required to build the native C++ extensions.


Development

Install the package with development dependencies:

pip install -e ".[dev]"

Run the unit tests:

pytest

Run the tests with coverage:

coverage run -m pytest
coverage report

Build the Sphinx documentation locally:

sphinx-build -W -b html docs docs/_build/html

Release files for jacscanomaly 0.5.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jacscanomaly 0.5.2
File Size Uploaded
jacscanomaly-0.5.2.tar.gz 1.9 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for jacscanomaly 0.5.2
File
jacscanomaly-0.5.2-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
jacscanomaly-0.5.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 Details
jacscanomaly-0.5.2-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
jacscanomaly-0.5.2-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
jacscanomaly-0.5.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 Details
jacscanomaly-0.5.2-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
jacscanomaly-0.5.2-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
jacscanomaly-0.5.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 Details
jacscanomaly-0.5.2-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
jacscanomaly-0.5.2-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
jacscanomaly-0.5.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details
jacscanomaly-0.5.2-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
jacscanomaly-0.5.2-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
jacscanomaly-0.5.2-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details
jacscanomaly-0.5.2-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details

Total release size: 45.1 MB

Release files / jacscanomaly-0.5.2.tar.gz

Download URL jacscanomaly-0.5.2.tar.gz
Size 1.9 MB
Tags Source
SHA-256 checksum
How to use checksums
502912ea787622cdd13ff909e1b6dafa886f0d9d00d1e906eb49d1c4263c8a6b
BLAKE2b-256 checksum
How to use checksums
25d368f68991fc6bc649248955a8b7e61448a2a64df92334fad7c263439205d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.

Transparency log

Release files / jacscanomaly-0.5.2-cp313-cp313-win_amd64.whl

Download URL jacscanomaly-0.5.2-cp313-cp313-win_amd64.whl
Size 2.3 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
c4b8cb3b1ba696d5450a7bc8ce40a7a5686617759af003287a44f5300adb1841
BLAKE2b-256 checksum
How to use checksums
5153bcf00bce45a2472d0e6e46608f70dddc2eb3931cd6328945405cfe325c16
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.

Transparency log

Release files / jacscanomaly-0.5.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL jacscanomaly-0.5.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 4.0 MB
Tags CPython 3.13 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6dfa452e4e21e3520989e93eefc091d6771f3921734552ac9a73dd1f21fb35fb
BLAKE2b-256 checksum
How to use checksums
bc9781cdcd5bfb742d23e7c2d68dc6225f4b7524039a22701e7b0bde60984755
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.

Transparency log

Release files / jacscanomaly-0.5.2-cp313-cp313-macosx_11_0_arm64.whl

Download URL jacscanomaly-0.5.2-cp313-cp313-macosx_11_0_arm64.whl
Size 2.3 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d299acc8ac9bf4ec0709a1ac586b8cb977bbff43373e87b2421641253d68bc66
BLAKE2b-256 checksum
How to use checksums
eef84bc7b0866d50285e87825c5df35c4c0861a8c6dc0198f66ff70f2d3348f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.

Transparency log

Release files / jacscanomaly-0.5.2-cp312-cp312-win_amd64.whl

Download URL jacscanomaly-0.5.2-cp312-cp312-win_amd64.whl
Size 2.3 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
d57a42ab0b616f073f403e2f1a8aa5d965326a31026d38b62178ea2ca5b0011b
BLAKE2b-256 checksum
How to use checksums
556f0d69ff39bbe17137e0b27585c7c5fc01879d73541ea4b16104da99d01ffd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.

Transparency log

Release files / jacscanomaly-0.5.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL jacscanomaly-0.5.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 4.0 MB
Tags CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
fc45f1d4f97a21abc3b3a58c7cee325025f52016cb1f281ddf0d5a9b3b4854d8
BLAKE2b-256 checksum
How to use checksums
5895e2aad535b5f32e891bbd98f13756f04ac18409eb7ca0961d4e5b69604d0a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.

Transparency log

Release files / jacscanomaly-0.5.2-cp312-cp312-macosx_11_0_arm64.whl

Download URL jacscanomaly-0.5.2-cp312-cp312-macosx_11_0_arm64.whl
Size 2.3 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
9d4abcc1f6aefdaec337fb1ade3d80d27e6274b39b264f65bfdc4a1faf61e5d5
BLAKE2b-256 checksum
How to use checksums
5694596b5f8a2b4c435292187d7e01833d0e2030863f5a8c84e3f0dbf9bdc93c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.

Transparency log

Release files / jacscanomaly-0.5.2-cp311-cp311-win_amd64.whl

Download URL jacscanomaly-0.5.2-cp311-cp311-win_amd64.whl
Size 2.3 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
df70b225db987e26f3a2717d37be3212fcb8f1cc743913e8ceba1442ee05eb97
BLAKE2b-256 checksum
How to use checksums
8a2953d2ee5bca8bb5918462338c686c386ffdc88a252aa133f2f42acbcfc654
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.

Transparency log

Release files / jacscanomaly-0.5.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL jacscanomaly-0.5.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 4.0 MB
Tags CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
015989836676b936fd14b74bd6a702061a04c788080f81f8261c59a3d08c828e
BLAKE2b-256 checksum
How to use checksums
e6221915ae642805bc22364148c706ad78a60ccd740d17fbef2958da02dc3751
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.

Transparency log

Release files / jacscanomaly-0.5.2-cp311-cp311-macosx_11_0_arm64.whl

Download URL jacscanomaly-0.5.2-cp311-cp311-macosx_11_0_arm64.whl
Size 2.3 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
eefb8cc6e6ab747ccb866db567028ba0a41b94c05221d91683793416d1f2e352
BLAKE2b-256 checksum
How to use checksums
45e5af1198037319940831ad1a2fc5a46cbaa5aeb0edbf4d7795e640f8b1dc48
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.

Transparency log

Release files / jacscanomaly-0.5.2-cp310-cp310-win_amd64.whl

Download URL jacscanomaly-0.5.2-cp310-cp310-win_amd64.whl
Size 2.3 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
a0b7e933d2b1f4316a7debe6df1011bb175e097bb93e17fa4ed492631f84d2d2
BLAKE2b-256 checksum
How to use checksums
389a39a594d6509b8d8d2ba094b42e646ae3e8838c39882fbcba3f85274452ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.

Transparency log

Release files / jacscanomaly-0.5.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL jacscanomaly-0.5.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 4.0 MB
Tags CPython 3.10 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
da1d80f45c0e2b63fa9fd31c6b73d05145bcf0f592908e61e0571026339974eb
BLAKE2b-256 checksum
How to use checksums
26d6e9a6134cd1d11f866cfedafd81fc22ae447f7c79df915b32b02792214906
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.

Transparency log

Release files / jacscanomaly-0.5.2-cp310-cp310-macosx_11_0_arm64.whl

Download URL jacscanomaly-0.5.2-cp310-cp310-macosx_11_0_arm64.whl
Size 2.3 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f96e872dca65737f5acd78735b3ef2fad4e8312f3886606981ce9308ba0d6610
BLAKE2b-256 checksum
How to use checksums
b80c3b5ebb386c17246d056fc5439c2f3272ff2a0c8f0e0407d87e5f20266f78
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.

Transparency log

Release files / jacscanomaly-0.5.2-cp39-cp39-win_amd64.whl

Download URL jacscanomaly-0.5.2-cp39-cp39-win_amd64.whl
Size 2.3 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
f2ec7d5eed8c826821289fd6040434f73963e812bb8bd032e654ad5680a232fc
BLAKE2b-256 checksum
How to use checksums
a112b73b06328d2da1298d0281b728dfd02a9a65025c314201f622f2cd8cf3de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.

Transparency log

Release files / jacscanomaly-0.5.2-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL jacscanomaly-0.5.2-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 4.0 MB
Tags CPython 3.9 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
78c57d5097cf952b6880a4bc8a6122720742dced09e0f85e0befda61576afe68
BLAKE2b-256 checksum
How to use checksums
393d17c8c3e8af20e313dbeb4ca6714737e56dad07dc6a03a5f3389222015f22
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.

Transparency log

Release files / jacscanomaly-0.5.2-cp39-cp39-macosx_11_0_arm64.whl

Download URL jacscanomaly-0.5.2-cp39-cp39-macosx_11_0_arm64.whl
Size 2.3 MB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1be7e640bf3e62f77d22f971b1cca9aa704aadba88a67c2d49925dfd7d4e135f
BLAKE2b-256 checksum
How to use checksums
adab46ab4f7b68239d57527418921050b147ec9c1d073f5f845ec1b4e6934579
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.5.2 This release

16 release files

0.5.1

16 release files

0.5.0

1 release file

0.3.4

1 release file

0.3.3

1 release file

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.1.1

2 release files

0.1.0

2 release 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