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:

config = FinderConfig(
    fitter_kind="fspl_space_parallax_gulls_vbm_fd",
    grid_backend="cpp",
    ra_deg=267.3,
    dec_deg=-29.9,
    tref=2461504.0,
    satellite_ephemeris_path="gulls_orbit5_heliocentric.dat",
)

These fitters evaluate finite-source magnification with VBMicrolensing.ESPLMag and optimize nonlinear parameters with SciPy finite-difference least squares. They are useful for large CPU survey runs where JAX FSPL autodiff overhead dominates runtime.


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 two FSPL implementation families:

  • JAX/microjax fitters: fspl, fspl_parallax, and fspl_space_parallax.
  • CPU finite-difference fitters using VBMicrolensing ESPL magnification: fspl_vbm_fd and fspl_space_parallax_gulls_vbm_fd.

Install the VBM backend dependencies with:

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
  • jaxopt
  • matplotlib

Optional for VBM finite-difference FSPL fitters:

  • scipy
  • VBMicrolensing

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.1

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.1
File Size Uploaded
jacscanomaly-0.5.1.tar.gz 1.9 MB Details

Built distributions (wheels)

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

Total release size: 32.6 MB

Release files / jacscanomaly-0.5.1.tar.gz

Download URL jacscanomaly-0.5.1.tar.gz
Size 1.9 MB
Tags Source
SHA-256 checksum
How to use checksums
78f96b071c2b4f73c6fc9ab58275abe0ef9e3ddb615678a2504b219f6e520a73
BLAKE2b-256 checksum
How to use checksums
ac73bb378d61a4cd0ccbe2add3ad24a3d0f5525aa08d63784da382106e08312f
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 28, 2026.

Transparency log

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

Download URL jacscanomaly-0.5.1-cp313-cp313-win_amd64.whl
Size 2.2 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
6c0d1fc5e9ab3b0137386433245a21d4c1b4e9ad4d9224f5c68149f273bbe5dd
BLAKE2b-256 checksum
How to use checksums
11acba6c3cc8812479b680513a44138ca6f12e1305d661f9ac15936755fb7fca
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 28, 2026.

Transparency log

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

Download URL jacscanomaly-0.5.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 2.1 MB
Tags CPython 3.13 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
0d56e5ed287049b216d983d471728640f09207847124ce5af92ba66d132d8a5b
BLAKE2b-256 checksum
How to use checksums
6b2ba6b00e3125cd446c21c5560d20d2bc25de54262aeb834f00f1cf451d14b5
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 28, 2026.

Transparency log

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

Download URL jacscanomaly-0.5.1-cp313-cp313-macosx_11_0_arm64.whl
Size 1.9 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b71dc996f5856da9e998bb23f9c294ff99102a629156f9a659ba58ad0b6e957b
BLAKE2b-256 checksum
How to use checksums
d86acf1496a8f88550bc1110cfea3c81f7101b44ae30aab381d9846881b6fbba
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 28, 2026.

Transparency log

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

Download URL jacscanomaly-0.5.1-cp312-cp312-win_amd64.whl
Size 2.2 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
637db05bcddcd5efda2034f138ff7943f6e211fe527c5229bb1fb19fc5415399
BLAKE2b-256 checksum
How to use checksums
fa99e4d3c3296e9f3852222be4cbe5e1d652c7bfbe81b4ecdeb830b0fa19c6c8
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 28, 2026.

Transparency log

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

Download URL jacscanomaly-0.5.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 2.1 MB
Tags CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
f24697ba8407b2988d2df441dbbfde000fbcb8ee653bfe8f4475b358c7ae30c2
BLAKE2b-256 checksum
How to use checksums
143061da50271902040230ae00d88de7a70cd1e4dc9c07a276cf422ac027f5c5
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 28, 2026.

Transparency log

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

Download URL jacscanomaly-0.5.1-cp312-cp312-macosx_11_0_arm64.whl
Size 1.9 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1b67d18b814bf5d2d919e0141eac435951e81ab58e88b33973469ca2847df601
BLAKE2b-256 checksum
How to use checksums
4490963df4b5495e6a43a74a444f7148e4e73a77aa1958cdbb8cf27c0c9ace6a
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 28, 2026.

