README.md

changeset 13
bdc57366d4f5
parent 12
861f6c033646
child 16
bcf95e415f15
child 17
de8d43ebfd0d
equal deleted inserted replaced
12:861f6c033646 13:bdc57366d4f5
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 [Rust] codes for the manuscript “_Proximal methods for
5 point source localisation_” by Tuomo Valkonen ⟨tuomov@iki.fi⟩. It concerns 5 point source localisation_” ([arXiv:2212.02991]) by Tuomo Valkonen
6 solution of problems of the type 6 ⟨tuomov@iki.fi⟩. It concerns solution of problems of the type
7 $$ 7 $$
8 \min_{μ ∈ ℳ(Ω)}~ F(μ) + λ \|μ\|_{ℳ(Ω)} + δ_{≥ 0}(μ), 8 \min_{μ ∈ ℳ(Ω)}~ F(μ) + λ \|μ\|_{ℳ(Ω)} + δ_{≥ 0}(μ),
9 $$ 9 $$
10 where $F$ is a data term, and $ℳ(Ω)$ is the space of Radon measures on the 10 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 11 (rectangular) domain $Ω ⊂ ℝ^n$. Implemented are $F(μ)=\frac12\|Aμ-b\|_2^2$ and
17 17
18 ## Installation and usage 18 ## Installation and usage
19 19
20 ### Installing dependencies 20 ### Installing dependencies
21 21
22 Most dependencies are managed by the Cargo build system of [Rust][]. You will 22 Most dependencies are managed by the Cargo build system of [Rust]. You will
23 only need to install the “nightly” Rust compiler and the 23 only need to install the “nightly” Rust compiler and the
24 [GNU Scientific Library][gsl] manually. At the time of writing this README, 24 [GNU Scientific Library] manually. At the time of writing this README,
25 [alg_tools][] also needs to be downloaded separately. 25 [alg_tools] also needs to be downloaded separately.
26 26
27 1. Install the [Rust][] infrastructure (including Cargo) with [rustup][]. 27 1. Install the [Rust] infrastructure (including Cargo) with [rustup].
28 2. Install a “nightly” release of the Rust compiler. With rustup, installed in 28 2. Install a “nightly” release of the Rust compiler. With rustup, installed in
29 the previous step, this can be done with 29 the previous step, this can be done with
30 ```console 30 ```console
31 rustup toolchain install nightly 31 rustup toolchain install nightly
32 ``` 32 ```
33 3. Install [GNU Scientific Library][gsl]. On a Mac with [Homebrew] installed, 33 3. Install [GNU Scientific Library]. On a Mac with [Homebrew] installed,
34 this can be done with 34 this can be done with
35 ```console 35 ```console
36 brew install gsl 36 brew install gsl
37 ``` 37 ```
38 For other operating systems, suggestions are available in the 38 For other operating systems, suggestions are available in the
39 [rust-GSL crate documentation][rust-GSL]. 39 [rust-GSL crate documentation][rust-GSL].
40 On Windows, you will likely need to pass extra `RUSTFLAGS` options to 40 On Windows, you will likely need to pass extra `RUSTFLAGS` options to
41 Cargo in the following steps to locate the library. 41 Cargo in the following steps to locate the library.
42 42
43 4. Download [alg_tools][] and unpack it under the same directory as this 43 4. Download [alg_tools] and unpack it under the same directory as this
44 package. 44 package.
45 45
46 [rustup]: https://rustup.rs 46 [rustup]: https://rustup.rs
47 [alg_tools]: https://tuomov.iki.fi/software/alg_tools/ 47 [alg_tools]: https://tuomov.iki.fi/software/alg_tools/
48 [Rust]: https://www.rust-lang.org/ 48 [Rust]: https://www.rust-lang.org/
49 [rust-GSL]: https://docs.rs/GSL/6.0.0/rgsl/ 49 [GNU Scientific Library]: https://docs.rs/GSL/6.0.0/rgsl/
50 [gsl]: https://www.gnu.org/software/gsl/ 50 [gsl]: https://www.gnu.org/software/gsl/
51 [Homebrew]: https://brew.sh 51 [Homebrew]: https://brew.sh
52 [arXiv:2212.02991]: https://arxiv.org/abs/2212.02991
52 53
53 ### Building and running the experiments 54 ### Building and running the experiments
54 55
55 To compile the code and run the experiments in the manuscript, use 56 To compile the code and run the experiments in the manuscript, use
56 ```console 57 ```console
89 ```console 90 ```console
90 cargo doc # build dependency docs 91 cargo doc # build dependency docs
91 misc/cargo-d --open # build and open KaTeX-aware docs for this crate 92 misc/cargo-d --open # build and open KaTeX-aware docs for this crate
92 ``` 93 ```
93 The `cargo-d` script ensures that KaTeX mathematics is rendered in the 94 The `cargo-d` script ensures that KaTeX mathematics is rendered in the
94 generated documentation. Unfortunately, `rustdoc`, akin to Rust largely itself, 95 generated documentation through an ugly workaround. Unfortunately,
95 is stuck in 80's 7-bit gringo ASCII world, and does not support modern markdown 96 `rustdoc`, akin to Rust largely itself, is stuck in 80's 7-bit gringo ASCII
96 features, such as mathematics. Instead, to render mathematics, an ugly 97 world, and does not support modern markdown features, such as mathematics.
97 workaround is needed together with lots of painful raw HTML escapes in the
98 documentation.
99 98

mercurial