-
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
Implement v1 file format [WIP] #299
base: master
Are you sure you want to change the base?
Conversation
pineappl_py/src/grid.rs
Outdated
/// slices : Iterable | ||
/// list of (PyOperatorSliceInfo, 5D array) describing each convolution | ||
/// slices : list(list(tuple(PyOperatorSliceInfo, PyReadOnlyArray4))) | ||
/// list of EKOs where each element is a list of (PyOperatorSliceInfo, 5D array) |
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.
/// list of EKOs where each element is a list of (PyOperatorSliceInfo, 5D array) | |
/// list of EKOs where each element is a list of (PyOperatorSliceInfo, 4D array) |
?
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.
Yes, it is indeed a 4D,
Btw, this is what I briefly asked in yesterday's CM re pineko
(to which I now know the answer). For the time being, each operator is passed as a vector but it'll be changed to a generator.
I've pondered on this (cc comment) for while now and I don't think there is a way (with all so far PyO3 versions) to use declarative modules and have all of the following works: import pineappl
from pineappl import grid
from pineappl.grid import Grid So if we still want to have all of the nested modules to get expanded, we are stuck with the current approach. |
The python and C interfaces are more or less at a good stage now, so I'll them at these for the time being. If there is anything I can help with the Fortran part or the main PineAPPL crate just let me know. |
- in the column 'svmaxreldiff' only show differences from scale-varied results, not from the central result - preserve sign which was previously stripped away
Hi, I completed the Fortran interface. I made some (minor) design decisions that I would like your opinion on:
I also noticed two small bugs in the v1 C++ examples which I fixed in my first commit. Related to that: Is there a reason why |
Hi @janw20, thanks a lot for completing the Fortran interface!
I had a look at it and it looks good. I don't think there is a cleanest a more robust to approach this apart from what is being done now (actually, this was how I also envisioned how it'd look like).
Thanks for spotting and fixing this bug! I had this under my radar before but somehow forgot to fix it (maybe I remembered to only do so on the Python API).
I don't think there is a real reason why the kinematics have to be ordered in such a way. The restriction is coming from these lines: Lines 281 to 285 in 63dc010
which has a TODO , so likely this will change.
|
Feature TODOs:
Channel
to support arbitrarily many PIDs. This is implemented with commits f32902a, 2417c92 and 03f2dc6.Order
should support a fragmentation scale. Started with commits 5e281ae and 02e48e9.1
(no scale variation),3
(vary all scales with the same factor),7
and9
(assuming that there's no fragmentation scale), and17
and27
(assuming there's a fragmentation scale)PackedArray
struct that we wrote some time ago.v0
PineAPPL grids and convert the subgrids into the new subgrid types.Code TODOs:
Order
tou8
channel!
to arbitrarily many PIDsBinInfo
, and have instead fill limits (1d limits that only concernGrid::fill
) and bin limits (n-dimensional limits)Grid::evolve_info
lagrange_subgrid
PackedQ1X2SubgridV1
NodeValues
Mu2
D=3
forgeneral_tensor_mul
inevolution.rs
Grid::merge
check if grids are compatible with each other before mergingCAPI TODO:
GridOptFlags
(see commit 54a59f3)pineappl_channel_*
topineappl_channels_*
?Fortran module TODO:
Python API:
pyo3-0.22.5
, this possible now sincenumpy-0.22.0
was released. Figure out what new features we can leverage from0.22.x
(see its CHANGELOG):#![allow(unsafe_op_in_unsafe_fn)]
3.7
inpyproject.toml