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 Jan 27, 2024
2 parents beaaf8b + e46a864 commit 6a155f1
Show file tree
Hide file tree
Showing 189 changed files with 3,970 additions and 2,497 deletions.
8 changes: 4 additions & 4 deletions .github/workflows/documenter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
docs:
name: Documentation
runs-on: ubuntu-latest
if: "contains( github.event.pull_request.labels.*.name, 'preview docs') || github.ref == 'refs/heads/master' || contains(github.ref, 'refs/tags/')"
if: contains( github.event.pull_request.labels.*.name, 'preview docs') || github.ref == 'refs/heads/master' || contains(github.ref, 'refs/tags/')
steps:
- uses: actions/checkout@v4
- uses: quarto-dev/quarto-actions/setup@v2
Expand All @@ -22,7 +22,7 @@ jobs:
uses: julia-actions/cache@v1
- name: Cache Quarto
id: cache-quarto
uses: actions/cache@v3
uses: actions/cache@v4
env:
cache-name: cache-quarto
with:
Expand All @@ -32,7 +32,7 @@ jobs:
${{ runner.os }}-${{ env.cache-name }}-
- name: Cache Documenter
id: cache-documenter
uses: actions/cache@v3
uses: actions/cache@v4
env:
cache-name: cache-documenter
with:
Expand All @@ -42,7 +42,7 @@ jobs:
${{ runner.os }}-${{ env.cache-name }}-
- name: Cache CondaPkg
id: cache-condaPkg
uses: actions/cache@v3
uses: actions/cache@v4
env:
cache-name: cache-condapkg
with:
Expand Down
179 changes: 116 additions & 63 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,119 +5,172 @@ 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.13] – 2024-01-24

### Added

* added the real symplectic Grassmann manifold `SymplecticGrassmann`
* Introduce the manifold of `HamiltonianMatrices` and a wrapper for `Hamiltonian` matrices
* introduce `rand(:HamiltonianMatrices)`
* extend `rand` to also `rand!` for `HamiltonianMatrices`, `SymplecticMatrices` and `SymplecticStiefel`
* implement `riemannian_gradient` conversion for `SymplecticMatrices` and `SymplecticGrassmann`
* the new manifold of `MultinomialSymmetricPositiveDefinite` matrices
* `rand!` for `MultinomialDoublyStochastic` and `MultinomialSymmetric`

### Deprecated

* Rename `Symplectic` to `SimplecticMatrices` in order to have a `Symplectic` wrapper for such matrices as well in the future for the next breaking change.
* Rename `SymplecticMatrix` to `SymplecticElement` to clarify that it is the special matrix ``J_{2n}`` and not an arbitrary symplectic matrix.

### Fixed

* a bug that cause `project` for tangent vectors to return wrong results on `MultinomialDoublyStochastic`

## [0.9.12] – 2024-01-21

### Fixed

* Fixed `var` on `TranslationGroup`.

## [0.9.11] – 2023-12-27

### Fixed

* Fixed mixed array index number in-place `parallel_transport_to!` on zero-index `Euclidean`, on Julia 1.6.

## [0.9.10] – 2023-12-27

### Added

* Compatibility with `RecursiveArrayTools` v3.

### Fixed

* Fixed mixed array index number in-place `parallel_transport_to!` on real `Circle`, on Julia 1.6.
* Violations of MD004 lint rule in this file.

## [0.9.9] – 2023-12-25

### Fixed

