Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement infectivity radius on Stiefel #722

Merged
merged 9 commits into from
May 7, 2024
Merged

Conversation

kellertuer
Copy link
Member

cf. Zimmermann & Stoye https://arxiv.org/abs/2405.02268v1 .

@kellertuer kellertuer added the Ready-for-Review A label for pull requests that are feature-ready label May 7, 2024
Copy link

codecov bot commented May 7, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 99.58%. Comparing base (6f54b6e) to head (36a00d1).

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #722   +/-   ##
=======================================
  Coverage   99.58%   99.58%           
=======================================
  Files         114      114           
  Lines       11229    11230    +1     
=======================================
+ Hits        11182    11183    +1     
  Misses         47       47           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

src/manifolds/Stiefel.jl Outdated Show resolved Hide resolved
@mateuszbaran
Copy link
Member

That was quick! The failure is caused by a new ambiguity:

injectivity_radius(M::AbstractDecoratorManifold, m::AbstractRetractionMethod) @ ManifoldsBase ~/.julia/packages/ManifoldsBase/pOL51/src/nested_trait.jl:305,
injectivity_radius(::Stiefel, p) @ Manifolds ~/work/Manifolds.jl/Manifolds.jl/src/manifolds/StiefelEuclideanMetric.jl:112

@kellertuer
Copy link
Member Author

kellertuer commented May 7, 2024

Oh we should maybe check ambiguities on the infectivity radius. – So how do we reduce this? Or do we increase the bound?

@mateuszbaran
Copy link
Member

It's real, you can try calling injectivity_radius(Stiefel(5, 2), ExponentialRetraction()) and it would fail. You can probably just delete injectivity_radius(::Stiefel, p) = π though.

@kellertuer
Copy link
Member Author

kellertuer commented May 7, 2024

Then the special point tests fail. But if that is ok, we can do that (that is remove the point ones).

@mateuszbaran
Copy link
Member

Then the special point tests fail. But if that is ok, we can do that (that is remove the point ones).

You can limit the type of p in injectivity_radius(::Stiefel, p) to those special point types.

@kellertuer
Copy link
Member Author

or leave them out, we would specialise to arrays or such, and that might not be to useful (we otherwise do not do that I think).

@mateuszbaran
Copy link
Member

I think the variant with p should work. You can also disambiguate by defining injectivity_radius(M::Stiefel, m::AbstractRetractionMethod). Or we shouldn't have made injectivity_radius so prone to ambiguities.

@kellertuer
Copy link
Member Author

I omitted the p variants for now, but sure in the long run we should make the infectivity radius a bit less prone to ambiguities.

Co-authored-by: Mateusz Baran <mateuszbaran89@gmail.com>
@kellertuer kellertuer merged commit bd0264f into master May 7, 2024
25 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Ready-for-Review A label for pull requests that are feature-ready
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants