Skip to content

Commit

Permalink
Upgrade Manifolds.jl to ManifoldsBase 0.13 (#468)
Browse files Browse the repository at this point in the history
* Sphere tests work.
* Lost in Default Metric Dispatch.
* move parallel transport to Level 3
* is_default_metric set; and `inner` forwarding
* Grassmann and Stiefel updates
* Adapt Grassmann and Elliptope.
* test IsExplicitDecorator.
* imports one further function
* finish fixed rank.
* Adapt Circle to the new validation scheme.
* Symmetric update
* Fix DoublyStochastic and ProbSimplex.
* Fix Hyperbolic.
* Fix Spectrahedron
* Fix SphereSymmetricMatrices
* Fix SymPosSemidefFR.
* fix SkewHermitian.
* add the power dimension to Oblique.
* fix ProductManifold
* return ArrayPartition/ProductRepr more consistently
* Fix symplectic Stiefel.
* Work on the interaction between Validation and group.
* fixed group-metric interaction
* Finish Circle Group.
* towards an explicit handling of GroupManifold (and IsGroupManifold has automatic passthrough/transparency)
* rewrite transparency.
* Extract the explicit group decorator – GroupManifold – to its own file.
* ...just has_approx_invariant_metric missing for general linear.
* finish most (up to has_approx_invariant_metric) of SE.
* ExplicitManifold should reduce this but it still errors.
* fixing some group<->metric interactions
* Fix fallbacks and special/general linear groups.
* Introduce (and document) layer2 log_lie
* some improvements to FixedRank coverage
* two small tricks to test ConnectionManifolds
* FiniteDiff and Zygote backends are moved entirely to ManifoldDiff.jl
* ForwardDiff and ReverseDiff moved to ManifoldDiff

Co-authored-by: Mateusz Baran <[email protected]>
  • Loading branch information
kellertuer and mateuszbaran authored May 10, 2022
1 parent 921d2f3 commit 01c62dd
Show file tree
Hide file tree
Showing 173 changed files with 4,888 additions and 5,771 deletions.
12 changes: 8 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,15 @@ on:

jobs:
test:
name: Julia ${{ matrix.julia-version }} - ${{ matrix.os }}
name: Julia ${{ matrix.julia-version }} - ${{ matrix.group }} - ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
julia-version: ["1.5", "1.6", "~1.7.0-0"]
julia-version: ["1.6", "1.7"]
os: [ubuntu-latest, macOS-latest]
group:
- 'test_manifolds'
- 'test_lie_groups'
steps:
- uses: actions/checkout@v2
- uses: julia-actions/setup-julia@v1
Expand All @@ -23,8 +26,9 @@ jobs:
- uses: julia-actions/julia-runtest@latest
env:
PYTHON: ""
MANIFOLDS_TEST_GROUP: ${{ matrix.group }}
- uses: julia-actions/julia-processcoverage@v1
- uses: codecov/codecov-action@v1
- uses: codecov/codecov-action@v2
with:
fail_ci_if_error: false
if: ${{ matrix.julia-version == '1.6' && matrix.os =='ubuntu-latest' }}
if: ${{ matrix.julia-version == '1.7' && matrix.os =='ubuntu-latest' }}
24 changes: 11 additions & 13 deletions .github/workflows/clear_preview.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Documentation Preview Cleanup
name: Doc Preview Cleanup

on:
pull_request:
Expand All @@ -12,17 +12,15 @@ jobs:
uses: actions/checkout@v2
with:
ref: gh-pages

- name: Delete preview and history
- name: Delete preview and history + push changes
run: |
git config user.name "Documenter.jl"
git config user.email "[email protected]"
git rm -rf "previews/PR$PRNUM"
git commit -m "delete preview"
git branch gh-pages-new $(echo "delete history" | git commit-tree HEAD^{tree})
if [ -d "previews/PR$PRNUM" ]; then
git config user.name "Documenter.jl"
git config user.email "[email protected]"
git rm -rf "previews/PR$PRNUM"
git commit -m "delete preview"
git branch gh-pages-new $(echo "delete history" | git commit-tree HEAD^{tree})
git push --force origin gh-pages-new:gh-pages
fi
env:
PRNUM: ${{ github.event.number }}

- name: Push changes
run: |
git push --force origin gh-pages-new:gh-pages
PRNUM: ${{ github.event.number }}
6 changes: 5 additions & 1 deletion .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,15 @@ on:

jobs:
test:
name: Julia nightly - ${{ matrix.os }}
name: Julia nightly - ${{ matrix.group }} - ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macOS-latest, windows-latest]
group:
- 'test_manifolds'
- 'test_lie_groups'
steps:
- uses: actions/checkout@v2
- uses: julia-actions/setup-julia@v1
Expand All @@ -20,3 +23,4 @@ jobs:
- uses: julia-actions/julia-runtest@latest
env:
PYTHON: ""
MANIFOLDS_TEST_GROUP: ${{ matrix.group }}
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ Even providing a single new method is a good contribution.

