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

Composite Output #105

Merged
merged 152 commits into from
Oct 10, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
152 commits
Select commit Hold shift + click to select a range
5fdecc7
Move output into a subpackage
alecandido Mar 13, 2022
d9f5fdb
Split output in modules
alecandido Mar 13, 2022
10b50f7
Break output into modules (and break everything)
alecandido Jul 18, 2022
dd94430
Add new output serialization
alecandido Jul 18, 2022
b3943a1
Recover one legacy test
alecandido Mar 16, 2022
211be29
Recover all legacy tests
alecandido Mar 16, 2022
04a74b6
Recover to manipulation tests
alecandido Mar 17, 2022
08af72a
Recover all manipulation tests
alecandido Mar 17, 2022
b4d0067
Recover all output tests
alecandido Mar 17, 2022
bc58d46
Simplify items iteration
alecandido Mar 17, 2022
7667286
Recover apply tests
alecandido Mar 17, 2022
d289c4f
Recover everything but runner
alecandido Jul 18, 2022
dde03e4
Recover all runner tests
alecandido Jul 18, 2022
0ce9ead
Recover all tests
alecandido Jul 18, 2022
42e1b90
Move ekobox loading to legacy
alecandido Mar 17, 2022
4783232
Replace bleeding-edge syntax for dict union
alecandido Mar 17, 2022
fe2f555
Update ekobox benchmarks
alecandido Jul 18, 2022
cfc2288
Replace remaining interpolation_xgrids
alecandido Mar 17, 2022
b856682
Recover ekobox but product
alecandido Jul 18, 2022
e36ccdb
Simplify ekobox product
alecandido Jul 18, 2022
9bf1160
Upgrade product: do not recompute existing operators
alecandido Mar 18, 2022
c72157c
Introduce xgrid type
alecandido Jul 18, 2022
a237971
Recover tests involving xgrid
alecandido Jul 18, 2022
6b4b37d
Remove bleeding edge syntax
alecandido Mar 18, 2022
cd557a1
Add runcards classes
alecandido Mar 25, 2022
148fcf0
Reshuffle files
alecandido Jul 18, 2022
442f3d7
Fix tests to run
felixhekhorn Mar 21, 2022
039a055
Fix tests to run
felixhekhorn Mar 21, 2022
579dffc
Remove unreachable code, improve tests
felixhekhorn Mar 21, 2022
eea43a2
Add ekobox.mock test
felixhekhorn Mar 21, 2022
406b2b4
Start mocking lhapdf, revert flavors
felixhekhorn Mar 21, 2022
9903dca
Add genpdf.export tests
felixhekhorn Mar 22, 2022
3b6717f
Improve lhapdf fixtures
felixhekhorn Mar 22, 2022
9cb6407
Improve generate_pdf
felixhekhorn Mar 22, 2022
65ab083
Add first genpdf test and improve former
felixhekhorn Mar 22, 2022
726808f
Recover shutil.move in py3.8 and lower
felixhekhorn Mar 23, 2022
8f3c854
Improve genpdf tests
felixhekhorn Mar 23, 2022
275e0ca
Complete genpdf.generate_pdf test
felixhekhorn Mar 23, 2022
fbe9e9d
Resolve fake_pdf name clash
felixhekhorn Mar 23, 2022
d47788c
Complete genpdf.cli tests
felixhekhorn Mar 23, 2022
a96aca4
Add ekobox install cli test
felixhekhorn Mar 23, 2022
2e19e57
Rename ekobox info file
felixhekhorn Mar 23, 2022
9ba039e
Complete coverage
alecandido Jul 18, 2022
15a2161
Rename gen_theory
felixhekhorn Mar 24, 2022
dcf29c9
Rename gen_op
felixhekhorn Mar 24, 2022
0d7c491
Apply some review suggestions
felixhekhorn Mar 25, 2022
0b1be6d
Remove bleeding edge type declaration syntax
alecandido Apr 1, 2022
f2f12b8
Add typing, progress on benchmark failure
alecandido Apr 5, 2022
5d4aab2
Simplify and update runner layout
alecandido Jul 18, 2022
ad6366f
Check grids sizes before comparison
alecandido Jul 18, 2022
976faef
Combine ekos with chosen precision
alecandido Apr 7, 2022
8157ea8
Remove annotation about improving deprecated interface
alecandido Apr 7, 2022
59f37b2
Add loading semantics to operator objects
alecandido Apr 7, 2022
b5ff85a
Bind operator object to a given path
alecandido Apr 7, 2022
0718d15
Attempt valid tarfile creation... fail
alecandido Apr 7, 2022
d3efb9e
Simplify output tests, removing unittest framework
alecandido Apr 8, 2022
b7ff707
Bootstrap new directory layout
alecandido Apr 8, 2022
3a15ea3
Split operator file bootstraping in separate function
alecandido Apr 8, 2022
33b70d0
Add methods to retrieve runcards
alecandido Apr 8, 2022
a186b7f
Rename from_dict constructor
alecandido Apr 8, 2022
8093d99
Init eko CLI
alecandido Apr 8, 2022
159b541
Add self managed item retrieval, through context
alecandido Apr 8, 2022
ad6dd31
Test items self mnagement, not yet fully implemented
alecandido Apr 8, 2022
8b71862
Add IO methods for Operator
alecandido Apr 9, 2022
08cfeb9
Extend EKO documentation
alecandido Apr 9, 2022
dedd220
Rearrange EKO iterators
alecandido Apr 9, 2022
80e9500
Add autoload and autodump
alecandido Apr 10, 2022
2673d1d
Remove user and group info from tar elements
alecandido Apr 10, 2022
54edfbc
Fix compatibility layer to use subsections
alecandido Jul 19, 2022
2fb64a6
Update compatibility tests as well
alecandido Jul 19, 2022
425485e
Disable workflows run on WIP branch
alecandido Jul 19, 2022
5b74d36
Update operator card example
alecandido Jul 19, 2022
aea1aa3
Update error identifiers
alecandido Jul 19, 2022
588d1e6
Fix operator runcard layout in OME tests
alecandido Jul 19, 2022
9c40e95
Drop alphas, sanify q2 to dump
alecandido Jul 20, 2022
38a37be
Convert all dictionaries to operators
alecandido Jul 20, 2022
d40b6c7
Fix double write to archive
alecandido Jul 20, 2022
f227a8e
Fix flavor reshaping, set operator
alecandido Jul 20, 2022
822d552
fix ome test
giacomomagni Jul 20, 2022
f5da5c0
Check file exists in tar
felixhekhorn Jul 20, 2022
9551261
Unleash workflows
alecandido Jul 20, 2022
d3e825a
Add docstrings for DictLike
alecandido Jul 25, 2022
dbe7869
Init operator docstrings
alecandido Jul 25, 2022
034f7e5
Add compatibility test
felixhekhorn Jul 26, 2022
76f38ac
Add CLI test
felixhekhorn Jul 26, 2022
aec2d6a
Fix and test evol_pdf
felixhekhorn Jul 26, 2022
0e95377
Comment runcards
felixhekhorn Jul 26, 2022
976bc98
Fix runner test
felixhekhorn Jul 26, 2022
d5885a8
Revert "Comment runcards"
alecandido Jul 27, 2022
c426b5f
Change all {input,target}basis names to {}pids
alecandido Jul 27, 2022
a621d84
Remove PathLike in favor of standard library os.PathLike
alecandido Jul 27, 2022
d84e24d
Provide native deep copy for EKO
alecandido Jul 27, 2022
d5c5816
Remove the option to delete item setting it -> use delitem
alecandido Jul 27, 2022
1b8bb42
Replace file and directory names with module level constants
alecandido Jul 27, 2022
a8a5818
Refactor save, to take stream as input
alecandido Jul 27, 2022
1be6fa4
Replace duplicated string by function call
alecandido Jul 27, 2022
1227f76
Fix operator save regression
alecandido Jul 28, 2022
0088000
Remove dead code from legacy
alecandido Jul 28, 2022
21f7b43
Remove dead code from manipulate
alecandido Jul 28, 2022
e4078f7
Remove dead code from struct
alecandido Jul 28, 2022
e6d5a36
Document dataclass attributes in place
alecandido Jul 28, 2022
a57be9d
Fix tests
felixhekhorn Jul 28, 2022
16c6fdd
Document configs and rotations, remove useless default constructor
alecandido Jul 28, 2022
eba344c
Restore defaults, since None unsupported in manipulate
alecandido Jul 28, 2022
ff02f25
Serialize properly grids
alecandido Jul 28, 2022
d529c4b
Extend compatibility layer
alecandido Jul 28, 2022
d74207e
Fix compatibility tests
alecandido Jul 28, 2022
cdaed45
Skip compatibility for new cards
felixhekhorn Jul 28, 2022
5f457a4
Load legacy YAML output
alecandido Jul 28, 2022
0cd40be
Fix ekomark/apply
felixhekhorn Jul 28, 2022
fae2622
Drop InterpolatorDispatcher constructor from dict
alecandido Jul 28, 2022
3a799f8
Fix most interpolation tests
alecandido Jul 28, 2022
aafa27f
Fix get_interpolation test
alecandido Jul 28, 2022
ac117bf
On the way to fix test_utils
felixhekhorn Jul 28, 2022
6c2a999
Merge branch 'feature/composite-output' of github.com:N3PDF/eko into …
felixhekhorn Jul 28, 2022
3767943
Propagate new InterpolatorDispatcher construction
alecandido Jul 28, 2022
4e9b67b
Propagate also into OME tests
alecandido Jul 28, 2022
3e668ab
Fix test_utils
felixhekhorn Jul 28, 2022
18c33c3
Merge branch 'feature/composite-output' of github.com:N3PDF/eko into …
felixhekhorn Jul 28, 2022
fd632fc
Fix manipulate compatibility with InterpolatorDispatcher
alecandido Jul 28, 2022
984b605
Fix eko.interpolator
felixhekhorn Jul 28, 2022
18c8c31
Fix test_op_cards
felixhekhorn Jul 28, 2022
a9b4532
Fix compatibility tests
alecandido Jul 28, 2022
6cb49a2
Fix info_file and its test
felixhekhorn Jul 28, 2022
996fbf4
Fix legacy tests
alecandido Jul 28, 2022
225c1be
Fix last output test
alecandido Jul 28, 2022
e4d059a
Restore one further test in runner
alecandido Jul 28, 2022
df64b99
Fix evolve pdf tests
alecandido Jul 28, 2022
c00fc3b
Fix last runner tests
alecandido Jul 28, 2022
73be7ef
Propagate InterpolatorDispatcher update to isolated benchmarks
alecandido Jul 28, 2022
0d92a57
Keep using legacy runcards in ekobox, including benchmarks
alecandido Jul 28, 2022
3ba82e4
Only support old layout of opcard in ekobox
felixhekhorn Jul 29, 2022
03db302
Provide some more docstrings for output structs
alecandido Jul 29, 2022
e37e40d
Complete test_interpolation
felixhekhorn Jul 29, 2022
67d5339
Complete runner
felixhekhorn Jul 29, 2022
aeddb04
Provide even more docstrings
alecandido Jul 29, 2022
af88b47
Add more struct tests
felixhekhorn Jul 29, 2022
bc89ac6
Add rotations tests
felixhekhorn Jul 29, 2022
f8eb456
Complete most tests
felixhekhorn Jul 29, 2022
44b581c
Fix numba and LHA
felixhekhorn Jul 29, 2022
4e6c8a3
Recover test_ev_operator
felixhekhorn Jul 29, 2022
7f38cad
Add tests for runcards objects
alecandido Jul 29, 2022
67bd77d
Fix legacy typing compatibility
alecandido Jul 29, 2022
2090ddd
Revert HERA20 fix
felixhekhorn Jul 29, 2022
1a7788d
Merge branch 'feature/composite-output' of github.com:N3PDF/eko into …
felixhekhorn Jul 29, 2022
f5a730a
Poetry update
alecandido Jul 30, 2022
e565186
Merge branch 'develop' into feature/composite-output
felixhekhorn Sep 5, 2022
8b8e3e3
Revert logger.info to lazy evaluation
felixhekhorn Sep 5, 2022
3f7dc23
Try fix poetry
felixhekhorn Sep 5, 2022
be82c99
Cast couplings order for numba
felixhekhorn Sep 5, 2022
fdd02fd
Remove unlink in load_tar
felixhekhorn Sep 19, 2022
47e30e5
Update docs
felixhekhorn Sep 19, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 29 additions & 13 deletions benchmarks/eko/benchmark_evol_to_unity.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from eko.couplings import Couplings
from eko.evolution_operator import Operator
from eko.evolution_operator.grid import OperatorGrid
from eko.interpolation import InterpolatorDispatcher
from eko.interpolation import InterpolatorDispatcher, XGrid
from eko.thresholds import ThresholdsAtlas

