Skip to content

Commit

Permalink
Merge branch 'master' into kellertuer/modularize-tests-I
Browse files Browse the repository at this point in the history
# Conflicts:
#	test/runtests.jl
  • Loading branch information
kellertuer committed Nov 20, 2023
2 parents 2077027 + b2d83b3 commit beaaf8b
Show file tree
Hide file tree
Showing 191 changed files with 7,364 additions and 6,990 deletions.
12 changes: 12 additions & 0 deletions .github/workflows/changelog.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
name: Check Changelog
on:
pull_request:

jobs:
Check-Changelog:
name: Check Changelog Action
runs-on: ubuntu-latest
steps:
- uses: tarides/changelog-check-action@v2
with:
changelog: NEWS.md
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
julia-version: ["1.6", "1.8", "~1.9.0-0"]
julia-version: ["1.6", "1.9", "~1.10.0-0"]
os: [ubuntu-latest, macOS-latest]
group:
- 'test_manifolds'
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ docs/Manifest.toml
docs/build
docs/src/generated
docs/src/misc/contributing.md
docs/src/misc/CONTRIBUTING.md
docs/src/misc/NEWS.md
benchmark/tune.json
benchmark/results*
docs/src/tutorials/*.md
Expand Down
5 changes: 5 additions & 0 deletions .zenodo.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@
"name": "Weiß, Manuel",
"type": "ProjectMember"
},
{
"affiliation": "Georg-August-University Göttingen",
"name": "Klingbiel, Lukas",
"type": "ProjectMember"
},
{
"affiliation": "NTNU Trondheim",
"name": "Kolstø, Johannes Voll",
Expand Down
168 changes: 168 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.9.8] - 2023-11-17

### Fixed

- Improved distribution of random vector generation for rotation matrices and complex circle.

## [0.9.7] - 2023-11-14

### Fixed

- Fixed `is_flat` for `CholeskySpace` and `SymmetricPositiveDefinite` with `LogCholeskyMetric` [https://github.com/JuliaManifolds/Manifolds.jl/issues/684](https://github.com/JuliaManifolds/Manifolds.jl/issues/684).

## [0.9.6] - 2023-11-09

### Fixed

- Fixed real coefficient basis for complex circle (an issue exposed by [https://github.com/JuliaManifolds/ManifoldsBase.jl/pull/173](https://github.com/JuliaManifolds/ManifoldsBase.jl/pull/173)).
- Fixed `VeeOrthogonalBasis` test for non-real manifolds.

## [0.9.5] - 2023-11-08

### Changed

- `identity_element` now returns a complex matrix for unitary group.
- `number_of_coordinates` is now exported.

## [0.9.4] - 2023-11-06

### Added

- Functions `inv_diff`, `inv_diff!`, `adjoint_inv_diff` and `adjoint_inv_diff!` that correspond to differentials and pullbacks of group inversion.
- Julia 1.10-rc CI workflow.

### Changed

- Documentation project files are marked as compatible with `BoundaryValueDiffEq` v5.

### Fixed

- Fixed issue with incorrect implementation of `apply_diff_group` in `GroupOperationAction` with left backward and right forward action [#669](https://github.com/JuliaManifolds/Manifolds.jl/issues/669).

## [0.9.3] - 2023-10-28

### Added

- Support for `BoundaryValueDiffEq` v5.

## [0.9.2] - 2023-10-27

### Added

- `rand(G; vector_at=Identity(G))` now works for translation, special orthogonal and special Euclidean groups `G` (issue [#665](https://github.com/JuliaManifolds/Manifolds.jl/issues/665)).
- `get_embedding` now works for `GeneralUnitaryMultiplicationGroup`.
- Github action that checks for NEWS.md changes.

## [0.9.1] - 2023-10-25

### Added

- a new retraction and its inverse for the fixed Rank Manifolds, the orthographic retraction.

## [0.9.0] - 2023-10-24

### Added

- Vector bundles are generalized to fiber bundles. Old `BundleFibers` functionality was reworked to better match mathematical abstractions. Fiber bundle functionality is experimental and minor changes may happen without a breaking release, with the exception of `TangentBundle` which is considered to be stable.
- `RotationTranslationAction` is introduced.

### Changed

- Sizes of all manifolds can now be either encoded in type or stored in a field to avoid over-specialization.
The default is set to store the size in type parameter (except for `PowerManifold` and its variants), replicating the previous behavior.
For field storage, pass the `parameter=:field` keyword argument to manifold constructor.
For example statically sized `CenteredMatrices{m,n}` is now `CenteredMatrices{TypeParameter{Tuple{m,n}}}`, whereas the type of special Euclidean group with field-stored size is `CenteredMatrices{Tuple{Int,Int}}`. Similar change applies to:
- `CenteredMatrices{m,n}`,
- `CholeskySpace{N}`,
- `Elliptope{N,K}`,
- `Euclidean`,
- `FixedRankMatrices{m,n,k}`,
- `KendallsPreShapeSpace{n,k}`,
- `KendallsShapeSpace{n,k}`,
- `GeneralLinear{n}`,
- `GeneralUnitaryMultiplicationGroup{n}`,
- `GeneralizedGrassmann{n,k}`,
- `GeneralizedStiefel{n,k}`,
- `Grassmann{n,k}`,
- `Heisenberg{n}`,
- `Hyperbolic{n}`,
- `MultinomialMatrices{N,M}`,
- `MultinomialDoublyStochastic{n}`,
- `MultinomialSymmetric{n}`,
- `Orthogonal{n}`,
- `PowerManifold`,
- `PositiveArrays`,
- `PositiveMatrices`,
- `PositiveNumbers`,
- `ProbabilitySimplex{n}`,
- `SPDFixedDeterminant{n}`,
- `SpecialLinear{n}`,
- `SpecialOrthogonal{n}`,
- `SpecialUnitary{n}`,
- `SpecialEuclidean{n}`,
- `SpecialEuclideanManifold{n}`,
- `Spectrahedron{n,k}`,
- `SphereSymmetricMatrices{N}`,
- `Stiefel{n,k}`,
- `SymmetricMatrices{N}`,
- `SymmetricPositiveDefinite{n}`,
- `SymmetricPositiveSemidefiniteFixedRank{n,k}`,
- `Symplectic{n}`,
- `SymplecticStiefel{n,k}`,
- `TranslationGroup`,
- `Tucker`.

For example

```{julia}
function Base.show(io::IO, ::CenteredMatrices{m,n}) where {m,n}
return print(io, "CenteredMatrices($m, $n)")
end
```

needs to be replaced with

```{julia}
function Base.show(io::IO, ::CenteredMatrices{TypeParameter{Tuple{m,n}}}) where {m,n}
return print(io, "CenteredMatrices($m, $n)")
end
```

for statically-sized groups and

```{julia}
function Base.show(io::IO, M::CenteredMatrices{Tuple{Int,Int}})
m, n = get_parameter(M.size)
return print(io, "CenteredMatrices($m, $n; parameter=:field)")
end
```

for groups with size stored in field. Alternatively, you can use a single generic method like this:

```{julia}
function Base.show(io::IO, M::CenteredMatrices{T}) where {T}
m, n = get_parameter(M)
if T <: TypeParameter
return print(io, "CenteredMatrices($m, $n)")
else
return print(io, "CenteredMatrices($m, $n; parameter=:field)")
end
end
```

- Argument order for type aliases `RotationActionOnVector` and `RotationTranslationActionOnVector`: most often dispatched on argument is now first.
- A more consistent handling of action direction was introduced. 4-valued `ActionDirection` was split into 2-valued `ActionDirection` (either left or right action) and `GroupActionSide` (action acting from the left or right side). See [https://github.com/JuliaManifolds/Manifolds.jl/issues/637](https://github.com/JuliaManifolds/Manifolds.jl/issues/637) for a design discussion.

### Removed

- `ProductRepr` is removed; please use `ArrayPartition` instead.
- Default methods throwing "not implemented" `ErrorException` for some group-related operations. Standard `MethodError` is now thrown instead.
- `LinearAffineMetric` was deprecated in a previous release and the symbol is now removed.
Please use `AffineInvariantMetric` instead.
12 changes: 8 additions & 4 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.8.79"
version = "0.9.8"

[deps]
Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f"
Expand Down Expand Up @@ -43,25 +43,29 @@ ManifoldsRecipesBaseExt = ["Colors", "RecipesBase"]
ManifoldsTestExt = "Test"

[compat]
BoundaryValueDiffEq = "4"
BoundaryValueDiffEq = "4, 5"
Colors = "0.12"
Distributions = "0.22.6, 0.23, 0.24, 0.25"
Einsum = "0.4"
Graphs = "1.4"
HybridArrays = "0.4"
Kronecker = "0.4, 0.5"
ManifoldDiff = "0.3.6"
ManifoldsBase = "0.14.12"
LinearAlgebra = "1.6"
ManifoldDiff = "0.3.7"
ManifoldsBase = "0.15.0"
Markdown = "1.6"
MatrixEquations = "2.2"
OrdinaryDiffEq = "6.31"
Plots = "1"
Quaternions = "0.5, 0.6, 0.7"
Random = "1.6"
RecipesBase = "1.1"
RecursiveArrayTools = "2"
Requires = "0.5, 1"
SimpleWeightedGraphs = "1.2"
SpecialFunctions = "0.8, 0.9, 0.10, 1.0, 2"
StaticArrays = "1.4.3"
Statistics = "1.6"
StatsBase = "0.32, 0.33, 0.34"
julia = "1.6"

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
| **Documentation** | **Source** | **Citation** |
|:-----------------:|:----------------------:|:------------:|
| [![](https://img.shields.io/badge/docs-stable-blue.svg)](https://juliamanifolds.github.io/Manifolds.jl/stable/) | [![Code Style: Blue](https://img.shields.io/badge/code%20style-blue-4495d1.svg)](https://github.com/invenia/BlueStyle) | [![arXiv](https://img.shields.io/badge/arXiv%20CS.MS-2106.08777-blue.svg)](https://arxiv.org/abs/2106.08777) |
| [![](https://img.shields.io/badge/docs-dev-blue.svg)](https://juliamanifolds.github.io/Manifolds.jl/latest/) | [![CI](https://github.com/JuliaManifolds/Manifolds.jl/workflows/CI/badge.svg)](https://github.com/JuliaManifolds/Manifolds.jl/actions?query=workflow%3ACI+branch%3Amaster) | [![DOI](https://zenodo.org/badge/190447542.svg)](https://zenodo.org/badge/latestdoi/190447542) |
| [![](https://img.shields.io/badge/docs-dev-blue.svg)](https://juliamanifolds.github.io/Manifolds.jl/latest/) | [![CI](https://github.com/JuliaManifolds/Manifolds.jl/actions/workflows/ci.yml/badge.svg)](https://github.com/JuliaManifolds/Manifolds.jl/actions?query=workflow%3ACI+branch%3Amaster) | [![DOI](https://zenodo.org/badge/190447542.svg)](https://zenodo.org/badge/latestdoi/190447542) |
| | [![codecov.io](http://codecov.io/github/JuliaManifolds/Manifolds.jl/coverage.svg?branch=master)](https://codecov.io/gh/JuliaManifolds/Manifolds.jl/) |

Package __Manifolds.jl__ aims to provide both a unified interface to define and
Expand Down
22 changes: 9 additions & 13 deletions benchmark/benchmarks.jl
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ function add_manifold_benchmarks()
inverse_retraction_methods=inverse_retraction_methods_rot,
)

pts_prod_mpoints = [Manifolds.ProductRepr(p[1], p[2]) for p in zip(pts_s2, pts_r2)]
pts_prod_mpoints = [ArrayPartition(p[1], p[2]) for p in zip(pts_s2, pts_r2)]
add_manifold(
m_prod,
pts_prod_mpoints,
Expand All @@ -155,14 +155,14 @@ function add_manifold_benchmarks()
TB = TangentBundle(s2)

pts_tb = [
ProductRepr(convert(T, [1.0, 0.0, 0.0]), convert(T, [0.0, -1.0, -1.0])),
ProductRepr(convert(T, [0.0, 1.0, 0.0]), convert(T, [2.0, 0.0, 1.0])),
ProductRepr(convert(T, [1.0, 0.0, 0.0]), convert(T, [0.0, 2.0, -1.0])),
ArrayPartition(convert(T, [1.0, 0.0, 0.0]), convert(T, [0.0, -1.0, -1.0])),
ArrayPartition(convert(T, [0.0, 1.0, 0.0]), convert(T, [2.0, 0.0, 1.0])),
ArrayPartition(convert(T, [1.0, 0.0, 0.0]), convert(T, [0.0, 2.0, -1.0])),
]
add_manifold(
TB,
pts_tb,
"Tangent bundle of S² using MVectors, ProductRepr";
"Tangent bundle of S² using MVectors, ArrayPartition";
test_tangent_vector_broadcasting=false,
)
end
Expand Down Expand Up @@ -203,13 +203,11 @@ function add_manifold_benchmarks()
sphere_tv_dist =
Manifolds.normal_tvector_distribution(Ms, (@MVector [1.0, 0.0, 0.0]), 1.0)
power_s1_tv_dist = Manifolds.PowerFVectorDistribution(
TangentBundleFibers(Ms1),
rand(power_s1_pt_dist),
TangentSpace(Ms1, rand(power_s1_pt_dist)),
sphere_tv_dist,
)
power_s2_tv_dist = Manifolds.PowerFVectorDistribution(
TangentBundleFibers(Ms2),
rand(power_s2_pt_dist),
TangentSpace(Ms2, rand(power_s2_pt_dist)),
sphere_tv_dist,
)

Expand All @@ -224,13 +222,11 @@ function add_manifold_benchmarks()
)
rotations_tv_dist = Manifolds.normal_tvector_distribution(Mr, MMatrix(id_rot), 1.0)
power_r1_tv_dist = Manifolds.PowerFVectorDistribution(
TangentBundleFibers(Mr1),
rand(power_r1_pt_dist),
TangentSpace(Mr1, rand(power_r1_pt_dist)),
rotations_tv_dist,
)
power_r2_tv_dist = Manifolds.PowerFVectorDistribution(
TangentBundleFibers(Mr2),
rand(power_r2_pt_dist),
TangentSpace(Mr2, rand(power_r2_pt_dist)),
rotations_tv_dist,
)

Expand Down
4 changes: 2 additions & 2 deletions docs/Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[compat]
BoundaryValueDiffEq = "4"
BoundaryValueDiffEq = "4, 5"
CondaPkg = "0.2"
DiffEqCallbacks = "2"
Distributions = "0.22.6, 0.23, 0.24, 0.25"
Expand All @@ -30,7 +30,7 @@ FiniteDifferences = "0.12"
Graphs = "1.4"
HybridArrays = "0.4"
IJulia = "1"
ManifoldsBase = "0.14.1"
ManifoldsBase = "0.15.0"
OrdinaryDiffEq = "6"
Plots = "1"
PythonPlot = "1"
Expand Down
Loading

0 comments on commit beaaf8b

Please sign in to comment.