| 1 | 1 | 
| 2 # Proximal methods for point source localisation: the implementation | 2 # Proximal methods for point source localisation: the implementation | 
| 3 | 3 | 
| 4 This package contains [Rust] codes for the manuscript “_Proximal methods for | 4 This package contains the [Rust] codes for the numerical experiments in the articles | 
| 5 point source localisation_” ([arXiv:2212.02991]) by Tuomo Valkonen | 5 * T. Valkonen, “_Proximal methods for | 
| 6 ⟨tuomov@iki.fi⟩. It concerns solution of problems of the type | 6 point source localisation_”, Journal of Nonsmooth Analysis and Optimization  4 (2023), 10433, [doi:10.46298/jnsao-2023-10433] ([arXiv:2212.02991]) | 
|  | 7 * T. Valkonen, “_Point source localisation with unbalanced optimal transport_” (2025), submitted. | 
|  | 8 | 
|  | 9 It concerns solution of problems of the type | 
| 7 $$ | 10 $$ | 
| 8     \min_{μ ∈ ℳ(Ω)}~ F(μ) + λ \|μ\|_{ℳ(Ω)} + δ_{≥ 0}(μ), | 11     \min_{μ ∈ ℳ(Ω)}~ F(μ) + λ \|μ\|_{ℳ(Ω)} + δ_{≥ 0}(μ), | 
| 9 $$ | 12 $$ | 
| 10 where $F$ is a data term, and $ℳ(Ω)$ is the space of Radon measures on the | 13 where $F$ is a data term, and $ℳ(Ω)$ is the space of Radon measures on the | 
| 11 (rectangular) domain $Ω ⊂ ℝ^n$. Implemented are $F(μ)=\frac12\|Aμ-b\|_2^2$ and | 14 (rectangular) domain $Ω ⊂ ℝ^n$. Implemented are $F(μ)=\frac12\|Aμ-b\|_2^2$ and | 
| 12 $F(μ)=\|Aμ-b\|_1$ for the forward operator $A \in 𝕃(ℳ(Ω); ℝ^m)$ modelling a | 15 $F(μ)=\|Aμ-b\|_1$ for the forward operator $A \in 𝕃(ℳ(Ω); ℝ^m)$ modelling a | 
| 13 simple sensor grid. For the 2-norm-squared data term implemented are the | 16 simple sensor grid. | 
| 14 algorithms μFB, μFISTA, and μPDPS from the aforementioned manuscript along with |  | 
| 15 comparison relaxed and fully corrective conditional gradient methods from the |  | 
| 16 literature. For the 1-norm data term only the μPDPS is applicable. |  | 
| 17 | 17 | 
| 18 ## Installation and usage | 18 ## Installation and usage | 
| 19 | 19 | 
| 20 ### Installing dependencies | 20 ### Installing dependencies | 
| 21 | 21 | 
| 47   [Rust]: https://www.rust-lang.org/ | 47   [Rust]: https://www.rust-lang.org/ | 
| 48   [GNU Scientific Library]: https://www.gnu.org/software/gsl/ | 48   [GNU Scientific Library]: https://www.gnu.org/software/gsl/ | 
| 49   [rust-GSL]: https://docs.rs/GSL/6.0.0/rgsl/ | 49   [rust-GSL]: https://docs.rs/GSL/6.0.0/rgsl/ | 
| 50   [Homebrew]: https://brew.sh | 50   [Homebrew]: https://brew.sh | 
| 51   [arXiv:2212.02991]: https://arxiv.org/abs/2212.02991 | 51   [arXiv:2212.02991]: https://arxiv.org/abs/2212.02991 | 
|  | 52   [doi:10.46298/jnsao-2023-10433]: http://doi.org/10.46298/jnsao-2023-10433 | 
| 52 | 53 | 
| 53 ### Building and running the experiments | 54 ### Building and running the experiments | 
| 54 | 55 | 
| 55 To compile and install the program, use | 56 To compile and install the program, use | 
| 56 ```console | 57 ```console | 
| 57 cargo install --path=. | 58 cargo install --path=. | 
| 58 ``` | 59 ``` | 
| 59 When doing this for the first time, several dependencies will be downloaded. | 60 When doing this for the first time, several dependencies will be downloaded. | 
| 60 Now you can run the default experiment with | 61 Now you can run the default set of experiments with | 
| 61 ``` | 62 ``` | 
| 62 pointsource_algs -o results | 63 pointsource_algs -o results | 
| 63 ``` | 64 ``` | 
| 64 The `-o results` option tells `pointsource_algs` to write results in the | 65 The `-o results` option tells `pointsource_algs` to write results in the | 
| 65 `results` directory. The option is required. | 66 `results` directory. The option is required. |