-
Notifications
You must be signed in to change notification settings - Fork 9
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
Bases of vector spaces #59
Conversation
Codecov Report
@@ Coverage Diff @@
## master #59 +/- ##
=======================================
Coverage 99.69% 99.70%
=======================================
Files 10 11 +1
Lines 1320 1342 +22
=======================================
+ Hits 1316 1338 +22
Misses 4 4
Continue to review full report at Codecov.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So this basically introduces a second parameter to the basis indicating what the basis is for? Looks ok to me, I just noticed a minor rephrasing of an error message we could do.
src/DecoratorManifold.jl
Outdated
), | ||
" Usually this is implemented for a ", | ||
$(argtypes[1]), | ||
". Maybe you missed to implement this function for a default?", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
“this function for a default” – you are referring to a default type? Otherwise one could also write „a default for this function“.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This text was there before. Now I'm not quite sure what was it supposed to say.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, I did not notice that; we could still rephrase it :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry I did not want to approve this, since tests are still missing,
Yes, it's essentialy this, as well as moving |
Since it is backwards compatible, I think it's fine to add the parameter. |
I just noticed that the vector space is indeed needed in the basis, to be able to correctly interpret coordinates in |
That's why I carefully asked – we can surely keep in that order and yes, ambiguity fighting is not nice, for sure. Thanks for the explanations.
Great. I think that looks a little nicer |
Non-implemented error messages are quite unhelpful when debugging wrong |
We discussed that anyways following Lyndons notes, I would say it's reasonable to remove them, yes. |
I think this is ready now. The one new coverage failure looks like a false positive. |
While improving documentation I noticed that |
OK. I think we don't need both |
We overload/define So, I think if we drop backwards compatibility, then we should get rid of |
Yes, we have some overloads for tangent vectors. What I mean is that for any other fibre there would usually be decent defaults. For tangent vectors it won't be obsolete.
This patch already breaks quite a bit so I wouldn't worry about backwards compatibility. I'll get rid of |
Ok, let's just make sure, that @sethaxen at some point agrees, too; but I imagine he is also quite busy currently. |
Sorry, there's a lot of discussion here. Can someone summarize the current proposal/disagreement? |
I try to do summarise in order of renaming, since that was a trail of thoughts all this followed. The first is function names
Here my criticism is, that now the function name bears a little less information about what the function is doing, but if you have the full signature
Then we came across types
Finally since it is breaking everything anyways already here
4.-6. were actually names I introduced, I think, when I started Manopt.jl and when I was not completely aware of the Julia naming scheme, so I think, since this is breaking anyways and renames a lot, this is a good time to introduce this consistency. That‘s the proposal and I think currently there is no disagreement really – I think there is a small tradeoff, that But for sure, we would like to know your opinion, too. |
That's a good summary 🙂 . I'd just add that I want to do some generalization here for arbitrary fibers because PR JuliaManifolds/Manifolds.jl#325 finally makes it possible to handle them well. |
I just noticed, since we are renaming everything to shorten names, what about changing |
Sure, that would be consistent with the other changes. |
I've formatted code locally using JuliaFormatter 0.13.10. Here JuliaFormatter 0.14 was used and it crashed on parsing our files 😕 . |
don‘t we have check_base mentioned here somewhere? I think at least is_vector (or check vector) should mention it in its doctoring. I will investigate the Julia<formatter issue tomorrow (can reproduce it even on master locally here). |
I've submitted an issue: domluna/JuliaFormatter.jl#410 . |
What do you mean by |
Cool, thanks for submitting that. Ah yes, I mean |
OK, I see, that |
Ok, we can also leave it, it would still be good to mention it in the docs I think. |
I'm also thinking that we probably should just implement something like function check_vector(M::Manifold, p, X; check_base_point=true, kwargs...)
if check_base_point
mpe = check_point(M, p; kwargs...)
mpe === nothing || return mpe
end
return _check_vector(M, p, X; kwargs...)
end so that |
Maybe the easier solution is to only have |
Yes, that's a good idea. I'll do that. |
Cool, one can see on Manifolds.jl how much redundancy this removes; great! |
Some work on adding bases of cotangent spaces. This is supposed to solve problems with
flat!
andsharp!
from this PR: JuliaManifolds/Manifolds.jl#325 .