MonotoneSplines.jl

Monotone Cubic B-Splines (arXiv:2307.01748)
Author szcf-weiya
Popularity
4 Stars
Updated Last
4 Months Ago
Started In
October 2022

MonotoneSplines.jl

CI codecov

MonotoneSplines.jl is a Julia package for monotone splines, which impose a monotonicity constraint on the smoothing splines.

Check the following paper for more details.

Lijun Wang, Xiaodan Fan, Huabai Li, and Jun S. Liu. “Monotone Cubic B-Splines with a Neural-Network Generator.” arXiv, November 17, 2023. https://doi.org/10.48550/arXiv.2307.01748.

@online{wangMonotoneCubicBSplines2023c,
  title = {Monotone {{Cubic B-Splines}} with a {{Neural-Network Generator}}},
  author = {Wang, Lijun and Fan, Xiaodan and Li, Huabai and Liu, Jun S.},
  date = {2023-11-17},
  eprint = {2307.01748},
  eprinttype = {arxiv},
  eprintclass = {astro-ph, stat},
  doi = {10.48550/arXiv.2307.01748},
  url = {http://arxiv.org/abs/2307.01748},
  urldate = {2023-11-20},
  pubstate = {preprint}
}

🛠️ Installation

‼️‼️ R is required, but Python is optional. ‼️‼️

The package offers two deep-learning backends for the Multi-Layer Perceptrons (MLP) generator:

The statistical software R has offered several powerful packages on splines, such as splines and fda. We do not reinvent the wheel. Instead, we stand on the shoulders of the R giant by calling several basic core functions with the help of RCall.jl.

⚙️ use system R and Python

MonotoneSplines.jl is available at the General Registry, so you can easily install the package in the Julia session after typing ],

julia> ]
(@v1.8) pkg> add MonotoneSplines

By default, both PyCall.jl and RCall.jl would try to use the system Python and R, respectively (more details can be found in their repos).

🪜 standalone R and Python via Conda.jl

Another easy way is to install standalone R and Python via Conda.jl (no need to install Conda.jl explicitly) by specifying the following environmental variables before adding the package.

julia> ENV["PYTHON"]=""
julia> ENV["R_HOME"]="*"
julia> ]
(@v1.8) pkg> add MonotoneSplines

If you use the standalone R provided by Conda in Julia, the dependent R packages will be automatically installed during the building step.

📚 Documentation

The documentation https://hohoweiya.xyz/MonotoneSplines.jl/stable/ elaborates on the usage of the package via various simulation examples and an interesting astrophysics application.