--- a/README.md Tue Aug 01 10:25:09 2023 +0300 +++ b/README.md Mon Feb 17 13:54:53 2025 -0500 @@ -1,19 +1,19 @@ # Proximal methods for point source localisation: the implementation -This package contains [Rust] codes for the manuscript “_Proximal methods for -point source localisation_” ([arXiv:2212.02991]) by Tuomo Valkonen -⟨tuomov@iki.fi⟩. It concerns solution of problems of the type +This package contains the [Rust] codes for the numerical experiments in the articles +* T. Valkonen, “_Proximal methods for +point source localisation_”, Journal of Nonsmooth Analysis and Optimization 4 (2023), 10433, [doi:10.46298/jnsao-2023-10433] ([arXiv:2212.02991]) +* T. Valkonen, “_Point source localisation with unbalanced optimal transport_” (2025), submitted. + +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. For the 2-norm-squared data term implemented are the -algorithms μFB, μFISTA, and μPDPS from the aforementioned manuscript along with -comparison relaxed and fully corrective conditional gradient methods from the -literature. For the 1-norm data term only the μPDPS is applicable. +simple sensor grid. ## Installation and usage @@ -36,8 +36,8 @@ brew install gsl ``` For other operating systems, suggestions are available in the [rust-GSL] - crate documentation. On Windows, you will likely need to pass extra - `RUSTFLAGS` options to Cargo in the following steps to locate the library. + 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. @@ -49,38 +49,33 @@ [rust-GSL]: https://docs.rs/GSL/6.0.0/rgsl/ [Homebrew]: https://brew.sh [arXiv:2212.02991]: https://arxiv.org/abs/2212.02991 + [doi:10.46298/jnsao-2023-10433]: http://doi.org/10.46298/jnsao-2023-10433 ### Building and running the experiments -To compile the code and run the experiments in the manuscript, use +To compile and install the program, use +```console +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 ```console cargo run --release -- -o results ``` -When doing this for the first time, several dependencies will be downloaded. -The double-dash (`--`) separates the arguments of Cargo and this software, -`pointsource_algs`. The `--release` option to Cargo is required for `rustc` to -build optimised high performance code. Without that flag the performance will -be significantly worse. The `-o results` option tells `pointsource_algs` to -write results in the `results` directory. The option is required. - -Alternatively, you may build the executable with -```console -cargo build --release -``` -and then run it with -``` -target/release/pointsource_algs -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. As above with -`-o`, if using `cargo` to run the executable, you have to pass any arguments -to `pointsource_algs` after a double-dash: -```console -cargo run --release -- --help -``` +customise algorithm parameters and the experiments performed. ## Internals