From 39b419bd1e3e824a2e30d77ca5fda38bccc26286 Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Wed, 11 May 2022 12:14:34 +0200 Subject: [PATCH 01/23] First attempt to SV --- src/pineko/cli/convolute.py | 15 +++++++++++---- src/pineko/evolve.py | 17 ++++++++++++++--- src/pineko/theory.py | 3 ++- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/pineko/cli/convolute.py b/src/pineko/cli/convolute.py index 594679e2..6538f523 100644 --- a/src/pineko/cli/convolute.py +++ b/src/pineko/cli/convolute.py @@ -11,17 +11,24 @@ @click.argument("fktable", type=click.Path()) @click.argument("max_as", type=int) @click.argument("max_al", type=int) +@click.option("--xir", default=1.0, help="renormalization scale variation") +@click.option("--xif", default=1.0, help="factorization scale variation") @click.option( "--pdf", default=None, help="if given, print comparison table", show_default=True ) -def subcommand(pineappl, eko, fktable, max_as, max_al, pdf): - """Convolute PineAPPL grid and EKO. +def subcommand(pineappl, eko, fktable, max_as, max_al, xir, xif, pdf): + """Convolute PineAPPL grid and EKO into an FK table. PINEAPPL and EKO are the path to the respective elements to convolute, and FKTABLE is the path where to dump the output. - Moreover, MAX_AS and MAX_AL are used to specify the order in QCD and QED + + MAX_AS and MAX_AL are used to specify the order in QCD and QED couplings (i.e. the maximum power allowed for each correction). + + XIR and XIF represent the renormalization and factorization scale respectively. + + PDF is an optional PDF set compatible with the EKO to compare grid and FK table. """ - _grid, _fk, comp = evolve.evolve_grid(pineappl, eko, fktable, max_as, max_al, pdf) + _grid, _fk, comp = evolve.evolve_grid(pineappl, eko, fktable, max_as, max_al, xir, xif, pdf) if comp: print(comp.to_string()) diff --git a/src/pineko/evolve.py b/src/pineko/evolve.py index 155c7aa8..db2fdf64 100644 --- a/src/pineko/evolve.py +++ b/src/pineko/evolve.py @@ -71,7 +71,7 @@ def write_operator_card(pineappl_grid, default_card, card_path): def evolve_grid( - pineappl_path, eko_path, fktable_path, max_as, max_al, comparison_pdf=None + pineappl_path, eko_path, fktable_path, max_as, max_al, xir, xif, comparison_pdf=None ): """ Convolute grid with EKO from file paths. @@ -88,6 +88,10 @@ def evolve_grid( maximum power of strong coupling max_al : int maximum power of electro-weak coupling + xir : float + renormalization scale variation + xif : float + factorization scale variation comparison_pdf : None or str if given, a comparison table (with / without evolution) will be printed """ @@ -95,7 +99,8 @@ def evolve_grid( rich.panel.Panel.fit("Computing ...", style="magenta", box=rich.box.SQUARE), f" {pineappl_path}\n", f"+ {eko_path}\n", - f"= {fktable_path}", + f"= {fktable_path}\n", + f"with max_as={max_as}, max_al={max_al}, xir={xir}, xif={xif}" ) # load pineappl_grid = pineappl.grid.Grid.read(str(pineappl_path)) @@ -108,7 +113,13 @@ def evolve_grid( raise ValueError("The EKO is neither in flavor nor in evolution basis.") # do it order_mask = pineappl.grid.Order.create_mask(pineappl_grid.orders(), max_as, max_al) - fktable = pineappl_grid.convolute_eko(operators, "evol", order_mask=order_mask) + # TODO this is a hack to not break the CLI + # the problem is that the EKO output still does not contain the theory/operators card and + # so I can't compute alpha_s here if xir != 1 + if np.isclose(xir, 1.): + mur2_grid = list(operators["Q2grid"].keys()) + alphas_values = [op["alphas"] for op in operators["Q2grid"].values()] + fktable = pineappl_grid.convolute_eko(operators, mur2_grid, alphas_values, "evol", order_mask=order_mask,xi=(xir, xif)) fktable.optimize() # compare before after comparison = None diff --git a/src/pineko/theory.py b/src/pineko/theory.py index 5fc2c168..f35e7350 100644 --- a/src/pineko/theory.py +++ b/src/pineko/theory.py @@ -326,9 +326,10 @@ def fk(self, name, grid_path, tcard, pdf): max_al = 0 # do it! logger.info("Start computation of %s", name) + logger.info("max_as={max_as}, max_al={max_al}, xir={xir}, xif={xif}") start_time = time.perf_counter() _grid, _fk, comparison = evolve.evolve_grid( - grid_path, eko_filename, fk_filename, max_as, max_al, pdf + grid_path, eko_filename, fk_filename, max_as, max_al, xir=tcard["XIR"],xif=tcard["XIF"],comparison_pdf=pdf ) logger.info( "Finished computation of %s - took %f s", From ae3398cd233c2ce897d1637c4e4db8481bd60053 Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Wed, 11 May 2022 12:15:56 +0200 Subject: [PATCH 02/23] Update pre-commit --- .pre-commit-config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9373b13e..3aa02980 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,7 +2,7 @@ # See https://pre-commit.com/hooks.html for more hooks repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.1.0 + rev: v4.2.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer @@ -12,7 +12,7 @@ repos: - id: debug-statements - id: fix-encoding-pragma - repo: https://github.com/psf/black - rev: 22.1.0 + rev: 22.3.0 hooks: - id: black - repo: https://github.com/asottile/blacken-docs @@ -25,6 +25,6 @@ repos: - id: isort args: ["--profile", "black"] - repo: https://github.com/asottile/pyupgrade - rev: v2.31.0 + rev: v2.32.1 hooks: - id: pyupgrade From e73bdf3492ddd39064f32c2361af586a49473433 Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Wed, 11 May 2022 12:17:06 +0200 Subject: [PATCH 03/23] Run pre-commit --- src/pineko/cli/convolute.py | 10 ++++++---- src/pineko/evolve.py | 17 ++++++++++++----- src/pineko/parser.py | 1 + src/pineko/theory.py | 9 ++++++++- tests/test_me.py | 1 + 5 files changed, 28 insertions(+), 10 deletions(-) diff --git a/src/pineko/cli/convolute.py b/src/pineko/cli/convolute.py index 6538f523..9ff15e08 100644 --- a/src/pineko/cli/convolute.py +++ b/src/pineko/cli/convolute.py @@ -21,14 +21,16 @@ def subcommand(pineappl, eko, fktable, max_as, max_al, xir, xif, pdf): PINEAPPL and EKO are the path to the respective elements to convolute, and FKTABLE is the path where to dump the output. - + MAX_AS and MAX_AL are used to specify the order in QCD and QED couplings (i.e. the maximum power allowed for each correction). - + XIR and XIF represent the renormalization and factorization scale respectively. - + PDF is an optional PDF set compatible with the EKO to compare grid and FK table. """ - _grid, _fk, comp = evolve.evolve_grid(pineappl, eko, fktable, max_as, max_al, xir, xif, pdf) + _grid, _fk, comp = evolve.evolve_grid( + pineappl, eko, fktable, max_as, max_al, xir, xif, pdf + ) if comp: print(comp.to_string()) diff --git a/src/pineko/evolve.py b/src/pineko/evolve.py index db2fdf64..6758c145 100644 --- a/src/pineko/evolve.py +++ b/src/pineko/evolve.py @@ -100,7 +100,7 @@ def evolve_grid( f" {pineappl_path}\n", f"+ {eko_path}\n", f"= {fktable_path}\n", - f"with max_as={max_as}, max_al={max_al}, xir={xir}, xif={xif}" + f"with max_as={max_as}, max_al={max_al}, xir={xir}, xif={xif}", ) # load pineappl_grid = pineappl.grid.Grid.read(str(pineappl_path)) @@ -116,17 +116,24 @@ def evolve_grid( # TODO this is a hack to not break the CLI # the problem is that the EKO output still does not contain the theory/operators card and # so I can't compute alpha_s here if xir != 1 - if np.isclose(xir, 1.): + if np.isclose(xir, 1.0): mur2_grid = list(operators["Q2grid"].keys()) alphas_values = [op["alphas"] for op in operators["Q2grid"].values()] - fktable = pineappl_grid.convolute_eko(operators, mur2_grid, alphas_values, "evol", order_mask=order_mask,xi=(xir, xif)) + fktable = pineappl_grid.convolute_eko( + operators, + mur2_grid, + alphas_values, + "evol", + order_mask=order_mask, + xi=(xir, xif), + ) fktable.optimize() # compare before after comparison = None if comparison_pdf is not None: comparison = comparator.compare( - pineappl_grid, fktable, max_as, max_al, comparison_pdf - ) + pineappl_grid, fktable, max_as, max_al, comparison_pdf + ) fktable.set_key_value("results_fk", comparison.to_string()) fktable.set_key_value("results_fk_pdfset", comparison_pdf) # write diff --git a/src/pineko/parser.py b/src/pineko/parser.py index 74f005c9..7f7c0d84 100644 --- a/src/pineko/parser.py +++ b/src/pineko/parser.py @@ -6,6 +6,7 @@ EXT = "pineappl.lz4" + class YamlFileNotFound(FileNotFoundError): """ymldb file for dataset not found.""" diff --git a/src/pineko/theory.py b/src/pineko/theory.py index f35e7350..9ac411f6 100644 --- a/src/pineko/theory.py +++ b/src/pineko/theory.py @@ -329,7 +329,14 @@ def fk(self, name, grid_path, tcard, pdf): logger.info("max_as={max_as}, max_al={max_al}, xir={xir}, xif={xif}") start_time = time.perf_counter() _grid, _fk, comparison = evolve.evolve_grid( - grid_path, eko_filename, fk_filename, max_as, max_al, xir=tcard["XIR"],xif=tcard["XIF"],comparison_pdf=pdf + grid_path, + eko_filename, + fk_filename, + max_as, + max_al, + xir=tcard["XIR"], + xif=tcard["XIF"], + comparison_pdf=pdf, ) logger.info( "Finished computation of %s - took %f s", diff --git a/tests/test_me.py b/tests/test_me.py index 65f0c3cc..fe72569e 100644 --- a/tests/test_me.py +++ b/tests/test_me.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- import pineko From b0ec173c1a89aaaf8636adf75853340a43938462 Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Wed, 11 May 2022 19:14:10 +0200 Subject: [PATCH 04/23] Pass alpha_s around --- src/pineko/check.py | 2 +- src/pineko/comparator.py | 27 +++++++++++++-------------- src/pineko/evolve.py | 23 +++++++++++++++++------ src/pineko/theory.py | 34 +++++++++++++++++++++++++++++----- 4 files changed, 60 insertions(+), 26 deletions(-) diff --git a/src/pineko/check.py b/src/pineko/check.py index 49a8d9a2..76c65ad5 100644 --- a/src/pineko/check.py +++ b/src/pineko/check.py @@ -30,7 +30,7 @@ def check_grid_and_eko_compatible(pineappl_grid, operators): operators : eko.output.Output operators """ - x_grid, _pids, muf2_grid = pineappl_grid.axes() + x_grid, _pids, _mur2_grid, muf2_grid = pineappl_grid.axes() # Q2 grid if not np.all( in1d(np.unique(list(operators["Q2grid"].keys())), np.array(muf2_grid)) diff --git a/src/pineko/comparator.py b/src/pineko/comparator.py index cf7357c9..986deb21 100644 --- a/src/pineko/comparator.py +++ b/src/pineko/comparator.py @@ -7,26 +7,25 @@ def compare(pine, fktable, max_as, max_al, pdf): - """ - Build comparison table. + """Build comparison table. Parameters ---------- - pine : pineappl.grid.Grid - uncovoluted grid - fktable : pineappl.fktable.FkTable - convoluted grid - max_as : int - maximum power of strong coupling - max_al : int - maximum power of electro-weak coupling - pdf : str - PDF set name + pine : pineappl.grid.Grid + uncovoluted grid + fktable : pineappl.fktable.FkTable + convoluted grid + max_as : int + maximum power of strong coupling + max_al : int + maximum power of electro-weak coupling + pdf : str + PDF set name Returns ------- - df : pd.DataFrame - comparison table + df : pd.DataFrame + comparison table """ import lhapdf # pylint: disable=import-outside-toplevel diff --git a/src/pineko/evolve.py b/src/pineko/evolve.py index 6758c145..f100b00b 100644 --- a/src/pineko/evolve.py +++ b/src/pineko/evolve.py @@ -62,16 +62,24 @@ def write_operator_card(pineappl_grid, default_card, card_path): written Q2 grid """ operators_card = copy.deepcopy(default_card) - x_grid, _pids, q2_grid = pineappl_grid.axes() + x_grid, _pids, _mur2_grid, muf2_grid = pineappl_grid.axes() operators_card["targetgrid"] = x_grid.tolist() - operators_card["Q2grid"] = q2_grid.tolist() + operators_card["Q2grid"] = muf2_grid.tolist() with open(card_path, "w", encoding="UTF-8") as f: yaml.safe_dump(operators_card, f) - return x_grid, q2_grid + return x_grid, muf2_grid def evolve_grid( - pineappl_path, eko_path, fktable_path, max_as, max_al, xir, xif, comparison_pdf=None + pineappl_path, + eko_path, + fktable_path, + max_as, + max_al, + xir, + xif, + alphas_values=None, + comparison_pdf=None, ): """ Convolute grid with EKO from file paths. @@ -92,6 +100,8 @@ def evolve_grid( renormalization scale variation xif : float factorization scale variation + alphas_values : None or list + values of strong coupling used to collapse grids comparison_pdf : None or str if given, a comparison table (with / without evolution) will be printed """ @@ -104,6 +114,7 @@ def evolve_grid( ) # load pineappl_grid = pineappl.grid.Grid.read(str(pineappl_path)) + _x_grid, _pids, mur2_grid, _muf2_grid = pineappl_grid.axes() operators = eko.output.Output.load_tar(eko_path) check.check_grid_and_eko_compatible(pineappl_grid, operators) # rotate to evolution (if doable and necessary) @@ -116,12 +127,12 @@ def evolve_grid( # TODO this is a hack to not break the CLI # the problem is that the EKO output still does not contain the theory/operators card and # so I can't compute alpha_s here if xir != 1 - if np.isclose(xir, 1.0): + if np.isclose(xir, 1.0) and alphas_values is None: mur2_grid = list(operators["Q2grid"].keys()) alphas_values = [op["alphas"] for op in operators["Q2grid"].values()] fktable = pineappl_grid.convolute_eko( operators, - mur2_grid, + xir * xir * mur2_grid, alphas_values, "evol", order_mask=order_mask, diff --git a/src/pineko/theory.py b/src/pineko/theory.py index 9ac411f6..c659755f 100644 --- a/src/pineko/theory.py +++ b/src/pineko/theory.py @@ -5,6 +5,7 @@ import eko import rich import yaml +from eko import strong_coupling as sc from . import configs, evolve, parser, theory_card @@ -220,6 +221,24 @@ def opcards(self): self.operator_cards_path.mkdir(exist_ok=True) self.iterate(self.opcard) + def load_operator_card(self, name): + """Read current operator card. + + Parameters + ---------- + name : str + grid name, i.e. it's true stem + + Returns + ------- + ocard : dict + operator card + """ + opcard_path = self.operator_cards_path / f"{name}.yaml" + with open(opcard_path, encoding="utf-8") as f: + ocard = yaml.safe_load(f) + return ocard + def activate_logging(self, path, filename, activated_loggers=()): """Activate the logging facilities. @@ -269,9 +288,7 @@ def eko(self, name, _grid, tcard): paths["logs"]["eko"], f"{self.theory_id}-{name}.log", ("eko",) ) # setup data - opcard_path = self.operator_cards_path / f"{name}.yaml" - with open(opcard_path, encoding="utf-8") as f: - ocard = yaml.safe_load(f) + ocard = self.load_operator_card(name) eko_filename = self.ekos_path() / f"{name}.tar" if eko_filename.exists(): if not self.overwrite: @@ -324,6 +341,12 @@ def fk(self, name, grid_path, tcard, pdf): return max_as = 1 + int(tcard["PTO"]) max_al = 0 + # collect alpha_s + astrong = sc.StrongCoupling.from_dict(tcard) + ocard = self.load_operator_card(name) + xir = tcard["XIR"] + xif = tcard["XIF"] + alphas_values = [astrong.a_s(xir * xir * Q2) for Q2 in ocard["Q2grid"]] # do it! logger.info("Start computation of %s", name) logger.info("max_as={max_as}, max_al={max_al}, xir={xir}, xif={xif}") @@ -334,8 +357,9 @@ def fk(self, name, grid_path, tcard, pdf): fk_filename, max_as, max_al, - xir=tcard["XIR"], - xif=tcard["XIF"], + xir=xir, + xif=xif, + alphas_values=alphas_values, comparison_pdf=pdf, ) logger.info( From e5a58fbb9b8761bc0fff1d3ca5b1e3caacece50e Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Thu, 12 May 2022 16:52:11 +0200 Subject: [PATCH 05/23] Propagate scales around --- src/pineko/check.py | 38 +++++++++++++++++++++++++++---------- src/pineko/cli/check.py | 7 +++++-- src/pineko/cli/compare.py | 8 ++++++-- src/pineko/cli/convolute.py | 2 +- src/pineko/cli/opcard.py | 7 +++++-- src/pineko/cli/theory_.py | 4 ++-- src/pineko/comparator.py | 12 ++++++++++-- src/pineko/evolve.py | 19 ++++++++++++------- src/pineko/theory.py | 21 +++++++++++++++----- 9 files changed, 85 insertions(+), 33 deletions(-) diff --git a/src/pineko/check.py b/src/pineko/check.py index 76c65ad5..ba1fbbcf 100644 --- a/src/pineko/check.py +++ b/src/pineko/check.py @@ -3,10 +3,25 @@ def in1d(a, b, rtol=1e-05, atol=1e-08): - """ - Improved version of np.in1d. + """Improved version of np.in1d. Thanks: https://github.com/numpy/numpy/issues/7784#issuecomment-848036186 + + Parameters + ---------- + a : list + needle + b : list + haystack + rtol : float + allowed relative error + atol : float + allowed absolute error + + Returns + ------- + list + mask of found elements """ if len(a) == 1: for be in b: @@ -19,21 +34,24 @@ def in1d(a, b, rtol=1e-05, atol=1e-08): ) -def check_grid_and_eko_compatible(pineappl_grid, operators): - """ - Raises a `ValueError` if the EKO operators and the PineAPPL grid are NOT compatible. +def check_grid_and_eko_compatible(pineappl_grid, operators, xif): + """Raises a `ValueError` if the EKO operators and the PineAPPL grid are NOT compatible. Parameters ---------- - pineappl_grid : pineappl.grid.Grid - grid - operators : eko.output.Output - operators + pineappl_grid : pineappl.grid.Grid + grid + operators : eko.output.Output + operators + xif : float + factorization scale variation """ x_grid, _pids, _mur2_grid, muf2_grid = pineappl_grid.axes() # Q2 grid if not np.all( - in1d(np.unique(list(operators["Q2grid"].keys())), np.array(muf2_grid)) + in1d( + np.unique(list(operators["Q2grid"].keys())), xif * xif * np.array(muf2_grid) + ) ): raise ValueError( "Q2 grid in pineappl grid and eko operator are NOT compatible!" diff --git a/src/pineko/cli/check.py b/src/pineko/cli/check.py index afe53e55..f8f13dcb 100644 --- a/src/pineko/cli/check.py +++ b/src/pineko/cli/check.py @@ -11,16 +11,19 @@ @command.command("check") @click.argument("pineappl_path", metavar="PINEAPPL", type=click.Path(exists=True)) @click.argument("eko_path", metavar="EKO", type=click.Path(exists=True)) -def subcommand(pineappl_path, eko_path): +@click.option("--xif", default=1.0, help="factorization scale variation") +def subcommand(pineappl_path, eko_path, xif): """Check PineAPPL grid and EKO compatibility. In order to be compatible, the grid provided in PINEAPPL and the operator provided in EKO, have to expose the same x grid and Q2 grid. + + XIF is the factorization scale variation. """ pineappl_grid = pineappl.grid.Grid.read(pineappl_path) operators = eko.output.Output.load_tar(eko_path) try: - check.check_grid_and_eko_compatible(pineappl_grid, operators) + check.check_grid_and_eko_compatible(pineappl_grid, operators, xif) rich.print("[green]Success:[/] grids are compatible") except ValueError as e: rich.print("[red]Error:[/]", e) diff --git a/src/pineko/cli/compare.py b/src/pineko/cli/compare.py index 47fc56b2..1b884dc4 100644 --- a/src/pineko/cli/compare.py +++ b/src/pineko/cli/compare.py @@ -13,7 +13,9 @@ @click.argument("max_as", type=int) @click.argument("max_al", type=int) @click.argument("pdf", type=str) -def subcommand(pineappl_path, fktable_path, max_as, max_al, pdf): +@click.option("--xir", default=1.0, help="renormalization scale variation") +@click.option("--xif", default=1.0, help="factorization scale variation") +def subcommand(pineappl_path, fktable_path, max_as, max_al, pdf, xir, xif): """Compare process level PineAPPL grid and derived FkTable. The comparison between the grid stored at PINEAPPL_PATH, and the FK table @@ -23,8 +25,10 @@ def subcommand(pineappl_path, fktable_path, max_as, max_al, pdf): The comparison involves the orders in QCD and QED up to the maximum power of the coupling corresponding respectively to MAX_AS and MAX_AL. + + XIR and XIF represent the renormalization and factorization scale in the grid respectively. """ pine = pineappl.grid.Grid.read(pineappl_path) fk = pineappl.fk_table.FkTable.read(fktable_path) # Note that we need to cast to string before printing to avoid ellipsis ... - rich.print(comparator.compare(pine, fk, max_as, max_al, pdf).to_string()) + rich.print(comparator.compare(pine, fk, max_as, max_al, pdf, xir, xif).to_string()) diff --git a/src/pineko/cli/convolute.py b/src/pineko/cli/convolute.py index 9ff15e08..c69737b3 100644 --- a/src/pineko/cli/convolute.py +++ b/src/pineko/cli/convolute.py @@ -25,7 +25,7 @@ def subcommand(pineappl, eko, fktable, max_as, max_al, xir, xif, pdf): MAX_AS and MAX_AL are used to specify the order in QCD and QED couplings (i.e. the maximum power allowed for each correction). - XIR and XIF represent the renormalization and factorization scale respectively. + XIR and XIF represent the renormalization and factorization scale in the grid respectively. PDF is an optional PDF set compatible with the EKO to compare grid and FK table. """ diff --git a/src/pineko/cli/opcard.py b/src/pineko/cli/opcard.py index 7ffc4dba..f992e5c2 100644 --- a/src/pineko/cli/opcard.py +++ b/src/pineko/cli/opcard.py @@ -12,14 +12,17 @@ "default_card_path", metavar="DEFAULT_CARD", type=click.Path(exists=True) ) @click.argument("opcard_path", metavar="OPCARD", type=click.Path()) -def subcommand(pineappl_path, default_card_path, opcard_path): +@click.option("--xif", default=1.0, help="factorization scale variation") +def subcommand(pineappl_path, default_card_path, opcard_path, xif): """Write EKO card for PineAPPL grid. Writes a copy of the default card from DEFAULT_CARD to OPCARD with the adjusted x grid and Q2 grid read from PINEAPPL. + + XIF is the factorization scale variation. """ _x_grid, q2_grid = evolve.write_operator_card_from_file( - pineappl_path, default_card_path, opcard_path + pineappl_path, default_card_path, opcard_path, xif ) rich.print( f"[green]Success:[/] Wrote card with {len(q2_grid)} Q2 points to {opcard_path}" diff --git a/src/pineko/cli/theory_.py b/src/pineko/cli/theory_.py index df067dd0..383865df 100644 --- a/src/pineko/cli/theory_.py +++ b/src/pineko/cli/theory_.py @@ -32,7 +32,7 @@ def theory_(cfg): @click.option("--overwrite", is_flag=True, help="Allow files to be overwritten") def inherit_grids(source_theory_id, target_theory_id, datasets, overwrite): """Inherit grids for datasets from one theory to another.""" - theory.TheoryBuilder(source_theory_id, datasets, overwrite).inherit_grids( + theory.TheoryBuilder(source_theory_id, datasets, overwrite=overwrite).inherit_grids( target_theory_id ) @@ -43,7 +43,7 @@ def inherit_grids(source_theory_id, target_theory_id, datasets, overwrite): @click.option("--overwrite", is_flag=True, help="Allow files to be overwritten") def opcards(theory_id, datasets, overwrite): """Write EKO card for all FK tables in all datasets.""" - theory.TheoryBuilder(theory_id, datasets, overwrite).opcards() + theory.TheoryBuilder(theory_id, datasets, overwrite=overwrite).opcards() @theory_.command() diff --git a/src/pineko/comparator.py b/src/pineko/comparator.py index 986deb21..d9f11d37 100644 --- a/src/pineko/comparator.py +++ b/src/pineko/comparator.py @@ -6,7 +6,7 @@ import pineappl -def compare(pine, fktable, max_as, max_al, pdf): +def compare(pine, fktable, max_as, max_al, pdf, xir, xif): """Build comparison table. Parameters @@ -21,6 +21,10 @@ def compare(pine, fktable, max_as, max_al, pdf): maximum power of electro-weak coupling pdf : str PDF set name + xir : float + renormalization scale variation + xif : float + factorization scale variation Returns ------- @@ -34,7 +38,11 @@ def compare(pine, fktable, max_as, max_al, pdf): order_mask = pineappl.grid.Order.create_mask(pine.orders(), max_as, max_al) before = np.array( pine.convolute_with_one( - pdgid, pdfset.xfxQ2, pdfset.alphasQ2, order_mask=order_mask + pdgid, + pdfset.xfxQ2, + pdfset.alphasQ2, + order_mask=order_mask, + xi=((xir, xif),), ) ) after = np.array(fktable.convolute_with_one(pdgid, pdfset.xfxQ2)) diff --git a/src/pineko/evolve.py b/src/pineko/evolve.py index f100b00b..2b0269ec 100644 --- a/src/pineko/evolve.py +++ b/src/pineko/evolve.py @@ -14,7 +14,7 @@ from . import check, comparator -def write_operator_card_from_file(pineappl_path, default_card_path, card_path): +def write_operator_card_from_file(pineappl_path, default_card_path, card_path, xif): """Generate operator card for a grid. Parameters @@ -25,6 +25,8 @@ def write_operator_card_from_file(pineappl_path, default_card_path, card_path): base operator card card_path : str or os.PathLike target path + xif : float + factorization scale variation Returns ------- @@ -39,10 +41,10 @@ def write_operator_card_from_file(pineappl_path, default_card_path, card_path): pineappl_grid = pineappl.grid.Grid.read(pineappl_path) with open(default_card_path, "r", encoding="UTF-8") as f: default_card = yaml.safe_load(f) - return write_operator_card(pineappl_grid, default_card, card_path) + return write_operator_card(pineappl_grid, default_card, card_path, xif) -def write_operator_card(pineappl_grid, default_card, card_path): +def write_operator_card(pineappl_grid, default_card, card_path, xif): """Generate operator card for this grid. Parameters @@ -53,6 +55,8 @@ def write_operator_card(pineappl_grid, default_card, card_path): base operator card card_path : str or os.PathLike target path + xif : float + factorization scale variation Returns ------- @@ -63,11 +67,12 @@ def write_operator_card(pineappl_grid, default_card, card_path): """ operators_card = copy.deepcopy(default_card) x_grid, _pids, _mur2_grid, muf2_grid = pineappl_grid.axes() + q2_grid = (xif * xif * muf2_grid).tolist() operators_card["targetgrid"] = x_grid.tolist() - operators_card["Q2grid"] = muf2_grid.tolist() + operators_card["Q2grid"] = q2_grid with open(card_path, "w", encoding="UTF-8") as f: yaml.safe_dump(operators_card, f) - return x_grid, muf2_grid + return x_grid, q2_grid def evolve_grid( @@ -116,7 +121,7 @@ def evolve_grid( pineappl_grid = pineappl.grid.Grid.read(str(pineappl_path)) _x_grid, _pids, mur2_grid, _muf2_grid = pineappl_grid.axes() operators = eko.output.Output.load_tar(eko_path) - check.check_grid_and_eko_compatible(pineappl_grid, operators) + check.check_grid_and_eko_compatible(pineappl_grid, operators, xif) # rotate to evolution (if doable and necessary) if np.allclose(operators["inputpids"], br.flavor_basis_pids): operators.to_evol() @@ -126,7 +131,7 @@ def evolve_grid( order_mask = pineappl.grid.Order.create_mask(pineappl_grid.orders(), max_as, max_al) # TODO this is a hack to not break the CLI # the problem is that the EKO output still does not contain the theory/operators card and - # so I can't compute alpha_s here if xir != 1 + # so I can't compute alpha_s *here* if xir != 1 if np.isclose(xir, 1.0) and alphas_values is None: mur2_grid = list(operators["Q2grid"].keys()) alphas_values = [op["alphas"] for op in operators["Q2grid"].values()] diff --git a/src/pineko/theory.py b/src/pineko/theory.py index c659755f..b7642a54 100644 --- a/src/pineko/theory.py +++ b/src/pineko/theory.py @@ -3,6 +3,7 @@ import time import eko +import numpy as np import rich import yaml from eko import strong_coupling as sc @@ -193,7 +194,7 @@ def iterate(self, f, **kwargs): f(name, grid, **kwargs) rich.print() - def opcard(self, name, grid): + def opcard(self, name, grid, tcard): """Write a single operator card. Parameters @@ -202,6 +203,8 @@ def opcard(self, name, grid): grid name, i.e. it's true stem grid : pathlib.Path path to grid + tcard : dict + theory card """ opcard_path = self.operator_cards_path / f"{name}.yaml" if opcard_path.exists(): @@ -209,7 +212,10 @@ def opcard(self, name, grid): rich.print(f"Skipping existing operator card {opcard_path}") return _x_grid, q2_grid = evolve.write_operator_card_from_file( - grid, configs.configs["paths"]["operator_card_template"], opcard_path + grid, + configs.configs["paths"]["operator_card_template"], + opcard_path, + tcard["XIF"], ) if opcard_path.exists(): rich.print( @@ -218,8 +224,9 @@ def opcard(self, name, grid): def opcards(self): """Write operator cards.""" + tcard = theory_card.load(self.theory_id) self.operator_cards_path.mkdir(exist_ok=True) - self.iterate(self.opcard) + self.iterate(self.opcard, tcard=tcard) def load_operator_card(self, name): """Read current operator card. @@ -342,14 +349,18 @@ def fk(self, name, grid_path, tcard, pdf): max_as = 1 + int(tcard["PTO"]) max_al = 0 # collect alpha_s + # TODO: move this down to evolve.evolve_grid when output contains cards astrong = sc.StrongCoupling.from_dict(tcard) ocard = self.load_operator_card(name) xir = tcard["XIR"] xif = tcard["XIF"] - alphas_values = [astrong.a_s(xir * xir * Q2) for Q2 in ocard["Q2grid"]] + # PineAPPL wants alpha_s = 4*pi*a_s + alphas_values = [ + 4.0 * np.pi * astrong.a_s(xir * xir * Q2) for Q2 in ocard["Q2grid"] + ] # do it! logger.info("Start computation of %s", name) - logger.info("max_as={max_as}, max_al={max_al}, xir={xir}, xif={xif}") + logger.info("max_as=%d, max_al=%d, xir=%f, xif=%f", max_as, max_al, xir, xif) start_time = time.perf_counter() _grid, _fk, comparison = evolve.evolve_grid( grid_path, From 76c0b5bf4fb99cbdb11d98ae2593ae99a701a390 Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Thu, 12 May 2022 17:10:34 +0200 Subject: [PATCH 06/23] Fix compare call. Save before compare --- src/pineko/evolve.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pineko/evolve.py b/src/pineko/evolve.py index 2b0269ec..a174565d 100644 --- a/src/pineko/evolve.py +++ b/src/pineko/evolve.py @@ -144,14 +144,14 @@ def evolve_grid( xi=(xir, xif), ) fktable.optimize() - # compare before after + # write + fktable.write_lz4(str(fktable_path)) + # compare before/after comparison = None if comparison_pdf is not None: comparison = comparator.compare( - pineappl_grid, fktable, max_as, max_al, comparison_pdf + pineappl_grid, fktable, max_as, max_al, comparison_pdf, xir, xif ) fktable.set_key_value("results_fk", comparison.to_string()) fktable.set_key_value("results_fk_pdfset", comparison_pdf) - # write - fktable.write_lz4(str(fktable_path)) return pineappl_grid, fktable, comparison From a9aedbee8d6a9d3d44a0151f63642f51faf77f56 Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Tue, 17 May 2022 14:09:46 +0200 Subject: [PATCH 07/23] Fix bug in as computation --- data/grids/load.sh | 1 + src/pineko/theory.py | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/data/grids/load.sh b/data/grids/load.sh index 9abf6ec3..09ea42b6 100644 --- a/data/grids/load.sh +++ b/data/grids/load.sh @@ -6,3 +6,4 @@ # theory example # scp dom.mi.infn.it:/media/FK/fktables/data/grids/200-SLAC_NC_EM_D_F2.pineappl.lz4 ./200/SLAC_NC_EM_D_F2.pineappl.lz4 # scp dom.mi.infn.it:/media/FK/fktables/data/grids/200-SLAC_NC_EM_P_F2.pineappl.lz4 ./200/SLAC_NC_EM_P_F2.pineappl.lz4 +# scp dom.mi.infn.it:/media/FK/fktables_pineko/data/grids/208/HERA_NC_318GEV_EAVG_SIGMARED_BOTTOM.pineappl.lz4 ./208/HERA_NC_318GEV_EAVG_SIGMARED_BOTTOM.pineappl.lz4 diff --git a/src/pineko/theory.py b/src/pineko/theory.py index b7642a54..d306dd5e 100644 --- a/src/pineko/theory.py +++ b/src/pineko/theory.py @@ -351,12 +351,15 @@ def fk(self, name, grid_path, tcard, pdf): # collect alpha_s # TODO: move this down to evolve.evolve_grid when output contains cards astrong = sc.StrongCoupling.from_dict(tcard) - ocard = self.load_operator_card(name) + # ocard = self.load_operator_card(name) + # q2_grid = ocard["Q2grid"] + operators = eko.output.Output.load_tar(eko_filename) + q2_grid = operators["Q2grid"].keys() xir = tcard["XIR"] xif = tcard["XIF"] # PineAPPL wants alpha_s = 4*pi*a_s alphas_values = [ - 4.0 * np.pi * astrong.a_s(xir * xir * Q2) for Q2 in ocard["Q2grid"] + 4.0 * np.pi * astrong.a_s(xir * xir * Q2 / xif / xif) for Q2 in q2_grid ] # do it! logger.info("Start computation of %s", name) From bb18e62725eb854f263fcfc5d2fc26af3609151d Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Mon, 23 May 2022 18:28:03 +0200 Subject: [PATCH 08/23] Pass more xiev around --- src/pineko/cli/convolute.py | 5 +++-- src/pineko/evolve.py | 12 +++++++----- src/pineko/theory.py | 16 +++++++++++++--- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/pineko/cli/convolute.py b/src/pineko/cli/convolute.py index c69737b3..bf2e4f03 100644 --- a/src/pineko/cli/convolute.py +++ b/src/pineko/cli/convolute.py @@ -13,10 +13,11 @@ @click.argument("max_al", type=int) @click.option("--xir", default=1.0, help="renormalization scale variation") @click.option("--xif", default=1.0, help="factorization scale variation") +@click.option("--xiev", default=1.0, help="evolution scale variation") @click.option( "--pdf", default=None, help="if given, print comparison table", show_default=True ) -def subcommand(pineappl, eko, fktable, max_as, max_al, xir, xif, pdf): +def subcommand(pineappl, eko, fktable, max_as, max_al, xir, xif, xiev, pdf): """Convolute PineAPPL grid and EKO into an FK table. PINEAPPL and EKO are the path to the respective elements to convolute, and @@ -30,7 +31,7 @@ def subcommand(pineappl, eko, fktable, max_as, max_al, xir, xif, pdf): PDF is an optional PDF set compatible with the EKO to compare grid and FK table. """ _grid, _fk, comp = evolve.evolve_grid( - pineappl, eko, fktable, max_as, max_al, xir, xif, pdf + pineappl, eko, fktable, max_as, max_al, xir, xif, xiev, comparison_pdf=pdf ) if comp: print(comp.to_string()) diff --git a/src/pineko/evolve.py b/src/pineko/evolve.py index a174565d..efea98ea 100644 --- a/src/pineko/evolve.py +++ b/src/pineko/evolve.py @@ -44,7 +44,7 @@ def write_operator_card_from_file(pineappl_path, default_card_path, card_path, x return write_operator_card(pineappl_grid, default_card, card_path, xif) -def write_operator_card(pineappl_grid, default_card, card_path, xif): +def write_operator_card(pineappl_grid, default_card, card_path, xi): """Generate operator card for this grid. Parameters @@ -55,7 +55,7 @@ def write_operator_card(pineappl_grid, default_card, card_path, xif): base operator card card_path : str or os.PathLike target path - xif : float + xi : float factorization scale variation Returns @@ -67,7 +67,7 @@ def write_operator_card(pineappl_grid, default_card, card_path, xif): """ operators_card = copy.deepcopy(default_card) x_grid, _pids, _mur2_grid, muf2_grid = pineappl_grid.axes() - q2_grid = (xif * xif * muf2_grid).tolist() + q2_grid = (xi * xi * muf2_grid).tolist() operators_card["targetgrid"] = x_grid.tolist() operators_card["Q2grid"] = q2_grid with open(card_path, "w", encoding="UTF-8") as f: @@ -83,6 +83,7 @@ def evolve_grid( max_al, xir, xif, + xiev, alphas_values=None, comparison_pdf=None, ): @@ -115,13 +116,13 @@ def evolve_grid( f" {pineappl_path}\n", f"+ {eko_path}\n", f"= {fktable_path}\n", - f"with max_as={max_as}, max_al={max_al}, xir={xir}, xif={xif}", + f"with max_as={max_as}, max_al={max_al}, xir={xir}, xif={xif}, xiev={xiev}", ) # load pineappl_grid = pineappl.grid.Grid.read(str(pineappl_path)) _x_grid, _pids, mur2_grid, _muf2_grid = pineappl_grid.axes() operators = eko.output.Output.load_tar(eko_path) - check.check_grid_and_eko_compatible(pineappl_grid, operators, xif) + check.check_grid_and_eko_compatible(pineappl_grid, operators, xif * xiev) # rotate to evolution (if doable and necessary) if np.allclose(operators["inputpids"], br.flavor_basis_pids): operators.to_evol() @@ -142,6 +143,7 @@ def evolve_grid( "evol", order_mask=order_mask, xi=(xir, xif), + xiev=xiev, ) fktable.optimize() # write diff --git a/src/pineko/theory.py b/src/pineko/theory.py index d306dd5e..0ad12829 100644 --- a/src/pineko/theory.py +++ b/src/pineko/theory.py @@ -215,7 +215,7 @@ def opcard(self, name, grid, tcard): grid, configs.configs["paths"]["operator_card_template"], opcard_path, - tcard["XIF"], + tcard["XIF"] * tcard["fact_to_ren_scale_ratio"], ) if opcard_path.exists(): rich.print( @@ -357,13 +357,22 @@ def fk(self, name, grid_path, tcard, pdf): q2_grid = operators["Q2grid"].keys() xir = tcard["XIR"] xif = tcard["XIF"] + xiev = tcard["fact_to_ren_scale_ratio"] # PineAPPL wants alpha_s = 4*pi*a_s alphas_values = [ - 4.0 * np.pi * astrong.a_s(xir * xir * Q2 / xif / xif) for Q2 in q2_grid + 4.0 * np.pi * astrong.a_s(xir * xir * Q2 / xif / xif / xiev / xiev) + for Q2 in q2_grid ] # do it! logger.info("Start computation of %s", name) - logger.info("max_as=%d, max_al=%d, xir=%f, xif=%f", max_as, max_al, xir, xif) + logger.info( + "max_as=%d, max_al=%d, xir=%f, xif=%f, xiev=%f", + max_as, + max_al, + xir, + xif, + xiev, + ) start_time = time.perf_counter() _grid, _fk, comparison = evolve.evolve_grid( grid_path, @@ -373,6 +382,7 @@ def fk(self, name, grid_path, tcard, pdf): max_al, xir=xir, xif=xif, + xiev=xiev, alphas_values=alphas_values, comparison_pdf=pdf, ) From e3ef4a460eddb125af12e6e126d2ff9727bbdf2b Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Mon, 6 Jun 2022 17:53:39 +0200 Subject: [PATCH 09/23] Remove xiev --- src/pineko/cli/convolute.py | 5 ++--- src/pineko/evolve.py | 6 ++---- src/pineko/theory.py | 16 +++------------- 3 files changed, 7 insertions(+), 20 deletions(-) diff --git a/src/pineko/cli/convolute.py b/src/pineko/cli/convolute.py index bf2e4f03..58c4d943 100644 --- a/src/pineko/cli/convolute.py +++ b/src/pineko/cli/convolute.py @@ -13,11 +13,10 @@ @click.argument("max_al", type=int) @click.option("--xir", default=1.0, help="renormalization scale variation") @click.option("--xif", default=1.0, help="factorization scale variation") -@click.option("--xiev", default=1.0, help="evolution scale variation") @click.option( "--pdf", default=None, help="if given, print comparison table", show_default=True ) -def subcommand(pineappl, eko, fktable, max_as, max_al, xir, xif, xiev, pdf): +def subcommand(pineappl, eko, fktable, max_as, max_al, xir, xif, pdf): """Convolute PineAPPL grid and EKO into an FK table. PINEAPPL and EKO are the path to the respective elements to convolute, and @@ -31,7 +30,7 @@ def subcommand(pineappl, eko, fktable, max_as, max_al, xir, xif, xiev, pdf): PDF is an optional PDF set compatible with the EKO to compare grid and FK table. """ _grid, _fk, comp = evolve.evolve_grid( - pineappl, eko, fktable, max_as, max_al, xir, xif, xiev, comparison_pdf=pdf + pineappl, eko, fktable, max_as, max_al, xir, xif, comparison_pdf=pdf ) if comp: print(comp.to_string()) diff --git a/src/pineko/evolve.py b/src/pineko/evolve.py index efea98ea..70dfbbcf 100644 --- a/src/pineko/evolve.py +++ b/src/pineko/evolve.py @@ -83,7 +83,6 @@ def evolve_grid( max_al, xir, xif, - xiev, alphas_values=None, comparison_pdf=None, ): @@ -116,13 +115,13 @@ def evolve_grid( f" {pineappl_path}\n", f"+ {eko_path}\n", f"= {fktable_path}\n", - f"with max_as={max_as}, max_al={max_al}, xir={xir}, xif={xif}, xiev={xiev}", + f"with max_as={max_as}, max_al={max_al}, xir={xir}, xif={xif}", ) # load pineappl_grid = pineappl.grid.Grid.read(str(pineappl_path)) _x_grid, _pids, mur2_grid, _muf2_grid = pineappl_grid.axes() operators = eko.output.Output.load_tar(eko_path) - check.check_grid_and_eko_compatible(pineappl_grid, operators, xif * xiev) + check.check_grid_and_eko_compatible(pineappl_grid, operators, xif) # rotate to evolution (if doable and necessary) if np.allclose(operators["inputpids"], br.flavor_basis_pids): operators.to_evol() @@ -143,7 +142,6 @@ def evolve_grid( "evol", order_mask=order_mask, xi=(xir, xif), - xiev=xiev, ) fktable.optimize() # write diff --git a/src/pineko/theory.py b/src/pineko/theory.py index 0ad12829..d306dd5e 100644 --- a/src/pineko/theory.py +++ b/src/pineko/theory.py @@ -215,7 +215,7 @@ def opcard(self, name, grid, tcard): grid, configs.configs["paths"]["operator_card_template"], opcard_path, - tcard["XIF"] * tcard["fact_to_ren_scale_ratio"], + tcard["XIF"], ) if opcard_path.exists(): rich.print( @@ -357,22 +357,13 @@ def fk(self, name, grid_path, tcard, pdf): q2_grid = operators["Q2grid"].keys() xir = tcard["XIR"] xif = tcard["XIF"] - xiev = tcard["fact_to_ren_scale_ratio"] # PineAPPL wants alpha_s = 4*pi*a_s alphas_values = [ - 4.0 * np.pi * astrong.a_s(xir * xir * Q2 / xif / xif / xiev / xiev) - for Q2 in q2_grid + 4.0 * np.pi * astrong.a_s(xir * xir * Q2 / xif / xif) for Q2 in q2_grid ] # do it! logger.info("Start computation of %s", name) - logger.info( - "max_as=%d, max_al=%d, xir=%f, xif=%f, xiev=%f", - max_as, - max_al, - xir, - xif, - xiev, - ) + logger.info("max_as=%d, max_al=%d, xir=%f, xif=%f", max_as, max_al, xir, xif) start_time = time.perf_counter() _grid, _fk, comparison = evolve.evolve_grid( grid_path, @@ -382,7 +373,6 @@ def fk(self, name, grid_path, tcard, pdf): max_al, xir=xir, xif=xif, - xiev=xiev, alphas_values=alphas_values, comparison_pdf=pdf, ) From 918f547d80c4bf81f86f7d66fcd4241dd1a8ddf8 Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Wed, 8 Jun 2022 16:59:15 +0200 Subject: [PATCH 10/23] Init pydocstyle and update pre-commit --- .github/CODE_OF_CONDUCT.md | 2 +- .pre-commit-config.yaml | 6 +++++- README.md | 2 +- data/grids/load.sh | 2 +- pyproject.toml | 3 +++ 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md index 0e126edf..0144b65e 100644 --- a/.github/CODE_OF_CONDUCT.md +++ b/.github/CODE_OF_CONDUCT.md @@ -74,4 +74,4 @@ available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.ht [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see -https://www.contributor-covenant.org/faq \ No newline at end of file +https://www.contributor-covenant.org/faq diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0406aef2..19163987 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,7 +2,7 @@ # See https://pre-commit.com/hooks.html for more hooks repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.2.0 + rev: v4.3.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer @@ -28,3 +28,7 @@ repos: rev: v2.34.0 hooks: - id: pyupgrade + - repo: https://github.com/pycqa/pydocstyle + rev: 6.1.1 # pick a git hash / tag to point to + hooks: + - id: pydocstyle diff --git a/README.md b/README.md index c8f31eb6..7928a61d 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Guidelines](https://github.com/N3PDF/pineko/blob/main/.github/CONTRIBUTING.md). ## Documentation - The documentation is available here: Docs -- To build the documentation from source run +- To build the documentation from source run ```bash cd docs poetry run make html diff --git a/data/grids/load.sh b/data/grids/load.sh index 09ea42b6..c64e32f1 100644 --- a/data/grids/load.sh +++ b/data/grids/load.sh @@ -6,4 +6,4 @@ # theory example # scp dom.mi.infn.it:/media/FK/fktables/data/grids/200-SLAC_NC_EM_D_F2.pineappl.lz4 ./200/SLAC_NC_EM_D_F2.pineappl.lz4 # scp dom.mi.infn.it:/media/FK/fktables/data/grids/200-SLAC_NC_EM_P_F2.pineappl.lz4 ./200/SLAC_NC_EM_P_F2.pineappl.lz4 -# scp dom.mi.infn.it:/media/FK/fktables_pineko/data/grids/208/HERA_NC_318GEV_EAVG_SIGMARED_BOTTOM.pineappl.lz4 ./208/HERA_NC_318GEV_EAVG_SIGMARED_BOTTOM.pineappl.lz4 +# scp dom.mi.infn.it:/media/FK/fktables_pineko/data/grids/208/HERA_CC_318GEV_EM_SIGMARED.pineappl.lz4 ./208/HERA_CC_318GEV_EM_SIGMARED.pineappl.lz4 diff --git a/pyproject.toml b/pyproject.toml index 5a765d99..e296392a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -110,3 +110,6 @@ max-line-length = 100 [tool.pylint.design] # Maximum number of arguments for function / method max-args = 10 + +[tool.pydocstyle] +convention = "numpy" From 20e6c5765afc43eafd05468101d54dc997631755 Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Wed, 8 Jun 2022 17:49:23 +0200 Subject: [PATCH 11/23] Appease pydocstyle --- .pre-commit-config.yaml | 5 ++++- src/pineko/__init__.py | 2 ++ src/pineko/check.py | 8 +++++++- src/pineko/cli/__init__.py | 1 + src/pineko/cli/_base.py | 2 +- src/pineko/cli/check.py | 1 + src/pineko/cli/compare.py | 3 ++- src/pineko/cli/convolute.py | 1 + src/pineko/cli/opcard.py | 1 + src/pineko/cli/theory_.py | 3 ++- src/pineko/comparator.py | 2 +- src/pineko/configs.py | 1 + src/pineko/evolve.py | 1 + src/pineko/parser.py | 1 + src/pineko/theory.py | 11 +++++++++-- src/pineko/theory_card.py | 8 +++++--- 16 files changed, 40 insertions(+), 11 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 19163987..4bbb2e92 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -29,6 +29,9 @@ repos: hooks: - id: pyupgrade - repo: https://github.com/pycqa/pydocstyle - rev: 6.1.1 # pick a git hash / tag to point to + rev: 6.1.1 hooks: - id: pydocstyle + files: ^src/ + additional_dependencies: + - toml diff --git a/src/pineko/__init__.py b/src/pineko/__init__.py index 0a9c5b6b..b0c0d8b0 100644 --- a/src/pineko/__init__.py +++ b/src/pineko/__init__.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- +"""pineko = PineAPPL + EKO.""" + from .cli import command from .comparator import compare diff --git a/src/pineko/check.py b/src/pineko/check.py index ba1fbbcf..5a93ae79 100644 --- a/src/pineko/check.py +++ b/src/pineko/check.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +"""Tools to check compatibility of EKO and grid.""" import numpy as np @@ -35,7 +36,7 @@ def in1d(a, b, rtol=1e-05, atol=1e-08): def check_grid_and_eko_compatible(pineappl_grid, operators, xif): - """Raises a `ValueError` if the EKO operators and the PineAPPL grid are NOT compatible. + """Check whether the EKO operators and the PineAPPL grid are compatible. Parameters ---------- @@ -45,6 +46,11 @@ def check_grid_and_eko_compatible(pineappl_grid, operators, xif): operators xif : float factorization scale variation + + Raises + ------ + ValueError + If the operators and the grid are not compatible. """ x_grid, _pids, _mur2_grid, muf2_grid = pineappl_grid.axes() # Q2 grid diff --git a/src/pineko/cli/__init__.py b/src/pineko/cli/__init__.py index 943ede4a..0965db72 100644 --- a/src/pineko/cli/__init__.py +++ b/src/pineko/cli/__init__.py @@ -1,3 +1,4 @@ # -*- coding: utf-8 -*- +"""CLI entry point.""" from . import check, compare, convolute, opcard, theory_ from ._base import command diff --git a/src/pineko/cli/_base.py b/src/pineko/cli/_base.py index 13c66d64..91654201 100644 --- a/src/pineko/cli/_base.py +++ b/src/pineko/cli/_base.py @@ -11,4 +11,4 @@ @click.group(context_settings=CONTEXT_SETTINGS) def command(): - """pineko: Combine PineAPPL grids and EKOs into FK tables""" + """pineko: Combine PineAPPL grids and EKOs into FK tables.""" diff --git a/src/pineko/cli/check.py b/src/pineko/cli/check.py index f8f13dcb..2b5e2c54 100644 --- a/src/pineko/cli/check.py +++ b/src/pineko/cli/check.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +"""CLI entry point to check compatibility.""" import click import eko.output import pineappl diff --git a/src/pineko/cli/compare.py b/src/pineko/cli/compare.py index 1b884dc4..3a380be0 100644 --- a/src/pineko/cli/compare.py +++ b/src/pineko/cli/compare.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +"""CLI entry point to comparison grid vs. FK Table.""" import click import pineappl import rich @@ -16,7 +17,7 @@ @click.option("--xir", default=1.0, help="renormalization scale variation") @click.option("--xif", default=1.0, help="factorization scale variation") def subcommand(pineappl_path, fktable_path, max_as, max_al, pdf, xir, xif): - """Compare process level PineAPPL grid and derived FkTable. + """Compare process level PineAPPL grid and derived FK Table. The comparison between the grid stored at PINEAPPL_PATH, and the FK table stored at FKTABLE_PATH, is performed by convoluting both the grids with the PDF diff --git a/src/pineko/cli/convolute.py b/src/pineko/cli/convolute.py index 7e9ad157..5687ca35 100644 --- a/src/pineko/cli/convolute.py +++ b/src/pineko/cli/convolute.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +"""CLI entry point to convolution.""" import click from .. import evolve diff --git a/src/pineko/cli/opcard.py b/src/pineko/cli/opcard.py index f992e5c2..d9bda04c 100644 --- a/src/pineko/cli/opcard.py +++ b/src/pineko/cli/opcard.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +"""CLI entry point to the operator card generation.""" import click import rich diff --git a/src/pineko/cli/theory_.py b/src/pineko/cli/theory_.py index 383865df..fc91094f 100644 --- a/src/pineko/cli/theory_.py +++ b/src/pineko/cli/theory_.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +"""'theory' mode of CLI.""" import pathlib import click @@ -17,7 +18,7 @@ help="Explicitly specify config file (it has to be a valid TOML file).", ) def theory_(cfg): - """Iterate a subcommand on a given theory and list of datasets""" + """Iterate a subcommand on a given theory and list of datasets.""" path = configs.detect(cfg) base_configs = configs.load(path) configs.configs = configs.defaults(base_configs) diff --git a/src/pineko/comparator.py b/src/pineko/comparator.py index d9f11d37..607d221e 100644 --- a/src/pineko/comparator.py +++ b/src/pineko/comparator.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -"""Provide tools to compare grids and FK tables""" +"""Tools to compare grids and FK tables.""" import numpy as np import pandas as pd diff --git a/src/pineko/configs.py b/src/pineko/configs.py index e3b270c2..9d6c8067 100644 --- a/src/pineko/configs.py +++ b/src/pineko/configs.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +"""Tools related to the configuration file handling.""" import copy import pathlib diff --git a/src/pineko/evolve.py b/src/pineko/evolve.py index 9ab0d566..c8361aa1 100644 --- a/src/pineko/evolve.py +++ b/src/pineko/evolve.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +"""Tools related to evolution/eko.""" import copy import pathlib diff --git a/src/pineko/parser.py b/src/pineko/parser.py index 7f7c0d84..52b6ac50 100644 --- a/src/pineko/parser.py +++ b/src/pineko/parser.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +"""Interface to ymldb.""" # ATTENTION: this is a partial copy from # https://github.com/NNPDF/nnpdf/blob/7cb96fc05ca2a2914bc1ccc864865e0ca4e66983/validphys2/src/validphys/pineparser.py diff --git a/src/pineko/theory.py b/src/pineko/theory.py index 0d905276..efcb534f 100644 --- a/src/pineko/theory.py +++ b/src/pineko/theory.py @@ -1,4 +1,11 @@ # -*- coding: utf-8 -*- +"""Tools related to generation of a list of FK tables. + +The typical use case of pineko is the generation of a list of FK tables, +all with common theory parameters. The collective list of this FK tables +together with other theory ingredients (such as C-factors) are often +commenly refered to as 'theory'. +""" import logging import time @@ -249,8 +256,8 @@ def load_operator_card(self, name): def activate_logging(self, path, filename, activated_loggers=()): """Activate the logging facilities. - Parameters: - ----------- + Parameters + ---------- path : pathlib.Path source directory filename : str diff --git a/src/pineko/theory_card.py b/src/pineko/theory_card.py index 465a0931..cb107e1c 100644 --- a/src/pineko/theory_card.py +++ b/src/pineko/theory_card.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- +"""Tools related to theory cards.""" import yaml from . import configs def load(theory_id): - """ - Load a theory card. + """Load a theory card. Parameters ---------- @@ -25,7 +25,9 @@ def load(theory_id): def construct_assumptions(tcard): - """This function return the appropriate assumptions hash according to the scale Q0 of the fktable, + """Compute the assumptions hash from the theory settings. + + The used informations are the scale :math:`Q_0` of the FK table, the matching scales of the heavy quarks and whether an intrinsic component of the charm is allowed. From a9e504571c602c138332119a72de427049764c13 Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Wed, 15 Jun 2022 15:42:13 +0200 Subject: [PATCH 12/23] Fix assumptions hash computation --- src/pineko/evolve.py | 1 + src/pineko/theory_card.py | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/pineko/evolve.py b/src/pineko/evolve.py index c8361aa1..6844f042 100644 --- a/src/pineko/evolve.py +++ b/src/pineko/evolve.py @@ -146,6 +146,7 @@ def evolve_grid( order_mask=order_mask, xi=(xir, xif), ) + rich.print(f"Optimizing for {assumptions}") fktable.optimize(assumptions) # write fktable.write_lz4(str(fktable_path)) diff --git a/src/pineko/theory_card.py b/src/pineko/theory_card.py index cb107e1c..57a03484 100644 --- a/src/pineko/theory_card.py +++ b/src/pineko/theory_card.py @@ -41,7 +41,7 @@ def construct_assumptions(tcard): str assumptions hash """ - # retrive the relevant info from theory card + # retrieve the relevant info from theory card Q0 = tcard["Q0"] match_scales = { "c": tcard["kcThr"] * tcard["mc"], @@ -56,6 +56,8 @@ def construct_assumptions(tcard): act_flav = 5 if Q0 < match_scales["b"]: act_flav = 4 + if ic: + mod = "Sym" if Q0 < match_scales["c"]: act_flav = 3 if ic: From c8dd3414cbf41cca395fb4edcaee5f0f18e4cb1f Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Wed, 15 Jun 2022 16:14:06 +0200 Subject: [PATCH 13/23] Revert assuptions fix --- src/pineko/theory_card.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/pineko/theory_card.py b/src/pineko/theory_card.py index 57a03484..af550bd1 100644 --- a/src/pineko/theory_card.py +++ b/src/pineko/theory_card.py @@ -49,19 +49,17 @@ def construct_assumptions(tcard): "t": tcard["ktThr"] * tcard["mt"], } ic = tcard["IC"] - hash = "Nf" + hash_ = "Nf" act_flav = 6 mod = "Ind" if Q0 < match_scales["t"]: act_flav = 5 if Q0 < match_scales["b"]: act_flav = 4 - if ic: - mod = "Sym" if Q0 < match_scales["c"]: act_flav = 3 if ic: act_flav += 1 mod = "Sym" - hash += str(act_flav) + mod - return hash + hash_ += str(act_flav) + mod + return hash_ From 4ba0684f34a6bbe89d589e3913a1d835d9ade0a6 Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Wed, 15 Jun 2022 18:35:34 +0200 Subject: [PATCH 14/23] Play with SV --- sv.py | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 sv.py diff --git a/sv.py b/sv.py new file mode 100644 index 00000000..6bfcae1b --- /dev/null +++ b/sv.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +import pathlib + +import lhapdf +import pandas as pd +import pineappl + +# global settings +here = pathlib.Path(__file__).parent +fk_path = here / "data" / "fktables" +fk_name = "HERA_CC_318GEV_EM_SIGMARED" +is_dis = True +order = 2 + +# derive order specific settings +if order == 2: + pdf_name = "NNPDF40_nnlo_as_01180" + theories = {"central": 200, "C": 301, "B": 302} +else: + pdf_name = "NNPDF40_nlo_as_01180" + theories = {"central": 208, "C": 310, "B": 311} + +# derive common settings +pdf = lhapdf.mkPDF(pdf_name, 0) +pdgid = int(pdf.set().get_entry("Particle")) + +# collect central +df = pd.DataFrame() +fk = pineappl.fk_table.FkTable.read( + fk_path / str(theories["central"]) / f"{fk_name}.pineappl.lz4" +) +for bd in range(fk.bin_dimensions()): + df[f"b{bd} l"] = fk.bin_left(bd) + if not is_dis: + df[f"b{bd} r"] = fk.bin_right(bd) +df["central"] = fk.convolute_with_one(pdgid, pdf.xfxQ2) + +# collect SVs +for tn in ("B", "C"): + ti = theories[tn] + fk_sv = pineappl.fk_table.FkTable.read( + fk_path / str(ti) / f"{fk_name}.pineappl.lz4" + ) + df[tn] = fk_sv.convolute_with_one(pdgid, pdf.xfxQ2) + df[f"{tn}2central [%]"] = (df[tn] / df["central"] - 1.0) * 100.0 +df["ΔB2ΔC [%]"] = ((df["B"] - df["central"]) / (df["C"] - df["central"]) - 1.0) * 100.0 + +# remove predictions +for tn in ("B", "C"): + del df[tn] + +print(df) + +# import pdb; pdb.set_trace(); From 912aae67bed26fa63d4d4593785f274672629595 Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Thu, 16 Jun 2022 18:38:25 +0200 Subject: [PATCH 15/23] Improve sv script --- sv.py | 87 +++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 49 insertions(+), 38 deletions(-) diff --git a/sv.py b/sv.py index 6bfcae1b..8c101e15 100644 --- a/sv.py +++ b/sv.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- import pathlib +import click import lhapdf import pandas as pd import pineappl @@ -9,46 +10,56 @@ here = pathlib.Path(__file__).parent fk_path = here / "data" / "fktables" fk_name = "HERA_CC_318GEV_EM_SIGMARED" +# fk_name = "HERA_NC_225GEV_EP_SIGMARED" is_dis = True -order = 2 - -# derive order specific settings -if order == 2: - pdf_name = "NNPDF40_nnlo_as_01180" - theories = {"central": 200, "C": 301, "B": 302} -else: - pdf_name = "NNPDF40_nlo_as_01180" - theories = {"central": 208, "C": 310, "B": 311} - -# derive common settings -pdf = lhapdf.mkPDF(pdf_name, 0) -pdgid = int(pdf.set().get_entry("Particle")) - -# collect central -df = pd.DataFrame() -fk = pineappl.fk_table.FkTable.read( - fk_path / str(theories["central"]) / f"{fk_name}.pineappl.lz4" -) -for bd in range(fk.bin_dimensions()): - df[f"b{bd} l"] = fk.bin_left(bd) - if not is_dis: - df[f"b{bd} r"] = fk.bin_right(bd) -df["central"] = fk.convolute_with_one(pdgid, pdf.xfxQ2) - -# collect SVs -for tn in ("B", "C"): - ti = theories[tn] - fk_sv = pineappl.fk_table.FkTable.read( - fk_path / str(ti) / f"{fk_name}.pineappl.lz4" + + +@click.command() +@click.argument("order", type=int) +@click.option("--abs", is_flag=True, help="keep absolute values") +def run(order, abs): + # derive order specific settings + if order == 2: + pdf_name = "NNPDF40_nnlo_as_01180" + theories = {"central": 200, "C": 301, "B": 302} + else: + pdf_name = "NNPDF40_nlo_as_01180" + theories = {"central": 208, "C": 310, "B": 311} + + # derive common settings + pdf = lhapdf.mkPDF(pdf_name, 0) + pdgid = int(pdf.set().get_entry("Particle")) + + # collect central + df = pd.DataFrame() + fk = pineappl.fk_table.FkTable.read( + fk_path / str(theories["central"]) / f"{fk_name}.pineappl.lz4" ) - df[tn] = fk_sv.convolute_with_one(pdgid, pdf.xfxQ2) - df[f"{tn}2central [%]"] = (df[tn] / df["central"] - 1.0) * 100.0 -df["ΔB2ΔC [%]"] = ((df["B"] - df["central"]) / (df["C"] - df["central"]) - 1.0) * 100.0 + for bd in range(fk.bin_dimensions()): + df[f"b{bd} l"] = fk.bin_left(bd) + if not is_dis: + df[f"b{bd} r"] = fk.bin_right(bd) + df["central"] = fk.convolute_with_one(pdgid, pdf.xfxQ2) + + # collect SVs + for tn in ("B", "C"): + ti = theories[tn] + fk_sv = pineappl.fk_table.FkTable.read( + fk_path / str(ti) / f"{fk_name}.pineappl.lz4" + ) + df[tn] = fk_sv.convolute_with_one(pdgid, pdf.xfxQ2) + df[f"{tn}2central [%]"] = (df[tn] / df["central"] - 1.0) * 100.0 + df["ΔB2ΔC [%]"] = ( + (df["B"] - df["central"]) / (df["C"] - df["central"]) - 1.0 + ) * 100.0 + + # remove predictions + if not abs: + for tn in ("B", "C"): + del df[tn] -# remove predictions -for tn in ("B", "C"): - del df[tn] + print(df.to_string()) -print(df) -# import pdb; pdb.set_trace(); +if __name__ == "__main__": + run() From b5096ad7b63868562e79f101864d4af655c27032 Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Wed, 22 Jun 2022 18:31:25 +0200 Subject: [PATCH 16/23] Save debug script --- eko_debug.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 eko_debug.py diff --git a/eko_debug.py b/eko_debug.py new file mode 100644 index 00000000..e21afe2f --- /dev/null +++ b/eko_debug.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +import eko +import lhapdf +import matplotlib.pyplot as plt +import numpy as np +from eko.anomalous_dimensions.as1 import gamma_ns +from eko.harmonics import S1 +from ekomark import apply +from scipy.integrate import quad +from scipy.interpolate import interp1d + + +def mel(y, n): + f = interp1d(o["targetgrid"], y) + return quad(lambda x: x ** (n - 1.0) * f(x), min(o["targetgrid"]), 1.0) + + +o = eko.output.Output.load_tar("data/ekos/2201/noevol-withK-as0p35.tar") + +resu = apply.apply_pdf(o, lhapdf.mkPDF("uonly")) +resd = apply.apply_pdf(o, lhapdf.mkPDF("donly")) +rest3 = apply.apply_pdf(o, lhapdf.mkPDF("T3only")) +restoyt3 = apply.apply_pdf(o, lhapdf.mkPDF("toyt3only")) +resS = apply.apply_pdf(o, lhapdf.mkPDF("Sonly")) +resNN40 = apply.apply_pdf(o, lhapdf.mkPDF("NNPDF40_nnlo_as_01180")) + +u_u = [lhapdf.mkPDF("uonly").xfxQ2(2, x, 10) / x for x in o["targetgrid"]] +d_d = [lhapdf.mkPDF("donly").xfxQ2(1, x, 10) / x for x in o["targetgrid"]] +t3_u = [lhapdf.mkPDF("T3only").xfxQ2(2, x, 10) / x for x in o["targetgrid"]] +toyt3_u = [lhapdf.mkPDF("toyt3only").xfxQ2(2, x, 10) / x for x in o["targetgrid"]] +toyt3_d = [lhapdf.mkPDF("toyt3only").xfxQ2(1, x, 10) / x for x in o["targetgrid"]] +toyS_d = [lhapdf.mkPDF("Sonly").xfxQ2(1, x, 10) / x for x in o["targetgrid"]] +nn40_u = [ + lhapdf.mkPDF("NNPDF40_nnlo_as_01180").xfxQ2(2, x, 10) / x for x in o["targetgrid"] +] + +g = np.array([gamma_ns(n, S1(n)) for n in range(1, 10)]) + +K = 1.0 - 0.35 / (4.0 * np.pi) * g * np.log(2**2) + +melu_u = np.array([mel(u_u, n)[0] for n in range(1, 10)]) +meld_d = np.array([mel(d_d, n)[0] for n in range(1, 10)]) +melnn40_u = np.array([mel(nn40_u, n)[0] for n in range(1, 10)]) + +melresu_u = np.array([mel(resu[300.0]["pdfs"][2], n)[0] for n in range(1, 10)]) +melresd_d = np.array([mel(resd[300.0]["pdfs"][1], n)[0] for n in range(1, 10)]) +melresnn40_u = np.array([mel(resNN40[300.0]["pdfs"][2], n)[0] for n in range(1, 10)]) From 910549800b427134e555ebea61759db8a571e522 Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Fri, 8 Jul 2022 15:28:33 +0200 Subject: [PATCH 17/23] Backup more debug stuff --- debug.py | 17 ++++++++++++ sv.py | 28 ++++++++++++------- yadism_debug.py | 72 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 108 insertions(+), 9 deletions(-) create mode 100644 debug.py create mode 100644 yadism_debug.py diff --git a/debug.py b/debug.py new file mode 100644 index 00000000..9e506f05 --- /dev/null +++ b/debug.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- +import eko +import lhapdf +import numpy as np +from ekobox import apply + +gonly = lhapdf.mkPDF("gonly", 0) + +ho = eko.output.Output.load_tar("data/ekos/3201/test.tar") +hpdf = apply.apply_pdf(ho, gonly) + +bo = eko.output.Output.load_tar("data/ekos/2201/test.tar") +bpdf = apply.apply_pdf(bo, gonly) + +plot(np.log(a[:, 2]), a[:, 4]) +plot(np.log(a[:, 2]), a[:, 6]) +plot(np.log(a[:, 2]), 4 * 5 / 9 * a[:, 2] * bpdf[300.0]["pdfs"][2]) diff --git a/sv.py b/sv.py index 8c101e15..77662cd9 100644 --- a/sv.py +++ b/sv.py @@ -3,28 +3,36 @@ import click import lhapdf +import numpy as np import pandas as pd import pineappl # global settings here = pathlib.Path(__file__).parent fk_path = here / "data" / "fktables" -fk_name = "HERA_CC_318GEV_EM_SIGMARED" +fk_name = "test" +# fk_name = "HERA_CC_318GEV_EM_SIGMARED" # fk_name = "HERA_NC_225GEV_EP_SIGMARED" is_dis = True @click.command() @click.argument("order", type=int) +@click.argument("value", type=float) @click.option("--abs", is_flag=True, help="keep absolute values") -def run(order, abs): +def run(order, value, abs): # derive order specific settings if order == 2: pdf_name = "NNPDF40_nnlo_as_01180" - theories = {"central": 200, "C": 301, "B": 302} + central = 200 + theories = {"A": 10200, "B": 20200, "C": 30200} else: - pdf_name = "NNPDF40_nlo_as_01180" - theories = {"central": 208, "C": 310, "B": 311} + pdf_name = "gonly" + central = 4001 + if np.isclose(value, np.sqrt(2), atol=0.05): + theories = {"A": 1140, "B": 2140, "C": 3140} + else: + theories = {"B": 2201, "C": 3201} # derive common settings pdf = lhapdf.mkPDF(pdf_name, 0) @@ -33,7 +41,7 @@ def run(order, abs): # collect central df = pd.DataFrame() fk = pineappl.fk_table.FkTable.read( - fk_path / str(theories["central"]) / f"{fk_name}.pineappl.lz4" + fk_path / str(central) / f"{fk_name}.pineappl.lz4" ) for bd in range(fk.bin_dimensions()): df[f"b{bd} l"] = fk.bin_left(bd) @@ -42,20 +50,22 @@ def run(order, abs): df["central"] = fk.convolute_with_one(pdgid, pdf.xfxQ2) # collect SVs - for tn in ("B", "C"): - ti = theories[tn] + for tn, ti in theories.items(): fk_sv = pineappl.fk_table.FkTable.read( fk_path / str(ti) / f"{fk_name}.pineappl.lz4" ) df[tn] = fk_sv.convolute_with_one(pdgid, pdf.xfxQ2) df[f"{tn}2central [%]"] = (df[tn] / df["central"] - 1.0) * 100.0 + # df["ΔA2ΔC [%]"] = ( + # (df["A"] - df["central"]) / (df["C"] - df["central"]) - 1.0 + # ) * 100.0 df["ΔB2ΔC [%]"] = ( (df["B"] - df["central"]) / (df["C"] - df["central"]) - 1.0 ) * 100.0 # remove predictions if not abs: - for tn in ("B", "C"): + for tn in theories.keys(): del df[tn] print(df.to_string()) diff --git a/yadism_debug.py b/yadism_debug.py new file mode 100644 index 00000000..8404e5dd --- /dev/null +++ b/yadism_debug.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- +import numpy as np +import yadism +import yaml +from eko.anomalous_dimensions import as1 +from eko.harmonics import S1 +from eko.interpolation import InterpolatorDispatcher +from scipy.integrate import quad +from scipy.interpolate import interp1d + +# def mel(y, n): +# xs = out["interpolation_xgrid"] +# f = interp1d(xs, y) +# return quad(lambda x: x ** (n - 1.0) * f(x), min(xs), 1.0) + + +def mel2(out, ys, n): + interp = InterpolatorDispatcher.from_dict(out) + lnxmin = np.log(out["interpolation_xgrid"][0]) + res = 0.0 + for y, bf in zip(ys, interp): + pj = bf(n, lnxmin) * np.exp(n * lnxmin) + res += y * pj + return res + + +with open("210.yaml", "r") as f: + t = yaml.safe_load(f) +with open("test.yaml", "r") as f: + o = yaml.safe_load(f) +# out = yadism.output.Output.load_tar("test.tar") +out = yadism.run_yadism(t, o) +out.dump_tar("test.tar") + +locbf10 = [ + out["F2_light"][j].orders[(0, 0, 0, 0)][0][-3][10] + for j in range(len(out["interpolation_xgrid"])) +] +pqqcbf10 = [ + out["F2_light"][j].orders[(1, 0, 0, 1)][0][-3][10] + for j in range(len(out["interpolation_xgrid"])) +] +pgqgbf10 = [ + out["F2_light"][j].orders[(1, 0, 0, 1)][0][7][10] + for j in range(len(out["interpolation_xgrid"])) +] + +mel2bf10 = np.array([mel2(out, [0] * 10 + [1] + [0] * 39, n) for n in range(1, 10)]) +mel2lobf10 = np.array([mel2(out, locbf10, n) for n in range(1, 10)]) +mel2pqqcbf10 = np.array([mel2(out, pqqcbf10, n) for n in range(1, 10)]) +mel2pgqgbf10 = np.array([mel2(out, pgqgbf10, n) for n in range(1, 10)]) + +locbf20 = [ + out["F2_light"][j].orders[(0, 0, 0, 0)][0][-3][20] + for j in range(len(out["interpolation_xgrid"])) +] +pqqcbf20 = [ + out["F2_light"][j].orders[(1, 0, 0, 1)][0][-3][20] + for j in range(len(out["interpolation_xgrid"])) +] +pgqgbf20 = [ + out["F2_light"][j].orders[(1, 0, 0, 1)][0][7][20] + for j in range(len(out["interpolation_xgrid"])) +] + +mel2bf20 = np.array([mel2(out, [0] * 20 + [1] + [0] * 29, n) for n in range(1, 10)]) +mel2lobf20 = np.array([mel2(out, locbf20, n) for n in range(1, 10)]) +mel2pqqcbf20 = np.array([mel2(out, pqqcbf20, n) for n in range(1, 10)]) +mel2pgqgbf20 = np.array([mel2(out, pgqgbf20, n) for n in range(1, 10)]) + +gns = np.array([as1.gamma_ns(n, S1(n)) for n in range(1, 10)]) +ggq = np.array([np.nan if n == 1 else as1.gamma_gq(n) for n in range(1, 10)]) From 69c11b7086bb158cdf0f08f609113678aec1f2f1 Mon Sep 17 00:00:00 2001 From: Alessandro Candido Date: Sat, 9 Jul 2022 14:43:41 +0200 Subject: [PATCH 18/23] Upgrade PineAPPL to v0.5.4 --- poetry.lock | 497 +++++++++++++++---------------------------------- pyproject.toml | 2 +- 2 files changed, 152 insertions(+), 347 deletions(-) diff --git a/poetry.lock b/poetry.lock index 478dd0c4..07c241fa 100644 --- a/poetry.lock +++ b/poetry.lock @@ -32,7 +32,7 @@ python-versions = "*" [[package]] name = "astroid" -version = "2.11.5" +version = "2.11.6" description = "An abstract syntax tree for Python with inference support." category = "dev" optional = false @@ -45,7 +45,7 @@ wrapt = ">=1.11,<2" [[package]] name = "atomicwrites" -version = "1.4.0" +version = "1.4.1" description = "Atomic file writes." category = "dev" optional = false @@ -67,7 +67,7 @@ tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (> [[package]] name = "babel" -version = "2.10.1" +version = "2.10.3" description = "Internationalization utilities" category = "main" optional = false @@ -86,7 +86,7 @@ python-versions = "*" [[package]] name = "certifi" -version = "2022.5.18.1" +version = "2022.6.15" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false @@ -94,11 +94,11 @@ python-versions = ">=3.6" [[package]] name = "charset-normalizer" -version = "2.0.12" +version = "2.1.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false -python-versions = ">=3.5.0" +python-versions = ">=3.6.0" [package.extras] unicode_backport = ["unicodedata2"] @@ -116,7 +116,7 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "colorama" -version = "0.4.4" +version = "0.4.5" description = "Cross-platform colored terminal text." category = "main" optional = false @@ -135,7 +135,7 @@ test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"] [[package]] name = "coverage" -version = "6.4" +version = "6.4.1" description = "Code coverage measurement for Python" category = "dev" optional = false @@ -212,7 +212,7 @@ python-versions = ">=3.5" [[package]] name = "imagesize" -version = "1.3.0" +version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" category = "main" optional = false @@ -220,7 +220,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "importlib-metadata" -version = "4.11.4" +version = "4.12.0" description = "Read metadata from Python packages" category = "main" optional = false @@ -232,7 +232,7 @@ zipp = ">=0.5" [package.extras] docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] perf = ["ipython"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] [[package]] name = "iniconfig" @@ -244,7 +244,7 @@ python-versions = "*" [[package]] name = "ipython" -version = "7.33.0" +version = "7.34.0" description = "IPython: Productive Interactive Computing" category = "dev" optional = false @@ -417,7 +417,7 @@ pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" [[package]] name = "pandas" -version = "1.4.2" +version = "1.4.3" description = "Powerful data structures for data analysis, time series, and statistics" category = "main" optional = false @@ -486,15 +486,19 @@ python-versions = "*" [[package]] name = "pineappl" -version = "0.5.2" +version = "0.5.4" description = "Python bindings to PineAPPL" category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6" [package.dependencies] numpy = ">=1.16.0,<2.0.0" +[package.extras] +test = ["pytest", "pytest-cov"] +docs = ["sphinx", "sphinx-rtd-theme", "sphinxcontrib-bibtex", "nbsphinx"] + [[package]] name = "platformdirs" version = "2.5.2" @@ -521,7 +525,7 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "prompt-toolkit" -version = "3.0.29" +version = "3.0.30" description = "Library for building powerful interactive command lines in Python" category = "dev" optional = false @@ -584,24 +588,26 @@ python-versions = ">=3.6" [[package]] name = "pylint" -version = "2.13.9" +version = "2.14.4" description = "python code static checker" category = "dev" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7.2" [package.dependencies] -astroid = ">=2.11.5,<=2.12.0-dev0" -colorama = {version = "*", markers = "sys_platform == \"win32\""} +astroid = ">=2.11.6,<=2.12.0-dev0" +colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = ">=0.2" isort = ">=4.2.5,<6" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +tomlkit = ">=0.10.1" typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] -testutil = ["gitpython (>3)"] +spelling = ["pyenchant (>=3.2,<4.0)"] +testutils = ["gitpython (>3)"] [[package]] name = "pyparsing" @@ -707,21 +713,21 @@ python-versions = ">=3.6" [[package]] name = "requests" -version = "2.27.1" +version = "2.28.1" description = "Python HTTP for Humans." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = ">=3.7, <4" [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""} -idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} +charset-normalizer = ">=2,<3" +idna = ">=2.5,<4" urllib3 = ">=1.21.1,<1.27" [package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] -use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "rich" @@ -914,9 +920,17 @@ category = "main" optional = false python-versions = ">=3.7" +[[package]] +name = "tomlkit" +version = "0.11.1" +description = "Style preserving TOML library" +category = "dev" +optional = false +python-versions = ">=3.6,<4.0" + [[package]] name = "traitlets" -version = "5.2.1.post0" +version = "5.3.0" description = "" category = "dev" optional = false @@ -927,7 +941,7 @@ test = ["pre-commit", "pytest"] [[package]] name = "typing-extensions" -version = "4.2.0" +version = "4.3.0" description = "Backported and Experimental Type Hints for Python 3.7+" category = "dev" optional = false @@ -935,11 +949,11 @@ python-versions = ">=3.7" [[package]] name = "urllib3" -version = "1.26.9" +version = "1.26.10" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4" [package.extras] brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] @@ -988,7 +1002,7 @@ docs = ["Sphinx", "sphinx-rtd-theme", "sphinxcontrib-bibtex"] [metadata] lock-version = "1.1" python-versions = ">=3.8,<3.11" -content-hash = "96e5920ee452d3066f8e2fc70969af7cd7d686c4efcdb29c5d80a0dcde4a4c16" +content-hash = "f3384f17db0e314e3baadae7b1b113e261ed964b080dcef7772f374fad6f225c" [metadata.files] a3b2bbc3ced97675ac3a71df45f55ba = [ @@ -1000,10 +1014,7 @@ a3b2bbc3ced97675ac3a71df45f55ba = [ {file = "a3b2bbc3ced97675ac3a71df45f55ba-6.4.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0147a1d9dab10f8b23ef5fc97f570ce044e9f8409bfee2fbce551180fafcbb2e"}, {file = "a3b2bbc3ced97675ac3a71df45f55ba-6.4.0.tar.gz", hash = "sha256:1bd60035f9862db1130be035f631c2cfcf90d2ee0cfc6f33ce29fbf8a70b5a04"}, ] -alabaster = [ - {file = "alabaster-0.7.12-py2.py3-none-any.whl", hash = "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359"}, - {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"}, -] +alabaster = [] appdirs = [ {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, @@ -1012,105 +1023,78 @@ appnope = [ {file = "appnope-0.1.3-py2.py3-none-any.whl", hash = "sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e"}, {file = "appnope-0.1.3.tar.gz", hash = "sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24"}, ] -astroid = [ - {file = "astroid-2.11.5-py3-none-any.whl", hash = "sha256:14ffbb4f6aa2cf474a0834014005487f7ecd8924996083ab411e7fa0b508ce0b"}, - {file = "astroid-2.11.5.tar.gz", hash = "sha256:f4e4ec5294c4b07ac38bab9ca5ddd3914d4bf46f9006eb5c0ae755755061044e"}, -] -atomicwrites = [ - {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, - {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, -] +astroid = [] +atomicwrites = [] attrs = [ {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, ] -babel = [ - {file = "Babel-2.10.1-py3-none-any.whl", hash = "sha256:3f349e85ad3154559ac4930c3918247d319f21910d5ce4b25d439ed8693b98d2"}, - {file = "Babel-2.10.1.tar.gz", hash = "sha256:98aeaca086133efb3e1e2aad0396987490c8425929ddbcfe0550184fdc54cd13"}, -] +babel = [] backcall = [ {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"}, {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"}, ] -certifi = [ - {file = "certifi-2022.5.18.1-py3-none-any.whl", hash = "sha256:f1d53542ee8cbedbe2118b5686372fb33c297fcd6379b050cca0ef13a597382a"}, - {file = "certifi-2022.5.18.1.tar.gz", hash = "sha256:9c5705e395cd70084351dd8ad5c41e65655e08ce46f2ec9cf6c2c08390f71eb7"}, -] -charset-normalizer = [ - {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, - {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, -] +certifi = [] +charset-normalizer = [] click = [ {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, ] -colorama = [ - {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, - {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, -] +colorama = [] commonmark = [ {file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"}, {file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60"}, ] coverage = [ - {file = "coverage-6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:50ed480b798febce113709846b11f5d5ed1e529c88d8ae92f707806c50297abf"}, - {file = "coverage-6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:26f8f92699756cb7af2b30720de0c5bb8d028e923a95b6d0c891088025a1ac8f"}, - {file = "coverage-6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60c2147921da7f4d2d04f570e1838db32b95c5509d248f3fe6417e91437eaf41"}, - {file = "coverage-6.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:750e13834b597eeb8ae6e72aa58d1d831b96beec5ad1d04479ae3772373a8088"}, - {file = "coverage-6.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af5b9ee0fc146e907aa0f5fb858c3b3da9199d78b7bb2c9973d95550bd40f701"}, - {file = "coverage-6.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a022394996419142b33a0cf7274cb444c01d2bb123727c4bb0b9acabcb515dea"}, - {file = "coverage-6.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5a78cf2c43b13aa6b56003707c5203f28585944c277c1f3f109c7b041b16bd39"}, - {file = "coverage-6.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9229d074e097f21dfe0643d9d0140ee7433814b3f0fc3706b4abffd1e3038632"}, - {file = "coverage-6.4-cp310-cp310-win32.whl", hash = "sha256:fb45fe08e1abc64eb836d187b20a59172053999823f7f6ef4f18a819c44ba16f"}, - {file = "coverage-6.4-cp310-cp310-win_amd64.whl", hash = "sha256:3cfd07c5889ddb96a401449109a8b97a165be9d67077df6802f59708bfb07720"}, - {file = "coverage-6.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:03014a74023abaf5a591eeeaf1ac66a73d54eba178ff4cb1fa0c0a44aae70383"}, - {file = "coverage-6.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c82f2cd69c71698152e943f4a5a6b83a3ab1db73b88f6e769fabc86074c3b08"}, - {file = "coverage-6.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b546cf2b1974ddc2cb222a109b37c6ed1778b9be7e6b0c0bc0cf0438d9e45a6"}, - {file = "coverage-6.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc173f1ce9ffb16b299f51c9ce53f66a62f4d975abe5640e976904066f3c835d"}, - {file = "coverage-6.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c53ad261dfc8695062fc8811ac7c162bd6096a05a19f26097f411bdf5747aee7"}, - {file = "coverage-6.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:eef5292b60b6de753d6e7f2d128d5841c7915fb1e3321c3a1fe6acfe76c38052"}, - {file = "coverage-6.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:543e172ce4c0de533fa892034cce260467b213c0ea8e39da2f65f9a477425211"}, - {file = "coverage-6.4-cp37-cp37m-win32.whl", hash = "sha256:00c8544510f3c98476bbd58201ac2b150ffbcce46a8c3e4fb89ebf01998f806a"}, - {file = "coverage-6.4-cp37-cp37m-win_amd64.whl", hash = "sha256:b84ab65444dcc68d761e95d4d70f3cfd347ceca5a029f2ffec37d4f124f61311"}, - {file = "coverage-6.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d548edacbf16a8276af13063a2b0669d58bbcfca7c55a255f84aac2870786a61"}, - {file = "coverage-6.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:033ebec282793bd9eb988d0271c211e58442c31077976c19c442e24d827d356f"}, - {file = "coverage-6.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:742fb8b43835078dd7496c3c25a1ec8d15351df49fb0037bffb4754291ef30ce"}, - {file = "coverage-6.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d55fae115ef9f67934e9f1103c9ba826b4c690e4c5bcf94482b8b2398311bf9c"}, - {file = "coverage-6.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5cd698341626f3c77784858427bad0cdd54a713115b423d22ac83a28303d1d95"}, - {file = "coverage-6.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:62d382f7d77eeeaff14b30516b17bcbe80f645f5cf02bb755baac376591c653c"}, - {file = "coverage-6.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:016d7f5cf1c8c84f533a3c1f8f36126fbe00b2ec0ccca47cc5731c3723d327c6"}, - {file = "coverage-6.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:69432946f154c6add0e9ede03cc43b96e2ef2733110a77444823c053b1ff5166"}, - {file = "coverage-6.4-cp38-cp38-win32.whl", hash = "sha256:83bd142cdec5e4a5c4ca1d4ff6fa807d28460f9db919f9f6a31babaaa8b88426"}, - {file = "coverage-6.4-cp38-cp38-win_amd64.whl", hash = "sha256:4002f9e8c1f286e986fe96ec58742b93484195defc01d5cc7809b8f7acb5ece3"}, - {file = "coverage-6.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e4f52c272fdc82e7c65ff3f17a7179bc5f710ebc8ce8a5cadac81215e8326740"}, - {file = "coverage-6.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b5578efe4038be02d76c344007b13119b2b20acd009a88dde8adec2de4f630b5"}, - {file = "coverage-6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8099ea680201c2221f8468c372198ceba9338a5fec0e940111962b03b3f716a"}, - {file = "coverage-6.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a00441f5ea4504f5abbc047589d09e0dc33eb447dc45a1a527c8b74bfdd32c65"}, - {file = "coverage-6.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e76bd16f0e31bc2b07e0fb1379551fcd40daf8cdf7e24f31a29e442878a827c"}, - {file = "coverage-6.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8d2e80dd3438e93b19e1223a9850fa65425e77f2607a364b6fd134fcd52dc9df"}, - {file = "coverage-6.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:341e9c2008c481c5c72d0e0dbf64980a4b2238631a7f9780b0fe2e95755fb018"}, - {file = "coverage-6.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:21e6686a95025927775ac501e74f5940cdf6fe052292f3a3f7349b0abae6d00f"}, - {file = "coverage-6.4-cp39-cp39-win32.whl", hash = "sha256:968ed5407f9460bd5a591cefd1388cc00a8f5099de9e76234655ae48cfdbe2c3"}, - {file = "coverage-6.4-cp39-cp39-win_amd64.whl", hash = "sha256:e35217031e4b534b09f9b9a5841b9344a30a6357627761d4218818b865d45055"}, - {file = "coverage-6.4-pp36.pp37.pp38-none-any.whl", hash = "sha256:e637ae0b7b481905358624ef2e81d7fb0b1af55f5ff99f9ba05442a444b11e45"}, - {file = "coverage-6.4.tar.gz", hash = "sha256:727dafd7f67a6e1cad808dc884bd9c5a2f6ef1f8f6d2f22b37b96cb0080d4f49"}, + {file = "coverage-6.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f1d5aa2703e1dab4ae6cf416eb0095304f49d004c39e9db1d86f57924f43006b"}, + {file = "coverage-6.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4ce1b258493cbf8aec43e9b50d89982346b98e9ffdfaae8ae5793bc112fb0068"}, + {file = "coverage-6.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83c4e737f60c6936460c5be330d296dd5b48b3963f48634c53b3f7deb0f34ec4"}, + {file = "coverage-6.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84e65ef149028516c6d64461b95a8dbcfce95cfd5b9eb634320596173332ea84"}, + {file = "coverage-6.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f69718750eaae75efe506406c490d6fc5a6161d047206cc63ce25527e8a3adad"}, + {file = "coverage-6.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e57816f8ffe46b1df8f12e1b348f06d164fd5219beba7d9433ba79608ef011cc"}, + {file = "coverage-6.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:01c5615d13f3dd3aa8543afc069e5319cfa0c7d712f6e04b920431e5c564a749"}, + {file = "coverage-6.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:75ab269400706fab15981fd4bd5080c56bd5cc07c3bccb86aab5e1d5a88dc8f4"}, + {file = "coverage-6.4.1-cp310-cp310-win32.whl", hash = "sha256:a7f3049243783df2e6cc6deafc49ea123522b59f464831476d3d1448e30d72df"}, + {file = "coverage-6.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:ee2ddcac99b2d2aec413e36d7a429ae9ebcadf912946b13ffa88e7d4c9b712d6"}, + {file = "coverage-6.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fb73e0011b8793c053bfa85e53129ba5f0250fdc0392c1591fd35d915ec75c46"}, + {file = "coverage-6.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106c16dfe494de3193ec55cac9640dd039b66e196e4641fa8ac396181578b982"}, + {file = "coverage-6.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87f4f3df85aa39da00fd3ec4b5abeb7407e82b68c7c5ad181308b0e2526da5d4"}, + {file = "coverage-6.4.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:961e2fb0680b4f5ad63234e0bf55dfb90d302740ae9c7ed0120677a94a1590cb"}, + {file = "coverage-6.4.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:cec3a0f75c8f1031825e19cd86ee787e87cf03e4fd2865c79c057092e69e3a3b"}, + {file = "coverage-6.4.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:129cd05ba6f0d08a766d942a9ed4b29283aff7b2cccf5b7ce279d50796860bb3"}, + {file = "coverage-6.4.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:bf5601c33213d3cb19d17a796f8a14a9eaa5e87629a53979a5981e3e3ae166f6"}, + {file = "coverage-6.4.1-cp37-cp37m-win32.whl", hash = "sha256:269eaa2c20a13a5bf17558d4dc91a8d078c4fa1872f25303dddcbba3a813085e"}, + {file = "coverage-6.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:f02cbbf8119db68455b9d763f2f8737bb7db7e43720afa07d8eb1604e5c5ae28"}, + {file = "coverage-6.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ffa9297c3a453fba4717d06df579af42ab9a28022444cae7fa605af4df612d54"}, + {file = "coverage-6.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:145f296d00441ca703a659e8f3eb48ae39fb083baba2d7ce4482fb2723e050d9"}, + {file = "coverage-6.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d44996140af8b84284e5e7d398e589574b376fb4de8ccd28d82ad8e3bea13"}, + {file = "coverage-6.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2bd9a6fc18aab8d2e18f89b7ff91c0f34ff4d5e0ba0b33e989b3cd4194c81fd9"}, + {file = "coverage-6.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3384f2a3652cef289e38100f2d037956194a837221edd520a7ee5b42d00cc605"}, + {file = "coverage-6.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9b3e07152b4563722be523e8cd0b209e0d1a373022cfbde395ebb6575bf6790d"}, + {file = "coverage-6.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1480ff858b4113db2718848d7b2d1b75bc79895a9c22e76a221b9d8d62496428"}, + {file = "coverage-6.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:865d69ae811a392f4d06bde506d531f6a28a00af36f5c8649684a9e5e4a85c83"}, + {file = "coverage-6.4.1-cp38-cp38-win32.whl", hash = "sha256:664a47ce62fe4bef9e2d2c430306e1428ecea207ffd68649e3b942fa8ea83b0b"}, + {file = "coverage-6.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:26dff09fb0d82693ba9e6231248641d60ba606150d02ed45110f9ec26404ed1c"}, + {file = "coverage-6.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d9c80df769f5ec05ad21ea34be7458d1dc51ff1fb4b2219e77fe24edf462d6df"}, + {file = "coverage-6.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:39ee53946bf009788108b4dd2894bf1349b4e0ca18c2016ffa7d26ce46b8f10d"}, + {file = "coverage-6.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5b66caa62922531059bc5ac04f836860412f7f88d38a476eda0a6f11d4724f4"}, + {file = "coverage-6.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd180ed867e289964404051a958f7cccabdeed423f91a899829264bb7974d3d3"}, + {file = "coverage-6.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84631e81dd053e8a0d4967cedab6db94345f1c36107c71698f746cb2636c63e3"}, + {file = "coverage-6.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8c08da0bd238f2970230c2a0d28ff0e99961598cb2e810245d7fc5afcf1254e8"}, + {file = "coverage-6.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d42c549a8f41dc103a8004b9f0c433e2086add8a719da00e246e17cbe4056f72"}, + {file = "coverage-6.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:309ce4a522ed5fca432af4ebe0f32b21d6d7ccbb0f5fcc99290e71feba67c264"}, + {file = "coverage-6.4.1-cp39-cp39-win32.whl", hash = "sha256:fdb6f7bd51c2d1714cea40718f6149ad9be6a2ee7d93b19e9f00934c0f2a74d9"}, + {file = "coverage-6.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:342d4aefd1c3e7f620a13f4fe563154d808b69cccef415415aece4c786665397"}, + {file = "coverage-6.4.1-pp36.pp37.pp38-none-any.whl", hash = "sha256:4803e7ccf93230accb928f3a68f00ffa80a88213af98ed338a57ad021ef06815"}, + {file = "coverage-6.4.1.tar.gz", hash = "sha256:4321f075095a096e70aff1d002030ee612b65a205a0a0f5b815280d5dc58100c"}, ] decorator = [ {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, ] -dill = [ - {file = "dill-0.3.5.1-py2.py3-none-any.whl", hash = "sha256:33501d03270bbe410c72639b350e941882a8b0fd55357580fbc873fba0c59302"}, - {file = "dill-0.3.5.1.tar.gz", hash = "sha256:d75e41f3eff1eee599d738e76ba8f4ad98ea229db8b085318aa2b3333a208c86"}, -] -docutils = [ - {file = "docutils-0.17.1-py2.py3-none-any.whl", hash = "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61"}, - {file = "docutils-0.17.1.tar.gz", hash = "sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125"}, -] -eko = [ - {file = "eko-0.8.5-py3-none-any.whl", hash = "sha256:d1bdbd8853a8e2af8a234ed33ff834d3c7357c831579d9f25cf655b550fb24d5"}, - {file = "eko-0.8.5.tar.gz", hash = "sha256:a9afb2adf689b230677056841ab6a8d16893745c65abff0cd0f5d028d3d70715"}, -] +dill = [] +docutils = [] +eko = [] fancycompleter = [ {file = "fancycompleter-0.9.1-py3-none-any.whl", hash = "sha256:dd076bca7d9d524cc7f25ec8f35ef95388ffef9ef46def4d3d25e9b044ad7080"}, {file = "fancycompleter-0.9.1.tar.gz", hash = "sha256:09e0feb8ae242abdfd7ef2ba55069a46f011814a80fe5476be48f51b00247272"}, @@ -1119,77 +1103,21 @@ idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, ] -imagesize = [ - {file = "imagesize-1.3.0-py2.py3-none-any.whl", hash = "sha256:1db2f82529e53c3e929e8926a1fa9235aa82d0bd0c580359c67ec31b2fddaa8c"}, - {file = "imagesize-1.3.0.tar.gz", hash = "sha256:cd1750d452385ca327479d45b64d9c7729ecf0b3969a58148298c77092261f9d"}, -] -importlib-metadata = [ - {file = "importlib_metadata-4.11.4-py3-none-any.whl", hash = "sha256:c58c8eb8a762858f49e18436ff552e83914778e50e9d2f1660535ffb364552ec"}, - {file = "importlib_metadata-4.11.4.tar.gz", hash = "sha256:5d26852efe48c0a32b0509ffbc583fda1a2266545a78d104a6f4aff3db17d700"}, -] +imagesize = [] +importlib-metadata = [] iniconfig = [ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, ] -ipython = [ - {file = "ipython-7.33.0-py3-none-any.whl", hash = "sha256:916a3126896e4fd78dd4d9cf3e21586e7fd93bae3f1cd751588b75524b64bf94"}, - {file = "ipython-7.33.0.tar.gz", hash = "sha256:bcffb865a83b081620301ba0ec4d95084454f26b91d6d66b475bff3dfb0218d4"}, -] -isort = [ - {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, - {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, -] +ipython = [] +isort = [] jedi = [ {file = "jedi-0.18.1-py2.py3-none-any.whl", hash = "sha256:637c9635fcf47945ceb91cd7f320234a7be540ded6f3e99a50cb6febdfd1ba8d"}, {file = "jedi-0.18.1.tar.gz", hash = "sha256:74137626a64a99c8eb6ae5832d99b3bdd7d29a3850fe2aa80a4126b2a7d949ab"}, ] -jinja2 = [ - {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, - {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, -] -latexcodec = [ - {file = "latexcodec-2.0.1-py2.py3-none-any.whl", hash = "sha256:c277a193638dc7683c4c30f6684e3db728a06efb0dc9cf346db8bd0aa6c5d271"}, - {file = "latexcodec-2.0.1.tar.gz", hash = "sha256:2aa2551c373261cefe2ad3a8953a6d6533e68238d180eb4bb91d7964adb3fe9a"}, -] -lazy-object-proxy = [ - {file = "lazy-object-proxy-1.7.1.tar.gz", hash = "sha256:d609c75b986def706743cdebe5e47553f4a5a1da9c5ff66d76013ef396b5a8a4"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bb8c5fd1684d60a9902c60ebe276da1f2281a318ca16c1d0a96db28f62e9166b"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a57d51ed2997e97f3b8e3500c984db50a554bb5db56c50b5dab1b41339b37e36"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd45683c3caddf83abbb1249b653a266e7069a09f486daa8863fb0e7496a9fdb"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8561da8b3dd22d696244d6d0d5330618c993a215070f473b699e00cf1f3f6443"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fccdf7c2c5821a8cbd0a9440a456f5050492f2270bd54e94360cac663398739b"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-win32.whl", hash = "sha256:898322f8d078f2654d275124a8dd19b079080ae977033b713f677afcfc88e2b9"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:85b232e791f2229a4f55840ed54706110c80c0a210d076eee093f2b2e33e1bfd"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:46ff647e76f106bb444b4533bb4153c7370cdf52efc62ccfc1a28bdb3cc95442"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12f3bb77efe1367b2515f8cb4790a11cffae889148ad33adad07b9b55e0ab22c"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c19814163728941bb871240d45c4c30d33b8a2e85972c44d4e63dd7107faba44"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e40f2013d96d30217a51eeb1db28c9ac41e9d0ee915ef9d00da639c5b63f01a1"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:2052837718516a94940867e16b1bb10edb069ab475c3ad84fd1e1a6dd2c0fcfc"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win32.whl", hash = "sha256:6a24357267aa976abab660b1d47a34aaf07259a0c3859a34e536f1ee6e76b5bb"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win_amd64.whl", hash = "sha256:6aff3fe5de0831867092e017cf67e2750c6a1c7d88d84d2481bd84a2e019ec35"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6a6e94c7b02641d1311228a102607ecd576f70734dc3d5e22610111aeacba8a0"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ce15276a1a14549d7e81c243b887293904ad2d94ad767f42df91e75fd7b5b6"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e368b7f7eac182a59ff1f81d5f3802161932a41dc1b1cc45c1f757dc876b5d2c"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6ecbb350991d6434e1388bee761ece3260e5228952b1f0c46ffc800eb313ff42"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:553b0f0d8dbf21890dd66edd771f9b1b5f51bd912fa5f26de4449bfc5af5e029"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win32.whl", hash = "sha256:c7a683c37a8a24f6428c28c561c80d5f4fd316ddcf0c7cab999b15ab3f5c5c69"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:df2631f9d67259dc9620d831384ed7732a198eb434eadf69aea95ad18c587a28"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:07fa44286cda977bd4803b656ffc1c9b7e3bc7dff7d34263446aec8f8c96f88a"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4dca6244e4121c74cc20542c2ca39e5c4a5027c81d112bfb893cf0790f96f57e"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91ba172fc5b03978764d1df5144b4ba4ab13290d7bab7a50f12d8117f8630c38"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:043651b6cb706eee4f91854da4a089816a6606c1428fd391573ef8cb642ae4f7"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b9e89b87c707dd769c4ea91f7a31538888aad05c116a59820f28d59b3ebfe25a"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-win32.whl", hash = "sha256:9d166602b525bf54ac994cf833c385bfcc341b364e3ee71e3bf5a1336e677b55"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:8f3953eb575b45480db6568306893f0bd9d8dfeeebd46812aa09ca9579595148"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dd7ed7429dbb6c494aa9bc4e09d94b778a3579be699f9d67da7e6804c422d3de"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70ed0c2b380eb6248abdef3cd425fc52f0abd92d2b07ce26359fcbc399f636ad"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7096a5e0c1115ec82641afbdd70451a144558ea5cf564a896294e346eb611be1"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f769457a639403073968d118bc70110e7dce294688009f5c24ab78800ae56dc8"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:39b0e26725c5023757fc1ab2a89ef9d7ab23b84f9251e28f9cc114d5b59c1b09"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-win32.whl", hash = "sha256:2130db8ed69a48a3440103d4a520b89d8a9405f1b06e2cc81640509e8bf6548f"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:677ea950bef409b47e51e733283544ac3d660b709cfce7b187f5ace137960d61"}, - {file = "lazy_object_proxy-1.7.1-pp37.pp38-none-any.whl", hash = "sha256:d66906d5785da8e0be7360912e99c9188b70f52c422f9fc18223347235691a84"}, -] +jinja2 = [] +latexcodec = [] +lazy-object-proxy = [] llvmlite = [ {file = "llvmlite-0.38.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a7dd2bd1d6406e7789273e3f8a304ed5d9adcfaa5768052fca7dc233a857be98"}, {file = "llvmlite-0.38.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7a5e0ed215a576f0f872f47a70b8cb49864e0aefc8586aff5ce83e3bff47bc23"}, @@ -1243,56 +1171,12 @@ lz4 = [ {file = "lz4-3.1.10-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:59afeb136957ed7a2058e4ef61cb2d0f5894ca866a8bfca5ff43d49a5cbe4aa2"}, {file = "lz4-3.1.10.tar.gz", hash = "sha256:439e575ecfa9ecffcbd63cfed99baefbe422ab9645b1e82278024d8a21d9720b"}, ] -markupsafe = [ - {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, - {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, -] +markupsafe = [] matplotlib-inline = [ {file = "matplotlib-inline-0.1.3.tar.gz", hash = "sha256:a04bfba22e0d1395479f866853ec1ee28eea1485c1d69a6faf00dc3e24ff34ee"}, {file = "matplotlib_inline-0.1.3-py3-none-any.whl", hash = "sha256:aed605ba3b72462d64d475a21a9296f400a19c4f74a31b59103d2a99ffd5aa5c"}, ] -mccabe = [ - {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, - {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, -] +mccabe = [] numba = [ {file = "numba-0.55.2-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:dd05f7c0ce64b6977596aa4e5a44747c6ef414d7989da1c7672337c54381a5ef"}, {file = "numba-0.55.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e36232eccd172c583b1f021c5c48744c087ae6fc9dc5c5f0dd2cb2286e517bf8"}, @@ -1352,27 +1236,27 @@ packaging = [ {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, ] pandas = [ - {file = "pandas-1.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:be67c782c4f1b1f24c2f16a157e12c2693fd510f8df18e3287c77f33d124ed07"}, - {file = "pandas-1.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5a206afa84ed20e07603f50d22b5f0db3fb556486d8c2462d8bc364831a4b417"}, - {file = "pandas-1.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0010771bd9223f7afe5f051eb47c4a49534345dfa144f2f5470b27189a4dd3b5"}, - {file = "pandas-1.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3228198333dd13c90b6434ddf61aa6d57deaca98cf7b654f4ad68a2db84f8cfe"}, - {file = "pandas-1.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b79af3a69e5175c6fa7b4e046b21a646c8b74e92c6581a9d825687d92071b51"}, - {file = "pandas-1.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:5586cc95692564b441f4747c47c8a9746792e87b40a4680a2feb7794defb1ce3"}, - {file = "pandas-1.4.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:061609334a8182ab500a90fe66d46f6f387de62d3a9cb9aa7e62e3146c712167"}, - {file = "pandas-1.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b8134651258bce418cb79c71adeff0a44090c98d955f6953168ba16cc285d9f7"}, - {file = "pandas-1.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:df82739e00bb6daf4bba4479a40f38c718b598a84654cbd8bb498fd6b0aa8c16"}, - {file = "pandas-1.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:385c52e85aaa8ea6a4c600a9b2821181a51f8be0aee3af6f2dcb41dafc4fc1d0"}, - {file = "pandas-1.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:295872bf1a09758aba199992c3ecde455f01caf32266d50abc1a073e828a7b9d"}, - {file = "pandas-1.4.2-cp38-cp38-win32.whl", hash = "sha256:95c1e422ced0199cf4a34385ff124b69412c4bc912011ce895582bee620dfcaa"}, - {file = "pandas-1.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:5c54ea4ef3823108cd4ec7fb27ccba4c3a775e0f83e39c5e17f5094cb17748bc"}, - {file = "pandas-1.4.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c072c7f06b9242c855ed8021ff970c0e8f8b10b35e2640c657d2a541c5950f59"}, - {file = "pandas-1.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f549097993744ff8c41b5e8f2f0d3cbfaabe89b4ae32c8c08ead6cc535b80139"}, - {file = "pandas-1.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ff08a14ef21d94cdf18eef7c569d66f2e24e0bc89350bcd7d243dd804e3b5eb2"}, - {file = "pandas-1.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c5bf555b6b0075294b73965adaafb39cf71c312e38c5935c93d78f41c19828a"}, - {file = "pandas-1.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51649ef604a945f781105a6d2ecf88db7da0f4868ac5d45c51cb66081c4d9c73"}, - {file = "pandas-1.4.2-cp39-cp39-win32.whl", hash = "sha256:d0d4f13e4be7ce89d7057a786023c461dd9370040bdb5efa0a7fe76b556867a0"}, - {file = "pandas-1.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:09d8be7dd9e1c4c98224c4dfe8abd60d145d934e9fc1f5f411266308ae683e6a"}, - {file = "pandas-1.4.2.tar.gz", hash = "sha256:92bc1fc585f1463ca827b45535957815b7deb218c549b7c18402c322c7549a12"}, + {file = "pandas-1.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d51674ed8e2551ef7773820ef5dab9322be0828629f2cbf8d1fc31a0c4fed640"}, + {file = "pandas-1.4.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:16ad23db55efcc93fa878f7837267973b61ea85d244fc5ff0ccbcfa5638706c5"}, + {file = "pandas-1.4.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:958a0588149190c22cdebbc0797e01972950c927a11a900fe6c2296f207b1d6f"}, + {file = "pandas-1.4.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e48fbb64165cda451c06a0f9e4c7a16b534fcabd32546d531b3c240ce2844112"}, + {file = "pandas-1.4.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f803320c9da732cc79210d7e8cc5c8019aad512589c910c66529eb1b1818230"}, + {file = "pandas-1.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:2893e923472a5e090c2d5e8db83e8f907364ec048572084c7d10ef93546be6d1"}, + {file = "pandas-1.4.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:24ea75f47bbd5574675dae21d51779a4948715416413b30614c1e8b480909f81"}, + {file = "pandas-1.4.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d5ebc990bd34f4ac3c73a2724c2dcc9ee7bf1ce6cf08e87bb25c6ad33507e318"}, + {file = "pandas-1.4.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d6c0106415ff1a10c326c49bc5dd9ea8b9897a6ca0c8688eb9c30ddec49535ef"}, + {file = "pandas-1.4.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78b00429161ccb0da252229bcda8010b445c4bf924e721265bec5a6e96a92e92"}, + {file = "pandas-1.4.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dfbf16b1ea4f4d0ee11084d9c026340514d1d30270eaa82a9f1297b6c8ecbf0"}, + {file = "pandas-1.4.3-cp38-cp38-win32.whl", hash = "sha256:48350592665ea3cbcd07efc8c12ff12d89be09cd47231c7925e3b8afada9d50d"}, + {file = "pandas-1.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:605d572126eb4ab2eadf5c59d5d69f0608df2bf7bcad5c5880a47a20a0699e3e"}, + {file = "pandas-1.4.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a3924692160e3d847e18702bb048dc38e0e13411d2b503fecb1adf0fcf950ba4"}, + {file = "pandas-1.4.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:07238a58d7cbc8a004855ade7b75bbd22c0db4b0ffccc721556bab8a095515f6"}, + {file = "pandas-1.4.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:755679c49460bd0d2f837ab99f0a26948e68fa0718b7e42afbabd074d945bf84"}, + {file = "pandas-1.4.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41fc406e374590a3d492325b889a2686b31e7a7780bec83db2512988550dadbf"}, + {file = "pandas-1.4.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d9382f72a4f0e93909feece6fef5500e838ce1c355a581b3d8f259839f2ea76"}, + {file = "pandas-1.4.3-cp39-cp39-win32.whl", hash = "sha256:0daf876dba6c622154b2e6741f29e87161f844e64f84801554f879d27ba63c0d"}, + {file = "pandas-1.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:721a3dd2f06ef942f83a819c0f3f6a648b2830b191a72bbe9451bcd49c3bd42e"}, + {file = "pandas-1.4.3.tar.gz", hash = "sha256:2ff7788468e75917574f080cd4681b27e1a7bf36461fe968b49a87b5a54d007c"}, ] parso = [ {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"}, @@ -1390,34 +1274,13 @@ pickleshare = [ {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"}, {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, ] -pineappl = [ - {file = "pineappl-0.5.2-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:d299e59c3ed65880db7b1b1cf693c737fb92544f9454d7bdb88198388d5ca380"}, - {file = "pineappl-0.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c81ad04a6785e584f22488b869327448f8ca9b73cab54714c62d0caac549bd5"}, - {file = "pineappl-0.5.2-cp310-none-win_amd64.whl", hash = "sha256:a22c7fa0bbd6fdcd174066c63f166dd107e4ad4e1301c57918d5895c87ab8b01"}, - {file = "pineappl-0.5.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:293a37bb0ec300ad2038270a723bb80c3f54803f38e41c026a8f5a56220759b5"}, - {file = "pineappl-0.5.2-cp37-cp37m-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:f16b2fea1b96cbd439f27f919a448d0e46d046fda94732e204ae726f2a0d22d0"}, - {file = "pineappl-0.5.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82e762eed440fc536ab82bb3b62ba81d77aaefb9c3dd04197c75e1d6fcb610e5"}, - {file = "pineappl-0.5.2-cp37-none-win_amd64.whl", hash = "sha256:106c1d5d91fae531cd6a7e5c1b9c926c61f1ef91a44285b3d053b9da830de452"}, - {file = "pineappl-0.5.2-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:e64f2cf7e9f26d5fcb12944a4bcd68a042c92ff7b5e813758d1490e117b8e966"}, - {file = "pineappl-0.5.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551154386e5b40dfb552aafe1e1c67c2aba0dbaf68c2a61cab945ab09546352"}, - {file = "pineappl-0.5.2-cp38-none-win_amd64.whl", hash = "sha256:0e7c96584c1564cc2c4b1ab3a714f75444458d9ff1f77d27d24191e1baef1710"}, - {file = "pineappl-0.5.2-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:7b285dfa3a0bc4b9a9665234667b3fe0f745fc16ab228cf4550b097eecf54b32"}, - {file = "pineappl-0.5.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77c45d043a49aa8f94fe9ed731b807ad95e9622afc1d93622ad7577d84f67a69"}, - {file = "pineappl-0.5.2-cp39-none-win_amd64.whl", hash = "sha256:cbc3e26f9aba7be7c04efc0b27db6ff9d97b3d3d1e9c309000d268be43d9ac9e"}, - {file = "pineappl-0.5.2.tar.gz", hash = "sha256:d8904c44edccad79a05d584743c4dfd33ab630a22a9d07c178c286c653134a1b"}, -] -platformdirs = [ - {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, - {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, -] +pineappl = [] +platformdirs = [] pluggy = [ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, ] -prompt-toolkit = [ - {file = "prompt_toolkit-3.0.29-py3-none-any.whl", hash = "sha256:62291dad495e665fca0bda814e342c69952086afb0f4094d0893d357e5c78752"}, - {file = "prompt_toolkit-3.0.29.tar.gz", hash = "sha256:bd640f60e8cecd74f0dc249713d433ace2ddc62b65ee07f96d358e0b152b6ea7"}, -] +prompt-toolkit = [] ptyprocess = [ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, @@ -1426,22 +1289,13 @@ py = [ {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, ] -pybtex = [ - {file = "pybtex-0.24.0-py2.py3-none-any.whl", hash = "sha256:e1e0c8c69998452fea90e9179aa2a98ab103f3eed894405b7264e517cc2fcc0f"}, - {file = "pybtex-0.24.0.tar.gz", hash = "sha256:818eae35b61733e5c007c3fcd2cfb75ed1bc8b4173c1f70b56cc4c0802d34755"}, -] -pybtex-docutils = [ - {file = "pybtex-docutils-1.0.2.tar.gz", hash = "sha256:43aa353b6d498fd5ac30f0073a98e332d061d34fe619d3d50d1761f8fd4aa016"}, - {file = "pybtex_docutils-1.0.2-py3-none-any.whl", hash = "sha256:6f9e3c25a37bcaac8c4f69513272706ec6253bb708a93d8b4b173f43915ba239"}, -] +pybtex = [] +pybtex-docutils = [] pygments = [ {file = "Pygments-2.12.0-py3-none-any.whl", hash = "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"}, {file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"}, ] -pylint = [ - {file = "pylint-2.13.9-py3-none-any.whl", hash = "sha256:705c620d388035bdd9ff8b44c5bcdd235bfb49d276d488dd2c8ff1736aa42526"}, - {file = "pylint-2.13.9.tar.gz", hash = "sha256:095567c96e19e6f57b5b907e67d265ff535e588fe26b12b5ebe1fc5645b2c731"}, -] +pylint = [] pyparsing = [ {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, @@ -1454,17 +1308,12 @@ pyreadline = [ pyrepl = [ {file = "pyrepl-0.9.0.tar.gz", hash = "sha256:292570f34b5502e871bbb966d639474f2b57fbfcd3373c2d6a2f3d56e681a775"}, ] -pytest = [ - {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, - {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, -] +pytest = [] pytest-cov = [ {file = "pytest-cov-2.12.1.tar.gz", hash = "sha256:261ceeb8c227b726249b376b8526b600f38667ee314f910353fa318caa01f4d7"}, {file = "pytest_cov-2.12.1-py2.py3-none-any.whl", hash = "sha256:261bb9e47e65bd099c89c3edf92972865210c36813f80ede5277dceb77a4a62a"}, ] -pytest-env = [ - {file = "pytest-env-0.6.2.tar.gz", hash = "sha256:7e94956aef7f2764f3c147d216ce066bf6c42948bb9e293169b1b1c880a580c2"}, -] +pytest-env = [] python-dateutil = [ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, @@ -1508,14 +1357,8 @@ pyyaml = [ {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, ] -requests = [ - {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, - {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, -] -rich = [ - {file = "rich-11.2.0-py3-none-any.whl", hash = "sha256:d5f49ad91fb343efcae45a2b2df04a9755e863e50413623ab8c9e74f05aee52b"}, - {file = "rich-11.2.0.tar.gz", hash = "sha256:1a6266a5738115017bb64a66c59c717e7aa047b3ae49a011ede4abdeffc6536e"}, -] +requests = [] +rich = [] scipy = [ {file = "scipy-1.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:65b77f20202599c51eb2771d11a6b899b97989159b7975e9b5259594f1d35ef4"}, {file = "scipy-1.8.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:e013aed00ed776d790be4cb32826adb72799c61e318676172495383ba4570aa4"}, @@ -1545,46 +1388,16 @@ six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] -snowballstemmer = [ - {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, - {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, -] -sphinx = [ - {file = "Sphinx-4.5.0-py3-none-any.whl", hash = "sha256:ebf612653238bcc8f4359627a9b7ce44ede6fdd75d9d30f68255c7383d3a6226"}, - {file = "Sphinx-4.5.0.tar.gz", hash = "sha256:7bf8ca9637a4ee15af412d1a1d9689fec70523a68ca9bb9127c2f3eeb344e2e6"}, -] -sphinx-rtd-theme = [ - {file = "sphinx_rtd_theme-1.0.0-py2.py3-none-any.whl", hash = "sha256:4d35a56f4508cfee4c4fb604373ede6feae2a306731d533f409ef5c3496fdbd8"}, - {file = "sphinx_rtd_theme-1.0.0.tar.gz", hash = "sha256:eec6d497e4c2195fa0e8b2016b337532b8a699a68bcb22a512870e16925c6a5c"}, -] -sphinxcontrib-applehelp = [ - {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"}, - {file = "sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a"}, -] -sphinxcontrib-bibtex = [ - {file = "sphinxcontrib-bibtex-2.4.2.tar.gz", hash = "sha256:65b023ee47f35f1f03ac4d71c824e67c624c7ecac1bb26e83623271a01f9da86"}, - {file = "sphinxcontrib_bibtex-2.4.2-py3-none-any.whl", hash = "sha256:608512afde6b732148cdc9123550bd560bf48e071d1fb7bb1bab4f4437ff04f4"}, -] -sphinxcontrib-devhelp = [ - {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, - {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, -] -sphinxcontrib-htmlhelp = [ - {file = "sphinxcontrib-htmlhelp-2.0.0.tar.gz", hash = "sha256:f5f8bb2d0d629f398bf47d0d69c07bc13b65f75a81ad9e2f71a63d4b7a2f6db2"}, - {file = "sphinxcontrib_htmlhelp-2.0.0-py2.py3-none-any.whl", hash = "sha256:d412243dfb797ae3ec2b59eca0e52dac12e75a241bf0e4eb861e450d06c6ed07"}, -] -sphinxcontrib-jsmath = [ - {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, - {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, -] -sphinxcontrib-qthelp = [ - {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, - {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, -] -sphinxcontrib-serializinghtml = [ - {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, - {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, -] +snowballstemmer = [] +sphinx = [] +sphinx-rtd-theme = [] +sphinxcontrib-applehelp = [] +sphinxcontrib-bibtex = [] +sphinxcontrib-devhelp = [] +sphinxcontrib-htmlhelp = [] +sphinxcontrib-jsmath = [] +sphinxcontrib-qthelp = [] +sphinxcontrib-serializinghtml = [] toml = [ {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, @@ -1593,18 +1406,10 @@ tomli = [ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] -traitlets = [ - {file = "traitlets-5.2.1.post0-py3-none-any.whl", hash = "sha256:f44b708d33d98b0addb40c29d148a761f44af740603a8fd0e2f8b5b27cf0f087"}, - {file = "traitlets-5.2.1.post0.tar.gz", hash = "sha256:70815ecb20ec619d1af28910ade523383be13754283aef90528eb3d47b77c5db"}, -] -typing-extensions = [ - {file = "typing_extensions-4.2.0-py3-none-any.whl", hash = "sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708"}, - {file = "typing_extensions-4.2.0.tar.gz", hash = "sha256:f1c24655a0da0d1b67f07e17a5e6b2a105894e6824b92096378bb3668ef02376"}, -] -urllib3 = [ - {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"}, - {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, -] +tomlkit = [] +traitlets = [] +typing-extensions = [] +urllib3 = [] wcwidth = [ {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, diff --git a/pyproject.toml b/pyproject.toml index e296392a..d1dfe439 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,7 @@ packages = [{ include = "pineko", from = "src" }] [tool.poetry.dependencies] python = ">=3.8,<3.11" eko = "^0.8.5" -pineappl = "^0.5.2" +pineappl = "^0.5.4" PyYAML = "^6.0" numpy = "^1.21.0" pandas = "^1.4.1" From 58715adc39853bfd429a9deb75c3434777b1e705 Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Mon, 11 Jul 2022 11:33:11 +0200 Subject: [PATCH 19/23] Remove debug scripts --- debug.py | 17 ----------- eko_debug.py | 47 ------------------------------- sv.py | 75 ------------------------------------------------- yadism_debug.py | 72 ----------------------------------------------- 4 files changed, 211 deletions(-) delete mode 100644 debug.py delete mode 100644 eko_debug.py delete mode 100644 sv.py delete mode 100644 yadism_debug.py diff --git a/debug.py b/debug.py deleted file mode 100644 index 9e506f05..00000000 --- a/debug.py +++ /dev/null @@ -1,17 +0,0 @@ -# -*- coding: utf-8 -*- -import eko -import lhapdf -import numpy as np -from ekobox import apply - -gonly = lhapdf.mkPDF("gonly", 0) - -ho = eko.output.Output.load_tar("data/ekos/3201/test.tar") -hpdf = apply.apply_pdf(ho, gonly) - -bo = eko.output.Output.load_tar("data/ekos/2201/test.tar") -bpdf = apply.apply_pdf(bo, gonly) - -plot(np.log(a[:, 2]), a[:, 4]) -plot(np.log(a[:, 2]), a[:, 6]) -plot(np.log(a[:, 2]), 4 * 5 / 9 * a[:, 2] * bpdf[300.0]["pdfs"][2]) diff --git a/eko_debug.py b/eko_debug.py deleted file mode 100644 index e21afe2f..00000000 --- a/eko_debug.py +++ /dev/null @@ -1,47 +0,0 @@ -# -*- coding: utf-8 -*- -import eko -import lhapdf -import matplotlib.pyplot as plt -import numpy as np -from eko.anomalous_dimensions.as1 import gamma_ns -from eko.harmonics import S1 -from ekomark import apply -from scipy.integrate import quad -from scipy.interpolate import interp1d - - -def mel(y, n): - f = interp1d(o["targetgrid"], y) - return quad(lambda x: x ** (n - 1.0) * f(x), min(o["targetgrid"]), 1.0) - - -o = eko.output.Output.load_tar("data/ekos/2201/noevol-withK-as0p35.tar") - -resu = apply.apply_pdf(o, lhapdf.mkPDF("uonly")) -resd = apply.apply_pdf(o, lhapdf.mkPDF("donly")) -rest3 = apply.apply_pdf(o, lhapdf.mkPDF("T3only")) -restoyt3 = apply.apply_pdf(o, lhapdf.mkPDF("toyt3only")) -resS = apply.apply_pdf(o, lhapdf.mkPDF("Sonly")) -resNN40 = apply.apply_pdf(o, lhapdf.mkPDF("NNPDF40_nnlo_as_01180")) - -u_u = [lhapdf.mkPDF("uonly").xfxQ2(2, x, 10) / x for x in o["targetgrid"]] -d_d = [lhapdf.mkPDF("donly").xfxQ2(1, x, 10) / x for x in o["targetgrid"]] -t3_u = [lhapdf.mkPDF("T3only").xfxQ2(2, x, 10) / x for x in o["targetgrid"]] -toyt3_u = [lhapdf.mkPDF("toyt3only").xfxQ2(2, x, 10) / x for x in o["targetgrid"]] -toyt3_d = [lhapdf.mkPDF("toyt3only").xfxQ2(1, x, 10) / x for x in o["targetgrid"]] -toyS_d = [lhapdf.mkPDF("Sonly").xfxQ2(1, x, 10) / x for x in o["targetgrid"]] -nn40_u = [ - lhapdf.mkPDF("NNPDF40_nnlo_as_01180").xfxQ2(2, x, 10) / x for x in o["targetgrid"] -] - -g = np.array([gamma_ns(n, S1(n)) for n in range(1, 10)]) - -K = 1.0 - 0.35 / (4.0 * np.pi) * g * np.log(2**2) - -melu_u = np.array([mel(u_u, n)[0] for n in range(1, 10)]) -meld_d = np.array([mel(d_d, n)[0] for n in range(1, 10)]) -melnn40_u = np.array([mel(nn40_u, n)[0] for n in range(1, 10)]) - -melresu_u = np.array([mel(resu[300.0]["pdfs"][2], n)[0] for n in range(1, 10)]) -melresd_d = np.array([mel(resd[300.0]["pdfs"][1], n)[0] for n in range(1, 10)]) -melresnn40_u = np.array([mel(resNN40[300.0]["pdfs"][2], n)[0] for n in range(1, 10)]) diff --git a/sv.py b/sv.py deleted file mode 100644 index 77662cd9..00000000 --- a/sv.py +++ /dev/null @@ -1,75 +0,0 @@ -# -*- coding: utf-8 -*- -import pathlib - -import click -import lhapdf -import numpy as np -import pandas as pd -import pineappl - -# global settings -here = pathlib.Path(__file__).parent -fk_path = here / "data" / "fktables" -fk_name = "test" -# fk_name = "HERA_CC_318GEV_EM_SIGMARED" -# fk_name = "HERA_NC_225GEV_EP_SIGMARED" -is_dis = True - - -@click.command() -@click.argument("order", type=int) -@click.argument("value", type=float) -@click.option("--abs", is_flag=True, help="keep absolute values") -def run(order, value, abs): - # derive order specific settings - if order == 2: - pdf_name = "NNPDF40_nnlo_as_01180" - central = 200 - theories = {"A": 10200, "B": 20200, "C": 30200} - else: - pdf_name = "gonly" - central = 4001 - if np.isclose(value, np.sqrt(2), atol=0.05): - theories = {"A": 1140, "B": 2140, "C": 3140} - else: - theories = {"B": 2201, "C": 3201} - - # derive common settings - pdf = lhapdf.mkPDF(pdf_name, 0) - pdgid = int(pdf.set().get_entry("Particle")) - - # collect central - df = pd.DataFrame() - fk = pineappl.fk_table.FkTable.read( - fk_path / str(central) / f"{fk_name}.pineappl.lz4" - ) - for bd in range(fk.bin_dimensions()): - df[f"b{bd} l"] = fk.bin_left(bd) - if not is_dis: - df[f"b{bd} r"] = fk.bin_right(bd) - df["central"] = fk.convolute_with_one(pdgid, pdf.xfxQ2) - - # collect SVs - for tn, ti in theories.items(): - fk_sv = pineappl.fk_table.FkTable.read( - fk_path / str(ti) / f"{fk_name}.pineappl.lz4" - ) - df[tn] = fk_sv.convolute_with_one(pdgid, pdf.xfxQ2) - df[f"{tn}2central [%]"] = (df[tn] / df["central"] - 1.0) * 100.0 - # df["ΔA2ΔC [%]"] = ( - # (df["A"] - df["central"]) / (df["C"] - df["central"]) - 1.0 - # ) * 100.0 - df["ΔB2ΔC [%]"] = ( - (df["B"] - df["central"]) / (df["C"] - df["central"]) - 1.0 - ) * 100.0 - - # remove predictions - if not abs: - for tn in theories.keys(): - del df[tn] - - print(df.to_string()) - - -if __name__ == "__main__": - run() diff --git a/yadism_debug.py b/yadism_debug.py deleted file mode 100644 index 8404e5dd..00000000 --- a/yadism_debug.py +++ /dev/null @@ -1,72 +0,0 @@ -# -*- coding: utf-8 -*- -import numpy as np -import yadism -import yaml -from eko.anomalous_dimensions import as1 -from eko.harmonics import S1 -from eko.interpolation import InterpolatorDispatcher -from scipy.integrate import quad -from scipy.interpolate import interp1d - -# def mel(y, n): -# xs = out["interpolation_xgrid"] -# f = interp1d(xs, y) -# return quad(lambda x: x ** (n - 1.0) * f(x), min(xs), 1.0) - - -def mel2(out, ys, n): - interp = InterpolatorDispatcher.from_dict(out) - lnxmin = np.log(out["interpolation_xgrid"][0]) - res = 0.0 - for y, bf in zip(ys, interp): - pj = bf(n, lnxmin) * np.exp(n * lnxmin) - res += y * pj - return res - - -with open("210.yaml", "r") as f: - t = yaml.safe_load(f) -with open("test.yaml", "r") as f: - o = yaml.safe_load(f) -# out = yadism.output.Output.load_tar("test.tar") -out = yadism.run_yadism(t, o) -out.dump_tar("test.tar") - -locbf10 = [ - out["F2_light"][j].orders[(0, 0, 0, 0)][0][-3][10] - for j in range(len(out["interpolation_xgrid"])) -] -pqqcbf10 = [ - out["F2_light"][j].orders[(1, 0, 0, 1)][0][-3][10] - for j in range(len(out["interpolation_xgrid"])) -] -pgqgbf10 = [ - out["F2_light"][j].orders[(1, 0, 0, 1)][0][7][10] - for j in range(len(out["interpolation_xgrid"])) -] - -mel2bf10 = np.array([mel2(out, [0] * 10 + [1] + [0] * 39, n) for n in range(1, 10)]) -mel2lobf10 = np.array([mel2(out, locbf10, n) for n in range(1, 10)]) -mel2pqqcbf10 = np.array([mel2(out, pqqcbf10, n) for n in range(1, 10)]) -mel2pgqgbf10 = np.array([mel2(out, pgqgbf10, n) for n in range(1, 10)]) - -locbf20 = [ - out["F2_light"][j].orders[(0, 0, 0, 0)][0][-3][20] - for j in range(len(out["interpolation_xgrid"])) -] -pqqcbf20 = [ - out["F2_light"][j].orders[(1, 0, 0, 1)][0][-3][20] - for j in range(len(out["interpolation_xgrid"])) -] -pgqgbf20 = [ - out["F2_light"][j].orders[(1, 0, 0, 1)][0][7][20] - for j in range(len(out["interpolation_xgrid"])) -] - -mel2bf20 = np.array([mel2(out, [0] * 20 + [1] + [0] * 29, n) for n in range(1, 10)]) -mel2lobf20 = np.array([mel2(out, locbf20, n) for n in range(1, 10)]) -mel2pqqcbf20 = np.array([mel2(out, pqqcbf20, n) for n in range(1, 10)]) -mel2pgqgbf20 = np.array([mel2(out, pgqgbf20, n) for n in range(1, 10)]) - -gns = np.array([as1.gamma_ns(n, S1(n)) for n in range(1, 10)]) -ggq = np.array([np.nan if n == 1 else as1.gamma_gq(n) for n in range(1, 10)]) From b98f78869af1698997af9df137090a3dd7e8d0c3 Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Mon, 11 Jul 2022 13:01:04 +0200 Subject: [PATCH 20/23] Update src/pineko/evolve.py Co-authored-by: Alessandro Candido --- src/pineko/evolve.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pineko/evolve.py b/src/pineko/evolve.py index 6844f042..f2db9edd 100644 --- a/src/pineko/evolve.py +++ b/src/pineko/evolve.py @@ -109,7 +109,7 @@ def evolve_grid( alphas_values : None or list values of strong coupling used to collapse grids assumptions : str - assumtions on the flavor dimension + assumptions on the flavor dimension comparison_pdf : None or str if given, a comparison table (with / without evolution) will be printed """ From 6c008a11cd008266b3fd6c90bc36ba7924c6c543 Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Mon, 11 Jul 2022 13:01:15 +0200 Subject: [PATCH 21/23] Update src/pineko/theory.py Co-authored-by: Alessandro Candido --- src/pineko/theory.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pineko/theory.py b/src/pineko/theory.py index efcb534f..a7a961e3 100644 --- a/src/pineko/theory.py +++ b/src/pineko/theory.py @@ -4,7 +4,7 @@ The typical use case of pineko is the generation of a list of FK tables, all with common theory parameters. The collective list of this FK tables together with other theory ingredients (such as C-factors) are often -commenly refered to as 'theory'. +commonly referred to as 'theory'. """ import logging import time From 086d1ba6130dca35d9ab0b6c46fc683a41dfd5d9 Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Mon, 11 Jul 2022 13:05:34 +0200 Subject: [PATCH 22/23] Rename xi to xif --- src/pineko/evolve.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pineko/evolve.py b/src/pineko/evolve.py index f2db9edd..f006cb93 100644 --- a/src/pineko/evolve.py +++ b/src/pineko/evolve.py @@ -45,7 +45,7 @@ def write_operator_card_from_file(pineappl_path, default_card_path, card_path, x return write_operator_card(pineappl_grid, default_card, card_path, xif) -def write_operator_card(pineappl_grid, default_card, card_path, xi): +def write_operator_card(pineappl_grid, default_card, card_path, xif): """Generate operator card for this grid. Parameters @@ -56,7 +56,7 @@ def write_operator_card(pineappl_grid, default_card, card_path, xi): base operator card card_path : str or os.PathLike target path - xi : float + xif : float factorization scale variation Returns @@ -68,7 +68,7 @@ def write_operator_card(pineappl_grid, default_card, card_path, xi): """ operators_card = copy.deepcopy(default_card) x_grid, _pids, _mur2_grid, muf2_grid = pineappl_grid.axes() - q2_grid = (xi * xi * muf2_grid).tolist() + q2_grid = (xif * xif * muf2_grid).tolist() operators_card["targetgrid"] = x_grid.tolist() operators_card["Q2grid"] = q2_grid with open(card_path, "w", encoding="UTF-8") as f: From 25ed076bd6553310cb56addd6416983e1bf937e3 Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Mon, 11 Jul 2022 13:10:00 +0200 Subject: [PATCH 23/23] Narrow opcard args in theory --- src/pineko/theory.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/pineko/theory.py b/src/pineko/theory.py index a7a961e3..6cf624d9 100644 --- a/src/pineko/theory.py +++ b/src/pineko/theory.py @@ -201,7 +201,7 @@ def iterate(self, f, **kwargs): f(name, grid, **kwargs) rich.print() - def opcard(self, name, grid, tcard): + def opcard(self, name, grid, xif): """Write a single operator card. Parameters @@ -210,8 +210,8 @@ def opcard(self, name, grid, tcard): grid name, i.e. it's true stem grid : pathlib.Path path to grid - tcard : dict - theory card + xif : float + factorization scale """ opcard_path = self.operator_cards_path / f"{name}.yaml" if opcard_path.exists(): @@ -222,7 +222,7 @@ def opcard(self, name, grid, tcard): grid, configs.configs["paths"]["operator_card_template"], opcard_path, - tcard["XIF"], + xif, ) if opcard_path.exists(): rich.print( @@ -233,7 +233,7 @@ def opcards(self): """Write operator cards.""" tcard = theory_card.load(self.theory_id) self.operator_cards_path.mkdir(exist_ok=True) - self.iterate(self.opcard, tcard=tcard) + self.iterate(self.opcard, xif=tcard["XIF"]) def load_operator_card(self, name): """Read current operator card.