# from eko.matching_conditions.operator_matrix_element import OperatorMatrixElement
Expand Down Expand Up @@ -43,24 +43,34 @@ class BenchmarkBackwardForward:
operators_card = {
"Q2grid": [10],
# here you need a very dense grid
"interpolation_xgrid": np.linspace(1e-1, 1, 30),
# "interpolation_xgrid": make_grid(30,30, x_min=1e-3),
"interpolation_polynomial_degree": 1,
"interpolation_is_log": True,
"debug_skip_singlet": False,
"debug_skip_non_singlet": False,
"ev_op_max_order": 1,
"ev_op_iterations": 1,
"backward_inversion": "exact",
"n_integration_cores": 1,
"xgrid": np.linspace(1e-1, 1, 30),
# "xgrid": make_grid(30,30, x_min=1e-3),
"configs": {
"interpolation_polynomial_degree": 1,
"interpolation_is_log": True,
"ev_op_max_order": (2, 0),
"ev_op_iterations": 1,
"backward_inversion": "exact",
"n_integration_cores": 1,
},
"debug": {
"skip_singlet": False,
"skip_non_singlet": False,
},
}
new_theory, new_operators = compatibility.update(theory_card, operators_card)
g = OperatorGrid.from_dict(
new_theory,
new_operators,
ThresholdsAtlas.from_dict(new_theory),
Couplings.from_dict(new_theory),
InterpolatorDispatcher.from_dict(new_operators),
InterpolatorDispatcher(
XGrid(
new_operators["xgrid"],
log=new_operators["configs"]["interpolation_is_log"],
),
new_operators["configs"]["interpolation_polynomial_degree"],
),
)