* introduced a nonzero `atol` for all point and vector checks that compre to zero.
This makes those checks a bit more relaxed by default and resolves [#630](https://github.com/JuliaManifolds/Manifolds.jl/issues/630).
* `default_estimation_method(M, f)` is deprecated, use `default_approximation_method(M, f)` for your specific method `f` on the manifold `M`.
* `AbstractEstimationMethod` is deprecated, use `AbstractApproximationMethod` instead.

## [0.9.8] - 2023-11-17

### Fixed

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

## [0.9.7] - 2023-11-14
## [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).
* 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.
* 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.
* `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.
* 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.
* 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).
* 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.
* 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.
* `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.
* 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.
* 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.
* 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`.
* `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

Expand Down Expand Up @@ -157,12 +210,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
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.
* 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.
* `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.
8 changes: 4 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.9.8"
version = "0.9.13"

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

[compat]
BoundaryValueDiffEq = "4, 5"
BoundaryValueDiffEq = "4, 5.6.1"
Colors = "0.12"
Distributions = "0.22.6, 0.23, 0.24, 0.25"
Einsum = "0.4"
Expand All @@ -52,15 +52,15 @@ HybridArrays = "0.4"
Kronecker = "0.4, 0.5"
LinearAlgebra = "1.6"
ManifoldDiff = "0.3.7"
ManifoldsBase = "0.15.0"
ManifoldsBase = "0.15.6"
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"
RecursiveArrayTools = "2, 3"
Requires = "0.5, 1"
SimpleWeightedGraphs = "1.2"
SpecialFunctions = "0.8, 0.9, 0.10, 1.0, 2"
Expand Down
18 changes: 10 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,17 +53,19 @@ If you have any questions regarding the Manifolds.jl ecosystem feel free to reac

## Citation

If you use `Manifolds.jl` in your work, please cite the following
If you use `Manifolds.jl` in your work, please cite the following open access article

```biblatex
@article{AxenBaranBergmannRzecki:2023,
AUTHOR = {Seth D. Axen and Mateusz Baran and Ronny Bergmann and Krzysztof Rzecki},
EPRINT = {2021.08777},
EPRINTTYPE = {arXiv},
JOURNAL = {AMS Transactions on Mathematical Software},
NOTE = {accepted for publication},
TITLE = {Manifolds.jl: An Extensible {J}ulia Framework for Data Analysis on Manifolds},
YEAR = {2023}
AUTHOR = {Axen, Seth D. and Baran, Mateusz and Bergmann, Ronny and Rzecki, Krzysztof},
ARTICLENO = {33},
DOI = {10.1145/3618296},
JOURNAL = {ACM Transactions on Mathematical Software},
MONTH = {dec},
NUMBER = {4},
TITLE = {Manifolds.Jl: An Extensible Julia Framework for Data Analysis on Manifolds},
VOLUME = {49},
YEAR = {2023}
}
```

Expand Down
2 changes: 1 addition & 1 deletion docs/Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ CondaPkg = "0.2"
DiffEqCallbacks = "2"
Distributions = "0.22.6, 0.23, 0.24, 0.25"
Documenter = "1"
DocumenterCitations = "1.2.1"
DocumenterCitations = "1.3"
FiniteDifferences = "0.12"
Graphs = "1.4"
HybridArrays = "0.4"
Expand Down
5 changes: 4 additions & 1 deletion docs/make.jl
Original file line number Diff line number Diff line change
Expand Up @@ -113,11 +113,13 @@ makedocs(;
"Generalized Stiefel" => "manifolds/generalizedstiefel.md",
"Generalized Grassmann" => "manifolds/generalizedgrassmann.md",
"Grassmann" => "manifolds/grassmann.md",
"Hamiltonian" => "manifolds/hamiltonian.md",
"Hyperbolic space" => "manifolds/hyperbolic.md",
"Lorentzian manifold" => "manifolds/lorentz.md",
"Multinomial doubly stochastic matrices" => "manifolds/multinomialdoublystochastic.md",
"Multinomial matrices" => "manifolds/multinomial.md",
"Multinomial symmetric matrices" => "manifolds/multinomialsymmetric.md",
"Multinomial symmetric positive definite matrices" => "manifolds/multinomialsymmetricpositivedefinite.md",
"Oblique manifold" => "manifolds/oblique.md",
"Probability simplex" => "manifolds/probabilitysimplex.md",
"Positive numbers" => "manifolds/positivenumbers.md",
Expand All @@ -133,7 +135,8 @@ makedocs(;
"Symmetric positive definite" => "manifolds/symmetricpositivedefinite.md",
"SPD, fixed determinant" => "manifolds/spdfixeddeterminant.md",
"Symmetric positive semidefinite fixed rank" => "manifolds/symmetricpsdfixedrank.md",
"Symplectic" => "manifolds/symplectic.md",
"Symplectic Grassmann" => "manifolds/symplecticgrassmann.md",
"Symplectic matrices" => "manifolds/symplectic.md",
"Symplectic Stiefel" => "manifolds/symplecticstiefel.md",
"Torus" => "manifolds/torus.md",
"Tucker" => "manifolds/tucker.md",
Expand Down
Loading

0 comments on commit 6a155f1

Please sign in to comment.