-
Notifications
You must be signed in to change notification settings - Fork 3
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
Accommodate for two different EKOs in Evolution #289
Conversation
This goes in the right direction, but I'd like to generalize this even further for the cases where we have 3 or even arbitrarily many evolutions; let's design the interface with arbitrarily many evolutions/convolutions in mind, and then let's focus first on the important cases. Now that we have |
That's right! I absolutely agree with this.
Having a single object that replaces |
I wonder if this feature is a priority? since fitting with several distributions is rather a mid- or long-term feature ... in the short term we want to close one convolution (with a fixed PDF), produce a new grid with only one open convolution and turn that into an FK table, wouldn't you say so? |
That's absolutely true! But if this could be achieved with more or less the same efforts, that'll be a better no? But I agree that if this turns out to be more difficult, we could delay it for later. |
I believe a priority should be to have a stable interface, which can be stable for a long time. This means it should account for all the various EKOs possible, and then the most general implementation can take longer as I already said in #289 (comment). Note that for now, we don't even use the new |
Thinking about this a bit, we can use So, I think the easiest and best solution would be to pass a list of EKOs to: Lines 1400 to 1406 in 95b3bc3
in that we replace In this way, we can arbitrarily pass different evolutions. Does this sound reasonable? |
@cschwan original idea was based on an iterative approach: calling |
Indeed, but using this approach it's easy to get it wrong, so I think I've changed my mind 😄. |
That's what I had in mind, although I'm still unclear about the details. |
Hi all, |
@cschwan, @felixhekhorn: After having looked a bit, I think generalizing to any arbitrary evolution is complicated and requires a lot of changes (because for example, most of the structs will have to be modified). As far as this PR is concerned, this already achieves the initial intended purposes, and we already tested it in NNPDF/pineko#181. In this sense, at least, I think this can be reviewed. What do you think? |
@Radonirinaunimi I've implemented most of the necessary changes, in particular the Python binding for |
This seems to work NNPDF/pineko@d62dac4 |
I finally had time to carefully look into this again. Thanks again the for changes @cschwan (and especially for the improvements), these look really good to me. I believe we've achieved what we ought to do in this PR, should this be merged now? |
We didn't manage to fully generalize the evolution interfaces, but that wasn't the intention of this pull request so that's OK. In the future, we'll have to change it again, but so is life. @Radonirinaunimi we can almost merge, can you please take remove the methods |
Yes, I can do this. |
When you've removed the methods, you can merge this branch into |
Perfect! Awesome. The method has been removed, I will wait for the tests to succeed and then merge. Once Thanks again 🚀 |
Great, thank you! |
Addresses #288. So far, this is just a bare brute-force implementation to test if it conceptually works.
Remaining to do:
add checks that verify the compatibility between the initial states and the EKOs(Moved to Pineko)Grid::evolve
in favor ofGrid::evolve_with_slice_iter
Grid::evolve2
and its Python wrapper; confirm that you don't use it in Pineko