Skip to content

Commit 7563b32

Browse files
Bump dependencies. (#309)
* Bump dependencies. * Move ARC CG subsolver to the main module * Update Changelog.md * Add a workflow that makes sure we do not forget to add an entry to Changelog.md on PRs. * Apply suggestions from code review * Add Changelog to docs. --------- Co-authored-by: Mateusz Baran <[email protected]>
1 parent d6acf64 commit 7563b32

16 files changed

+217
-117
lines changed

.github/workflows/changelog.yml

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
name: Check Changelog
2+
on:
3+
pull_request:
4+
5+
jobs:
6+
Check-Changelog:
7+
name: Check Changelog Action
8+
runs-on: ubuntu-latest
9+
steps:
10+
- uses: tarides/changelog-check-action@v2
11+
with:
12+
changelog: Changelog.md

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,4 @@ docs/src/tutorials/*.md
2020
docs/.CondaPkg
2121
docs/src/tutorials/Optimize!_files
2222
docs/src/tutorials/*.html
23+
docs/src/changelog.md

Changelog.md

+63-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,68 @@ All notable Changes to the Julia package `Manopt.jl` will be documented in this
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.4.40] – 24/10/2023
9+
10+
### Added
11+
12+
* add a `--help` argument to `docs/make.jl` to document all availabel command line arguments
13+
* add a `--exclude-tutorials` argument to `docs/make.jl`. This way, when quarto is not available
14+
on a computer, the docs can still be build with the tutorials not being added to the menu
15+
such that documenter does not expect them to exist.
16+
17+
### Changes
18+
19+
* Bump dependencies to `ManifoldsBase.jl` 0.15 and `Manifolds.jl` 0.9
20+
* move the ARC CG subsolver to the main package, since `TangentSpace` is now already
21+
available from `ManifoldsBase`.
22+
23+
## [0.4.39] – 09/10/2023
24+
25+
### Changes
26+
27+
* also use the pair of a retraction and the inverse retraction (see last update)
28+
to perform the relaxation within the Douglas-Rachford algorithm.
29+
30+
## [0.4.38] – 08/10/2023
31+
32+
### Changes
33+
34+
* avoid allocations when calling `get_jacobian!` within the Levenberg-Marquard Algorithm.
35+
36+
### Fixed
37+
38+
* Fix a lot of typos in the documentation
39+
40+
## [0.4.37] – 28/09/2023
41+
42+
### Changes
43+
44+
* add more of the Riemannian Levenberg-Marquard algorithms parameters as keywords, so they
45+
can be changed on call
46+
* generalize the internal reflection of Douglas-Rachford, such that is also works with an
47+
arbitrary pair of a reflection and an inverse reflection.
48+
49+
## [0.4.36] – 20/09/2023
50+
51+
### Fixed
52+
53+
* Fixed a bug that caused non-matrix points and vectors to fail when working with approcimate
54+
55+
## [0.4.35] – 14/09/2023
56+
57+
### Added
58+
59+
* The access to functions of the objective is now unified and encapsulated in proper `get_`
60+
functions.
61+
62+
## [0.4.34] – 02/09/2023
63+
64+
### Added
65+
66+
* an `ManifoldEuclideanGradientObjetive` to allow the cost, gradient, and Hessian and other
67+
first or second derivative based elements to be Euclidean and converted when needed.
68+
* a keyword `objective_type=:Euclidean` for all solvers, that specifies that an Objective shall be created of the above type
69+
870
## [0.4.33] - 24/08/2023
971

1072
### Added
@@ -282,7 +344,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
282344
* a `max_stepsize` per manifold to avoid leaving the injectivity radius,
283345
which it also defaults to
284346

285-
## {0.4.0] - 10/01/2023
347+
## [0.4.0] - 10/01/2023
286348

287349
### Added
288350

Project.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "Manopt"
22
uuid = "0fc0a36d-df90-57f3-8f93-d78a9fc72bb5"
33
authors = ["Ronny Bergmann <[email protected]>"]
4-
version = "0.4.39"
4+
version = "0.4.40"
55

66
[deps]
77
ColorSchemes = "35d6a980-a343-548e-a6ea-1d62b119f2f4"
@@ -40,8 +40,8 @@ Colors = "0.11.2, 0.12"
4040
DataStructures = "0.17, 0.18"
4141
LRUCache = "1.4"
4242
ManifoldDiff = "0.2, 0.3.3"
43-
Manifolds = "0.8.75"
44-
ManifoldsBase = "0.14.10"
43+
Manifolds = "0.9"
44+
ManifoldsBase = "0.15"
4545
PolynomialRoots = "1"
4646
Requires = "0.5, 1"
4747
julia = "1.6"

docs/Project.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@ Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
2222
[compat]
2323
BenchmarkTools = "1.3"
2424
CondaPkg = "0.2"
25-
Documenter = "0.27"
26-
Manifolds = "0.8.75"
27-
ManifoldsBase = "0.13, 0.14"
25+
Documenter = "1"
26+
Manifolds = "0.8.81, 0.9"
27+
ManifoldsBase = "0.14.12, 0.15"

docs/make.jl

+67-42
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,28 @@
22
#
33
#
44

5+
if "--help" ARGS
6+
println(
7+
"""
8+
docs/make.jl
9+
10+
Render the `Manopt.jl` documenation with optinal arguments
11+
12+
Arguments
13+
* `--exclude-docs` - exclude the tutorials from the menu of Documenter,
14+
this can be used if you do not have Quarto installed to still be able to render the docs
15+
locally on this machine. This option should not be set on CI.
16+
* `--help` - print this help and exit without rendering the documentation
17+
* `--quarto` – run the Quarto notebooks from the `tutorials/` folder before generating the documentation
18+
this has to be run locally at least once for the `tutorials/*.md` files to exist that are included in
19+
the documentation (see `--exclude-tutorials`) for the alternative.
20+
If they are generated ones they are cached accordingly.
21+
Then you can spare time in the rendering by not passing this argument.
22+
""",
23+
)
24+
exit(0)
25+
end
26+
527
#
628
# (a) if docs is not the current active environment, switch to it
729
# (from https://github.com/JuliaIO/HDF5.jl/pull/1020/) 
@@ -29,6 +51,17 @@ if "--quarto" ∈ ARGS
2951
end
3052
end
3153

54+
tutorials_in_menu = true
55+
if "--exclude-tutorials" ARGS
56+
@warn """
57+
You are excluding the tutorials from the Menu,
58+
which might be done if you can not render them locally.
59+
60+
Remember that this should never be done on CI for the full documentation.
61+
"""
62+
tutorials_in_menu = false
63+
end
64+
3265
# (c) load necessary packages for the docs
3366
using Documenter
3467
using DocumenterCitations
@@ -38,26 +71,42 @@ using LineSearches, LRUCache, Manopt, Manifolds, Plots
3871
generated_path = joinpath(@__DIR__, "src")
3972
base_url = "https://github.com/JuliaManifolds/Manopt.jl/blob/master/"
4073
isdir(generated_path) || mkdir(generated_path)
41-
open(joinpath(generated_path, "contributing.md"), "w") do io
42-
# Point to source license file
43-
println(
44-
io,
45-
"""
46-
```@meta
47-
EditURL = "$(base_url)CONTRIBUTING.md"
48-
```
49-
""",
50-
)
51-
# Write the contents out below the meta block
52-
for line in eachline(joinpath(dirname(@__DIR__), "CONTRIBUTING.md"))
53-
println(io, line)
74+
for (md_file, doc_file) in
75+
[("CONTRIBUTING.md", "contributing.md"), ("Changelog.md", "changelog.md")]
76+
open(joinpath(generated_path, doc_file), "w") do io
77+
# Point to source license file
78+
println(
79+
io,
80+
"""
81+
```@meta
82+
EditURL = "$(base_url)$(md_file)"
83+
```
84+
""",
85+
)
86+
# Write the contents out below the meta block
87+
for line in eachline(joinpath(dirname(@__DIR__), md_file))
88+
println(io, line)
89+
end
5490
end
5591
end
5692

93+
## Build titorials menu
94+
tutorials_menu =
95+
"How to..." => [
96+
"Get started: Optimize!" => "tutorials/Optimize!.md",
97+
"Speedup using Inplace computations" => "tutorials/InplaceGradient.md",
98+
"Use Automatic Differentiation" => "tutorials/AutomaticDifferentiation.md",
99+
"Define Objectives in the Embedding" => "tutorials/EmbeddingObjectives.md",
100+
"Count and use a Cache" => "tutorials/CountAndCache.md",
101+
"Print Debug Output" => "tutorials/HowToDebug.md",
102+
"Record values" => "tutorials/HowToRecord.md",
103+
"Implement a Solver" => "tutorials/ImplementASolver.md",
104+
"Do Constrained Optimization" => "tutorials/ConstrainedOptimization.md",
105+
"Do Geodesic Regression" => "tutorials/GeodesicRegression.md",
106+
]
57107
# (e) ...finally! make docs
58108
bib = CitationBibliography(joinpath(@__DIR__, "src", "references.bib"); style=:alpha)
59-
makedocs(
60-
bib;
109+
makedocs(;
61110
format=Documenter.HTML(;
62111
mathengine=MathJax3(), prettyurls=get(ENV, "CI", nothing) == "true"
63112
),
@@ -86,36 +135,10 @@ makedocs(
86135
],
87136
authors="Ronny Bergmann and contributors.",
88137
sitename="Manopt.jl",
89-
strict=[
90-
:doctest,
91-
:linkcheck,
92-
:parse_error,
93-
:example_block,
94-
:autodocs_block,
95-
:cross_references,
96-
:docs_block,
97-
:eval_block,
98-
:example_block,
99-
:footnote,
100-
:meta_block,
101-
:missing_docs,
102-
:setup_block,
103-
],
104138
pages=[
105139
"Home" => "index.md",
106140
"About" => "about.md",
107-
"How to..." => [
108-
"Get started: Optimize!" => "tutorials/Optimize!.md",
109-
"Speedup using Inplace computations" => "tutorials/InplaceGradient.md",
110-
"Use Automatic Differentiation" => "tutorials/AutomaticDifferentiation.md",
111-
"Define Objectives in the Embedding" => "tutorials/EmbeddingObjectives.md",
112-
"Count and use a Cache" => "tutorials/CountAndCache.md",
113-
"Print Debug Output" => "tutorials/HowToDebug.md",
114-
"Record values" => "tutorials/HowToRecord.md",
115-
"Implement a Solver" => "tutorials/ImplementASolver.md",
116-
"Do Constrained Optimization" => "tutorials/ConstrainedOptimization.md",
117-
"Do Geodesic Regression" => "tutorials/GeodesicRegression.md",
118-
],
141+
(tutorials_in_menu ? [tutorials_menu] : [])...,
119142
"Solvers" => [
120143
"Introduction" => "solvers/index.md",
121144
"Adaptive Regularization with Cubics" => "solvers/adaptive-regularization-with-cubics.md",
@@ -168,8 +191,10 @@ makedocs(
168191
"Contributing to Manopt.jl" => "contributing.md",
169192
"Extensions" => "extensions.md",
170193
"Notation" => "notation.md",
194+
"Changelog" => "changelog.md",
171195
"References" => "references.md",
172196
],
197+
plugins=[bib],
173198
)
174199
deploydocs(; repo="github.com/JuliaManifolds/Manopt.jl", push_preview=true)
175200
#back to main env

docs/src/notation.md

+1-3
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@
22

33
In this package, we follow the notation introduced in [Manifolds.jl – Notation](https://juliamanifolds.github.io/Manifolds.jl/latest/misc/notation.html)
44

5-
with the following additional or slightly changed notation
5+
with the following additional notation
66

77
| Symbol | Description | Also used | Comment |
88
|:--:|:--------------- |:--:|:-- |
99
| ```` | The [Levi-Cevita connection](https://en.wikipedia.org/wiki/Levi-Civita_connection) | | |
10-
| ``\operatorname{grad}f`` | The Riemannian gradient | ``∇f``| due to possible confusion with the connection, we try to avoid ``∇f`` |
11-
| ``\operatorname{Hess}f``| The Riemannian Hessian | |

docs/src/solvers/ChambollePock.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
The Riemannian Chambolle–Pock is a generalization of the Chambolle–Pock algorithm [ChambollePock:2011](@citet*)
44
It is also known as primal-dual hybrid gradient (PDHG) or primal-dual proximal splitting (PDPS) algorithm.
55

6-
In order to minimize over $p∈\mathcal M§ the cost function consisting of
6+
In order to minimize over $p∈\mathcal M$ the cost function consisting of
77

88
```math
99
F(p) + G(Λ(p)),

ext/ManoptManifoldsExt/ARC_CG.jl

-46
This file was deleted.

ext/ManoptManifoldsExt/ManoptManifoldsExt.jl

-1
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,4 @@ include("nonmutating_manifolds_functions.jl")
3030
include("artificialDataFunctionsManifolds.jl")
3131
include("ChambollePockManifolds.jl")
3232
include("alternating_gradient.jl")
33-
include("ARC_CG.jl")
3433
end

src/Manopt.jl

+3
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,10 @@ using ManifoldsBase:
6969
NestedPowerRepresentation,
7070
ParallelTransport,
7171
PowerManifold,
72+
ProductManifold,
7273
ProjectionTransport,
7374
QRRetraction,
75+
TangentSpace,
7476
^,
7577
_read,
7678
_write,
@@ -123,6 +125,7 @@ using ManifoldsBase:
123125
set_component!,
124126
shortest_geodesic,
125127
shortest_geodesic!,
128+
submanifold_components,
126129
vector_transport_to,
127130
vector_transport_to!,
128131
zero_vector,

0 commit comments

Comments
 (0)