Feature extractor from noisy time series
Project description
light-curve
processing toolbox for Python
The Python wrapper for Rust light-curve-feature
and light-curve-dmdt
packages which gives a collection of high-performant time-series feature extractors.
Installation
python3 -mpip install light-curve
We also provide light-curve-python
package which is just an "alias" to the main light-curve
package.
Minimum supported Python version is 3.7. We provide binary wheels via PyPi for number of platforms and architectures, both for CPython and PyPy.
Support matrix
Arch \ OS | Linux glibc | Linux musl | macOS | Windows |
---|---|---|---|---|
x86-64 | wheel (MKL) | wheel (MKL) | wheel | not tested https://github.com/light-curve/light-curve-python/issues/12 |
i686 | src | src | — | not tested |
aarch64 | wheel | wheel | src https://github.com/light-curve/light-curve-python/issues/5 | not tested |
ppc64le | wheel | not tested (no Rust toolchain) | — | — |
- "wheel": binary wheel is available on pypi.org, local building is not required for the platform, the only pre-requirement is a recent
pip
version. For Linux x86-64 we provide binary wheels built with Intel MKL for better periodogram perfromance, which is not a default build option. - "src": the package is confirmed to be built and pass unit tests locally, but testing and package building is not supported by CI. It is required to have the GNU scientific library (GSL) v2.1+ and the Rust toolchain v1.57+ to install it via
pip install
. - "not tested": building from the source code is not tested, please report us building status via issue/PR/email.
We build aarch64 macOS 12.0+ Python 3.8+ wheels locally and submit them running this command in light-curve
directory:
rm -rf ./wheelhouse
CIBW_BUILD='cp3*-macosx_arm64' CIBW_ENVIRONMENT="MACOSX_DEPLOYMENT_TARGET=12.0 MATURIN_PEP517_ARGS='--locked --no-default-features --features fftw-source,gsl'" CIBW_BEFORE_ALL='curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain stable -y; brew install gsl' python3 -mcibuildwheel --platform macos
twine upload wheelhouse/*.whl
Feature evaluators
Most of the classes implement various feature evaluators useful for light-curve based astrophysical source classification and characterisation.
import light_curve as lc
import numpy as np
# Time values can be non-evenly separated but must be an ascending array
n = 101
t = np.linspace(0.0, 1.0, n)
perfect_m = 1e3 * t + 1e2
err = np.sqrt(perfect_m)
m = perfect_m + np.random.normal(0, err)
# Half-amplitude of magnitude
amplitude = lc.Amplitude()
# Fraction of points beyond standard deviations from mean
beyond_std = lc.BeyondNStd(nstd=1)
# Slope, its error and reduced chi^2 of linear fit
linear_fit = lc.LinearFit()
# Feature extractor, it will evaluate all features in more efficient way
extractor = lc.Extractor(amplitude, beyond_std, linear_fit)
# Array with all 5 extracted features
result = extractor(t, m, err, sorted=True, check=False)
print('\n'.join(f"{name} = {value:.2f}" for name, value in zip(extractor.names, result)))
# Run in parallel for multiple light curves:
results = amplitude.many(
[(t[:i], m[:i], err[:i]) for i in range(n // 2, n)],
n_jobs=-1,
sorted=True,
check=False,
)
print("Amplitude of amplitude is {:.2f}".format(np.ptp(results)))
If you confident in your inputs you could use sorted = True
(t
is in ascending order)
and check = False
(no NaNs in inputs, no infs in t
or m
) for better performance.
Note that if your inputs are not valid and are not validated by
sorted=None
and check=True
(default values) then all kind of bad things could happen.
Print feature classes list
import light_curve as lc
print([x for x in dir(lc) if hasattr(getattr(lc, x), "names")])
Read feature docs
import light_curve as lc
help(lc.BazinFit)
Experimental extractors
From the technical point of view the package consists of two parts: a wrapper for light-curve-feature
Rust crate (light_curve_ext
sub-package) and pure Python sub-package light_curve_py
.
We use the Python implementation of feature extractors to test Rust implementation and to implement new experimental extractors.
Please note, that the Python implementation is much slower for the most of the extractors and doesn't provide the same functionality as the Rust implementation.
However, the Python implementation provides some new feature extractors you can find useful.
You can manually use extractors from both implementations:
import numpy as np
from numpy.testing import assert_allclose
from light_curve.light_curve_ext import LinearTrend as RustLinearTrend
from light_curve.light_curve_py import LinearTrend as PythonLinearTrend
rust_fe = RustLinearTrend()
py_fe = PythonLinearTrend()
n = 100
t = np.sort(np.random.normal(size=n))
m = 3.14 * t - 2.16 + np.random.normal(size=n)
assert_allclose(rust_fe(t, m), py_fe(t, m),
err_msg="Python and Rust implementations must provide the same result")
This should print a warning about experimental status of the Python class
Available features
See the complite list of evailable feature evaluators and documentation in light-curve-feature
Rust crate docs.
Feature name | Description | Min data points | Features number |
---|---|---|---|
Amplitude | Half amplitude of magnitude: $\displaystyle \frac{\max (m)-\min (m)}{2}$ |
1 | 1 |
AndersonDarlingNormal | Unbiased Anderson–Darling normality test statistic:
$\displaystyle \left( 1+\frac{4}{N} -\frac{25}{N^{2}}\right) \times$
$\times \left( -N-\frac{1}{N}\sum\limits_{i=0}^{N-1} (2i+1)\ln \Phi _{i} +(2(N-i)-1)\ln (1-\Phi _{i} )\right) ,$ where $\Phi _{i\ } \equiv \Phi (( m_{i} \ -\ \langle m\rangle ) /\sigma _{m})$ is the commutative distribution function of the standard normal distribution, $N-$ the number of observations, $\langle m\rangle -$ mean magnitude and $\sigma _{m} =\sqrt{\sum\limits_{i=0}^{N-1}( m_{i} -\langle m\rangle )^{2} /( N-1) \ }$ is the magnitude standard deviation |
4 | 1 |
BazinFit | Five fit parameters and goodness of fit (reduced $\chi ^{2}$ of the Bazin function developed for core-collapsed supernovae:
$\displaystyle f(t)=A\frac{\mathrm{e}^{-(t-t_{0} )/\tau _{fall}}}{1+\mathrm{e}^{-(t-t_{0} )/\tau _{rise}}} +B,$ where $f(t)-$ flux observation |
6 | 1 |
BeyondNStd | Fraction of observations beyond $n\sigma _{m}$ from the mean magnitude $\langle m\rangle $:
$\displaystyle \frac{\sum _{i} I_{|m-\langle m\rangle | >n\sigma _{m}} (m_{i} )}{N},$ where $I-$ an indicator function |
2 | 1 |
Cusum | A range of cumulative sums:
$\displaystyle \max(S) -\min(S),$ where $S_{j} \equiv \frac{1}{N\sigma _{m}}\sum\limits _{i=0}^{j} (m_{i} -\langle m\rangle )$, $j\in \{1..N-1\}$ |
2 | 1 |
Eta | Von Neummann $\eta $:
$\displaystyle \eta \equiv \frac{1}{(N-1)\sigma _{m}^{2}}\sum\limits _{i=0}^{N-2} (m_{i+1} -m_{i} )^{2}$ |
2 | 1 |
EtaE | Modernisation of Eta for unevenly time series:
$\displaystyle \eta ^{e} \equiv \frac{(t_{N-1} -t_{0} )^{2}}{(N-1)^{3}}\frac{\sum\limits_{i=0}^{N-2}\left(\frac{m_{i+1} -m_{i}}{t_{i+1} -t_{i}}\right)^{2}}{\sigma _{m}^{2}}$ |
2 | 1 |
ExcessVariance | Measure of the variability amplitude:
$\displaystyle \frac{\sigma _{m}^{2} -\langle \delta ^{2} \rangle }{\langle m\rangle ^{2}},$ where $\langle \delta ^{2} \rangle -$ mean squared error |
2 | 1 |
InterPercentileRange | $\displaystyle Q(1-p)-Q(p),$ where $Q(n)$ and $Q(d)-$ $n$-th and $d$-th quantile of magnitude sample |
1 | 1 |
Kurtosis | Excess kurtosis of magnitude:
$\displaystyle \frac{N(N+1)}{(N-1)(N-2)(N-3)}\frac{\sum _{i} (m_{i} -\langle m\rangle )^{4}}{\sigma _{m}^{2}} -3\frac{(N+1)^{2}}{(N-2)(N-3)}$ |
4 | 1 |
LinearFit | The slope, its error and reduced $\chi ^{2}$ of the light curve in the linear fit of a magnitude light curve with respect to the observation error $\{\delta _{i}\}$:
$\displaystyle m_{i} \ =\ c\ +\ \text{slope} \ t_{i} \ +\ \delta _{i} \varepsilon _{i} ,$ where $c$ is a constant, $\{\varepsilon _{i}\}$ are standard distributed random variables |
3 | 3 |
LinearTrend | The slope and its error of the light curve in the linear fit of a magnitude light curve without respect to the observation error $\{\delta _{i}\}$:
$\displaystyle m_{i} \ =\ c\ +\ \text{slope} \ t_{i} \ +\ \Sigma \varepsilon _{i} ,$ where $c$ and $\Sigma$ are constants, $\{\varepsilon _{i}\}$ are standard distributed random variables. |
2 | 2 |
MagnitudePercentageRatio | Magnitude percentage ratio:
$\displaystyle \frac{Q(1-n)-Q(n)}{Q(1-d)-Q(d)}$ |
1 | 1 |
MaximumSlope | Maximum slope between two sub-sequential observations:
$\displaystyle \max_{i=0\dotsc N-2}\left| \frac{m_{i+1} -m_{i}}{t_{i+1} -t_{i}}\right|$ |
2 | 1 |
Mean | Mean magnitude:
$\displaystyle \langle m\rangle =\frac{1}{N}\sum\limits _{i} m_{i}$ |
1 | 1 |
MeanVariance | Standard deviation to mean ratio:
$\displaystyle \frac{\sigma _{m}}{\langle m\rangle }$ |
2 | 1 |
Median | Median magnitude | 1 | 1 |
MedianAbsoluteDeviation | Median of the absolute value of the difference between magnitude and its median:
$\displaystyle \mathrm{Median} (|m_{i} -\mathrm{Median} (m)|)$ |
1 | 1 |
MedianBufferRangePercentage | $\displaystyle \mathrm{Median} (m)\pm q\times (\max (m)-\min (m))/2$ |
1 | 1 |
OtsuSplit | Difference of subset means, standard deviation of the lower subset, standard deviation of the upper
subset and lower-to-all observation count ratio for two subsets of magnitudes obtained by Otsu's method split.
Otsu's method is used to perform automatic thresholding. The algorithm returns a single threshold that separate values into two classes. This threshold is determined by minimizing intra-class intensity variance $\sigma^2_{W}=w_0\sigma^2_0+w_1\sigma^2_1$, or equivalently, by maximizing inter-class variance $\sigma^2_{B}=w_0 w_1 (\mu_1-\mu_0)^2$. There can be more than one extremum. In this case, the algorithm returns the minimum threshold. |
2 | 4 |
PercentAmplitude | Maximum deviation of magnitude from its median:
$\displaystyle \max_{i} |m_{i} \ -\ \text{Median}( m) |$ |
1 | 1 |
PercentDifferenceMagnitudePercentile | Ratio of $p$-th inter-percentile range to the median:
$\displaystyle \frac{Q( 1-p) -Q( p)}{\text{Median}( m)}$ |
1 | 1 |
ReducedChi2 | Reduced $\chi ^{2}$ of magnitude measurements:
$\displaystyle \frac{1}{N-1}\sum _{i}\left(\frac{m_{i} -\overline{m}}{\delta _{i}}\right)^{2} ,$ where $\overline{m} -$ weighted mean magnitude |
2 | 1 |
Skew | Skewness of magnitude:
$\displaystyle \frac{N}{(N-1)(N-2)}\frac{\sum _{i} (m_{i} -\langle m\rangle )^{3}}{\sigma _{m}^{3}}$ |
3 | 1 |
StandardDeviation | Standard deviation of magnitude:
$\displaystyle \sigma _{m} \equiv \sqrt{\sum _{i} (m_{i} -\langle m\rangle )^{2} /(N-1)}$ |
2 | 1 |
StetsonK | Stetson K coefficient described light curve shape:
$\displaystyle \frac{\sum _{i}\left| \frac{m_{i} -\langle m\rangle }{\delta _{i}}\right| }{\sqrt{N\ \chi ^{2}}}$ |
2 | 1 |
VillarFit | Seven fit parameters and goodness of fit (reduced $\chi ^{2}$) of the Villar function developed for supernovae classification:
$f(t)=c+\frac{A}{1+\exp\frac{-(t-t_{0} )}{\tau _{rise}}} \times f_{fall}(t),$ $f_{fall}(t) = 1-\frac{\nu (t-t_{0} )}{\gamma }, ~~~ t< t_{0} +\gamma,$ $f_{fall}(t) = (1-\nu )\exp\frac{-(t-t_{0} -\gamma )}{\tau _{fall}}, ~~~ t \geq t_{0} + \gamma.$ where $f(t) -$ flux observation, $A, \gamma , \tau _{rise} , \tau _{fall} >0$, $\nu \in [0;1)$Here we introduce a new dimensionless parameter $\nu$ instead of the plateau slope $\beta$ from the original paper: $\nu \equiv -\beta \gamma /A$ |
8 | 8 |
WeightedMean | Weighted mean magnitude:
$\displaystyle \overline{m} \equiv \frac{\sum _{i} m_{i} /\delta _{i}^{2}}{\sum _{i} 1/\delta _{i}^{2}}$ |
1 | 1 |
Meta-features
Meta-features can accept another feature extractors and apply them to pre-processed data.
Periodogram
A number of features based on Lomb–Scargle periodogram as it was an evenly separeated uncertancy-less lime series.
Periodogram $P(\omega)$ is an estimate of spectral density of unevenly time series.
Periodogram
's peaks
argument corresponds to a number of the most significant spectral density peaks to return.
For each peak its period and "signal to noise" ratio is returned.
$$ \text{signal to noise of peak} \equiv \frac{P(\omega_\mathrm{peak}) - \langle P(\omega) \rangle}{\sigma_{P(\omega)}} $$
features
argument accepts a list of additional feature evaluators.
Bins
Binning time series to bins with width $\mathrm{window}$ with respect to some $\mathrm{offset}$. $j-th$ bin boundaries are $[j \cdot \mathrm{window} + \mathrm{offset}; (j + 1) \cdot \mathrm{window} + \mathrm{offset}]$.
Binned time series is defined by $$t_j^* = (j + \frac12) \cdot \mathrm{window} + \mathrm{offset},$$ $$m_j^* = \frac{\sum{m_i / \delta_i^2}}{\sum{\delta_i^{-2}}},$$ $$\delta_j^* = \frac{N_j}{\sum{\delta_i^{-2}}},$$ where $N_j$ is a number of sampling observations and all sums are over observations inside considering bin.
Benchmarks
We benchmark the Rust implementation (rust
) versus feets
package and our own Python implementation (lc_py
) for a light curve having n=1000 observations.
The plot shows that the Rust implementation of the package outperforms other ones by a factor of 1.5—50.
This allows to extract a large set of "cheap" features well under one ms for n=1000.
The performance of parametric fits (BazinFit
and VillarFit
) and Periodogram
depend on their parameters, but the typical timescale of feature extraction including these features is 20—50 ms for few hundred observations.
Benchmark results of several features for both the pure-Python and Rust implementations of the ”light-curve” package, as a function of the number of observations in a light curve. Both the x-axis and y-axis are on a logarithmic scale.
Processing time per a single light curve for extraction of features subset presented in first benchmark versus the number of CPU cores used. The dataset consists of 10,000 light curves with 1,000 observations in each.
See benchmarks' descriptions in more details in "Performant feature extraction for photometric time series".
dm-dt map
Class DmDt
provides dm–dt mapper (based on Mahabal et al. 2011, Soraisam et al. 2020). It is a Python wrapper for light-curve-dmdt
Rust crate.
import numpy as np
from light_curve import DmDt
from numpy.testing import assert_array_equal
dmdt = DmDt.from_borders(min_lgdt=0, max_lgdt=np.log10(3), max_abs_dm=3, lgdt_size=2, dm_size=4, norm=[])
t = np.array([0, 1, 2], dtype=np.float32)
m = np.array([0, 1, 2], dtype=np.float32)
desired = np.array(
[
[0, 0, 2, 0],
[0, 0, 0, 1],
]
)
actual = dmdt.points(t, m)
assert_array_equal(actual, desired)
Citation
If you found this project useful for your research please cite Malanchev et al., 2021
@ARTICLE{2021MNRAS.502.5147M,
author = {{Malanchev}, K.~L. and {Pruzhinskaya}, M.~V. and {Korolev}, V.~S. and {Aleo}, P.~D. and {Kornilov}, M.~V. and {Ishida}, E.~E.~O. and {Krushinsky}, V.~V. and {Mondon}, F. and {Sreejith}, S. and {Volnova}, A.~A. and {Belinski}, A.~A. and {Dodin}, A.~V. and {Tatarnikov}, A.~M. and {Zheltoukhov}, S.~G. and {(The SNAD Team)}},
title = "{Anomaly detection in the Zwicky Transient Facility DR3}",
journal = {\mnras},
keywords = {methods: data analysis, astronomical data bases: miscellaneous, stars: variables: general, Astrophysics - Instrumentation and Methods for Astrophysics, Astrophysics - Solar and Stellar Astrophysics},
year = 2021,
month = apr,
volume = {502},
number = {4},
pages = {5147-5175},
doi = {10.1093/mnras/stab316},
archivePrefix = {arXiv},
eprint = {2012.01419},
primaryClass = {astro-ph.IM},
adsurl = {https://ui.adsabs.harvard.edu/abs/2021MNRAS.502.5147M},
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for light_curve-0.7.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b43240156056d6de0e1ce94bbc454cc61e1f1f5055fb66d71385b88fa5d6b307 |
|
MD5 | dbf311676c17f690aecb2e5755327b8c |
|
BLAKE2b-256 | b7c1987c280b735898469080936f4e045c5176b25eb30649bffc79001eae03a4 |
Hashes for light_curve-0.7.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fb9badfe33329e79a9d0d41b97eb36e1ff80439df2fcb971ba452784b6cf0c01 |
|
MD5 | eb289bb8db628cacb3604546b8d92173 |
|
BLAKE2b-256 | 55a7e34f46ccbab44d6bd2cf6619c25a6d87d54c79d27812d2d43e6763623a2d |
Hashes for light_curve-0.7.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5d3afd75dc1b4f6c34ccde20cf230617332d694132f32c59f8070c1abe4ffff2 |
|
MD5 | ca16aac40ec4678f391102ad823d1d97 |
|
BLAKE2b-256 | 16d8eb27b55eec7d94ff20e2044116b35f395bb853825d1365000a261019fcd8 |
Hashes for light_curve-0.7.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2413d96c942cc306cef4bafb7f53ac00ba01f9ee10a90e914882b36cf5303c1d |
|
MD5 | 9be7cda475556a11ba66fab369255766 |
|
BLAKE2b-256 | b89bfe0fe0768c54c5c13e0a4aaa1d08b4279f363915b7026385488af41b5dbc |
Hashes for light_curve-0.7.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 352284106a4bd49c9f1b83fb283159bf3bb4d8b399ce06de0df048375d89fe57 |
|
MD5 | 6f4347d3f28b05e775483d4b79e2e859 |
|
BLAKE2b-256 | 1e91428a5faf895dd4db23db90d8b4dfbb2931714e4fcb1605287f7dc5675c64 |
Hashes for light_curve-0.7.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 05ed861498874d688b3d7beb093003061afa9a96c4856b56f8405eb7952efc01 |
|
MD5 | c584e6504f104b7f6224c2849a18f59f |
|
BLAKE2b-256 | 20325e86398e8574649fe812ea3829c260b7b8aeb75e5ac76c95db3e0368028a |
Hashes for light_curve-0.7.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f34ded9911062528e79e060440184177893cfa779566d021d1f3dcd3ff91a553 |
|
MD5 | 7492a368ccf5fac94fb414f55df0d46f |
|
BLAKE2b-256 | 2067f47832479cbcf922a5448022997366ad22a0884170d0def0591329938711 |
Hashes for light_curve-0.7.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c77893274bb859c37b653605d5c943e338377c050d752e40a17b9be0f9a4277f |
|
MD5 | 5b8cdef1c848003cacd5ad047ef7e8eb |
|
BLAKE2b-256 | f13f861b2a4b7b242c2a8d68f4f52bb2756815c3da35aae6c8fcd809724ca3b6 |
Hashes for light_curve-0.7.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0323332cfdf2c8a8a1d673ac4058b12826829fcfefdf2d37fd0690473b4b8b66 |
|
MD5 | 5fdb4e4ab5267be775fccbe36c784401 |
|
BLAKE2b-256 | d6eca36e606c63df2338ec6ec953162244a4b0e600642969e4e69bede789b0bf |
Hashes for light_curve-0.7.0-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ecf44d7c3230eea66660bb9f9f3093c5c7af267a58d33e10c6380ee52d566eb2 |
|
MD5 | 196bc5281bbf3e4da905fd9346a958b6 |
|
BLAKE2b-256 | a3132f5b5fa213879ab99766536dea2b158216a8aac6351229c454e776277c8f |
Hashes for light_curve-0.7.0-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b8ef870e77f999bb68082661dfbe380174ccbe7eb6aadcecbc24cf7350ee7b61 |
|
MD5 | 2cfe94ee1e9f4732f489b8ec6f3d21c6 |
|
BLAKE2b-256 | 46b45cf58d79ad40c9d678eb0f0d8146de16699f3e56dd4b0739d6d1bbdd6ad6 |
Hashes for light_curve-0.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3c081f815138e37e71013a79fe8035def3061bb3d3d4e717e83ca3568cdec11b |
|
MD5 | 7b4105f3be30dd2298cef9068e5dfad3 |
|
BLAKE2b-256 | a5bbcd49fd37bc3082c10b746946dafb325fbff201fd1c5a7df6f7d817596710 |
Hashes for light_curve-0.7.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0d834b9a162d9582dd22f77c9077835171b6bcbd2c533795965285aaae0c031 |
|
MD5 | a643d4c0da63cf4b017a4238cf68a649 |
|
BLAKE2b-256 | a0f4fbc617e210b2e572fbb52783de40799488f7bdd476f629c40fb92351ffc9 |
Hashes for light_curve-0.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 86548fc0fb03a7f2b6c2b689c8e203c0bdf50ebc7e8c6c7a14f6b092a0dca01e |
|
MD5 | deb59967ffd6bb5c0b0a5df47ba9cc99 |
|
BLAKE2b-256 | 155b4c2d01d17dd4f1f294342010d57f2b6d6d09bae667aad18fa102c211e699 |
Hashes for light_curve-0.7.0-cp311-cp311-macosx_12_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b393517511f907f41c7a9bb4e3ad3f8ebf88b0e3fae6144320da914a366ccfbd |
|
MD5 | 3c924c600f713a20e46fd8fddc389c33 |
|
BLAKE2b-256 | a8af2b3bee26ab414f1c47bc7e59de7cbbd5279b575db8610ff2d651a8c14018 |
Hashes for light_curve-0.7.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 07460cb66928a3974ff272e6fb4ac1635cc1b5539b97c844039f644e4062f546 |
|
MD5 | 0c2ee3e76c9f26bec098c1ab8b3ec169 |
|
BLAKE2b-256 | da44afee257f3a5a82eccd84952db4c8c6c1b3accaea3e2f194fc8b84282bd65 |
Hashes for light_curve-0.7.0-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 85bec1ca66eee25585a50af4c4110fc99438bf4257eead82e1fffcf36777f50e |
|
MD5 | 969c1fe187aa9c88edb761430222227b |
|
BLAKE2b-256 | ba6b53ba83cdc9ecede9513c7934d7ce1000a9b43eee8c89a0b394dfdd76011f |
Hashes for light_curve-0.7.0-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9c2da1d18d26bcd136c6bdeb07ec05e57f9870c333cdf19bed6cf088b6eafac6 |
|
MD5 | 64bd5b6e434a250cacc2e352015021fc |
|
BLAKE2b-256 | 9fee0842084a09f6ccc2563465ea11229edaab07778cd7816fd23ad4438fc9c0 |
Hashes for light_curve-0.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bef6a970b5976f2e293e67155fd508b9b271a18b4cb3995450f3fed7e5470865 |
|
MD5 | 3ef8914f3cd1d325c649e3a84764cc0f |
|
BLAKE2b-256 | 120ed8aa4b96f9ab488086ecdf88acf2272d21c32f125576c886f89fe4adb688 |
Hashes for light_curve-0.7.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f7f49e446a99e0b9c44668b9f806a9e40f4887fd6f1a7d537d472a768e68103c |
|
MD5 | 26ff850db7b6e7ebe30b5bd6e276dee9 |
|
BLAKE2b-256 | bc32259b61c3baab7d2fb69655d7b643977bd0634a352f631105a58680567d1b |
Hashes for light_curve-0.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 79900fa8407e22388b93a155bcbb55c54cbfca37964ad5b1ba21d86db4e01b84 |
|
MD5 | bc2f82059a889e6602fe29bcb0aaf3d2 |
|
BLAKE2b-256 | 52d015af60e2db8b918f1346fa4c895d429db50f1f7fb8977e40bce8cdf56963 |
Hashes for light_curve-0.7.0-cp310-cp310-macosx_12_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 156f980103702a73cf2d3750ce46a58cfea197a92ee6284d8659cef956cd40f6 |
|
MD5 | 87fbf3c64c3d11583088af3ea5655ce3 |
|
BLAKE2b-256 | b03797deed91f9daab6fcdabd9447e5aebb44eaf62c1a92844f0ad84faf5c090 |
Hashes for light_curve-0.7.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2a2817b3fa18cd72eb90ddca2c8b537aacaf54e54b4c5469b56f25c9c5bab1b0 |
|
MD5 | fe8e0172090c38a44827461b26c2bbf7 |
|
BLAKE2b-256 | 2f3fb3cebec132c1b0f2738046c6e8c601bd5a53c9f1d19bc226d2b63e462953 |
Hashes for light_curve-0.7.0-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8809bd6a0cb7b697b1549b867634f2054f67f84a16f686d8de4c3d538e152e17 |
|
MD5 | 7fd5f65278537dc8bcbe2d1de521f1d6 |
|
BLAKE2b-256 | 66cb9ed1abba299693a006094a4c6449ff9f590daf3c85acb252a7e536774524 |
Hashes for light_curve-0.7.0-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e99c2098ed324c9e34cb8003a7c348a627d17efa4ea5ec07c634302754033d7 |
|
MD5 | 09a1b2a7380e66b5ee7d1a249c394963 |
|
BLAKE2b-256 | 2500808bac22f281598e743ef5efb2e5eec801c228b7f78493f0a1fb52079e42 |
Hashes for light_curve-0.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e6a9f7e11e6daefe8b5c98bc35fdb4e96566e0dc95b8b0bfc3e0f6cd3b58f3a |
|
MD5 | 5d474154c734ed3d9d7a669396113965 |
|
BLAKE2b-256 | 56a1b0df641ca33a3c8e5d811e031b009116f7ed74de0584c80e12bf6bd5fb0d |
Hashes for light_curve-0.7.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bfc72b5ed6a9be51a95c78c8602081c7fae8f84470d1df63780b00b1d032c5a0 |
|
MD5 | 7f808df3c72c70dc5fed414c238972ee |
|
BLAKE2b-256 | c3f46b4957a270686ac90dea4d0e67f2cc1f5d2bb9314f794fcddf992a48158d |
Hashes for light_curve-0.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d4f3cd3a86153d008bfe77f2756e7721c7835eb776700cb9000331d7b4fe0ff0 |
|
MD5 | a39e2ad6b5fd0efb0479f6b6811bc4a7 |
|
BLAKE2b-256 | b9617dfdbcff51cd116a9884559399504e0821d7eb8964cdb5cd980f59e2811a |
Hashes for light_curve-0.7.0-cp39-cp39-macosx_12_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 60083470c4735cb5e8fd66521addb33007b6b3ac522860761023d6d5c356de4b |
|
MD5 | 5e2a82e350342df08a03a842f71b7896 |
|
BLAKE2b-256 | 5182e0e1a89f1a44a4cc12fa5f37b89474a264b99c918a3371e590c833fa6fc1 |
Hashes for light_curve-0.7.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 87550c318c7c746c3231b28cfc8eb99b09109b9707b9126acdec75c0cfdef13d |
|
MD5 | ff9416f123d68991609c1ecf91e2e41e |
|
BLAKE2b-256 | 93a9597c90f8a677d28d7b9723cb943817506cc09e61165ca6fb2f531e3d5560 |
Hashes for light_curve-0.7.0-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 08e5c50e1c9db6c7aed177f4ce0ccba3c1f095df86830a353acdb6f70b19c6ce |
|
MD5 | 92d5b104d2bf732bf6566633dd41dcbb |
|
BLAKE2b-256 | 06ca385a32f6507c44d6b539145a90276ae69ade052a12e02176a22402037c3a |
Hashes for light_curve-0.7.0-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a9546f5dfc7ec0e5f660b991655e5602ecc88b060fc073df54cf3464a4660d16 |
|
MD5 | a43da377562dba1851bc09616c0d3364 |
|
BLAKE2b-256 | 59b6834b42d41ce27286b4d48e1ad83b88aac7e2bb1b02bbd8c60aa2533e537a |
Hashes for light_curve-0.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 26832002e6c831504994b23de2c3e34b26f107d73781f5a2952ff98d8b122ca0 |
|
MD5 | 116c8672afda6f3283977f5c8841cd5c |
|
BLAKE2b-256 | 97c42020bdde2216f01cc0c284656af2bbca8fc89dd8de6bef7fa1329ffba365 |
Hashes for light_curve-0.7.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7630bbbdcbdfbc2d5572e85899197a553fb43236eefe00393d9ddde7f3826ce4 |
|
MD5 | de0767df0d7d2bb6aa99a875ba347768 |
|
BLAKE2b-256 | 08fae587b017184eaa406221c319fd68445a08691e743a3851ec3a56878dd11e |
Hashes for light_curve-0.7.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ceb4a6373345f7b4f2f5998da0ae3aa6b2d3a091e17b38d12509dbb277e15da3 |
|
MD5 | dd53fbc49f9cb0b5443ef98f027af379 |
|
BLAKE2b-256 | eee0e80fae1b02185a8ebfeb7b4d44c4b2af68b90a1fa3fc6618e19e17b81efc |
Hashes for light_curve-0.7.0-cp38-cp38-macosx_12_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 71c85a1c95a968843952a7c6c2e0a3bd94acd687644ee8c2d3647e20b624e940 |
|
MD5 | 0387b6fd1619a0a5c605820c4983ec61 |
|
BLAKE2b-256 | 90dec28e18b4aec3158f83c6977e5689b4bfe359460f758c73d13398370a7ba9 |
Hashes for light_curve-0.7.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c9ef759a3cc68be0103d8f1e314adeda34d689205989181f0006bece9cf6a534 |
|
MD5 | 8646d31cb9e2da09c5c8d55af08c1062 |
|
BLAKE2b-256 | e04eda482d79037e94d571b250c671646341c6a2755dbebb2bfe1668a464e0eb |
Hashes for light_curve-0.7.0-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c4151a8f98c64151cbd8514872fe8504e3f2e9a297d5d0b9e3553f0b5f7e4656 |
|
MD5 | 7ebb4b1556855fbce490ea40cea3e151 |
|
BLAKE2b-256 | 03fec0ccfef679a1bc073b24d7ce0c9b374c5b2bcc9fdf0c220d07f2fdd27527 |
Hashes for light_curve-0.7.0-cp37-cp37m-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 427e12a023d0f2d5ea191c5ac64c79dbb7f89923021201d63ab8ae7676dcce00 |
|
MD5 | f3266c02e0b75e4360d8a6d202d7b1de |
|
BLAKE2b-256 | afed19e18d98efddb62aed560b8a3eda16b3c3f4df30131339eb570a8672eb5b |
Hashes for light_curve-0.7.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0001a08252acd957a84b9f40c58c0e191021cd7e262951c62f52e5c21f50695e |
|
MD5 | 67263422fde0dfe4f5cf6bb2999b1c21 |
|
BLAKE2b-256 | 0b74d4c9db70ff62b5a98327cf5f564813193104bcbdd3b4b96f96d54220f7d9 |
Hashes for light_curve-0.7.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ecd8ad985f8857c2b37430dad22ed63814ab8576f26c2721a602d7cbc1cbf6d |
|
MD5 | be333a922ed7429a5607b9bb1c96a006 |
|
BLAKE2b-256 | fa5f30019a7785bd2f936b6907a61a61c0d36a352882722ea473f8af43c5697b |
Hashes for light_curve-0.7.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | afc0c6ca0ebbdda0c9d9564c2474458a4422ad020f2b1f497065dda690e24c81 |
|
MD5 | 9b59d9cae23507057a1f928108cbeef9 |
|
BLAKE2b-256 | 5df0cfd2c3f44518340a3776898bdd27a0440f86bdeceea934e7f4fa1c29aa11 |
Hashes for light_curve-0.7.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b45c7bd3b4f9b1c9ab1fa536269455cefbfcafe7e08ec9c24015a2bb195553e6 |
|
MD5 | df9347e6a084fad91f43737cbe0589d4 |
|
BLAKE2b-256 | 56af159e63111360bb1de5afbf71102472cf3d18a60132e1285e2b0b80b29df0 |