def test_operator_grid(
Expand All @@ -72,7 +82,13 @@ def test_operator_grid(
self.new_operators,
ThresholdsAtlas.from_dict(self.new_theory),
Couplings.from_dict(self.new_theory),
InterpolatorDispatcher.from_dict(self.new_operators),
InterpolatorDispatcher(
XGrid(
self.new_operators["xgrid"],
log=self.new_operators["configs"]["interpolation_is_log"],
),
self.new_operators["configs"]["interpolation_polynomial_degree"],
),
)
q20 = 30
q21 = 50
Expand Down
40 changes: 7 additions & 33 deletions benchmarks/ekobox/benchmark_evol_pdf.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
# -*- coding: utf-8 -*-
import pathlib

import lhapdf
import numpy as np
import pytest

from eko import basis_rotation as br
from eko import output
from ekobox import evol_pdf as ev_p
from ekobox import gen_op as g_o
from ekobox import gen_theory as g_t
from ekobox import operators_card as oc
from ekobox import theory_card as tc
from ekobox.genpdf import load

test_pdf = pathlib.Path(__file__).parent / "fakepdf"
lhapdf = pytest.importorskip("lhapdf")


@pytest.mark.isolated
Expand All @@ -22,8 +21,8 @@ def benchmark_evolve_single_member(tmp_path, cd, lhapdf_path):
100.0,
10000.0,
]
op = g_o.gen_op_card(q2grid)
theory = g_t.gen_theory_card(
op = oc.generate(q2grid)
theory = tc.generate(
0,
5.0,
update={
Expand Down Expand Up @@ -80,10 +79,10 @@ def benchmark_evolve_single_member(tmp_path, cd, lhapdf_path):

@pytest.mark.isolated
def benchmark_evolve_more_members(tmp_path, cd, lhapdf_path):
op = g_o.gen_op_card(
op = oc.generate(
[10, 100], update={"interpolation_xgrid": [1e-7, 0.01, 0.1, 0.2, 0.3]}
)
theory = g_t.gen_theory_card(0, 1.0)
theory = tc.generate(0, 1.0)
with lhapdf_path(test_pdf):
pdfs = lhapdf.mkPDFs("myMSTW2008nlo90cl")
d = tmp_path / "sub"
Expand All @@ -102,28 +101,3 @@ def benchmark_evolve_more_members(tmp_path, cd, lhapdf_path):
for x in [1e-7, 0.01, 0.1, 0.2, 0.3]:
for pid in [21, 1, 2]:
assert new_pdf_1.xfxQ2(pid, x, Q2) != new_pdf_2.xfxQ2(pid, x, Q2)


@pytest.mark.isolated
def benchmark_gen_and_dump_out(tmp_path):
op = g_o.gen_op_card(
[100.0], update={"interpolation_xgrid": [1e-7, 0.01, 0.1, 0.2, 0.3]}
)
theory = g_t.gen_theory_card(0, 1.0)

out = ev_p.gen_out(theory, op, path=tmp_path)

ops_id = f"o{op['hash'][:6]}_t{theory['hash'][:6]}"
outpath = f"{tmp_path}/{ops_id}.tar"
loaded_out = output.Output.load_tar(outpath)
for el, load_el in zip(
out["interpolation_xgrid"], loaded_out["interpolation_xgrid"]
):
assert el == load_el
for el, load_el in zip(
out["Q2grid"][100.0]["operators"], loaded_out["Q2grid"][100.0]["operators"]
):
np.testing.assert_allclose(
out["Q2grid"][100.0]["operators"],
loaded_out["Q2grid"][100.0]["operators"],
)
30 changes: 0 additions & 30 deletions benchmarks/ekobox/benchmark_gen_theory.py

This file was deleted.

50 changes: 0 additions & 50 deletions benchmarks/ekobox/benchmark_utils.py

This file was deleted.

88 changes: 0 additions & 88 deletions benchmarks/ekobox/genpdf/benchmark_flavors.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,38 +13,6 @@
lhapdf = pytest.importorskip("lhapdf")


@pytest.mark.isolated
def benchmark_is_evolution():
assert genpdf.flavors.is_evolution_labels(["V", "T3"])
assert not genpdf.flavors.is_evolution_labels(["21", "2"])


@pytest.mark.isolated
def benchmark_is_pids():
assert not genpdf.flavors.is_pid_labels(["V", "T3"])
assert not genpdf.flavors.is_pid_labels(["35", "9"])
assert not genpdf.flavors.is_pid_labels({})
assert genpdf.flavors.is_pid_labels([21, 2])


@pytest.mark.isolated
def benchmark_flavors_pid_to_flavor():
flavs = genpdf.flavors.pid_to_flavor([1, 2, 21, -3])
for f in flavs:
for g in flavs:
if not np.allclose(f, g):
assert f @ g == 0


@pytest.mark.isolated
def benchmark_flavors_evol_to_flavor():
flavs = genpdf.flavors.evol_to_flavor(["S", "g", "T3", "V8"])
for f in flavs:
for g in flavs:
if not np.allclose(f, g):
assert f @ g == 0


@pytest.mark.isolated
def benchmark_flavors_pids_ct14(tmp_path, cd):
with cd(tmp_path):
Expand Down Expand Up @@ -101,59 +69,3 @@ def benchmark_flavors_evol_ct14(tmp_path, cd):
np.testing.assert_allclose(
pdf.xfxQ2(21, x, Q2), gonly.xfxQ2(21, x, Q2)
)


@pytest.mark.isolated
def benchmark_flavors_evol_raw():
blocks = [
{
"Q2grid": np.array([1, 2]),
"xgrid": np.array([0.1, 1.0]),
"pids": np.array([-1, 21, 1]),
"data": np.array([[0.1, 0.2, 0.1]] * 4),
}
]
gonly = genpdf.flavors.project(blocks, genpdf.flavors.evol_to_flavor(["g"]))
assert len(gonly) == 1
np.testing.assert_allclose(
gonly[0]["data"],
np.array(
[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]] * 4
),
)
Sonly = genpdf.flavors.project(blocks, genpdf.flavors.evol_to_flavor(["S"]))
assert len(Sonly) == 1
for i in [0, 1, 2, 3]:
# g and gamma are zero
np.testing.assert_allclose(Sonly[0]["data"][i][7], 0)
np.testing.assert_allclose(Sonly[0]["data"][i][0], 0)
# quark are all equal and equal to anti-quarks
for pid in [2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13]:
np.testing.assert_allclose(Sonly[0]["data"][i][pid], Sonly[0]["data"][i][1])


@pytest.mark.isolated
def benchmark_flavors_evol_nodata():
# try with a block without data
blocks = [
{
"Q2grid": np.array([1, 2]),
"xgrid": np.array([0.1, 1.0]),
"pids": np.array([-1, 21, 1]),
"data": np.array([]),
},
{
"Q2grid": np.array([1, 2]),
"xgrid": np.array([0.1, 1.0]),
"pids": np.array([-1, 21, 1]),
"data": np.array([[0.1, 0.2, 0.1]] * 4),
},
]
gonly = genpdf.flavors.project(blocks, genpdf.flavors.evol_to_flavor(["g"]))
assert len(gonly) == 2
np.testing.assert_allclose(
gonly[1]["data"],
np.array(
[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]] * 4
),
)
26 changes: 0 additions & 26 deletions benchmarks/ekobox/genpdf/benchmark_init.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,32 +14,6 @@
lhapdf = pytest.importorskip("lhapdf")


@pytest.mark.isolated
def benchmark_genpdf_exceptions(tmp_path, cd):
# using a wrong label and then a wrong parent pdf
with cd(tmp_path):
with pytest.raises(TypeError):
genpdf.generate_pdf(
"test_genpdf_exceptions1",
["f"],
{
21: lambda x, Q2: 3.0 * x * (1.0 - x),
2: lambda x, Q2: 4.0 * x * (1.0 - x),
},
)
with pytest.raises(ValueError):
genpdf.generate_pdf(
"test_genpdf_exceptions2",
["g"],
10,
)
with pytest.raises(FileExistsError):
genpdf.install_pdf("foo")

with pytest.raises(TypeError):
genpdf.generate_pdf("debug", [21], info_update=(10, 15, 20))


@pytest.mark.isolated
def benchmark_genpdf_no_parent_and_install(tmp_path, cd):
with cd(tmp_path):
Expand Down
4 changes: 2 additions & 2 deletions benchmarks/lha_paper_bench.py
Original file line number Diff line number Diff line change
Expand Up @@ -224,8 +224,8 @@ def benchmark_sv(self, pto):
obj = BenchmarkVFNS()
# obj = BenchmarkFFNS()

# obj.benchmark_plain(0)
obj.benchmark_sv(2)
obj.benchmark_plain(0)
# obj.benchmark_sv(2)

# # VFNS benchmarks with LHA settings
# programs = ["LHA", "pegasus", "apfel"]
Expand Down
2 changes: 1 addition & 1 deletion doc/source/code/IO.rst
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ The ``Q2grid`` values are the actual tensor for the requested :math:`Q^2`. Each
- ``operators`` a :py:obj:`dict` with all evolution kernel operators where the key indicates which distribution is generated by which other one
and the value represents the eko in matrix representation - this can either be the plain list representation or the binary representation
(as provided by :py:meth:`numpy.ndarray.tobytes`)
- ``operator_errors`` a :py:obj:`dict` with the integration errors associated to the respective operators following the same conventions as
- ``errors`` a :py:obj:`dict` with the integration errors associated to the respective operators following the same conventions as
the ``operator`` dictionary

Each element (|EKO|) is a rank-4 tensor with the indices ordered in the following way: ``EKO[pid_out][x_out][pid_in][x_in]`` where ``pid_out`` and ``x_out``
Expand Down
3 changes: 3 additions & 0 deletions doc/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,9 @@
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = None

# Criterion to sort class members
autodoc_member_order = "bysource"

# A string to be included at the beginning of all files
shared = here / "shared"
rst_prolog = "\n".join(
Expand Down
Loading