Transparency log

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

Download URL jacscanomaly-0.5.1-cp311-cp311-win_amd64.whl
Size 2.2 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
a5f433a146597456bbadc5bd106f5ae62f1d843a0cfee8bc875b3050df1a3e38
BLAKE2b-256 checksum
How to use checksums
7b70388ec570e2c3dfd859d7dee11cdbef8a8362edc754d1266df0dc37bc5aeb
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 28, 2026.

Transparency log

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

Download URL jacscanomaly-0.5.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 2.1 MB
Tags CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
95d293443d804443fb8d0ad4b5b6539006e888f7ed1c81d2bb2bac911793c665
BLAKE2b-256 checksum
How to use checksums
b56caef880cb738af38d65e1f42a079a55b3375cc55423cba72ba6e8b54ac3f2
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 28, 2026.

Transparency log

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

Download URL jacscanomaly-0.5.1-cp311-cp311-macosx_11_0_arm64.whl
Size 1.9 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
750245838b2de8bd9db0410d747301feb0dfd8293ab6cd545e88b9fd2d911b59
BLAKE2b-256 checksum
How to use checksums
05f9b079d50e8b751fc8bba16fc8901fff6183716fb2012b455525034f3e0b3f
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 28, 2026.

Transparency log

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

Download URL jacscanomaly-0.5.1-cp310-cp310-win_amd64.whl
Size 2.2 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
6029d9d00e7540c9a824d23a6eaa6cf2073d160fe6908203ec0eefaf16915a66
BLAKE2b-256 checksum
How to use checksums
b3f1f8c2260166b95988058463c046e8b318d8f302740c2d26e64b3d5e4ca5b0
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 28, 2026.

Transparency log

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

Download URL jacscanomaly-0.5.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 2.1 MB
Tags CPython 3.10 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
035b27dcda7bee6db9293e1ed5d2a653c360a2f35aa67114e44383eb24b99c34
BLAKE2b-256 checksum
How to use checksums
9080ab716c7845b1a0de78500b0efd7f17485e1a79293b71979967c61ea45c40
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 28, 2026.

Transparency log

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

Download URL jacscanomaly-0.5.1-cp310-cp310-macosx_11_0_arm64.whl
Size 1.9 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1131cbb293e72e6c8ab1546c2847ad53cb55763ea074fe565d913c2b425682c4
BLAKE2b-256 checksum
How to use checksums
efbc9d44d1535600721fe35bf34491db478aa52fa48d779d16c0dbf0189c6fce
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 28, 2026.

Transparency log

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

Download URL jacscanomaly-0.5.1-cp39-cp39-win_amd64.whl
Size 2.2 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
e9ec95cc9e5c6e4f991a8b4c9bf5198af35b10c4be9f427e2d34130a63ac3192
BLAKE2b-256 checksum
How to use checksums
a37ce6b5fbd18b762c7ed76c7bb96c0037469939316f9a820845083cf983d99d
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 28, 2026.

Transparency log

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

Download URL jacscanomaly-0.5.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 2.1 MB
Tags CPython 3.9 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
4eca004d8ab2c27ed26d770e201b975dcec467dc177e2f373fe8e0d222f24c05
BLAKE2b-256 checksum
How to use checksums
1667414b94715029e7c707b37e2a3e85eb998ca3510245933daf1af4f378f040
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 28, 2026.

Transparency log

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

Download URL jacscanomaly-0.5.1-cp39-cp39-macosx_11_0_arm64.whl
Size 1.9 MB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c15f2083df796bea1175224f3544a7cdb2a025d9b3f6fee6d593bf753e5e3fd2
BLAKE2b-256 checksum
How to use checksums
87930b83ef402a42de4a99a86c08ca236c2c98bf4d70f892614c96bffe88bb09
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 28, 2026.

Transparency log

Release history Release notifications | RSS feed

0.5.2

16 release files

This release

0.5.1 This release

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