README.md

Mon, 05 Dec 2022 23:50:22 +0200

author
Tuomo Valkonen <tuomov@iki.fi>
date
Mon, 05 Dec 2022 23:50:22 +0200
changeset 56
3a784e6e475a
parent 50
39c5e6c7759d
permissions
-rw-r--r--

Zenodo packaging hacks

0
eb3c7813b67a Initial version
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
1
6
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
2 # Proximal methods for point source localisation: the implementation
0
eb3c7813b67a Initial version
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
3
40
896b42b5ac1a README updates
Tuomo Valkonen <tuomov@iki.fi>
parents: 35
diff changeset
4 This package contains the [Rust] codes for the numerical experiments in the articles
896b42b5ac1a README updates
Tuomo Valkonen <tuomov@iki.fi>
parents: 35
diff changeset
5 * T. Valkonen, “_Proximal methods for
896b42b5ac1a README updates
Tuomo Valkonen <tuomov@iki.fi>
parents: 35
diff changeset
6 point source localisation_”, Journal of Nonsmooth Analysis and Optimization 4 (2023), 10433, [doi:10.46298/jnsao-2023-10433] ([arXiv:2212.02991])
896b42b5ac1a README updates
Tuomo Valkonen <tuomov@iki.fi>
parents: 35
diff changeset
7 * T. Valkonen, “_Point source localisation with unbalanced optimal transport_” (2025), submitted.
896b42b5ac1a README updates
Tuomo Valkonen <tuomov@iki.fi>
parents: 35
diff changeset
8
896b42b5ac1a README updates
Tuomo Valkonen <tuomov@iki.fi>
parents: 35
diff changeset
9 It concerns solution of problems of the type
0
eb3c7813b67a Initial version
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
10 $$
12
861f6c033646 Oops, some μ were x in the README.
Tuomo Valkonen <tuomov@iki.fi>
parents: 9
diff changeset
11 \min_{μ ∈ ℳ(Ω)}~ F(μ) + λ \|μ\|_{ℳ(Ω)} + δ_{≥ 0}(μ),
0
eb3c7813b67a Initial version
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
12 $$
6
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
13 where $F$ is a data term, and $ℳ(Ω)$ is the space of Radon measures on the
12
861f6c033646 Oops, some μ were x in the README.
Tuomo Valkonen <tuomov@iki.fi>
parents: 9
diff changeset
14 (rectangular) domain $Ω ⊂ ℝ^n$. Implemented are $F(μ)=\frac12\|Aμ-b\|_2^2$ and
861f6c033646 Oops, some μ were x in the README.
Tuomo Valkonen <tuomov@iki.fi>
parents: 9
diff changeset
15 $F(μ)=\|Aμ-b\|_1$ for the forward operator $A \in 𝕃(ℳ(Ω); ℝ^m)$ modelling a
40
896b42b5ac1a README updates
Tuomo Valkonen <tuomov@iki.fi>
parents: 35
diff changeset
16 simple sensor grid.
0
eb3c7813b67a Initial version
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
17
eb3c7813b67a Initial version
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
18 ## Installation and usage
eb3c7813b67a Initial version
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
19
6
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
20 ### Installing dependencies
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
21
13
bdc57366d4f5 arXiv links, README beautification
Tuomo Valkonen <tuomov@iki.fi>
parents: 12
diff changeset
22 Most dependencies are managed by the Cargo build system of [Rust]. You will
6
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
23 only need to install the “nightly” Rust compiler and the
56
3a784e6e475a Zenodo packaging hacks
Tuomo Valkonen <tuomov@iki.fi>
parents: 50
diff changeset
24 [GNU Scientific Library] manually.
6
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
25
13
bdc57366d4f5 arXiv links, README beautification
Tuomo Valkonen <tuomov@iki.fi>
parents: 12
diff changeset
26 1. Install the [Rust] infrastructure (including Cargo) with [rustup].
6
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
27 2. Install a “nightly” release of the Rust compiler. With rustup, installed in
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
28 the previous step, this can be done with
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
29 ```console
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
30 rustup toolchain install nightly
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
31 ```
13
bdc57366d4f5 arXiv links, README beautification
Tuomo Valkonen <tuomov@iki.fi>
parents: 12
diff changeset
32 3. Install [GNU Scientific Library]. On a Mac with [Homebrew] installed,
6
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
33 this can be done with
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
34 ```console
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
35 brew install gsl
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
36 ```
17
de8d43ebfd0d Oops, broke some README external links
Tuomo Valkonen <tuomov@iki.fi>
parents: 13
diff changeset
37 For other operating systems, suggestions are available in the [rust-GSL]
50
39c5e6c7759d README adjustment
Tuomo Valkonen <tuomov@iki.fi>
parents: 40
diff changeset
38 crate documentation. You may need to pass extra `RUSTFLAGS` options to
39c5e6c7759d README adjustment
Tuomo Valkonen <tuomov@iki.fi>
parents: 40
diff changeset
39 Cargo in the following steps to locate the library.
6
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
40
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
41 [rustup]: https://rustup.rs
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
42 [alg_tools]: https://tuomov.iki.fi/software/alg_tools/
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
43 [Rust]: https://www.rust-lang.org/
17
de8d43ebfd0d Oops, broke some README external links
Tuomo Valkonen <tuomov@iki.fi>
parents: 13
diff changeset
44 [GNU Scientific Library]: https://www.gnu.org/software/gsl/
de8d43ebfd0d Oops, broke some README external links
Tuomo Valkonen <tuomov@iki.fi>
parents: 13
diff changeset
45 [rust-GSL]: https://docs.rs/GSL/6.0.0/rgsl/
6
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
46 [Homebrew]: https://brew.sh
13
bdc57366d4f5 arXiv links, README beautification
Tuomo Valkonen <tuomov@iki.fi>
parents: 12
diff changeset
47 [arXiv:2212.02991]: https://arxiv.org/abs/2212.02991
40
896b42b5ac1a README updates
Tuomo Valkonen <tuomov@iki.fi>
parents: 35
diff changeset
48 [doi:10.46298/jnsao-2023-10433]: http://doi.org/10.46298/jnsao-2023-10433
6
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
49
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
50 ### Building and running the experiments
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
51
35
b087e3eab191 New version of sliding.
Tuomo Valkonen <tuomov@iki.fi>
parents: 17
diff changeset
52 To compile and install the program, use
b087e3eab191 New version of sliding.
Tuomo Valkonen <tuomov@iki.fi>
parents: 17
diff changeset
53 ```console
b087e3eab191 New version of sliding.
Tuomo Valkonen <tuomov@iki.fi>
parents: 17
diff changeset
54 cargo install --path=.
b087e3eab191 New version of sliding.
Tuomo Valkonen <tuomov@iki.fi>
parents: 17
diff changeset
55 ```
b087e3eab191 New version of sliding.
Tuomo Valkonen <tuomov@iki.fi>
parents: 17
diff changeset
56 When doing this for the first time, several dependencies will be downloaded.
40
896b42b5ac1a README updates
Tuomo Valkonen <tuomov@iki.fi>
parents: 35
diff changeset
57 Now you can run the default set of experiments with
35
b087e3eab191 New version of sliding.
Tuomo Valkonen <tuomov@iki.fi>
parents: 17
diff changeset
58 ```
b087e3eab191 New version of sliding.
Tuomo Valkonen <tuomov@iki.fi>
parents: 17
diff changeset
59 pointsource_algs -o results
b087e3eab191 New version of sliding.
Tuomo Valkonen <tuomov@iki.fi>
parents: 17
diff changeset
60 ```
b087e3eab191 New version of sliding.
Tuomo Valkonen <tuomov@iki.fi>
parents: 17
diff changeset
61 The `-o results` option tells `pointsource_algs` to write results in the
b087e3eab191 New version of sliding.
Tuomo Valkonen <tuomov@iki.fi>
parents: 17
diff changeset
62 `results` directory. The option is required.
b087e3eab191 New version of sliding.
Tuomo Valkonen <tuomov@iki.fi>
parents: 17
diff changeset
63
b087e3eab191 New version of sliding.
Tuomo Valkonen <tuomov@iki.fi>
parents: 17
diff changeset
64 Alternatively, you may build and run the program without installing with
6
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
65 ```console
9
21b0e537ac0e Command line parameter passing simplifications and make `-o` required.
Tuomo Valkonen <tuomov@iki.fi>
parents: 6
diff changeset
66 cargo run --release -- -o results
0
eb3c7813b67a Initial version
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
67 ```
35
b087e3eab191 New version of sliding.
Tuomo Valkonen <tuomov@iki.fi>
parents: 17
diff changeset
68 The double-dash separates the options for the Cargo build system
b087e3eab191 New version of sliding.
Tuomo Valkonen <tuomov@iki.fi>
parents: 17
diff changeset
69 and `pointsource_algs`.
0
eb3c7813b67a Initial version
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
70
6
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
71 ### Documentation
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
72
9
21b0e537ac0e Command line parameter passing simplifications and make `-o` required.
Tuomo Valkonen <tuomov@iki.fi>
parents: 6
diff changeset
73 Use the `--help` option to get an extensive listing of command line options to
35
b087e3eab191 New version of sliding.
Tuomo Valkonen <tuomov@iki.fi>
parents: 17
diff changeset
74 customise algorithm parameters and the experiments performed.
6
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
75
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
76 ## Internals
0
eb3c7813b67a Initial version
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
77
6
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
78 If you are interested in the program internals, the integrated source code
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
79 documentation may be built and opened with
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
80 ```console
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
81 cargo doc # build dependency docs
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
82 misc/cargo-d --open # build and open KaTeX-aware docs for this crate
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
83 ```
bcb508479948 README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 0
diff changeset
84 The `cargo-d` script ensures that KaTeX mathematics is rendered in the
13
bdc57366d4f5 arXiv links, README beautification
Tuomo Valkonen <tuomov@iki.fi>
parents: 12
diff changeset
85 generated documentation through an ugly workaround. Unfortunately,
bdc57366d4f5 arXiv links, README beautification
Tuomo Valkonen <tuomov@iki.fi>
parents: 12
diff changeset
86 `rustdoc`, akin to Rust largely itself, is stuck in 80's 7-bit gringo ASCII
bdc57366d4f5 arXiv links, README beautification
Tuomo Valkonen <tuomov@iki.fi>
parents: 12
diff changeset
87 world, and does not support modern markdown features, such as mathematics.
0
eb3c7813b67a Initial version
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
88
56
3a784e6e475a Zenodo packaging hacks
Tuomo Valkonen <tuomov@iki.fi>
parents: 50
diff changeset
89 ## Source repository
3a784e6e475a Zenodo packaging hacks
Tuomo Valkonen <tuomov@iki.fi>
parents: 50
diff changeset
90
3a784e6e475a Zenodo packaging hacks
Tuomo Valkonen <tuomov@iki.fi>
parents: 50
diff changeset
91 A Mercurial repository is available; see
3a784e6e475a Zenodo packaging hacks
Tuomo Valkonen <tuomov@iki.fi>
parents: 50
diff changeset
92 https://tuomov.iki.fi/software/pointsource_algs/.

mercurial