All notable changes to light-curve-feature
will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
--
--
--
--
--
--
- Bump
ceres-solver
to 0.4.0 to solve build issues on macOS
- Expose
nl_fit::CurveFitResult
- Breaking Update ndarray from 0.15 to 0.16 #175
- Build breaking: bump
ceres-solver
to 0.3.0, which requires C++ version of ceres-solver v2.2.0 forceres-system
Cargo feature
- Build breaking Minimum supported Rust version (MSRV) 1.57 -> 1.67 (released 2023-01-26) #125 #130
- New
LinexpFit
feature for parametric model fit. Thanks @erusseil for his first contribution. #122 - Feature's
doc()
static method isconst
now #110 - Bump
itertools
from ^0.10 to ^0.11 #131 - Bump
fftw
from ^0.7 to ^0.8 #130
- Feature transformations and
Transformed
feature. NewTransformer
enum and structs implementing newTransformerTrait
are added to represent various useful transformations of features.Transformed
feature is a wrapper around a feature and a transformer. It implementsFeatureEvaluator
trait and applies the transformer to the feature value. #107 #108
Bins::min_ts_length()
always returned 1. For this feature this value is always a lower limit, because binning could reduce number of observations to 1. However, now Bins updates this value according to underlying features to give a more reasonable lower limit. #109
CeresCurveFit
and optionalceres-source
andceres-system
Cargo features to use Ceres Solver for curve fitting #92 #98 #100
- Re-export of
ndarray
- Use
enum_dispatch
0.3.9 (updated from 0.3.7) crate to implementLnPriorTrait
forLnPrior
#6
- Overflows in
DataSample
,MedianBufferRangePercentage
,BeyondNStd
,FreqGrid
andOtsuSplit
#95 #96 thread_local<1.1.7
because it requires Rust toolchain 1.59
- Fixed
OtsuSplit
threshold implementation #72
OtsuSplit
feature evaluator #58
- Breaking MSRV 1.56 -> 1.57
- Remove profile section from Cargo.toml because it is not supported by our MSRV 1.56
- CI: build on Windows w/o GSL
- Fix
NaN
panic in MCMC #51 - Make it possible to run tests, benchmarks and examples without
gsl
feature
- Overflow in
{Bazin,Villar}Fit
#48
NyquistFreq
constructor static methods
- Make
FixedNyquistFreq
public
Cargo.toml
keywords and categories- Add
Fixed(FixedNyquistFreq)
variant ofNyquistFreq
which defines a fixed Nyquist frequency to use for pariodogram
- The project repository was split from other 'light-curve*' crates and moved into https://gituhb.com/light-curve/light-curve-feature
light-curve-common
is a dev-dependency now- CI: split Github Actions workflow into pieces
- Unused
dyn-clonable
dependency
BazinLnPrior
,BazinInitsBounds
,VillarLnPrior
,VillarINitisBounds
are public now
- Fixed amplitude prior of
VillarLnPrior::Hosseinzadeh2020
- The example plotted wrong graphs for the Villar function
prelude
module to allow a user importing all traitsMcmcCurveFit
uses newLnPrior
objects which holds natural logarithm of priors for parameters.BazinFit
andVillarFit
requires this object to be specifiedVillarFit
could useVillarLnPrior::Hosseinzadeh2020
adopted from Hosseinzadeh et al 2020 paper (aka Superphot paper)FeatureExtractor::from_features()
as a specified version ofnew()
required less if not none type annotations
- Rust edition 2021
- Minimum Rust version is 1.56
FeatureEvaluator
trait is split into three:FeatureEvaluator
,EvaluatorInfoTrait
andFeatureNamesDescriptionsTrait
BazinFit
andVillarFit
are reimplemented using new traits, which all are included intoprelude
VillarFit
now uses a different parameter set to fix issue with non-physical negative flux fits, relative plateau amplitudenu
replaces plateau slopebeta
. It is a breaking changeBazinFit
andVillarFit
name and description fort_0
parameter are changed replacing "peak" to "reference", because this time moment does not correspond to the light-curve peakBazinFit
andVillarFit
have two new fields (and require two new argments in therenew
constructors):ln_prior
andinits_bounds
. The last one supports custom initial guess and boundaries for the optimization problem- MCMC uses more diverse initial guesses which take into account boundary conditions
features::antifeatures
submodule is removed and all its features moved to the parentfeatures
submodule
- Update
clap
to3.0.0-rc.0
, it is used for the example executable only EtaE
andMaximumSlope
docs updated to highlight cadence dependency of these features
- Equation in
VillarFit
was different from the paper VillarFit
's andBazinFit
's amplitude, tau_rise, tau_fall and plateau duration (forVillarFit
) are insured to be positive
- Rust-specific docs for
BazinFit
andVillarFit
are moved from struct docs to::new()
docs
- Equation rendering in
VillarFit
HTML docs
periodogram
module and_PeriodogramPeaks
are hidden from the docs- Update katex for http://docs.rs to 0.13.13
- Docs for
Extractor
,FeatureEvaluator
,AndersonDarlingNormal
,Bins
,Cusum
,EtaE
,InterPercentileRange
,LinearFit
,LinearTrend
,Median
,PercentAmplitude
,Periodogram
,ReducedChi2
,VillarFit
andBazinFit
- This
CHANGELOG.md
file Feature
enum containing all available features, it implementsFeatureEvaluator
- (De)serialization with
serde
is implemented for all features - JSON schema generation with
schemars
is implemented for all features TimeSeries
andDataSample
usendarray::CowArray
to hold data, their constructors acceptArrayBase
objects- Static method
::doc()
for every feature, it returns language-agnostic feature evaluator description examples
directory with an example which fits and plots some SN Ia light curves- "private" sub-crate
light-curve-feature-test-util
with common tools for tests, benchmarks and examples
FeatureExtractor
,Bins
andPeriodogram
acceptsFeature
enum objects instead ofBox<FeatureEvaluator>
- Periodogram-related
NyquistFreq
andPeriodogramPower
are changed from traits to enums TimeSeries::new
accepts non-optional weights, useTimeSeries::new_without_weight
to initialize time series with unity weight arrayBazinFit
is parameterized by a curve-fit algorithm, MCMC and GSL's LMSDER are available, but the last one requires non-defaultgsl
Cargo feature. MCMC becomes the default algorithm, some wide boundary conditions are included- Rename
BazinFit::get_names()[1]
from "bazin_fit_offset" to "bazin_fit_baseline" - Add
VillarFit
feature for the Villar function arXiv:1905.07422, seeBazinFit
above for technical details LinearTrend
requires at least three observations and returns three values: slope, its error and standard deviation of noise (new)- Publicly exported stuff
—
—