A main contribution you can provide is another manifold that is not yet included in the
package.
A manifold is a concrete type of [`AbstractManifold`](https://juliamanifolds.github.io/Manifolds.jl/latest/interface.html#ManifoldsBase.AbstractManifold) from [`ManifoldsBase.jl`](https://juliamanifolds.github.io/Manifolds.jl/latest/interface.html).
A manifold is a concrete type of [`AbstractManifold`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/types.html#ManifoldsBase.AbstractManifold) from [`ManifoldsBase.jl`](https://juliamanifolds.github.io/Manifolds.jl/latest/interface.html).
This package also provides the main set of functions a manifold can/should implement.
Don't worry if you can only implement some of the functions.
If the application you have in mind only requires a subset of these functions, implement those.
Expand All @@ -49,7 +49,7 @@ See for example [exp!](https://juliamanifolds.github.io/Manifolds.jl/latest/inte
The non-mutating one (e.g. `exp`) always falls back to use the mutating one, so in most cases it should
suffice to implement the mutating one (e.g. `exp!`).

Note that since the first argument is _always_ the [`AbstractManifold`](https://juliamanifolds.github.io/Manifolds.jl/latest/interface.html#ManifoldsBase.AbstractManifold), the mutated argument is always the second one in the signature.
Note that since the first argument is _always_ the [`AbstractManifold`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/types.html#ManifoldsBase.AbstractManifold), the mutated argument is always the second one in the signature.
In the example we have `exp(M, p, X)` for the exponential map and `exp!(M, q, X, p)` for the mutating one, which stores the result in `q`.

On the other hand, the user will most likely look for the documentation of the non-mutating version, so we recommend adding the docstring for the non-mutating one, where all different signatures should be collected in one string when reasonable.
Expand Down
13 changes: 4 additions & 9 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name = "Manifolds"
uuid = "1cead3c2-87b3-11e9-0ccd-23c62b72b94e"
authors = ["Seth Axen <[email protected]>", "Mateusz Baran <[email protected]>", "Ronny Bergmann <[email protected]>", "Antoine Levitt <[email protected]>"]
version = "0.7.8"
version = "0.8.0"

[deps]
Colors = "5ae59095-9a9b-59fe-a467-6f913c188581"
Expand All @@ -27,11 +27,10 @@ StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
Colors = "0.12"
Distributions = "0.22.6, 0.23, 0.24, 0.25"
Einsum = "0.4"
FiniteDiff = "2"
Graphs = "1.4"
HybridArrays = "0.4"
Kronecker = "0.4, 0.5"
ManifoldsBase = "0.12.13"
ManifoldsBase = "0.13"
Plots = "1"
RecipesBase = "1.1"
RecursiveArrayTools = "2"
Expand All @@ -40,14 +39,12 @@ SimpleWeightedGraphs = "1.2"
SpecialFunctions = "0.8, 0.9, 0.10, 1.0, 2"
StaticArrays = "1.0"
StatsBase = "0.32, 0.33"
julia = "1.5"
julia = "1.6"

[extras]
Colors = "5ae59095-9a9b-59fe-a467-6f913c188581"
DoubleFloats = "497a8b3b-efae-58df-a0af-a86822472b78"
FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41"
FiniteDifferences = "26cc04aa-876d-5657-8c51-4c34ba976000"
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
Gtk = "4c0ca9eb-093a-5379-98c5-f87ac0bbbf44"
ImageIO = "82e4d734-157c-48bb-816b-45c225c6df19"
ImageMagick = "6218d12a-5da1-5696-b52f-db25d2ecc6d1"
Expand All @@ -58,10 +55,8 @@ PyPlot = "d330b81b-6aea-500a-939a-2ce795aea3ee"
QuartzImageIO = "dca85d43-d64c-5e67-8c65-017450d5d020"
Quaternions = "94ee1d12-ae83-5a48-8b1c-48b8ff168ae0"
RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01"
ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
VisualRegressionTests = "34922c18-7c2a-561c-bac1-01e79b2c4c92"
Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f"

[targets]
test = ["Test", "Colors", "DoubleFloats", "FiniteDiff", "FiniteDifferences", "ForwardDiff", "Gtk", "ImageIO", "ImageMagick", "OrdinaryDiffEq", "NLsolve", "Plots", "PyPlot", "Quaternions", "QuartzImageIO", "RecipesBase", "ReverseDiff", "Zygote"]
test = ["Test", "Colors", "DoubleFloats", "FiniteDifferences", "Gtk", "ImageIO", "ImageMagick", "OrdinaryDiffEq", "NLsolve", "Plots", "PyPlot", "Quaternions", "QuartzImageIO", "RecipesBase"]
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<div align="center">
<img src="https://github.com/JuliaManifolds/Manifolds.jl/blob/master/docs/src/assets/logo-text-readme.png" alt="Manifolds.jl" width="526">
<img src="https://github.com/JuliaManifolds/Manifolds.jl/blob/master/docs/src/assets/logo-text-readme.png" alt="Manifolds.jl Logo with text" width="526">
</div>

| **Documentation** | **Source** | **Citation** |
Expand All @@ -21,8 +21,8 @@ To install the package just type
] add Manifolds
```

Then you can directly start, for example to stop half way from the north pole on the [`Sphere`](https://juliamanifolds.github.io/Manifolds.jl/stable/manifolds/sphere.html) to a point on the equator, you can generate the [`shortest_geodesic`](https://juliamanifolds.github.io/Manifolds.jl/stable/interface.html#ManifoldsBase.shortest_geodesic-Tuple{AbstractManifold,Any,Any}).
It internally employs [`exp`](https://juliamanifolds.github.io/Manifolds.jl/latest/interface.html#Base.exp-Tuple{AbstractManifold,Any,Any}) and [`log`](https://juliamanifolds.github.io/Manifolds.jl/latest/interface.html#Base.log-Tuple{AbstractManifold,Any,Any}).
Then you can directly start, for example to stop half way from the north pole on the [`Sphere`](https://juliamanifolds.github.io/Manifolds.jl/stable/manifolds/sphere.html) to a point on the equator, you can generate the [`shortest_geodesic`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/functions.html#ManifoldsBase.shortest_geodesic-Tuple{AbstractManifold,%20Any,%20Any}).
It internally employs [`exp`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/functions.html#Base.exp-Tuple{AbstractManifold,%20Any,%20Any}) and [`log`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/functions.html#Base.log-Tuple{AbstractManifold,%20Any,%20Any}).

```julia
using Manifolds
Expand Down
1 change: 0 additions & 1 deletion REQUIRE

This file was deleted.

2 changes: 1 addition & 1 deletion assets/retraction_illustration.jl
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ push!(
)
push!(
tp,
raw"\node[label ={[label distance=.05cm]below:{\color{gray}$q=\exp_pX$}}] at (axis cs:" *
raw"\node[label ={[label distance=.05cm]left:{\color{gray}$q=\exp_pX$}}] at (axis cs:" *
"$(real(qE)),$(imag(qE))) {};",
)

Expand Down
6 changes: 2 additions & 4 deletions docs/Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,22 @@
Colors = "5ae59095-9a9b-59fe-a467-6f913c188581"
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
FiniteDifferences = "26cc04aa-876d-5657-8c51-4c34ba976000"
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
Graphs = "86223c79-3864-5bf0-83f7-82e725a168b6"
HybridArrays = "1baab800-613f-4b0a-84e4-9cd3431bfbb9"
Manifolds = "1cead3c2-87b3-11e9-0ccd-23c62b72b94e"
ManifoldsBase = "3362f125-f0bb-47a3-aa74-596ffd7ef2fb"
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
PyPlot = "d330b81b-6aea-500a-939a-2ce795aea3ee"
RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01"
ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267"
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[compat]
Documenter = "0.24, 0.25, 0.26, 0.27"
Documenter = "0.27"
FiniteDifferences = "0.12"
Graphs = "1.4"
HybridArrays = "0.4"
ManifoldsBase = "0.12.9"
ManifoldsBase = "0.13"
Plots = "1"
PyPlot = "2.9"
StaticArrays = "1.0"
6 changes: 2 additions & 4 deletions docs/make.jl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Plots, RecipesBase, Manifolds, ManifoldsBase, Documenter, PyPlot
# required for loading the manifold tests functios
using Test, ForwardDiff, ReverseDiff, FiniteDifferences
using Test, FiniteDifferences
ENV["GKSwstype"] = "100"

generated_path = joinpath(@__DIR__, "src", "misc")
Expand All @@ -26,13 +26,11 @@ end
makedocs(
# for development, we disable prettyurls
format=Documenter.HTML(prettyurls=false, assets=["assets/favicon.ico"]),
modules=[Manifolds, ManifoldsBase],
modules=[Manifolds],
authors="Seth Axen, Mateusz Baran, Ronny Bergmann, and contributors.",
sitename="Manifolds.jl",
pages=[
"Home" => "index.md",
"ManifoldsBase.jl" => "interface.md",
"Examples" => ["How to implement a Manifold" => "examples/manifold.md"],
"Manifolds" => [
"Basic manifolds" => [
"Centered matrices" => "manifolds/centeredmatrices.md",
Expand Down
Binary file modified docs/src/assets/images/projection_illustration.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/src/assets/images/projection_illustration_600.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/src/assets/images/retraction_illustration.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/src/assets/images/retraction_illustration_600.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

2 comments on commit 01c62dd

@kellertuer
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JuliaRegistrator
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Registration pull request created: JuliaRegistries/General/59996

After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.

This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:

git tag -a v0.8.0 -m "<description of version>" 01c62dd52fd3d8acbdb72f6d28436efdd1fea870
git push origin v0.8.0

Please sign in to comment.