pcw_regrs 1.9.0

Fast, optimal, extensible and cross-validated heterogeneous piecewise polynomial regression for timeseries.
Documentation
[package]
name = "pcw_regrs"
version = "1.9.0"
edition = "2021"
publish = true # prevent accidental publishing
authors = [
    "Stefan Volz <volzstefan97+pcw_regrs@googlemail.com>",
    "Martin Storath",
]
description = "Fast, optimal, extensible and cross-validated heterogeneous piecewise polynomial regression for timeseries."
repository = "https://github.com/SV-97/pcw-regrs"
license = "MIT OR Apache-2.0"
keywords = ["regression", "piecewise", "polynomial"]
categories = [
    "mathematics",
    "algorithms",
    "science",
    "simulation",
    "science::neuroscience",
]
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[profile.release]
lto = true        # enable full link time optimization
codegen-units = 1 # build on one core to maximize possible optimizations
debug = true      # write debug symbols into output binary
opt-level = 3     # enable all optimizations
# overflow-checks = false # Disable integer overflow checks.

[dependencies]
derive-new = "0.6.0"
ndarray = { version = "0.15.6", features = ["serde"] }
ordered-float = { version = "4.1.1", features = ["serde"] }
pcw_fn = { version = "0.2.1", features = ["serde"] }
thiserror = "1.0.40"
polyfit-residuals = { version = "0.6.1", features = ["parallel_rayon"] }
num-traits = "0.2.15"
itertools = "0.12.0"
serde = { version = "1.0.152", features = ["derive"], optional = true }
rayon = { version = "1.7.0", optional = true }
maybe-debug = "0.1.0"
rtrb = { version = "0.2.3", optional = true }
indoc = "2.0.3"

[dev-dependencies]
maybe-debug = "0.1.0"
criterion = "0.5.1"
rand = "0.8.5"
rand_distr = "0.4.3"
ndarray-rand = "0.14.0"

[features]
default = ["serde", "dofs-sub-one", "parallel_rayon"]
serde = ["dep:serde"]
nightly-only = ["polyfit-residuals/nightly-only"]
parallel_rayon = ["dep:rayon", "polyfit-residuals/parallel_rayon"]
# If this feature is enabled then a segment of n data points is allowed no more than n-1 dofs
# rather than the n dofs we usually allow. This behaviour corresponds to the preconditions of
# the uniqueness proof and makes intuitive sense when considering the locality of each point:
# by not going up to full interpolation any point necessarily influences the full model whereas
# interpolation would allow it to influence only a single segment. 
dofs-sub-one = []

[[bench]]
name = "ose"
harness = false