Wed, 22 Apr 2026 23:43:00 -0500
Bump versions
| 0 | 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 | 3 | |
| 40 | 4 | This package contains the [Rust] codes for the numerical experiments in the articles |
| 5 | * T. Valkonen, “_Proximal methods for | |
| 6 | point source localisation_”, Journal of Nonsmooth Analysis and Optimization 4 (2023), 10433, [doi:10.46298/jnsao-2023-10433] ([arXiv:2212.02991]) | |
|
57
5c9c5649c35d
Add arXiv link of second paper to README
Tuomo Valkonen <tuomov@iki.fi>
parents:
50
diff
changeset
|
7 | * T. Valkonen, “_Point source localisation with unbalanced optimal transport_” (2025), submitted, [arXiv:2502.12417] |
| 40 | 8 | |
| 9 | It concerns solution of problems of the type | |
| 0 | 10 | $$ |
|
12
861f6c033646
Oops, some μ were x in the README.
Tuomo Valkonen <tuomov@iki.fi>
parents:
9
diff
changeset
|
11 | \min_{μ ∈ ℳ(Ω)}~ F(μ) + λ \|μ\|_{ℳ(Ω)} + δ_{≥ 0}(μ), |
| 0 | 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 | 16 | simple sensor grid. |
| 0 | 17 | |
| 18 | ## Installation and usage | |
| 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 |
|
13
bdc57366d4f5
arXiv links, README beautification
Tuomo Valkonen <tuomov@iki.fi>
parents:
12
diff
changeset
|
24 | [GNU Scientific Library] manually. At the time of writing this README, |
|
bdc57366d4f5
arXiv links, README beautification
Tuomo Valkonen <tuomov@iki.fi>
parents:
12
diff
changeset
|
25 | [alg_tools] also needs to be downloaded separately. |
|
6
bcb508479948
README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents:
0
diff
changeset
|
26 | |
|
13
bdc57366d4f5
arXiv links, README beautification
Tuomo Valkonen <tuomov@iki.fi>
parents:
12
diff
changeset
|
27 | 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
|
28 | 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
|
29 | 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
|
30 | ```console |
|
bcb508479948
README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents:
0
diff
changeset
|
31 | 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
|
32 | ``` |
|
13
bdc57366d4f5
arXiv links, README beautification
Tuomo Valkonen <tuomov@iki.fi>
parents:
12
diff
changeset
|
33 | 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
|
34 | 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
|
35 | ```console |
|
bcb508479948
README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents:
0
diff
changeset
|
36 | brew install gsl |
|
bcb508479948
README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents:
0
diff
changeset
|
37 | ``` |
|
17
de8d43ebfd0d
Oops, broke some README external links
Tuomo Valkonen <tuomov@iki.fi>
parents:
13
diff
changeset
|
38 | For other operating systems, suggestions are available in the [rust-GSL] |
|
61
4f468d35fa29
General forward operators, separation of measures into own crate, and other architecture improvements to support the pointsource_pde crate.
Tuomo Valkonen <tuomov@iki.fi>
parents:
57
diff
changeset
|
39 | crate documentation. If not correctly installed, you may need to pass |
|
4f468d35fa29
General forward operators, separation of measures into own crate, and other architecture improvements to support the pointsource_pde crate.
Tuomo Valkonen <tuomov@iki.fi>
parents:
57
diff
changeset
|
40 | extra `RUSTFLAGS` options to Cargo in the following steps to locate the |
|
4f468d35fa29
General forward operators, separation of measures into own crate, and other architecture improvements to support the pointsource_pde crate.
Tuomo Valkonen <tuomov@iki.fi>
parents:
57
diff
changeset
|
41 | library. |
|
6
bcb508479948
README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents:
0
diff
changeset
|
42 | |
|
13
bdc57366d4f5
arXiv links, README beautification
Tuomo Valkonen <tuomov@iki.fi>
parents:
12
diff
changeset
|
43 | 4. Download [alg_tools] and unpack it under the same directory as this |
|
6
bcb508479948
README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents:
0
diff
changeset
|
44 | package. |
|
bcb508479948
README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents:
0
diff
changeset
|
45 | |
|
bcb508479948
README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents:
0
diff
changeset
|
46 | [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
|
47 | [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
|
48 | [Rust]: https://www.rust-lang.org/ |
|
17
de8d43ebfd0d
Oops, broke some README external links
Tuomo Valkonen <tuomov@iki.fi>
parents:
13
diff
changeset
|
49 | [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
|
50 | [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
|
51 | [Homebrew]: https://brew.sh |
|
13
bdc57366d4f5
arXiv links, README beautification
Tuomo Valkonen <tuomov@iki.fi>
parents:
12
diff
changeset
|
52 | [arXiv:2212.02991]: https://arxiv.org/abs/2212.02991 |
|
57
5c9c5649c35d
Add arXiv link of second paper to README
Tuomo Valkonen <tuomov@iki.fi>
parents:
50
diff
changeset
|
53 | [arXiv:2502.12417]: https://arxiv.org/abs/2502.12417 |
| 40 | 54 | [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
|
55 | |
|
bcb508479948
README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents:
0
diff
changeset
|
56 | ### 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
|
57 | |
| 35 | 58 | To compile and install the program, use |
| 59 | ```console | |
| 60 | cargo install --path=. | |
| 61 | ``` | |
| 62 | When doing this for the first time, several dependencies will be downloaded. | |
| 40 | 63 | Now you can run the default set of experiments with |
| 35 | 64 | ``` |
|
61
4f468d35fa29
General forward operators, separation of measures into own crate, and other architecture improvements to support the pointsource_pde crate.
Tuomo Valkonen <tuomov@iki.fi>
parents:
57
diff
changeset
|
65 | pointsource_experiments -o results |
| 35 | 66 | ``` |
| 67 | The `-o results` option tells `pointsource_algs` to write results in the | |
| 68 | `results` directory. The option is required. | |
| 69 | ||
| 70 | 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
|
71 | ```console |
|
9
21b0e537ac0e
Command line parameter passing simplifications and make `-o` required.
Tuomo Valkonen <tuomov@iki.fi>
parents:
6
diff
changeset
|
72 | cargo run --release -- -o results |
| 0 | 73 | ``` |
|
57
5c9c5649c35d
Add arXiv link of second paper to README
Tuomo Valkonen <tuomov@iki.fi>
parents:
50
diff
changeset
|
74 | The double-dash separates the options for the Cargo build system |
|
61
4f468d35fa29
General forward operators, separation of measures into own crate, and other architecture improvements to support the pointsource_pde crate.
Tuomo Valkonen <tuomov@iki.fi>
parents:
57
diff
changeset
|
75 | and `pointsource_experiments`. |
| 0 | 76 | |
|
6
bcb508479948
README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents:
0
diff
changeset
|
77 | ### Documentation |
|
bcb508479948
README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents:
0
diff
changeset
|
78 | |
|
9
21b0e537ac0e
Command line parameter passing simplifications and make `-o` required.
Tuomo Valkonen <tuomov@iki.fi>
parents:
6
diff
changeset
|
79 | Use the `--help` option to get an extensive listing of command line options to |
| 35 | 80 | 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
|
81 | |
|
bcb508479948
README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents:
0
diff
changeset
|
82 | ## Internals |
| 0 | 83 | |
|
6
bcb508479948
README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents:
0
diff
changeset
|
84 | 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
|
85 | 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
|
86 | ```console |
|
bcb508479948
README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents:
0
diff
changeset
|
87 | 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
|
88 | 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
|
89 | ``` |
|
bcb508479948
README fine-tuning and build.rs for uglifying it for rustdoc.
Tuomo Valkonen <tuomov@iki.fi>
parents:
0
diff
changeset
|
90 | 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
|
91 | generated documentation through an ugly workaround. Unfortunately, |
|
bdc57366d4f5
arXiv links, README beautification
Tuomo Valkonen <tuomov@iki.fi>
parents:
12
diff
changeset
|
92 | `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
|
93 | world, and does not support modern markdown features, such as mathematics. |