Published February 17, 2025 | Version 2.0.0-pre
Software Open

Proximal methods for point source localisation: the implementation

  • 1. Research Center in Mathematical Modeling and Optimization (MODEMAT)
  • 2. ROR icon University of Helsinki

Description

This package contains the Rust codes for the numerical experiments in the articles

It concerns solution of problems of the type $$\min_{μ ∈ ℳ(Ω)} F(μ) λ |μ|_{ℳ(Ω)} +  δ_{≥ 0}(μ),$$ where $F$ is a data term, and $ℳ(Ω)$ is the space of Radon measures on the (rectangular) domain $Ω ⊂ ℝ^n$. Implemented are $F(μ)=\frac12|Aμ-b|_2^2$ and $F(μ)=|Aμ-b|_1$ for the forward operator $A \in 𝕃(ℳ(Ω); ℝ^m)$ modelling a simple sensor grid.

Installation and usage

Installing dependencies

Most dependencies are managed by the Cargo build system of Rust. You will only need to install the “nightly” Rust compiler and the GNU Scientific Library manually. At the time of writing this README, alg_tools also needs to be downloaded separately.

  1. Install the Rust infrastructure (including Cargo) with rustup.

  2. Install a “nightly” release of the Rust compiler. With rustup, installed in the previous step, this can be done with

    rustup toolchain install nightly
    
  3. Install GNU Scientific Library. On a Mac with Homebrew installed, this can be done with

    brew install gsl
    

    For other operating systems, suggestions are available in the rust-GSL crate documentation. You may need to pass extra RUSTFLAGS options to Cargo in the following steps to locate the library.

  4. Download alg_tools and unpack it under the same directory as this package.

Building and running the experiments

To compile and install the program, use

cargo install --path=.

When doing this for the first time, several dependencies will be downloaded. Now you can run the default set of experiments with

pointsource_algs -o results

The -o results option tells pointsource_algs to write results in the results directory. The option is required.

Alternatively, you may build and run the program without installing with

cargo run --release -- -o results

The double-dash separates the options for the Cargo build system and pointsource_algs.

Documentation

Use the --help option to get an extensive listing of command line options to customise algorithm parameters and the experiments performed.

Internals

If you are interested in the program internals, the integrated source code documentation may be built and opened with

cargo doc              # build dependency docs
misc/cargo-d --open    # build and open KaTeX-aware docs for this crate

The cargo-d script ensures that KaTeX mathematics is rendered in the generated documentation through an ugly workaround. Unfortunately, rustdoc, akin to Rust largely itself, is stuck in 80's 7-bit gringo ASCII world, and does not support modern markdown features, such as mathematics.

Files

pointsource_algs-2.0.0-pre.zip

Files (257.5 kB)

Name Size Download all
md5:50b6edb1f06ecd5c949ebcda4d67831f
257.5 kB Preview Download

Additional details

Related works

Is cited by
Preprint: arXiv:2212.02991 (arXiv)
Preprint: arXiv:2502.12417 (arXiv)

Funding

Research Council of Finland
Decoupling preconditioners for non-smooth optimisation and inverse problems 314701

Software

Repository URL
https://tuomov.iki.fi/repos/pointsource_algs/
Programming language
Rust
Development Status
Active