From cf8afebe6b964db967da534f59ddd62a49205168 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Mon, 22 May 2023 11:49:01 +0200 Subject: [PATCH 01/69] Add theories 398 397 to theory.db --- nnpdfcpp/data/theory.db | Bin 102400 -> 106496 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/nnpdfcpp/data/theory.db b/nnpdfcpp/data/theory.db index 1f953e2459c1a85332b22111d2482d6dfe3ba942..06c5db50dbc4d5580ade634dc200f83d9c29f3b2 100644 GIT binary patch delta 398 zcmZozz}9epZGto_8v_G_)I=M`OE=2ICEJW*)|q)7c#u=dv&`Fsg1WRAgjnQf$nerorgAozIE!2d|V31M>yG z^SrBg8o0x_#29Uu+BnX#H?vu=eBD?m%E-ff2xv0{Lz7!Guh#UcW=2(}M)v8BQH&bX zPc$>`oc^|rk(=4n$awnmNJaw|w`M*(ij2UDm=zndK-N#L-*tNW0X0SuR?{Z?W})f1 z8H{S%;PAEN5U>Wqri5oNotj36BNWZ_afbnas&dvJCep79M0`@7h>+gn7Gh zAmd@??O7R&)6}OGFtP}+abz*@t>ew)(cyZ>xq>4L7@%Ps+wUhZcCqt-Jpm;E#zAOL delta 220 zcmV<203-i^zy^Sz29O&C1ONa48Id4A0R*vNqz?lX4}X&f5G(_Q4}Y^k5IYZ%fDsiK zgD(I802hNH0000MgB1V(02P61lb0WD0~rV`vj-sG0ki5MG6s==6oV`%w=5_D*cSs0 z0Hl`(Kmnb%&{F{>0Rtg{X_hDfLAMS<0r(9XGXM_H4XO-)3swpi2+aqB1~>%u1F-^b z0W-0269KoUWC6ni13!Zjmu+YPCbu6|0p$uD3;^E%4!8|;3^)q=39blf2O|aE1fc_C W0v!O~k#WDbYM23v2e)Zx0hcGeOFe%8 From df6371fc602040ef928eed7367a4a6423b83402c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Mon, 5 Jun 2023 11:01:50 +0200 Subject: [PATCH 02/69] Allow Q_IN != 100 --- validphys2/src/validphys/photon/compute.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/validphys2/src/validphys/photon/compute.py b/validphys2/src/validphys/photon/compute.py index bbbdfc650f..20db68a34d 100644 --- a/validphys2/src/validphys/photon/compute.py +++ b/validphys2/src/validphys/photon/compute.py @@ -17,7 +17,6 @@ log = logging.getLogger(__name__) -Q_IN = 100 FIATLUX_DEFAULT = { "apfel": False, "eps_base": 1e-5, # precision on final integration of double integral. @@ -71,6 +70,9 @@ def __init__(self, theoryid, lux_params, replicas): path_to_F2 = theoryid.path / "fastkernel/fiatlux_dis_F2.pineappl.lz4" path_to_FL = theoryid.path / "fastkernel/fiatlux_dis_FL.pineappl.lz4" self.path_to_eko_photon = theoryid.path / "eko_photon.tar" + with EKO.read(self.path_to_eko_photon) as eko: + self.q_in = np.sqrt(eko.mu20) + # set fiatlux self.lux = {} @@ -129,7 +131,7 @@ def compute_photon_array(self, replica): """ # Compute photon PDF log.info(f"Computing photon") - photon_qin = np.array([self.lux[replica].EvaluatePhoton(x, Q_IN**2).total for x in XGRID]) + photon_qin = np.array([self.lux[replica].EvaluatePhoton(x, self.q_in**2).total for x in XGRID]) photon_qin += self.generate_errors(replica) # fiatlux computes x * gamma(x) photon_qin /= XGRID @@ -150,7 +152,7 @@ def compute_photon_array(self, replica): if pid not in self.luxpdfset.flavors: continue pdfs_init[j] = np.array( - [self.luxpdfset.xfxQ(x, Q_IN, replica, pid) / x for x in XGRID] + [self.luxpdfset.xfxQ(x, self.q_in, replica, pid) / x for x in XGRID] ) # Apply EKO to PDFs @@ -188,7 +190,7 @@ def error_matrix(self): if not self.additional_errors: return None extra_set = self.additional_errors.load() - qs = [Q_IN] * len(XGRID) + qs = [self.q_in] * len(XGRID) res_central = np.array(extra_set.central_member.xfxQ(22, XGRID, qs)) res = [] for idx_member in range(101, 107 + 1): From 04ac7a862adc02af3648ae9e891c2ce36af4971e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Mon, 5 Jun 2023 12:20:18 +0200 Subject: [PATCH 03/69] Add theories 524, 525, 526 --- nnpdfcpp/data/theory.db | Bin 102400 -> 106496 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/nnpdfcpp/data/theory.db b/nnpdfcpp/data/theory.db index 1f953e2459c1a85332b22111d2482d6dfe3ba942..4bc4113daa27cf0ac13d2a54120afb9151699767 100644 GIT binary patch delta 477 zcmZozz}9epZGto_I|BoQ)Ipj|IP&uV1tgoz zfTTpT&g544dS)38k%o80+5c)CFs#6m5yvjeD9rkZWzodKuZ+x-6(8hnY+z>Iex!hL zI@5N!cE(2>(+U__gxJ~38TgL#F62q&)?qK_{K&C!V__mYOOsg(-}K66MzzU1o(WIy zX<|G-{cRf~x0FW5xJ^y!XKj2hDyH8Jia!cbGNnHDWPV9nEcfUcPC b9mObz(65T$QF>-zBewfDF$Ob%;s_1^6y}Hy delta 171 zcmV;c095~gzy^Sz29O&C1ONa48Id4A0R*vNqz?!c4}Smv000@23=k@_K@d9+k$@2c z7=tg9g&%(d83-)12Ouy414IZsv2pSRgDfbwEGPlkM*|E1#Fqzf0ll|}gaMZV13QB( zmm!A%CYMco0S=Ri_fwZJiUFFpe{=zb3mOXoPXG?A4P^`_3g!u(2wn#r19bvV1>yvv Zv2ig1x1pT@Qv$cKm;rnOw;qQ9;s{>$F@OL7 From b425a697cad68edf69a331c76c667708ac076d21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Tue, 6 Jun 2023 15:43:47 +0200 Subject: [PATCH 04/69] Fix tests --- .../src/validphys/tests/photon/test_compute.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/validphys2/src/validphys/tests/photon/test_compute.py b/validphys2/src/validphys/tests/photon/test_compute.py index 30805be889..f61b13a6bd 100644 --- a/validphys2/src/validphys/tests/photon/test_compute.py +++ b/validphys2/src/validphys/tests/photon/test_compute.py @@ -8,6 +8,7 @@ from validphys.core import PDF as PDFset from ..conftest import PDF +from eko.io import EKO class FakeTheory: @@ -68,6 +69,17 @@ def PlugStructureFunctions(self, f2, fl, f2lo): def EvaluatePhoton(self, x, q): return self.res +class FakeEKO: + def __init__(self, path): + self.path = path + self.mu20 = 100**2 + + def __enter__(self): + return self + + def __exit__(self, exc_type: type, _exc_value, _traceback): + pass + class FakeStructureFunction: def __init__(self, path, pdfs): @@ -95,6 +107,7 @@ def test_parameters_init(monkeypatch): monkeypatch.setattr(structure_functions, "F2LO", FakeF2LO) monkeypatch.setattr(fiatlux, "FiatLux", FakeFiatlux) monkeypatch.setattr(Photon, "compute_photon_array", lambda *args: np.zeros(196)) + monkeypatch.setattr(EKO, "read", FakeEKO) photon = Photon(FakeTheory(), fiatlux_runcard, [1, 2, 3]) alpha = Alpha(FakeTheory().get_description()) From cb59f2e57aed96b8e74ec16da86b36d7c99e2a6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Tue, 6 Jun 2023 22:11:14 +0200 Subject: [PATCH 05/69] Upgrade to eko13 --- validphys2/src/validphys/photon/compute.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/validphys2/src/validphys/photon/compute.py b/validphys2/src/validphys/photon/compute.py index 20db68a34d..b161ce8efb 100644 --- a/validphys2/src/validphys/photon/compute.py +++ b/validphys2/src/validphys/photon/compute.py @@ -143,8 +143,8 @@ def compute_photon_array(self, replica): # it has to be done inside vp-setupfit # construct PDFs - pdfs_init = np.zeros((len(eko.rotations.inputpids), len(XGRID))) - for j, pid in enumerate(eko.rotations.inputpids): + pdfs_init = np.zeros((len(eko.bases.inputpids), len(XGRID))) + for j, pid in enumerate(eko.bases.inputpids): if pid == 22: pdfs_init[j] = photon_qin ph_id = j @@ -156,8 +156,7 @@ def compute_photon_array(self, replica): ) # Apply EKO to PDFs - q2 = eko.mu2grid[0] - with eko.operator(q2) as elem: + for (mu2, nf), elem in eko.items(): pdfs_final = np.einsum("ajbk,bk", elem.operator, pdfs_init) photon_Q0 = pdfs_final[ph_id] From 6a33baa5aada3145d2b4568a3b5f3969423e92e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Tue, 6 Jun 2023 22:14:20 +0200 Subject: [PATCH 06/69] Use ev_op_iterations=30 for exact evolution --- n3fit/src/evolven3fit_new/eko_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/n3fit/src/evolven3fit_new/eko_utils.py b/n3fit/src/evolven3fit_new/eko_utils.py index cf92ebb4ce..380acd069e 100644 --- a/n3fit/src/evolven3fit_new/eko_utils.py +++ b/n3fit/src/evolven3fit_new/eko_utils.py @@ -21,7 +21,7 @@ } EVOLVEN3FIT_CONFIGS_DEFAULTS_EXA = { - "ev_op_iterations": 10, + "ev_op_iterations": 30, "ev_op_max_order": (1, 0), "evolution_method": "iterate-exact", "inversion_method": "exact", From 4c19a789ffb186535eda4c66cb816b78bb428c53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Wed, 7 Jun 2023 13:24:18 +0200 Subject: [PATCH 07/69] Add control on alphaem running in eko_utils --- n3fit/src/evolven3fit_new/eko_utils.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/n3fit/src/evolven3fit_new/eko_utils.py b/n3fit/src/evolven3fit_new/eko_utils.py index 380acd069e..51516a03bb 100644 --- a/n3fit/src/evolven3fit_new/eko_utils.py +++ b/n3fit/src/evolven3fit_new/eko_utils.py @@ -62,6 +62,10 @@ def construct_eko_cards( # The Legacy function is able to construct a theory card for eko starting from an NNPDF theory legacy_class = runcards.Legacy(theory, {}) theory_card = legacy_class.new_theory + # if Qedref = Qref alphaem is running, otherwise it's fixed + if theory["QED"] > 0: + if np.isclose(theory["Qref"], theory["Qedref"]): + theory_card.couplings.em_running = True # construct operator card q2_grid = utils.generate_q2grid( theory["Q0"], From 78c31b42b6c4ee4c1ee7f324b20649db5c44f983 Mon Sep 17 00:00:00 2001 From: juacrumar Date: Fri, 9 Jun 2023 11:37:00 +0200 Subject: [PATCH 08/69] add nf=3 option --- n3fit/src/evolven3fit_new/eko_utils.py | 40 +++++++++++++++++--------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/n3fit/src/evolven3fit_new/eko_utils.py b/n3fit/src/evolven3fit_new/eko_utils.py index 7b6be83110..267cdb3769 100644 --- a/n3fit/src/evolven3fit_new/eko_utils.py +++ b/n3fit/src/evolven3fit_new/eko_utils.py @@ -30,7 +30,6 @@ } NFREF_DEFAULT = 5 -NF0_DEFAULT = 4 def construct_eko_cards( @@ -58,31 +57,46 @@ def construct_eko_cards( theory = Loader().check_theoryID(theoryID).get_description() theory.pop("FNS") theory.update(theory_card_dict) - if "nfref" not in theory: - theory["nfref"] = NFREF_DEFAULT - if "nf0" not in theory: - theory["nf0"] = NF0_DEFAULT - + # Prepare the thresholds according to MaxNfPdf thresholds = {"c": theory["kcThr"], "b": theory["kbThr"], "t": theory["ktThr"]} if theory["MaxNfPdf"] < 5: thresholds["b"] = np.inf if theory["MaxNfPdf"] < 6: thresholds["t"] = np.inf - + + if "nfref" not in theory: + theory["nfref"] = NFREF_DEFAULT + + # Set nf_0 according to the fitting scale unless set explicitly + mu0 = theory["Q0"] + if "nf0" not in theory: + if mu0 < theory["mc"] * thresholds["c"]: + theory["nf0"] = 3 + elif mu0 < theory["mb"] * thresholds["b"]: + theory["nf0"] = 4 + elif mu0 < theory["mt"] * thresholds["t"]: + theory["nf0"] = 5 + else: + theory["nf0"] = 6 + # Setting the thresholds in the theory card to inf if necessary - theory.update({"kbThr":thresholds["b"], "ktThr":thresholds["t"] }) - + theory.update({"kbThr": thresholds["b"], "ktThr": thresholds["t"]}) + # The Legacy function is able to construct a theory card for eko starting from an NNPDF theory legacy_class = runcards.Legacy(theory, {}) theory_card = legacy_class.new_theory # construct operator card q2_grid = utils.generate_q2grid( - theory["Q0"], + mu0, q_fin, q_points, - {theory["mb"]: thresholds["b"], theory["mt"]: thresholds["t"]}, + { + theory["mc"]: thresholds["c"], + theory["mb"]: thresholds["b"], + theory["mt"]: thresholds["t"], + }, ) op_card = default_op_card masses = np.array([theory["mc"], theory["mb"], theory["mt"]]) ** 2 @@ -90,11 +104,11 @@ def construct_eko_cards( atlas = Atlas( matching_scales=MatchingScales(masses * thresholds_ratios), - origin=(theory["Q0"] ** 2, theory["nf0"]), + origin=(mu0**2, theory["nf0"]), ) op_card.update( { - "mu0": theory["Q0"], + "mu0": mu0, "mugrid": [(float(np.sqrt(q2)), int(nf_default(q2, atlas))) for q2 in q2_grid], } ) From fe60a687881bc7a3f70a4aaa280bab673b5b4206 Mon Sep 17 00:00:00 2001 From: juacrumar Date: Fri, 9 Jun 2023 11:38:49 +0200 Subject: [PATCH 09/69] load only .exportgrid files corresponding to the fit --- n3fit/src/evolven3fit_new/evolve.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/n3fit/src/evolven3fit_new/evolve.py b/n3fit/src/evolven3fit_new/evolve.py index cddb1eb308..8cf5e28cc6 100644 --- a/n3fit/src/evolven3fit_new/evolve.py +++ b/n3fit/src/evolven3fit_new/evolve.py @@ -145,7 +145,7 @@ def load_fit(usr_path): """ nnfitpath = usr_path / "nnfit" pdf_dict = {} - for yaml_file in nnfitpath.glob("replica_*/*.exportgrid"): + for yaml_file in nnfitpath.glob(f"replica_*/{usr_path.name}.exportgrid"): data = yaml.safe_load(yaml_file.read_text(encoding="UTF-8")) pdf_dict[yaml_file.parent.stem] = data return pdf_dict From 135862ea1235d18c2d28ea59f9a146bc1bf4fe5e Mon Sep 17 00:00:00 2001 From: juacrumar Date: Fri, 9 Jun 2023 17:21:58 +0200 Subject: [PATCH 10/69] create a separate Q,nf entry when crossing a threshold --- n3fit/src/evolven3fit_new/eko_utils.py | 29 +++++++++++++++++++------- n3fit/src/evolven3fit_new/utils.py | 1 - 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/n3fit/src/evolven3fit_new/eko_utils.py b/n3fit/src/evolven3fit_new/eko_utils.py index 267cdb3769..82265698f8 100644 --- a/n3fit/src/evolven3fit_new/eko_utils.py +++ b/n3fit/src/evolven3fit_new/eko_utils.py @@ -106,12 +106,25 @@ def construct_eko_cards( matching_scales=MatchingScales(masses * thresholds_ratios), origin=(mu0**2, theory["nf0"]), ) - op_card.update( - { - "mu0": mu0, - "mugrid": [(float(np.sqrt(q2)), int(nf_default(q2, atlas))) for q2 in q2_grid], - } - ) + + # Create the eko operator q2grid + # This is a grid which contains information on (q, nf) + # in VFNS values at the matching scales need to be doubled so that they are considered in both sides + + ep = 1e-4 + mugrid = [] + for q2 in q2_grid: + q = float(np.sqrt(q2)) + if nf_default(q2 + ep, atlas) != nf_default(q2 - ep, atlas): + nf_l = int(nf_default(q2 - ep, atlas)) + nf_u = int(nf_default(q2 + ep, atlas)) + mugrid.append((q, nf_l)) + mugrid.append((q, nf_u)) + else: + mugrid.append((q, int(nf_default(q2, atlas)))) + + op_card.update({"mu0": theory["Q0"], "mugrid": mugrid}) + op_card["xgrid"] = x_grid # Specific defaults for evolven3fit evolution if theory["ModEv"] == "TRN": @@ -133,7 +146,7 @@ def construct_eko_cards( def split_evolgrid(evolgrid): - """Split the evolgrid in blocks according to the number of flavors and repeating the last entry of one block in the first entry of the next.""" + """Split the evolgrid in blocks according to the number of flavors.""" evolgrid_index_list = [] evolgrid.sort() starting_nf = evolgrid[0][1] @@ -145,7 +158,7 @@ def split_evolgrid(evolgrid): start_index = 0 evolgrid_list = [] for index in evolgrid_index_list: - evolgrid_list.append(evolgrid[start_index : index + 1]) + evolgrid_list.append(evolgrid[start_index:index]) start_index = index evolgrid_list.append(evolgrid[start_index:]) return evolgrid_list diff --git a/n3fit/src/evolven3fit_new/utils.py b/n3fit/src/evolven3fit_new/utils.py index f1303fcbd7..f6abcfea7d 100644 --- a/n3fit/src/evolven3fit_new/utils.py +++ b/n3fit/src/evolven3fit_new/utils.py @@ -22,7 +22,6 @@ 3.8800751e00, 4.3584516e00, 4.9200000e00, - 4.9200000e00, 5.5493622e00, 6.2897452e00, 7.1650687e00, From d63bda0eed068daf2dd4f5014f721ae336ab7161 Mon Sep 17 00:00:00 2001 From: juacrumar Date: Fri, 9 Jun 2023 18:45:17 +0200 Subject: [PATCH 11/69] add a default q0 grid for nf0=3 and associated tests --- n3fit/src/evolven3fit_new/eko_utils.py | 1 + n3fit/src/evolven3fit_new/utils.py | 73 +++++++++++++++++++++-- n3fit/src/n3fit/tests/test_evolven3fit.py | 56 ++++++++++------- 3 files changed, 106 insertions(+), 24 deletions(-) diff --git a/n3fit/src/evolven3fit_new/eko_utils.py b/n3fit/src/evolven3fit_new/eko_utils.py index 82265698f8..7eabc1b009 100644 --- a/n3fit/src/evolven3fit_new/eko_utils.py +++ b/n3fit/src/evolven3fit_new/eko_utils.py @@ -97,6 +97,7 @@ def construct_eko_cards( theory["mb"]: thresholds["b"], theory["mt"]: thresholds["t"], }, + theory["nf0"], ) op_card = default_op_card masses = np.array([theory["mc"], theory["mb"], theory["mt"]]) ** 2 diff --git a/n3fit/src/evolven3fit_new/utils.py b/n3fit/src/evolven3fit_new/utils.py index f6abcfea7d..4df9274459 100644 --- a/n3fit/src/evolven3fit_new/utils.py +++ b/n3fit/src/evolven3fit_new/utils.py @@ -7,7 +7,7 @@ from reportengine.compat import yaml from validphys.pdfbases import PIDS_DICT -DEFAULT_Q2GRID = ( +Q2GRID_Nf04 = ( np.array( [ 1.6500000e00, @@ -64,6 +64,62 @@ ** 2 ) +Q2GRID_Nf03 = ( + np.array( + [ + 1.0000000e00, + 1.0768843e00, + 1.1642787e00, + 1.2640247e00, + 1.3783565e00, + 1.5100000e00, + 1.6573843e00, + 1.8279487e00, + 2.0263188e00, + 2.2582323e00, + 2.5308507e00, + 2.8531703e00, + 3.2365690e00, + 3.6955380e00, + 4.2486693e00, + 4.9200000e00, + 5.6571821e00, + 6.5475141e00, + 7.6300446e00, + 8.9555329e00, + 1.0590474e01, + 1.2622686e01, + 1.5169120e01, + 1.8386905e01, + 2.2489085e01, + 2.7767274e01, + 3.4624624e01, + 4.3624282e01, + 5.5561424e01, + 7.1571582e01, + 9.3295496e01, + 1.2313315e02, + 1.6464038e02, + 2.2315640e02, + 3.0681103e02, + 4.2816505e02, + 6.0692308e02, + 8.7449251e02, + 1.2817733e03, + 1.9127020e03, + 2.9082314e03, + 4.5095982e03, + 7.1379509e03, + 1.1543948e04, + 1.9094934e04, + 3.2338760e04, + 5.6137084e04, + 1.0000000e05, + ] + ) + ** 2 +) + class LhapdfLike: """ @@ -122,7 +178,7 @@ def get_theoryID_from_runcard(usr_path): return my_runcard["theory"]["theoryid"] -def generate_q2grid(Q0, Qfin, Q_points, match_dict): +def generate_q2grid(Q0, Qfin, Q_points, match_dict, nf0=None): """Generate the q2grid used in the final evolved pdfs or use the default grid if Qfin or Q_points is not provided. @@ -130,7 +186,14 @@ def generate_q2grid(Q0, Qfin, Q_points, match_dict): in order to obtain the relative matching scale. """ if Qfin is None and Q_points is None: - return DEFAULT_Q2GRID + if nf0 == 4: + return Q2GRID_Nf04 + elif nf0 == 3: + return Q2GRID_Nf03 + elif nf0 is None: + raise ValueError("In order to use a default grid, a value of nf0 must be provided") + else: + raise NotImplementedError(f"No default grid in Q available for {nf0=}") elif Qfin is None or Q_points is None: raise ValueError("q_fin and q_points must be specified either both or none of them") else: @@ -147,7 +210,9 @@ def generate_q2grid(Q0, Qfin, Q_points, match_dict): frac_of_point = np.log(match_scale / Q_ini) / np.log(Qfin / Q0) num_points = int(Q_points * frac_of_point) num_points_list.append(num_points) - grids.append(np.geomspace(Q_ini**2, match_scale**2, num=num_points)) + grids.append( + np.geomspace(Q_ini**2, match_scale**2, num=num_points, endpoint=False) + ) Q_ini = match_scale num_points = Q_points - sum(num_points_list) grids.append(np.geomspace(Q_ini**2, Qfin**2, num=num_points)) diff --git a/n3fit/src/n3fit/tests/test_evolven3fit.py b/n3fit/src/n3fit/tests/test_evolven3fit.py index 1796095df1..8cab0b4927 100644 --- a/n3fit/src/n3fit/tests/test_evolven3fit.py +++ b/n3fit/src/n3fit/tests/test_evolven3fit.py @@ -23,11 +23,6 @@ def assert_sorted(arr, title): raise ValueError(f"The values of {title} are not sorted!") -def check_consecutive_members(grid, value): - """Check if the first occurrence of value in grid is followed by value again""" - return np.allclose(grid[list(grid).index(value) + 1], value) - - def check_lhapdf_info(info_path): """Check the LHAPDF info file is correct""" info = yaml.load(info_path.open("r", encoding="utf-8")) @@ -77,24 +72,40 @@ def check_lhapdf_dat(dat_path, info): # Use allclose here to avoid failing because of a different in the 7th place np.testing.assert_allclose(q[-1], info["QMax"]) + +def test_generate_q2grid(): + """Tests the creation of the default grids for different values of nf + and whether the matched grid is generating points in the desired locations + """ + # nf 3, q0 = 1.0 + grid = utils.generate_q2grid(None, None, None, {}, 3) + assert grid[0] == 1.0**2 + # nf 4, q0 = 1.65 + grid = utils.generate_q2grid(None, None, None, {}, 4) + assert grid[0] == 1.65**2 + + for nf in [1, 2, 5, 6]: + with pytest.raises(NotImplementedError): + grid = utils.generate_q2grid(None, None, None, {}, nf) + + with pytest.raises(ValueError): + grid = utils.generate_q2grid(None, None, None, {}) -def test_utils(): - # Testing the default grid - grid = utils.generate_q2grid(1.65, None, None, {}) - assert_allclose(1.65**2, grid[0]) - assert len(grid) == 50 - # We expect the bottom mass to be repeated twice because it is intended once in 4 flavors and once in 5 flavors. - assert check_consecutive_members(grid, 4.92**2) - # Testing if the points of the matching are correctly repeated twice matched_grid = utils.generate_q2grid(1.65, 1.0e5, 100, {4.92: 2.0, 100: 1.0}) - assert len(matched_grid) == 100 + t1 = 4.92 * 2.0 + t2 = 100.0 * 1.0 + + assert_allclose((1.65) ** 2, matched_grid[0]) assert_allclose((1.0e5) ** 2, matched_grid[-1]) - assert check_consecutive_members(matched_grid, (4.92 * 2.0) ** 2) - assert check_consecutive_members(matched_grid, (100.0 * 1.0) ** 2) + assert t1**2 in matched_grid + assert t2**2 in matched_grid + + +def test_utils(): # Testing the fake LHAPDF class q20 = 1.65**2 x_grid = np.geomspace(1.0e-7, 1.0, 30) - fake_grids = [[x * (1.0 - x) for x in x_grid] for pid in PIDS_DICT.keys()] + fake_grids = [[x * (1.0 - x) for x in x_grid] for _ in PIDS_DICT.keys()] pdf_grid = dict([(pid, v) for pid, v in zip(range(len(PIDS_DICT)), fake_grids)]) my_PDF = utils.LhapdfLike(pdf_grid, q20, x_grid) assert my_PDF.hasFlavor(6) @@ -133,10 +144,15 @@ def test_eko_utils(tmp_path): t_card_dict["order"][0] == pto + 1 ) # This is due to a different convention in eko orders due to QED assert_allclose(op_card_dict["xgrid"], x_grid) - assert_allclose(op_card_dict["mugrid"][0], (1.65, 4)) + # In theory 162 the charm threshold is at 1.51 + # and we should find two entries, one for nf=3 and another one for nf=4 + assert_allclose(op_card_dict["mugrid"][0], (1.51, 3)) + assert_allclose(op_card_dict["mugrid"][1], (1.51, 4)) + # Then (with the number of points we chosen it will happen in position 2,3 + # we will find the bottom threshold at two different nf + assert_allclose(op_card_dict["mugrid"][2], (4.92, 4)) + assert_allclose(op_card_dict["mugrid"][3], (4.92, 5)) assert_allclose(op_card_dict["mugrid"][-1], (q_fin, 5)) - # In this case there are not enough points to have twice the bottom matching scale - assert_allclose(op_card_dict["mugrid"][1], (4.92, 5)) # Testing computation of eko save_path = tmp_path / "ekotest.tar" runner.solve(t_card, op_card, save_path) From 88b17dc99040f722c1886b55dc970cfb8bb321a3 Mon Sep 17 00:00:00 2001 From: Mark Nestor Costantini Date: Mon, 12 Jun 2023 17:55:51 +0100 Subject: [PATCH 12/69] fix bug due to pd.groupby alphabetical ordering --- validphys2/src/validphys/pseudodata.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/validphys2/src/validphys/pseudodata.py b/validphys2/src/validphys/pseudodata.py index f5d6fb0389..20f8588ae6 100644 --- a/validphys2/src/validphys/pseudodata.py +++ b/validphys2/src/validphys/pseudodata.py @@ -369,15 +369,21 @@ def make_level1_data(data, level0_commondata_wc, filterseed, experiments_index, indexed_level1_data = indexed_make_replica(experiments_index, level1_data) + dataset_order = [cd.setname for cd in level0_commondata_wc] + # ===== create commondata instances with central values given by pseudo_data =====# level1_commondata_dict = {c.setname: c for c in level0_commondata_wc} level1_commondata_instances_wc = [] + # note that groupby sorts alphabetically for xx, grp in indexed_level1_data.groupby('dataset'): level1_commondata_instances_wc.append( level1_commondata_dict[xx].with_central_value(grp.values) ) - + # sort back so as to mantain same order as in level0_commondata_wc + level1_commondata_instances_wc = sorted( + level1_commondata_instances_wc, key=lambda obj: dataset_order.index(obj.setname) + ) return level1_commondata_instances_wc From 6e98bf887ba6b9466fa52db04be95cc72ab53f0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Tue, 13 Jun 2023 13:09:17 +0200 Subject: [PATCH 13/69] Use _ for unused varibles --- validphys2/src/validphys/photon/compute.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/validphys2/src/validphys/photon/compute.py b/validphys2/src/validphys/photon/compute.py index 2b94d1f795..657e807ba2 100644 --- a/validphys2/src/validphys/photon/compute.py +++ b/validphys2/src/validphys/photon/compute.py @@ -156,7 +156,7 @@ def compute_photon_array(self, replica): ) # Apply EKO to PDFs - for (mu2, nf), elem in eko.items(): + for _, elem in eko.items(): pdfs_final = np.einsum("ajbk,bk", elem.operator, pdfs_init) photon_Q0 = pdfs_final[ph_id] From fcc3e8e101ce61f56bdcc728491801394af712ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Tue, 13 Jun 2023 22:06:10 +0200 Subject: [PATCH 14/69] Add qed test in test_evolven3fit.py --- n3fit/runcards/examples/Basic_runcard_qed.yml | 2 +- n3fit/src/n3fit/tests/test_evolven3fit.py | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/n3fit/runcards/examples/Basic_runcard_qed.yml b/n3fit/runcards/examples/Basic_runcard_qed.yml index 309f5901d5..d07e9d6cfb 100644 --- a/n3fit/runcards/examples/Basic_runcard_qed.yml +++ b/n3fit/runcards/examples/Basic_runcard_qed.yml @@ -95,7 +95,7 @@ datacuts: ############################################################ theory: - theoryid: 522 # database id + theoryid: 523 # database id ############################################################ trvlseed: 1551864071 diff --git a/n3fit/src/n3fit/tests/test_evolven3fit.py b/n3fit/src/n3fit/tests/test_evolven3fit.py index 1796095df1..22708c6279 100644 --- a/n3fit/src/n3fit/tests/test_evolven3fit.py +++ b/n3fit/src/n3fit/tests/test_evolven3fit.py @@ -169,3 +169,29 @@ def test_perform_evolution(tmp_path, fitname): info = check_lhapdf_info(tmp_info) for datpath in tmp_nnfit.glob("replica_*/*.dat"): check_lhapdf_dat(datpath, info) + + +@pytest.mark.parametrize("fitname", ["Basic_runcard_qed_3replicas_lowprec_398"]) +def test_perform_evolution_qed(tmp_path, fitname): + """Test that evolven3fit_new is able to utilize the current eko in the respective theory. + In addition checks that the generated .info files are correct + """ + fit = API.fit(fit=fitname) + # Move the fit to a temporary folder + tmp_fit = tmp_path / fitname + shutil.copytree(fit.path, tmp_fit) + # Clear the .log and .dat files + (tmp_fit / "evolven3fit_new.log").unlink() + tmp_nnfit = tmp_fit / "nnfit" + tmp_info = tmp_nnfit / f"{fitname}.info" + tmp_info.unlink() + for datpath in tmp_nnfit.glob("replica_*/*.dat"): + datpath.unlink() + + # And re-evolve the fit + sp.run(["evolven3fit_new", "evolve", fitname], cwd=tmp_path, check=True) + + # check that everything worked! + info = check_lhapdf_info(tmp_info) + for datpath in tmp_nnfit.glob("replica_*/*.dat"): + check_lhapdf_dat(datpath, info) From 5e7176ef48e6020447d1e2037b85148100ff2258 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Tue, 13 Jun 2023 23:02:35 +0200 Subject: [PATCH 15/69] Add qed test in test_fit --- .../n3fit/tests/regressions/quickcard_qed.yml | 92 ++++++++++++++++++ .../tests/regressions/quickcard_qed_1.json | 95 +++++++++++++++++++ .../tests/regressions/quickcard_qed_2.json | 95 +++++++++++++++++++ 3 files changed, 282 insertions(+) create mode 100644 n3fit/src/n3fit/tests/regressions/quickcard_qed.yml create mode 100644 n3fit/src/n3fit/tests/regressions/quickcard_qed_1.json create mode 100644 n3fit/src/n3fit/tests/regressions/quickcard_qed_2.json diff --git a/n3fit/src/n3fit/tests/regressions/quickcard_qed.yml b/n3fit/src/n3fit/tests/regressions/quickcard_qed.yml new file mode 100644 index 0000000000..950e32c58c --- /dev/null +++ b/n3fit/src/n3fit/tests/regressions/quickcard_qed.yml @@ -0,0 +1,92 @@ +# +# Configuration file for n3fit regression tests +# This runcard includes two DIS datasets, one Hadronic dataset +# and two positivity datasets +# + +############################################################ +description: n3fit regression test + +############################################################ +# frac: training fraction +# ewk: apply ewk k-factors +# sys: systematics treatment (see systypes) +dataset_inputs: +- { dataset: NMC, frac: 0.5 } +- { dataset: SLACP_dwsh, frac: 0.5} +- { dataset: CMSZDIFF12, frac: 0.5, cfac: ['QCD'], sys: 10 } +- { dataset: ATLASTTBARTOT8TEV, frac: 1.0, cfac: ['QCD'] } + +############################################################ +datacuts: + t0pdfset: NNPDF40_nnlo_as_01180 # PDF set to generate t0 covmat + q2min : 3.49 # Q2 minimum + w2min : 12.5 # W2 minimum + combocuts : NNPDF31 # NNPDF3.0 final kin. cuts + jetptcut_tev : 0 # jet pt cut for tevatron + jetptcut_lhc : 0 # jet pt cut for lhc + wptcut_lhc : 30.0 # Minimum pT for W pT diff distributions + jetycut_tev : 1e30 # jet rap. cut for tevatron + jetycut_lhc : 1e30 # jet rap. cut for lhc + dymasscut_min: 0 # dy inv.mass. min cut + dymasscut_max: 1e30 # dy inv.mass. max cut + jetcfactcut : 1e30 # jet cfact. cut + +############################################################ +theory: + theoryid: 398 # database id + +############################################################ +genrep: True # on = generate MC replicas, False = use real data +trvlseed: 3 +nnseed: 2 +mcseed: 1 + +load: "weights.h5" + +parameters: # This defines the parameter dictionary that is passed to the Model Trainer + nodes_per_layer: [15, 10, 8] + activation_per_layer: ['sigmoid', 'sigmoid', 'linear'] + initializer: 'glorot_normal' + optimizer: + optimizer_name: 'RMSprop' + learning_rate: 0.00001 + clipnorm: 1.0 + epochs: 1100 + positivity: + multiplier: 1.05 + initial: 1.5 + stopping_patience: 0.10 # percentage of the number of epochs + layer_type: 'dense' + dropout: 0.0 + threshold_chi2: 10.0 + +fitting: + fitbasis: NN31IC # EVOL (7), EVOLQED (8), etc. + basis: + - { fl: sng, smallx: [1.05,1.19], largex: [1.47,2.70] } + - { fl: g, smallx: [0.94,1.25], largex: [0.11,5.87] } + - { fl: v, smallx: [0.54,0.75], largex: [1.15,2.76] } + - { fl: v3, smallx: [0.21,0.57], largex: [1.35,3.08] } + - { fl: v8, smallx: [0.52,0.76], largex: [0.77,3.56] } + - { fl: t3, smallx: [-0.37,1.52], largex: [1.74,3.39] } + - { fl: t8, smallx: [0.56,1.29], largex: [1.45,3.03] } + - { fl: cp, smallx: [0.12,1.19], largex: [1.83,6.70] } + +############################################################ +positivity: + posdatasets: + - { dataset: POSF2U, maxlambda: 1e6 } # Positivity Lagrange Multiplier + - { dataset: POSDYS, maxlambda: 1e5 } + +integrability: + integdatasets: + - {dataset: INTEGXT8, maxlambda: 1e2} + +############################################################ +debug: true + +fiatlux: + luxset: NNPDF40_nnlo_as_01180 + additional_errors: true # should be set to true only for the last iteration + luxseed: 1234567890 diff --git a/n3fit/src/n3fit/tests/regressions/quickcard_qed_1.json b/n3fit/src/n3fit/tests/regressions/quickcard_qed_1.json new file mode 100644 index 0000000000..5c47a02aa6 --- /dev/null +++ b/n3fit/src/n3fit/tests/regressions/quickcard_qed_1.json @@ -0,0 +1,95 @@ +{ + "preprocessing": [ + { + "fl": "sng", + "smallx": 1.1307647228240967, + "largex": 2.6348154544830322, + "trainable": true + }, + { + "fl": "g", + "smallx": 1.1853630542755127, + "largex": 1.5627975463867188, + "trainable": true + }, + { + "fl": "v", + "smallx": 0.5399999022483826, + "largex": 2.004500150680542, + "trainable": true + }, + { + "fl": "v3", + "smallx": 0.3061821758747101, + "largex": 2.6243231296539307, + "trainable": true + }, + { + "fl": "v8", + "smallx": 0.5774596929550171, + "largex": 2.120253801345825, + "trainable": true + }, + { + "fl": "t3", + "smallx": 1.3441987037658691, + "largex": 1.7566683292388916, + "trainable": true + }, + { + "fl": "t8", + "smallx": 1.04995858669281, + "largex": 1.945939064025879, + "trainable": true + }, + { + "fl": "cp", + "smallx": 0.7400740385055542, + "largex": 3.461853504180908, + "trainable": true + } + ], + "stop_epoch": 1100, + "best_epoch": 1099, + "erf_tr": 31.479900360107422, + "erf_vl": 28.42186164855957, + "chi2": 19.602598190307617, + "pos_state": "POS_VETO", + "arc_lengths": [ + 1.0355354158791996, + 1.1952711188285763, + 1.0889863228847247, + 1.3354546180547748, + 1.0845053775983715 + ], + "integrability": [ + 0.002640353239258264, + 0.002640353239257265, + 0.00025514093067380283, + 3.289671421051026, + 0.0039052469655898037 + ], + "timing": { + "walltime": { + "Total": 1332.9973878860474, + "start": 0.0, + "replica_set": 0.539992094039917, + "replica_fitted": 1332.997339963913, + "replica_set_to_replica_fitted": 1332.457347869873 + }, + "cputime": { + "Total": 1332.938156, + "start": 0.0, + "replica_set": 2.026674, + "replica_fitted": 1332.938103, + "replica_set_to_replica_fitted": 1330.911429 + } + }, + "version": { + "keras": "2.10.0", + "tensorflow": "2.10.0, mkl=False", + "numpy": "1.22.4", + "nnpdf": "4.0.6.840+gfcc3e8e10-dev", + "validphys": "4.0.6.840+gfcc3e8e10-dev" + } +} \ No newline at end of file diff --git a/n3fit/src/n3fit/tests/regressions/quickcard_qed_2.json b/n3fit/src/n3fit/tests/regressions/quickcard_qed_2.json new file mode 100644 index 0000000000..15077e500e --- /dev/null +++ b/n3fit/src/n3fit/tests/regressions/quickcard_qed_2.json @@ -0,0 +1,95 @@ +{ + "preprocessing": [ + { + "fl": "sng", + "smallx": 1.1090877056121826, + "largex": 2.683891534805298, + "trainable": true + }, + { + "fl": "g", + "smallx": 0.9399998784065247, + "largex": 1.6251798868179321, + "trainable": true + }, + { + "fl": "v", + "smallx": 0.7499998211860657, + "largex": 1.726711630821228, + "trainable": true + }, + { + "fl": "v3", + "smallx": 0.2121002972126007, + "largex": 1.3534746170043945, + "trainable": true + }, + { + "fl": "v8", + "smallx": 0.7599999308586121, + "largex": 2.390061616897583, + "trainable": true + }, + { + "fl": "t3", + "smallx": 1.4388009309768677, + "largex": 2.2958621978759766, + "trainable": true + }, + { + "fl": "t8", + "smallx": 1.0386217832565308, + "largex": 1.7531665563583374, + "trainable": true + }, + { + "fl": "cp", + "smallx": 0.24638593196868896, + "largex": 2.7976953983306885, + "trainable": true + } + ], + "stop_epoch": 1100, + "best_epoch": 1099, + "erf_tr": 3.5775744915008545, + "erf_vl": 3.6801669597625732, + "chi2": 2.1422781944274902, + "pos_state": "POS_VETO", + "arc_lengths": [ + 1.320261058152196, + 1.2008326348375713, + 1.0538968228329768, + 5.092393152077501, + 1.0856575181085886 + ], + "integrability": [ + 0.029426240362226908, + 0.029426240362226963, + 0.0003942905323124357, + 12.764077186584473, + 0.029728015419096226 + ], + "timing": { + "walltime": { + "Total": 1296.5483038425446, + "start": 0.0, + "replica_set": 0.4714009761810303, + "replica_fitted": 1296.5482459068298, + "replica_set_to_replica_fitted": 1296.0768449306488 + }, + "cputime": { + "Total": 1296.4548610000002, + "start": 0.0, + "replica_set": 2.022157, + "replica_fitted": 1296.454798, + "replica_set_to_replica_fitted": 1294.4326409999999 + } + }, + "version": { + "keras": "2.10.0", + "tensorflow": "2.10.0, mkl=False", + "numpy": "1.22.4", + "nnpdf": "4.0.6.840+gfcc3e8e10-dev", + "validphys": "4.0.6.840+gfcc3e8e10-dev" + } +} \ No newline at end of file From 0af300487d7c4412bec587b1a510d5afcbef2ca2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Tue, 13 Jun 2023 23:03:00 +0200 Subject: [PATCH 16/69] Add qed test in test_fit 2 --- n3fit/src/n3fit/tests/test_fit.py | 48 +++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/n3fit/src/n3fit/tests/test_fit.py b/n3fit/src/n3fit/tests/test_fit.py index 80a329faa0..496115ea50 100644 --- a/n3fit/src/n3fit/tests/test_fit.py +++ b/n3fit/src/n3fit/tests/test_fit.py @@ -33,6 +33,7 @@ log = logging.getLogger(__name__) REGRESSION_FOLDER = pathlib.Path(__file__).with_name("regressions") QUICKNAME = "quickcard" +QUICKNAME_QED = "quickcard_qed" EXE = "n3fit" REPLICA = "1" EXPECTED_MAX_FITTIME = 130 # seen mac ~ 180 and linux ~ 90 @@ -153,3 +154,50 @@ def test_weirdbasis(tmp_path, timing=30): # with pytest.raises(sp.TimeoutExpired): with pytest.raises(sp.CalledProcessError): sp.run(f"{EXE} {quickcard} {REPLICA}".split(), cwd=tmp_path, timeout=timing, check=True) + + +def auxiliary_performfit_qed(tmp_path, replica=1, timing=True, rel_error=2e-3): + """Fits quickcard and checks the json file to ensure the results have not changed. + """ + quickcard = f"{QUICKNAME_QED}.yml" + # Prepare the runcard + quickpath = REGRESSION_FOLDER / quickcard + weightpath = REGRESSION_FOLDER / f"weights_{replica}.h5" + # read up the previous json file for the given replica + old_json = load_data(REGRESSION_FOLDER / f"{QUICKNAME_QED}_{replica}.json") + # cp runcard and weights to tmp folder + shutil.copy(quickpath, tmp_path) + shutil.copy(weightpath, tmp_path / "weights.h5") + # run the fit + sp.run(f"{EXE} {quickcard} {replica}".split(), cwd=tmp_path, check=True) + # read up json files + full_json = tmp_path / f"{QUICKNAME_QED}/nnfit/replica_{replica}/{QUICKNAME_QED}.json" + new_json = load_data(full_json) + # Now compare to regression results, taking into account precision won't be 100% + equal_checks = ["stop_epoch", "pos_state"] + approx_checks = ["erf_tr", "erf_vl", "chi2", "best_epoch", "arc_lengths", "integrability", "best_epoch"] + for key in equal_checks: + assert_equal(new_json[key], old_json[key]) + for key in approx_checks: + if old_json[key] is None and new_json[key] is None: + continue + assert_allclose(new_json[key], old_json[key], rtol=rel_error) + # check that the times didnt grow in a weird manner + if timing: + # Better to catch up errors even when they happen to grow larger by chance + times = new_json["timing"] + fitting_time = times["walltime"]["replica_set_to_replica_fitted"] + assert fitting_time < EXPECTED_MAX_FITTIME + # For safety, check also the version + assert new_json["version"]["nnpdf"] == n3fit.__version__ + + +@pytest.mark.darwin +def test_performfit_qed(tmp_path): + auxiliary_performfit_qed(tmp_path, replica=2, timing=False, rel_error=1e-1) + + +@pytest.mark.linux +@pytest.mark.parametrize("replica", [1, 2]) +def test_performfit_and_timing_qed(tmp_path, replica): + auxiliary_performfit_qed(tmp_path, replica=replica, timing=True) \ No newline at end of file From 22566646bfa1baa1c72996ba85561a2022a4cb3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Wed, 14 Jun 2023 10:23:19 +0200 Subject: [PATCH 17/69] Refector QED tests --- n3fit/src/n3fit/tests/test_evolven3fit.py | 27 +--------- n3fit/src/n3fit/tests/test_fit.py | 61 +++-------------------- 2 files changed, 9 insertions(+), 79 deletions(-) diff --git a/n3fit/src/n3fit/tests/test_evolven3fit.py b/n3fit/src/n3fit/tests/test_evolven3fit.py index 22708c6279..4d0f0c4dda 100644 --- a/n3fit/src/n3fit/tests/test_evolven3fit.py +++ b/n3fit/src/n3fit/tests/test_evolven3fit.py @@ -145,7 +145,7 @@ def test_eko_utils(tmp_path): assert_allclose(list(eko_op.operator_card.raw["mugrid"]), op_card_dict["mugrid"]) -@pytest.mark.parametrize("fitname", ["Basic_runcard_3replicas_lowprec_399"]) +@pytest.mark.parametrize("fitname", ["Basic_runcard_3replicas_lowprec_399", "Basic_runcard_qed_3replicas_lowprec_398"]) def test_perform_evolution(tmp_path, fitname): """Test that evolven3fit_new is able to utilize the current eko in the respective theory. In addition checks that the generated .info files are correct @@ -170,28 +170,3 @@ def test_perform_evolution(tmp_path, fitname): for datpath in tmp_nnfit.glob("replica_*/*.dat"): check_lhapdf_dat(datpath, info) - -@pytest.mark.parametrize("fitname", ["Basic_runcard_qed_3replicas_lowprec_398"]) -def test_perform_evolution_qed(tmp_path, fitname): - """Test that evolven3fit_new is able to utilize the current eko in the respective theory. - In addition checks that the generated .info files are correct - """ - fit = API.fit(fit=fitname) - # Move the fit to a temporary folder - tmp_fit = tmp_path / fitname - shutil.copytree(fit.path, tmp_fit) - # Clear the .log and .dat files - (tmp_fit / "evolven3fit_new.log").unlink() - tmp_nnfit = tmp_fit / "nnfit" - tmp_info = tmp_nnfit / f"{fitname}.info" - tmp_info.unlink() - for datpath in tmp_nnfit.glob("replica_*/*.dat"): - datpath.unlink() - - # And re-evolve the fit - sp.run(["evolven3fit_new", "evolve", fitname], cwd=tmp_path, check=True) - - # check that everything worked! - info = check_lhapdf_info(tmp_info) - for datpath in tmp_nnfit.glob("replica_*/*.dat"): - check_lhapdf_dat(datpath, info) diff --git a/n3fit/src/n3fit/tests/test_fit.py b/n3fit/src/n3fit/tests/test_fit.py index 496115ea50..8cc009fa53 100644 --- a/n3fit/src/n3fit/tests/test_fit.py +++ b/n3fit/src/n3fit/tests/test_fit.py @@ -65,10 +65,10 @@ def test_initialize_seeds(): assert len({replica_mcseed(rep, 1, True) for rep in same_replicas}) == 1 -def auxiliary_performfit(tmp_path, replica=1, timing=True, rel_error=2e-3): +def auxiliary_performfit(tmp_path, runcard=QUICKNAME, replica=1, timing=True, rel_error=2e-3): """Fits quickcard and checks the json file to ensure the results have not changed. """ - quickcard = f"{QUICKNAME}.yml" + quickcard = f"{runcard}.yml" # Prepare the runcard quickpath = REGRESSION_FOLDER / quickcard weightpath = REGRESSION_FOLDER / f"weights_{replica}.h5" @@ -102,14 +102,16 @@ def auxiliary_performfit(tmp_path, replica=1, timing=True, rel_error=2e-3): @pytest.mark.darwin -def test_performfit(tmp_path): - auxiliary_performfit(tmp_path, replica=2, timing=False, rel_error=1e-1) +@pytest.mark.parametrize("runcard", [QUICKNAME, QUICKNAME_QED]) +def test_performfit(tmp_path, runcard): + auxiliary_performfit(tmp_path, runcard=runcard, replica=2, timing=False, rel_error=1e-1) @pytest.mark.linux @pytest.mark.parametrize("replica", [1, 2]) -def test_performfit_and_timing(tmp_path, replica): - auxiliary_performfit(tmp_path, replica=replica, timing=True) +@pytest.mark.parametrize("runcard", [QUICKNAME, QUICKNAME_QED]) +def test_performfit_and_timing(tmp_path, runcard, replica): + auxiliary_performfit(tmp_path, runcard=runcard, replica=replica, timing=True) @pytest.mark.skip(reason="Still not implemented in parallel mode") @@ -154,50 +156,3 @@ def test_weirdbasis(tmp_path, timing=30): # with pytest.raises(sp.TimeoutExpired): with pytest.raises(sp.CalledProcessError): sp.run(f"{EXE} {quickcard} {REPLICA}".split(), cwd=tmp_path, timeout=timing, check=True) - - -def auxiliary_performfit_qed(tmp_path, replica=1, timing=True, rel_error=2e-3): - """Fits quickcard and checks the json file to ensure the results have not changed. - """ - quickcard = f"{QUICKNAME_QED}.yml" - # Prepare the runcard - quickpath = REGRESSION_FOLDER / quickcard - weightpath = REGRESSION_FOLDER / f"weights_{replica}.h5" - # read up the previous json file for the given replica - old_json = load_data(REGRESSION_FOLDER / f"{QUICKNAME_QED}_{replica}.json") - # cp runcard and weights to tmp folder - shutil.copy(quickpath, tmp_path) - shutil.copy(weightpath, tmp_path / "weights.h5") - # run the fit - sp.run(f"{EXE} {quickcard} {replica}".split(), cwd=tmp_path, check=True) - # read up json files - full_json = tmp_path / f"{QUICKNAME_QED}/nnfit/replica_{replica}/{QUICKNAME_QED}.json" - new_json = load_data(full_json) - # Now compare to regression results, taking into account precision won't be 100% - equal_checks = ["stop_epoch", "pos_state"] - approx_checks = ["erf_tr", "erf_vl", "chi2", "best_epoch", "arc_lengths", "integrability", "best_epoch"] - for key in equal_checks: - assert_equal(new_json[key], old_json[key]) - for key in approx_checks: - if old_json[key] is None and new_json[key] is None: - continue - assert_allclose(new_json[key], old_json[key], rtol=rel_error) - # check that the times didnt grow in a weird manner - if timing: - # Better to catch up errors even when they happen to grow larger by chance - times = new_json["timing"] - fitting_time = times["walltime"]["replica_set_to_replica_fitted"] - assert fitting_time < EXPECTED_MAX_FITTIME - # For safety, check also the version - assert new_json["version"]["nnpdf"] == n3fit.__version__ - - -@pytest.mark.darwin -def test_performfit_qed(tmp_path): - auxiliary_performfit_qed(tmp_path, replica=2, timing=False, rel_error=1e-1) - - -@pytest.mark.linux -@pytest.mark.parametrize("replica", [1, 2]) -def test_performfit_and_timing_qed(tmp_path, replica): - auxiliary_performfit_qed(tmp_path, replica=replica, timing=True) \ No newline at end of file From 5a319fc7f4a4fd38df319db5b8b3e3d041f8c63b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Wed, 14 Jun 2023 11:02:52 +0200 Subject: [PATCH 18/69] Fix test --- n3fit/src/n3fit/tests/test_fit.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/n3fit/src/n3fit/tests/test_fit.py b/n3fit/src/n3fit/tests/test_fit.py index 8cc009fa53..97d7d55175 100644 --- a/n3fit/src/n3fit/tests/test_fit.py +++ b/n3fit/src/n3fit/tests/test_fit.py @@ -73,14 +73,14 @@ def auxiliary_performfit(tmp_path, runcard=QUICKNAME, replica=1, timing=True, re quickpath = REGRESSION_FOLDER / quickcard weightpath = REGRESSION_FOLDER / f"weights_{replica}.h5" # read up the previous json file for the given replica - old_json = load_data(REGRESSION_FOLDER / f"{QUICKNAME}_{replica}.json") + old_json = load_data(REGRESSION_FOLDER / f"{runcard}_{replica}.json") # cp runcard and weights to tmp folder shutil.copy(quickpath, tmp_path) shutil.copy(weightpath, tmp_path / "weights.h5") # run the fit sp.run(f"{EXE} {quickcard} {replica}".split(), cwd=tmp_path, check=True) # read up json files - full_json = tmp_path / f"{QUICKNAME}/nnfit/replica_{replica}/{QUICKNAME}.json" + full_json = tmp_path / f"{runcard}/nnfit/replica_{replica}/{runcard}.json" new_json = load_data(full_json) # Now compare to regression results, taking into account precision won't be 100% equal_checks = ["stop_epoch", "pos_state"] From 9758018eaea080cba7cea19562fda45f084ddd4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Wed, 14 Jun 2023 11:21:47 +0200 Subject: [PATCH 19/69] Add fiatlux precision in the runcard --- n3fit/runcards/examples/Basic_runcard_qed.yml | 1 + .../n3fit/tests/regressions/quickcard_qed.yml | 1 + .../tests/regressions/quickcard_qed_1.json | 46 +++++++-------- .../tests/regressions/quickcard_qed_2.json | 58 +++++++++---------- validphys2/src/validphys/photon/compute.py | 8 ++- 5 files changed, 61 insertions(+), 53 deletions(-) diff --git a/n3fit/runcards/examples/Basic_runcard_qed.yml b/n3fit/runcards/examples/Basic_runcard_qed.yml index d07e9d6cfb..d7ccf7b9c1 100644 --- a/n3fit/runcards/examples/Basic_runcard_qed.yml +++ b/n3fit/runcards/examples/Basic_runcard_qed.yml @@ -169,3 +169,4 @@ fiatlux: luxset: NNPDF40_nnlo_as_01180 additional_errors: true # should be set to true only for the last iteration luxseed: 1234567890 + abs_err: 1e-2 diff --git a/n3fit/src/n3fit/tests/regressions/quickcard_qed.yml b/n3fit/src/n3fit/tests/regressions/quickcard_qed.yml index 950e32c58c..5995b99d60 100644 --- a/n3fit/src/n3fit/tests/regressions/quickcard_qed.yml +++ b/n3fit/src/n3fit/tests/regressions/quickcard_qed.yml @@ -90,3 +90,4 @@ fiatlux: luxset: NNPDF40_nnlo_as_01180 additional_errors: true # should be set to true only for the last iteration luxseed: 1234567890 + abs_err: 1e-2 diff --git a/n3fit/src/n3fit/tests/regressions/quickcard_qed_1.json b/n3fit/src/n3fit/tests/regressions/quickcard_qed_1.json index 5c47a02aa6..fd7c92d36d 100644 --- a/n3fit/src/n3fit/tests/regressions/quickcard_qed_1.json +++ b/n3fit/src/n3fit/tests/regressions/quickcard_qed_1.json @@ -51,45 +51,45 @@ ], "stop_epoch": 1100, "best_epoch": 1099, - "erf_tr": 31.479900360107422, - "erf_vl": 28.42186164855957, - "chi2": 19.602598190307617, + "erf_tr": 31.479909896850586, + "erf_vl": 28.421838760375977, + "chi2": 19.602609634399414, "pos_state": "POS_VETO", "arc_lengths": [ - 1.0355354158791996, - 1.1952711188285763, - 1.0889863228847247, - 1.3354546180547748, - 1.0845053775983715 + 1.0355354274955006, + 1.195271539211688, + 1.088986348499315, + 1.335431714155942, + 1.0845053845820272 ], "integrability": [ - 0.002640353239258264, - 0.002640353239257265, - 0.00025514093067380283, - 3.289671421051026, - 0.0039052469655898037 + 0.0026403537049198844, + 0.00264035370491833, + 0.00025512540650873827, + 3.2896719574928284, + 0.0039052472275233896 ], "timing": { "walltime": { - "Total": 1332.9973878860474, + "Total": 53.36410307884216, "start": 0.0, - "replica_set": 0.539992094039917, - "replica_fitted": 1332.997339963913, - "replica_set_to_replica_fitted": 1332.457347869873 + "replica_set": 0.47026801109313965, + "replica_fitted": 53.364020109176636, + "replica_set_to_replica_fitted": 52.893752098083496 }, "cputime": { - "Total": 1332.938156, + "Total": 55.200050000000005, "start": 0.0, - "replica_set": 2.026674, - "replica_fitted": 1332.938103, - "replica_set_to_replica_fitted": 1330.911429 + "replica_set": 2.1680059999999983, + "replica_fitted": 55.199962, + "replica_set_to_replica_fitted": 53.031956 } }, "version": { "keras": "2.10.0", "tensorflow": "2.10.0, mkl=False", "numpy": "1.22.4", - "nnpdf": "4.0.6.840+gfcc3e8e10-dev", - "validphys": "4.0.6.840+gfcc3e8e10-dev" + "nnpdf": "4.0.6.844+g5a319fc7f-dev", + "validphys": "4.0.6.844+g5a319fc7f-dev" } } \ No newline at end of file diff --git a/n3fit/src/n3fit/tests/regressions/quickcard_qed_2.json b/n3fit/src/n3fit/tests/regressions/quickcard_qed_2.json index 15077e500e..2294d90a85 100644 --- a/n3fit/src/n3fit/tests/regressions/quickcard_qed_2.json +++ b/n3fit/src/n3fit/tests/regressions/quickcard_qed_2.json @@ -2,32 +2,32 @@ "preprocessing": [ { "fl": "sng", - "smallx": 1.1090877056121826, + "smallx": 1.1090871095657349, "largex": 2.683891534805298, "trainable": true }, { "fl": "g", "smallx": 0.9399998784065247, - "largex": 1.6251798868179321, + "largex": 1.6251764297485352, "trainable": true }, { "fl": "v", "smallx": 0.7499998211860657, - "largex": 1.726711630821228, + "largex": 1.726712942123413, "trainable": true }, { "fl": "v3", - "smallx": 0.2121002972126007, - "largex": 1.3534746170043945, + "smallx": 0.21201345324516296, + "largex": 1.3534246683120728, "trainable": true }, { "fl": "v8", "smallx": 0.7599999308586121, - "largex": 2.390061616897583, + "largex": 2.3900604248046875, "trainable": true }, { @@ -51,45 +51,45 @@ ], "stop_epoch": 1100, "best_epoch": 1099, - "erf_tr": 3.5775744915008545, - "erf_vl": 3.6801669597625732, - "chi2": 2.1422781944274902, + "erf_tr": 3.57742977142334, + "erf_vl": 3.6800172328948975, + "chi2": 2.142242431640625, "pos_state": "POS_VETO", "arc_lengths": [ - 1.320261058152196, - 1.2008326348375713, - 1.0538968228329768, - 5.092393152077501, - 1.0856575181085886 + 1.320264040560382, + 1.2009584734334209, + 1.053896670589243, + 5.093812560494535, + 1.0856600633895122 ], "integrability": [ - 0.029426240362226908, - 0.029426240362226963, - 0.0003942905323124357, - 12.764077186584473, - 0.029728015419096226 + 0.02942626690492056, + 0.02942626690492034, + 0.00039390505207781423, + 12.764078140258789, + 0.029728126246482744 ], "timing": { "walltime": { - "Total": 1296.5483038425446, + "Total": 53.159754037857056, "start": 0.0, - "replica_set": 0.4714009761810303, - "replica_fitted": 1296.5482459068298, - "replica_set_to_replica_fitted": 1296.0768449306488 + "replica_set": 0.5134978294372559, + "replica_fitted": 53.15968608856201, + "replica_set_to_replica_fitted": 52.646188259124756 }, "cputime": { - "Total": 1296.4548610000002, + "Total": 54.924513, "start": 0.0, - "replica_set": 2.022157, - "replica_fitted": 1296.454798, - "replica_set_to_replica_fitted": 1294.4326409999999 + "replica_set": 2.1671650000000007, + "replica_fitted": 54.92444, + "replica_set_to_replica_fitted": 52.75727499999999 } }, "version": { "keras": "2.10.0", "tensorflow": "2.10.0, mkl=False", "numpy": "1.22.4", - "nnpdf": "4.0.6.840+gfcc3e8e10-dev", - "validphys": "4.0.6.840+gfcc3e8e10-dev" + "nnpdf": "4.0.6.844+g5a319fc7f-dev", + "validphys": "4.0.6.844+g5a319fc7f-dev" } } \ No newline at end of file diff --git a/validphys2/src/validphys/photon/compute.py b/validphys2/src/validphys/photon/compute.py index 657e807ba2..02125d5f29 100644 --- a/validphys2/src/validphys/photon/compute.py +++ b/validphys2/src/validphys/photon/compute.py @@ -19,7 +19,6 @@ FIATLUX_DEFAULT = { "apfel": False, - "eps_base": 1e-5, # precision on final integration of double integral. "eps_rel": 1e-1, # extra precision on any single integration. "mum_proton": 2.792847356, # proton magnetic moment, from # http://pdglive.lbl.gov/DataBlock.action?node=S016MM which itself @@ -59,6 +58,13 @@ def __init__(self, theoryid, lux_params, replicas): # This is going to be changed in favor of a bool em_running # in the runcard fiatlux_runcard["mproton"] = theory["MP"] + if "abs_err" in lux_params: + fiatlux_runcard["eps_base"] = lux_params["abs_err"] + log.info(f"Using eps_base from runcard") + else: + fiatlux_runcard["eps_base"] = 1e-5 # precision on final integration of double integral. + log.info(f"Using default eps_base = 1e-5") + self.replicas = replicas # structure functions From 0a926fdf155f2a759b37e196a9c8b487d8c3baed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Wed, 14 Jun 2023 11:43:05 +0200 Subject: [PATCH 20/69] Rename abs_err -> eps_base --- n3fit/runcards/examples/Basic_runcard_qed.yml | 2 +- n3fit/src/n3fit/tests/regressions/quickcard_qed.yml | 2 +- validphys2/src/validphys/photon/compute.py | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/n3fit/runcards/examples/Basic_runcard_qed.yml b/n3fit/runcards/examples/Basic_runcard_qed.yml index d7ccf7b9c1..9fd98ce1b1 100644 --- a/n3fit/runcards/examples/Basic_runcard_qed.yml +++ b/n3fit/runcards/examples/Basic_runcard_qed.yml @@ -169,4 +169,4 @@ fiatlux: luxset: NNPDF40_nnlo_as_01180 additional_errors: true # should be set to true only for the last iteration luxseed: 1234567890 - abs_err: 1e-2 + eps_base: 1e-2 diff --git a/n3fit/src/n3fit/tests/regressions/quickcard_qed.yml b/n3fit/src/n3fit/tests/regressions/quickcard_qed.yml index 5995b99d60..84a880c44e 100644 --- a/n3fit/src/n3fit/tests/regressions/quickcard_qed.yml +++ b/n3fit/src/n3fit/tests/regressions/quickcard_qed.yml @@ -90,4 +90,4 @@ fiatlux: luxset: NNPDF40_nnlo_as_01180 additional_errors: true # should be set to true only for the last iteration luxseed: 1234567890 - abs_err: 1e-2 + eps_base: 1e-2 diff --git a/validphys2/src/validphys/photon/compute.py b/validphys2/src/validphys/photon/compute.py index 02125d5f29..95525c6177 100644 --- a/validphys2/src/validphys/photon/compute.py +++ b/validphys2/src/validphys/photon/compute.py @@ -58,12 +58,12 @@ def __init__(self, theoryid, lux_params, replicas): # This is going to be changed in favor of a bool em_running # in the runcard fiatlux_runcard["mproton"] = theory["MP"] - if "abs_err" in lux_params: - fiatlux_runcard["eps_base"] = lux_params["abs_err"] - log.info(f"Using eps_base from runcard") + if "eps_base" in lux_params: + fiatlux_runcard["eps_base"] = lux_params["eps_base"] + log.warning(f"Using fiatlux parameter eps_base from runcard") else: fiatlux_runcard["eps_base"] = 1e-5 # precision on final integration of double integral. - log.info(f"Using default eps_base = 1e-5") + log.info(f"Using default value for fiatlux parameter eps_base") self.replicas = replicas From 32e1a868c6583e51b9f32f2f186f7c3ffa257e4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Wed, 14 Jun 2023 17:46:31 +0200 Subject: [PATCH 21/69] Use .json from linux machine --- .../tests/regressions/quickcard_qed_1.json | 54 +++++++-------- .../tests/regressions/quickcard_qed_2.json | 66 +++++++++---------- 2 files changed, 60 insertions(+), 60 deletions(-) diff --git a/n3fit/src/n3fit/tests/regressions/quickcard_qed_1.json b/n3fit/src/n3fit/tests/regressions/quickcard_qed_1.json index fd7c92d36d..db2b66daf2 100644 --- a/n3fit/src/n3fit/tests/regressions/quickcard_qed_1.json +++ b/n3fit/src/n3fit/tests/regressions/quickcard_qed_1.json @@ -20,8 +20,8 @@ }, { "fl": "v3", - "smallx": 0.3061821758747101, - "largex": 2.6243231296539307, + "smallx": 0.3061824142932892, + "largex": 2.624323606491089, "trainable": true }, { @@ -51,45 +51,45 @@ ], "stop_epoch": 1100, "best_epoch": 1099, - "erf_tr": 31.479909896850586, - "erf_vl": 28.421838760375977, - "chi2": 19.602609634399414, + "erf_tr": 31.486101150512695, + "erf_vl": 28.4218692779541, + "chi2": 19.611825942993164, "pos_state": "POS_VETO", "arc_lengths": [ - 1.0355354274955006, - 1.195271539211688, - 1.088986348499315, - 1.335431714155942, - 1.0845053845820272 + 1.035533162554303, + 1.1953713068471692, + 1.0881025884095246, + 1.3414978876721764, + 1.0839843290638607 ], "integrability": [ - 0.0026403537049198844, - 0.00264035370491833, - 0.00025512540650873827, - 3.2896719574928284, - 0.0039052472275233896 + 0.002653829054906187, + 0.002653829054905521, + 0.0002567724250169823, + 3.2896786332130423, + 0.003927801561079747 ], "timing": { "walltime": { - "Total": 53.36410307884216, + "Total": 58.37841296195984, "start": 0.0, - "replica_set": 0.47026801109313965, - "replica_fitted": 53.364020109176636, - "replica_set_to_replica_fitted": 52.893752098083496 + "replica_set": 0.3208029270172119, + "replica_fitted": 58.37802076339722, + "replica_set_to_replica_fitted": 58.057217836380005 }, "cputime": { - "Total": 55.200050000000005, + "Total": 61.517351913999995, "start": 0.0, - "replica_set": 2.1680059999999983, - "replica_fitted": 55.199962, - "replica_set_to_replica_fitted": 53.031956 + "replica_set": 2.813359167999998, + "replica_fitted": 61.516948647, + "replica_set_to_replica_fitted": 58.703589479 } }, "version": { - "keras": "2.10.0", - "tensorflow": "2.10.0, mkl=False", + "keras": "2.11.0", + "tensorflow": "2.11.0, mkl=False", "numpy": "1.22.4", - "nnpdf": "4.0.6.844+g5a319fc7f-dev", - "validphys": "4.0.6.844+g5a319fc7f-dev" + "nnpdf": "4.0.6.846+g0a926fdf1", + "validphys": "4.0.6.846+g0a926fdf1" } } \ No newline at end of file diff --git a/n3fit/src/n3fit/tests/regressions/quickcard_qed_2.json b/n3fit/src/n3fit/tests/regressions/quickcard_qed_2.json index 2294d90a85..e737991a66 100644 --- a/n3fit/src/n3fit/tests/regressions/quickcard_qed_2.json +++ b/n3fit/src/n3fit/tests/regressions/quickcard_qed_2.json @@ -2,32 +2,32 @@ "preprocessing": [ { "fl": "sng", - "smallx": 1.1090871095657349, + "smallx": 1.1090763807296753, "largex": 2.683891534805298, "trainable": true }, { "fl": "g", "smallx": 0.9399998784065247, - "largex": 1.6251764297485352, + "largex": 1.6250606775283813, "trainable": true }, { "fl": "v", "smallx": 0.7499998211860657, - "largex": 1.726712942123413, + "largex": 1.7267229557037354, "trainable": true }, { "fl": "v3", - "smallx": 0.21201345324516296, - "largex": 1.3534246683120728, + "smallx": 0.21201331913471222, + "largex": 1.3532426357269287, "trainable": true }, { "fl": "v8", - "smallx": 0.7599999308586121, - "largex": 2.3900604248046875, + "smallx": 0.7599998712539673, + "largex": 2.390087127685547, "trainable": true }, { @@ -44,52 +44,52 @@ }, { "fl": "cp", - "smallx": 0.24638593196868896, + "smallx": 0.24638080596923828, "largex": 2.7976953983306885, "trainable": true } ], "stop_epoch": 1100, "best_epoch": 1099, - "erf_tr": 3.57742977142334, - "erf_vl": 3.6800172328948975, - "chi2": 2.142242431640625, + "erf_tr": 3.5809452533721924, + "erf_vl": 3.6826603412628174, + "chi2": 2.141340732574463, "pos_state": "POS_VETO", "arc_lengths": [ - 1.320264040560382, - 1.2009584734334209, - 1.053896670589243, - 5.093812560494535, - 1.0856600633895122 + 1.3194883264768875, + 1.1995146017416334, + 1.054266019685804, + 5.074692492247958, + 1.0689068380364566 ], "integrability": [ - 0.02942626690492056, - 0.02942626690492034, - 0.00039390505207781423, - 12.764078140258789, - 0.029728126246482744 + 0.02917606895789332, + 0.029176068957894374, + 0.0003924771135637162, + 12.764093160629272, + 0.02982003148645135 ], "timing": { "walltime": { - "Total": 53.159754037857056, + "Total": 57.77593541145325, "start": 0.0, - "replica_set": 0.5134978294372559, - "replica_fitted": 53.15968608856201, - "replica_set_to_replica_fitted": 52.646188259124756 + "replica_set": 0.31868839263916016, + "replica_fitted": 57.77560114860535, + "replica_set_to_replica_fitted": 57.45691275596619 }, "cputime": { - "Total": 54.924513, + "Total": 60.771742980000006, "start": 0.0, - "replica_set": 2.1671650000000007, - "replica_fitted": 54.92444, - "replica_set_to_replica_fitted": 52.75727499999999 + "replica_set": 2.6913169609999983, + "replica_fitted": 60.771408723, + "replica_set_to_replica_fitted": 58.080091762 } }, "version": { - "keras": "2.10.0", - "tensorflow": "2.10.0, mkl=False", + "keras": "2.11.0", + "tensorflow": "2.11.0, mkl=False", "numpy": "1.22.4", - "nnpdf": "4.0.6.844+g5a319fc7f-dev", - "validphys": "4.0.6.844+g5a319fc7f-dev" + "nnpdf": "4.0.6.846+g0a926fdf1", + "validphys": "4.0.6.846+g0a926fdf1" } } \ No newline at end of file From e2954aea1f2f346405aaa0f6b3e63baaec87808a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Wed, 14 Jun 2023 22:52:42 +0200 Subject: [PATCH 22/69] Fix very small bug in interp1d --- validphys2/src/validphys/photon/compute.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/validphys2/src/validphys/photon/compute.py b/validphys2/src/validphys/photon/compute.py index 95525c6177..b3d44d01d3 100644 --- a/validphys2/src/validphys/photon/compute.py +++ b/validphys2/src/validphys/photon/compute.py @@ -118,7 +118,7 @@ def __init__(self, theoryid, lux_params, replicas): self.lux[replica].PlugStructureFunctions(f2.fxq, fl.fxq, f2lo.fxq) photon_array = self.compute_photon_array(replica) - self.interpolator.append(interp1d(XGRID, photon_array, fill_value=0.0, kind="cubic")) + self.interpolator.append(interp1d(XGRID, photon_array, fill_value="extrapolate", kind="cubic")) self.integral.append(trapezoid(photon_array, XGRID)) def compute_photon_array(self, replica): From 3d1783d79a498f1da1ce41b2f0dba4507e476177 Mon Sep 17 00:00:00 2001 From: niclaurenti Date: Thu, 15 Jun 2023 15:51:33 +0200 Subject: [PATCH 23/69] Download theoryIDs --- n3fit/src/n3fit/tests/test_evolven3fit.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/n3fit/src/n3fit/tests/test_evolven3fit.py b/n3fit/src/n3fit/tests/test_evolven3fit.py index 4d0f0c4dda..133895ce6b 100644 --- a/n3fit/src/n3fit/tests/test_evolven3fit.py +++ b/n3fit/src/n3fit/tests/test_evolven3fit.py @@ -12,6 +12,7 @@ from reportengine.compat import yaml from validphys.api import API from validphys.pdfbases import PIDS_DICT +from validphys.core import TheoryIDSpec REGRESSION_FOLDER = pathlib.Path(__file__).with_name("regressions") log = logging.getLogger(__name__) @@ -150,6 +151,9 @@ def test_perform_evolution(tmp_path, fitname): """Test that evolven3fit_new is able to utilize the current eko in the respective theory. In addition checks that the generated .info files are correct """ + theory = API.theoryid(theoryid=int(fitname[-3:])) + # check that nothing went wrong + assert isinstance(theory, TheoryIDSpec) fit = API.fit(fit=fitname) # Move the fit to a temporary folder tmp_fit = tmp_path / fitname From 296e2d412716fff109e1211efec0893a88e4ad9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Fri, 16 Jun 2023 09:51:59 +0200 Subject: [PATCH 24/69] Add whitelines --- n3fit/src/n3fit/tests/regressions/quickcard_qed_1.json | 2 +- n3fit/src/n3fit/tests/regressions/quickcard_qed_2.json | 2 +- validphys2/src/validphys/photon/compute.py | 4 +++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/n3fit/src/n3fit/tests/regressions/quickcard_qed_1.json b/n3fit/src/n3fit/tests/regressions/quickcard_qed_1.json index db2b66daf2..a960f7da9f 100644 --- a/n3fit/src/n3fit/tests/regressions/quickcard_qed_1.json +++ b/n3fit/src/n3fit/tests/regressions/quickcard_qed_1.json @@ -92,4 +92,4 @@ "nnpdf": "4.0.6.846+g0a926fdf1", "validphys": "4.0.6.846+g0a926fdf1" } -} \ No newline at end of file +} diff --git a/n3fit/src/n3fit/tests/regressions/quickcard_qed_2.json b/n3fit/src/n3fit/tests/regressions/quickcard_qed_2.json index e737991a66..18e6a605ae 100644 --- a/n3fit/src/n3fit/tests/regressions/quickcard_qed_2.json +++ b/n3fit/src/n3fit/tests/regressions/quickcard_qed_2.json @@ -92,4 +92,4 @@ "nnpdf": "4.0.6.846+g0a926fdf1", "validphys": "4.0.6.846+g0a926fdf1" } -} \ No newline at end of file +} diff --git a/validphys2/src/validphys/photon/compute.py b/validphys2/src/validphys/photon/compute.py index b3d44d01d3..189f801b97 100644 --- a/validphys2/src/validphys/photon/compute.py +++ b/validphys2/src/validphys/photon/compute.py @@ -58,11 +58,13 @@ def __init__(self, theoryid, lux_params, replicas): # This is going to be changed in favor of a bool em_running # in the runcard fiatlux_runcard["mproton"] = theory["MP"] + + # precision on final integration of double integral if "eps_base" in lux_params: fiatlux_runcard["eps_base"] = lux_params["eps_base"] log.warning(f"Using fiatlux parameter eps_base from runcard") else: - fiatlux_runcard["eps_base"] = 1e-5 # precision on final integration of double integral. + fiatlux_runcard["eps_base"] = 1e-5 log.info(f"Using default value for fiatlux parameter eps_base") self.replicas = replicas From 7585eea0267978026de42c113f7cfedec64ca0e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Fri, 16 Jun 2023 10:06:18 +0200 Subject: [PATCH 25/69] Load theoryID from fit --- n3fit/src/n3fit/tests/test_evolven3fit.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/n3fit/src/n3fit/tests/test_evolven3fit.py b/n3fit/src/n3fit/tests/test_evolven3fit.py index 133895ce6b..aeee049ee5 100644 --- a/n3fit/src/n3fit/tests/test_evolven3fit.py +++ b/n3fit/src/n3fit/tests/test_evolven3fit.py @@ -151,10 +151,8 @@ def test_perform_evolution(tmp_path, fitname): """Test that evolven3fit_new is able to utilize the current eko in the respective theory. In addition checks that the generated .info files are correct """ - theory = API.theoryid(theoryid=int(fitname[-3:])) - # check that nothing went wrong - assert isinstance(theory, TheoryIDSpec) fit = API.fit(fit=fitname) + _ = API.theoryid(theoryid=fit.as_input()['theory']['theoryid']) # Move the fit to a temporary folder tmp_fit = tmp_path / fitname shutil.copytree(fit.path, tmp_fit) From 57a5343bdbd7dfe63b46f9151fddd5fc7dae2cd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Fri, 16 Jun 2023 10:36:23 +0200 Subject: [PATCH 26/69] Use test theory in test_compute --- .../validphys/tests/photon/test_compute.py | 135 +++--------------- 1 file changed, 21 insertions(+), 114 deletions(-) diff --git a/validphys2/src/validphys/tests/photon/test_compute.py b/validphys2/src/validphys/tests/photon/test_compute.py index f61b13a6bd..927bcada49 100644 --- a/validphys2/src/validphys/tests/photon/test_compute.py +++ b/validphys2/src/validphys/tests/photon/test_compute.py @@ -1,141 +1,48 @@ from collections import namedtuple from pathlib import Path -import fiatlux import numpy as np from validphys.photon import structure_functions from validphys.photon.compute import Photon, Alpha from validphys.core import PDF as PDFset +from validphys.api import API from ..conftest import PDF from eko.io import EKO +TEST_THEORY = API.theoryid(theoryid=398) -class FakeTheory: - def __init__(self): - self.path = Path("/fake/path/") - - def get_description(self): - return { - "alphaqed": 0.01, - "Qref": 91.2, - "Qedref": 91.2, - "mc": 1.3, - "mb": 4.92, - "mt": 172.0, - "kcThr": 1.0, - "kbThr": 1.0, - "ktThr": 1.0, - "MaxNfAs": 5, - "MaxNfPdf": 5, - "MP": 0.938 - } - - -fiatlux_runcard = { +FIATLUX_RUNCARD = { "luxset": PDFset(PDF), - "additional_errors": False, - "luxseed": 123456789 + "additional_errors": PDFset("LUXqed17_plus_PDF4LHC15_nnlo_100"), + "luxseed": 123456789, + "eps_base": 1e-2, } -photon = namedtuple("photon", ["total", "elastic", "inelastic"]) - - -class FakeFiatlux: - def __init__(self, runcard): - self.runcard = runcard - self.alphaem = None - self.qref = None - self.trash1 = None - self.trash2 = None - self.f2 = None - self.fl = None - self.f2lo = None - self.res = photon(0., 0., 0.) - - def PlugAlphaQED(self, alphaem, qref): - self.alphaem = alphaem - self.qref = qref - - def InsertInelasticSplitQ(self, args): - self.trash1 = args[0] - self.trash2 = args[1] - - def PlugStructureFunctions(self, f2, fl, f2lo): - self.f2 = f2 - self.fl = fl - self.f2lo = f2lo - - def EvaluatePhoton(self, x, q): - return self.res - -class FakeEKO: - def __init__(self, path): - self.path = path - self.mu20 = 100**2 - - def __enter__(self): - return self - - def __exit__(self, exc_type: type, _exc_value, _traceback): - pass - +def test_parameters_init(): -class FakeStructureFunction: - def __init__(self, path, pdfs): - self.path = path - self.pdfs = pdfs - self.q2_max = 1e8 - - def fxq(self): - return 0 - - -class FakeF2LO: - def __init__(self, pdfs, theory): - self.pdfs = pdfs - self.theory = theory - - def fxq(self): - return 0 - - -def test_parameters_init(monkeypatch): - monkeypatch.setattr( - structure_functions, "InterpStructureFunction", FakeStructureFunction - ) - monkeypatch.setattr(structure_functions, "F2LO", FakeF2LO) - monkeypatch.setattr(fiatlux, "FiatLux", FakeFiatlux) - monkeypatch.setattr(Photon, "compute_photon_array", lambda *args: np.zeros(196)) - monkeypatch.setattr(EKO, "read", FakeEKO) - - photon = Photon(FakeTheory(), fiatlux_runcard, [1, 2, 3]) - alpha = Alpha(FakeTheory().get_description()) + photon = Photon(TEST_THEORY, FIATLUX_RUNCARD, [1, 2, 3]) + alpha = Alpha(TEST_THEORY.get_description()) np.testing.assert_equal(photon.replicas, [1, 2, 3]) - np.testing.assert_equal(photon.luxpdfset._name, fiatlux_runcard["luxset"].name) - np.testing.assert_equal(photon.additional_errors, fiatlux_runcard["additional_errors"]) - np.testing.assert_equal(photon.luxseed, fiatlux_runcard["luxseed"]) + np.testing.assert_equal(photon.luxpdfset._name, FIATLUX_RUNCARD["luxset"].name) + np.testing.assert_equal(photon.additional_errors._name, "LUXqed17_plus_PDF4LHC15_nnlo_100") + np.testing.assert_equal(photon.luxseed, FIATLUX_RUNCARD["luxseed"]) + np.testing.assert_equal(photon.path_to_eko_photon, TEST_THEORY.path / "eko_photon.tar") + np.testing.assert_equal(photon.q_in, 100.) np.testing.assert_almost_equal( - alpha.alpha_em_ref, FakeTheory().get_description()["alphaqed"] + alpha.alpha_em_ref, TEST_THEORY.get_description()["alphaqed"] ) def test_masses_init(): - alpha = Alpha(FakeTheory().get_description()) + alpha = Alpha(TEST_THEORY.get_description()) np.testing.assert_equal(alpha.thresh_t, np.inf) np.testing.assert_almost_equal(alpha.thresh_b, 4.92) - np.testing.assert_almost_equal(alpha.thresh_c, 1.3) - -def test_set_thresholds_alpha_em(monkeypatch): - monkeypatch.setattr( - structure_functions, "InterpStructureFunction", FakeStructureFunction - ) - monkeypatch.setattr(structure_functions, "F2LO", FakeF2LO) + np.testing.assert_almost_equal(alpha.thresh_c, 1.51) - monkeypatch.setattr(fiatlux, "FiatLux", FakeFiatlux) - monkeypatch.setattr(Photon, "compute_photon_array", lambda *args: np.zeros(196)) +def test_set_thresholds_alpha_em(): - alpha = Alpha(FakeTheory().get_description()) + alpha = Alpha(TEST_THEORY.get_description()) np.testing.assert_almost_equal(alpha.thresh[5], 91.2) np.testing.assert_almost_equal(alpha.thresh[4], 4.92) @@ -152,7 +59,7 @@ def test_set_thresholds_alpha_em(monkeypatch): np.testing.assert_equal(len(alpha.thresh), 3) def test_betas(): - alpha = Alpha(FakeTheory().get_description()) + alpha = Alpha(TEST_THEORY.get_description()) vec_beta0 = [ -0.5305164769729844, -0.6719875374991137, @@ -167,4 +74,4 @@ def test_betas(): ] for nf in range(3, 6 + 1): np.testing.assert_allclose(alpha.beta0[nf], vec_beta0[nf - 3], rtol=1e-7) - np.testing.assert_allclose(alpha.b1[nf], vec_b1[nf - 3], rtol=1e-7) + np.testing.assert_allclose(alpha.b1[nf], vec_b1[nf - 3], rtol=1e-7) \ No newline at end of file From 077e2ed75e4a360d2dbd5ba5c8bf65fa8a8fe2e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Fri, 16 Jun 2023 10:38:33 +0200 Subject: [PATCH 27/69] Fix charm mass in test --- validphys2/src/validphys/tests/photon/test_compute.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/validphys2/src/validphys/tests/photon/test_compute.py b/validphys2/src/validphys/tests/photon/test_compute.py index 927bcada49..7a25e399c2 100644 --- a/validphys2/src/validphys/tests/photon/test_compute.py +++ b/validphys2/src/validphys/tests/photon/test_compute.py @@ -46,14 +46,14 @@ def test_set_thresholds_alpha_em(): np.testing.assert_almost_equal(alpha.thresh[5], 91.2) np.testing.assert_almost_equal(alpha.thresh[4], 4.92) - np.testing.assert_almost_equal(alpha.thresh[3], 1.3) + np.testing.assert_almost_equal(alpha.thresh[3], 51) np.testing.assert_almost_equal(alpha.alpha_thresh[5], 0.01) np.testing.assert_almost_equal( alpha.alpha_thresh[4], alpha.alpha_em_fixed_flavor(4.92, 0.01, 91.2, 5) ) np.testing.assert_almost_equal( alpha.alpha_thresh[3], - alpha.alpha_em_fixed_flavor(1.3, alpha.alpha_thresh[4], 4.92, 4), + alpha.alpha_em_fixed_flavor(1.51, alpha.alpha_thresh[4], 4.92, 4), ) np.testing.assert_equal(len(alpha.alpha_thresh), 3) np.testing.assert_equal(len(alpha.thresh), 3) From 388be7b9fe05cad4703cd43b62104d242c61cad6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Fri, 16 Jun 2023 10:41:06 +0200 Subject: [PATCH 28/69] speed up photon computation in test --- validphys2/src/validphys/tests/photon/test_compute.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/validphys2/src/validphys/tests/photon/test_compute.py b/validphys2/src/validphys/tests/photon/test_compute.py index 7a25e399c2..4f876ccb06 100644 --- a/validphys2/src/validphys/tests/photon/test_compute.py +++ b/validphys2/src/validphys/tests/photon/test_compute.py @@ -21,7 +21,12 @@ def test_parameters_init(): - photon = Photon(TEST_THEORY, FIATLUX_RUNCARD, [1, 2, 3]) + fiatlux_runcard = FIATLUX_RUNCARD.copy() + + # we are not testing the photon here so we make it faster + fiatlux_runcard['eps_base'] = 1e-1 + + photon = Photon(TEST_THEORY, fiatlux_runcard, [1, 2, 3]) alpha = Alpha(TEST_THEORY.get_description()) np.testing.assert_equal(photon.replicas, [1, 2, 3]) From ddc57d34893c8ad75ebd92f27f303994f787b1ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Fri, 16 Jun 2023 10:43:27 +0200 Subject: [PATCH 29/69] Fix charm mass in test again --- validphys2/src/validphys/tests/photon/test_compute.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/validphys2/src/validphys/tests/photon/test_compute.py b/validphys2/src/validphys/tests/photon/test_compute.py index 4f876ccb06..dcf6102d96 100644 --- a/validphys2/src/validphys/tests/photon/test_compute.py +++ b/validphys2/src/validphys/tests/photon/test_compute.py @@ -51,7 +51,7 @@ def test_set_thresholds_alpha_em(): np.testing.assert_almost_equal(alpha.thresh[5], 91.2) np.testing.assert_almost_equal(alpha.thresh[4], 4.92) - np.testing.assert_almost_equal(alpha.thresh[3], 51) + np.testing.assert_almost_equal(alpha.thresh[3], 1.51) np.testing.assert_almost_equal(alpha.alpha_thresh[5], 0.01) np.testing.assert_almost_equal( alpha.alpha_thresh[4], alpha.alpha_em_fixed_flavor(4.92, 0.01, 91.2, 5) From dba334a0da0e92a8714b3e5aa33d515fc6c4d824 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Fri, 16 Jun 2023 10:47:17 +0200 Subject: [PATCH 30/69] Fix testing of alpha --- .../src/validphys/tests/photon/test_compute.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/validphys2/src/validphys/tests/photon/test_compute.py b/validphys2/src/validphys/tests/photon/test_compute.py index dcf6102d96..2a27bbf63a 100644 --- a/validphys2/src/validphys/tests/photon/test_compute.py +++ b/validphys2/src/validphys/tests/photon/test_compute.py @@ -47,18 +47,20 @@ def test_masses_init(): def test_set_thresholds_alpha_em(): - alpha = Alpha(TEST_THEORY.get_description()) + theory = TEST_THEORY.get_description() + + alpha = Alpha(theory) - np.testing.assert_almost_equal(alpha.thresh[5], 91.2) - np.testing.assert_almost_equal(alpha.thresh[4], 4.92) - np.testing.assert_almost_equal(alpha.thresh[3], 1.51) - np.testing.assert_almost_equal(alpha.alpha_thresh[5], 0.01) + np.testing.assert_almost_equal(alpha.thresh[5], theory["Qedref"]) + np.testing.assert_almost_equal(alpha.thresh[4], theory["mb"]) + np.testing.assert_almost_equal(alpha.thresh[3], theory["mc"]) + np.testing.assert_almost_equal(alpha.alpha_thresh[5], theory["alphaqed"]) np.testing.assert_almost_equal( - alpha.alpha_thresh[4], alpha.alpha_em_fixed_flavor(4.92, 0.01, 91.2, 5) + alpha.alpha_thresh[4], alpha.alpha_em_fixed_flavor(theory["mb"], theory["alphaqed"], theory["Qedref"], 5) ) np.testing.assert_almost_equal( alpha.alpha_thresh[3], - alpha.alpha_em_fixed_flavor(1.51, alpha.alpha_thresh[4], 4.92, 4), + alpha.alpha_em_fixed_flavor(theory["mb"], alpha.alpha_thresh[4], theory["mb"], 4), ) np.testing.assert_equal(len(alpha.alpha_thresh), 3) np.testing.assert_equal(len(alpha.thresh), 3) From 3fa81ba8dbd478b5a32344305b8cd3f74f233d38 Mon Sep 17 00:00:00 2001 From: niclaurenti Date: Fri, 16 Jun 2023 10:51:20 +0200 Subject: [PATCH 31/69] Fix test_compute --- validphys2/src/validphys/tests/photon/test_compute.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/validphys2/src/validphys/tests/photon/test_compute.py b/validphys2/src/validphys/tests/photon/test_compute.py index 2a27bbf63a..93aef28c04 100644 --- a/validphys2/src/validphys/tests/photon/test_compute.py +++ b/validphys2/src/validphys/tests/photon/test_compute.py @@ -31,7 +31,7 @@ def test_parameters_init(): np.testing.assert_equal(photon.replicas, [1, 2, 3]) np.testing.assert_equal(photon.luxpdfset._name, FIATLUX_RUNCARD["luxset"].name) - np.testing.assert_equal(photon.additional_errors._name, "LUXqed17_plus_PDF4LHC15_nnlo_100") + np.testing.assert_equal(photon.additional_errors.name, "LUXqed17_plus_PDF4LHC15_nnlo_100") np.testing.assert_equal(photon.luxseed, FIATLUX_RUNCARD["luxseed"]) np.testing.assert_equal(photon.path_to_eko_photon, TEST_THEORY.path / "eko_photon.tar") np.testing.assert_equal(photon.q_in, 100.) @@ -60,7 +60,7 @@ def test_set_thresholds_alpha_em(): ) np.testing.assert_almost_equal( alpha.alpha_thresh[3], - alpha.alpha_em_fixed_flavor(theory["mb"], alpha.alpha_thresh[4], theory["mb"], 4), + alpha.alpha_em_fixed_flavor(theory["mc"], alpha.alpha_thresh[4], theory["mb"], 4), ) np.testing.assert_equal(len(alpha.alpha_thresh), 3) np.testing.assert_equal(len(alpha.thresh), 3) From bb3a1fdc86db5c20d79b4286a4cedd3a59ad4297 Mon Sep 17 00:00:00 2001 From: niclaurenti Date: Fri, 16 Jun 2023 12:13:51 +0200 Subject: [PATCH 32/69] Add test on photon computation --- .../validphys/tests/photon/test_compute.py | 119 ++++++++++++++++-- 1 file changed, 107 insertions(+), 12 deletions(-) diff --git a/validphys2/src/validphys/tests/photon/test_compute.py b/validphys2/src/validphys/tests/photon/test_compute.py index 93aef28c04..12a2e37e95 100644 --- a/validphys2/src/validphys/tests/photon/test_compute.py +++ b/validphys2/src/validphys/tests/photon/test_compute.py @@ -1,14 +1,19 @@ from collections import namedtuple from pathlib import Path +import tempfile +import fiatlux import numpy as np -from validphys.photon import structure_functions -from validphys.photon.compute import Photon, Alpha -from validphys.core import PDF as PDFset +import yaml + +from eko.io import EKO +from n3fit.io.writer import XGRID from validphys.api import API +from validphys.core import PDF as PDFset +from validphys.photon import structure_functions as sf +from validphys.photon.compute import Alpha, Photon from ..conftest import PDF -from eko.io import EKO TEST_THEORY = API.theoryid(theoryid=398) @@ -19,8 +24,40 @@ "eps_base": 1e-2, } -def test_parameters_init(): +FIATLUX_DEFAULT = { + "apfel": False, + "qed_running": True, + "q2_max": 1e8, + "eps_base": 1e-2, + "eps_rel": 1e-1, # extra precision on any single integration. + "mproton": 0.938, + "mum_proton": 2.792847356, # proton magnetic moment, from + # http://pdglive.lbl.gov/DataBlock.action?node=S016MM which itself + # gets it from arXiv:1203.5425 (CODATA) + # the elastic param type, options: + # dipole + # A1_world_spline + # A1_world_pol_spline + "elastic_param": "A1_world_pol_spline", + "elastic_electric_rescale": 1, + "elastic_magnetic_rescale": 1, + # the inelastic param type, options: + "inelastic_param": "LHAPDF_Hermes_ALLM_CLAS", # Hermes_ALLM_CLAS, LHAPDF_Hermes_ALLM_CLAS + "rescale_r_twist4": 0, + "rescale_r": 1, + "allm_limits": 0, + "rescale_non_resonance": 1, + "rescale_resonance": 1, + "use_mu2_as_upper_limit": False, + "q2min_inel_override": 0.0, + "q2max_inel_override": 1e300, + "lhapdf_transition_q2": 9, + # general + "verbose": False, +} + +def test_parameters_init(): fiatlux_runcard = FIATLUX_RUNCARD.copy() # we are not testing the photon here so we make it faster @@ -34,10 +71,9 @@ def test_parameters_init(): np.testing.assert_equal(photon.additional_errors.name, "LUXqed17_plus_PDF4LHC15_nnlo_100") np.testing.assert_equal(photon.luxseed, FIATLUX_RUNCARD["luxseed"]) np.testing.assert_equal(photon.path_to_eko_photon, TEST_THEORY.path / "eko_photon.tar") - np.testing.assert_equal(photon.q_in, 100.) - np.testing.assert_almost_equal( - alpha.alpha_em_ref, TEST_THEORY.get_description()["alphaqed"] - ) + np.testing.assert_equal(photon.q_in, 100.0) + np.testing.assert_almost_equal(alpha.alpha_em_ref, TEST_THEORY.get_description()["alphaqed"]) + def test_masses_init(): alpha = Alpha(TEST_THEORY.get_description()) @@ -45,8 +81,8 @@ def test_masses_init(): np.testing.assert_almost_equal(alpha.thresh_b, 4.92) np.testing.assert_almost_equal(alpha.thresh_c, 1.51) -def test_set_thresholds_alpha_em(): +def test_set_thresholds_alpha_em(): theory = TEST_THEORY.get_description() alpha = Alpha(theory) @@ -56,7 +92,8 @@ def test_set_thresholds_alpha_em(): np.testing.assert_almost_equal(alpha.thresh[3], theory["mc"]) np.testing.assert_almost_equal(alpha.alpha_thresh[5], theory["alphaqed"]) np.testing.assert_almost_equal( - alpha.alpha_thresh[4], alpha.alpha_em_fixed_flavor(theory["mb"], theory["alphaqed"], theory["Qedref"], 5) + alpha.alpha_thresh[4], + alpha.alpha_em_fixed_flavor(theory["mb"], theory["alphaqed"], theory["Qedref"], 5), ) np.testing.assert_almost_equal( alpha.alpha_thresh[3], @@ -65,6 +102,7 @@ def test_set_thresholds_alpha_em(): np.testing.assert_equal(len(alpha.alpha_thresh), 3) np.testing.assert_equal(len(alpha.thresh), 3) + def test_betas(): alpha = Alpha(TEST_THEORY.get_description()) vec_beta0 = [ @@ -81,4 +119,61 @@ def test_betas(): ] for nf in range(3, 6 + 1): np.testing.assert_allclose(alpha.beta0[nf], vec_beta0[nf - 3], rtol=1e-7) - np.testing.assert_allclose(alpha.b1[nf], vec_b1[nf - 3], rtol=1e-7) \ No newline at end of file + np.testing.assert_allclose(alpha.b1[nf], vec_b1[nf - 3], rtol=1e-7) + + +def test_photon(): + fiatlux_runcard = FIATLUX_RUNCARD.copy() + fiatlux_runcard["additional_errors"] = False + theory = TEST_THEORY.get_description() + + for replica in [1, 2, 3]: + photon = Photon(TEST_THEORY, fiatlux_runcard, [replica]) + + # set up fiatlux + path_to_F2 = TEST_THEORY.path / "fastkernel/fiatlux_dis_F2.pineappl.lz4" + path_to_FL = TEST_THEORY.path / "fastkernel/fiatlux_dis_FL.pineappl.lz4" + pdfs = FIATLUX_RUNCARD["luxset"].load() + f2 = sf.InterpStructureFunction(path_to_F2, pdfs.members[replica]) + fl = sf.InterpStructureFunction(path_to_FL, pdfs.members[replica]) + f2lo = sf.F2LO(pdfs.members[replica], theory) + with tempfile.NamedTemporaryFile(mode="w") as tmp: + with tmp.file as tmp_file: + tmp_file.write(yaml.dump(FIATLUX_DEFAULT)) + lux = fiatlux.FiatLux(tmp.name) + + alpha = Alpha(theory) + + lux.PlugAlphaQED(alpha.alpha_em, alpha.qref) + lux.InsertInelasticSplitQ( + [ + theory["mb"], + 1e100, + ] + ) + lux.PlugStructureFunctions(f2.fxq, fl.fxq, f2lo.fxq) + photon_fiatlux_qin = np.array([lux.EvaluatePhoton(x, 100**2).total for x in XGRID]) + path_to_eko_photon = TEST_THEORY.path / "eko_photon.tar" + photon_fiatlux_qin /= XGRID + with EKO.read(path_to_eko_photon) as eko: + # construct PDFs + pdfs_init = np.zeros((len(eko.bases.inputpids), len(XGRID))) + for j, pid in enumerate(eko.bases.inputpids): + if pid == 22: + pdfs_init[j] = photon_fiatlux_qin + ph_id = j + else: + if pid not in pdfs.flavors: + continue + pdfs_init[j] = np.array([pdfs.xfxQ(x, 100, replica, pid) / x for x in XGRID]) + + # Apply EKO to PDFs + for _, elem in eko.items(): + pdfs_final = np.einsum("ajbk,bk", elem.operator, pdfs_init) + + photon_Q0 = pdfs_final[ph_id] + photon_fiatlux = XGRID * photon_Q0 + + photon_validphys = photon(XGRID[np.newaxis, :, np.newaxis])[0][0, :, 0] + + np.testing.assert_allclose(photon_fiatlux, photon_validphys, rtol=1e-7) From 3901ba54d8d229a44b15f694a73c0d4adedf7de5 Mon Sep 17 00:00:00 2001 From: niclaurenti Date: Fri, 16 Jun 2023 12:14:32 +0200 Subject: [PATCH 33/69] Remove unused dependencies --- validphys2/src/validphys/tests/photon/test_compute.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/validphys2/src/validphys/tests/photon/test_compute.py b/validphys2/src/validphys/tests/photon/test_compute.py index 12a2e37e95..958646a408 100644 --- a/validphys2/src/validphys/tests/photon/test_compute.py +++ b/validphys2/src/validphys/tests/photon/test_compute.py @@ -1,5 +1,3 @@ -from collections import namedtuple -from pathlib import Path import tempfile import fiatlux From f3de6b07cc90146b99797087694a5e990d081371 Mon Sep 17 00:00:00 2001 From: niclaurenti Date: Fri, 16 Jun 2023 12:25:17 +0200 Subject: [PATCH 34/69] Polish test --- .../validphys/tests/photon/test_compute.py | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/validphys2/src/validphys/tests/photon/test_compute.py b/validphys2/src/validphys/tests/photon/test_compute.py index 958646a408..85573120bf 100644 --- a/validphys2/src/validphys/tests/photon/test_compute.py +++ b/validphys2/src/validphys/tests/photon/test_compute.py @@ -24,11 +24,7 @@ FIATLUX_DEFAULT = { "apfel": False, - "qed_running": True, - "q2_max": 1e8, - "eps_base": 1e-2, "eps_rel": 1e-1, # extra precision on any single integration. - "mproton": 0.938, "mum_proton": 2.792847356, # proton magnetic moment, from # http://pdglive.lbl.gov/DataBlock.action?node=S016MM which itself # gets it from arXiv:1203.5425 (CODATA) @@ -135,6 +131,15 @@ def test_photon(): f2 = sf.InterpStructureFunction(path_to_F2, pdfs.members[replica]) fl = sf.InterpStructureFunction(path_to_FL, pdfs.members[replica]) f2lo = sf.F2LO(pdfs.members[replica], theory) + + # runcard + fiatlux_default = FIATLUX_DEFAULT.copy() + fiatlux_default['mproton'] = theory['MP'] + fiatlux_default["qed_running"] = bool(np.isclose(theory["Qedref"], theory["Qref"])) + fiatlux_default["q2_max"] = float(f2.q2_max) + fiatlux_default["eps_base"] = FIATLUX_RUNCARD["eps_base"] + + # load fiatlux with tempfile.NamedTemporaryFile(mode="w") as tmp: with tmp.file as tmp_file: tmp_file.write(yaml.dump(FIATLUX_DEFAULT)) @@ -145,15 +150,15 @@ def test_photon(): lux.PlugAlphaQED(alpha.alpha_em, alpha.qref) lux.InsertInelasticSplitQ( [ - theory["mb"], - 1e100, + theory["kbThr"] * theory["mb"], + theory["ktThr"] * theory["mt"] if theory["MaxNfPdf"] == 6 else 1e100, ] ) lux.PlugStructureFunctions(f2.fxq, fl.fxq, f2lo.fxq) - photon_fiatlux_qin = np.array([lux.EvaluatePhoton(x, 100**2).total for x in XGRID]) path_to_eko_photon = TEST_THEORY.path / "eko_photon.tar" - photon_fiatlux_qin /= XGRID with EKO.read(path_to_eko_photon) as eko: + photon_fiatlux_qin = np.array([lux.EvaluatePhoton(x, eko.mu20).total for x in XGRID]) + photon_fiatlux_qin /= XGRID # construct PDFs pdfs_init = np.zeros((len(eko.bases.inputpids), len(XGRID))) for j, pid in enumerate(eko.bases.inputpids): @@ -163,7 +168,9 @@ def test_photon(): else: if pid not in pdfs.flavors: continue - pdfs_init[j] = np.array([pdfs.xfxQ(x, 100, replica, pid) / x for x in XGRID]) + pdfs_init[j] = np.array( + [pdfs.xfxQ(x, np.sqrt(eko.mu20), replica, pid) / x for x in XGRID] + ) # Apply EKO to PDFs for _, elem in eko.items(): From 7550e2d2881f01abc4ce8398c4653f9a9e2f3a82 Mon Sep 17 00:00:00 2001 From: niclaurenti Date: Fri, 16 Jun 2023 12:26:46 +0200 Subject: [PATCH 35/69] Polish test again --- validphys2/src/validphys/tests/photon/test_compute.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/validphys2/src/validphys/tests/photon/test_compute.py b/validphys2/src/validphys/tests/photon/test_compute.py index 85573120bf..4b3275f067 100644 --- a/validphys2/src/validphys/tests/photon/test_compute.py +++ b/validphys2/src/validphys/tests/photon/test_compute.py @@ -70,10 +70,11 @@ def test_parameters_init(): def test_masses_init(): - alpha = Alpha(TEST_THEORY.get_description()) + theory = TEST_THEORY.get_description() + alpha = Alpha(theory) np.testing.assert_equal(alpha.thresh_t, np.inf) - np.testing.assert_almost_equal(alpha.thresh_b, 4.92) - np.testing.assert_almost_equal(alpha.thresh_c, 1.51) + np.testing.assert_almost_equal(alpha.thresh_b, theory["mb"]) + np.testing.assert_almost_equal(alpha.thresh_c, theory["mc"]) def test_set_thresholds_alpha_em(): From 98d919fa75ddd9a77bded83e58b79bb7881c76ae Mon Sep 17 00:00:00 2001 From: niclaurenti Date: Fri, 16 Jun 2023 13:11:33 +0200 Subject: [PATCH 36/69] Pass test theory to test_structurefunctions.py --- .../validphys/tests/photon/test_compute.py | 2 +- .../tests/photon/test_structurefunctions.py | 31 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/validphys2/src/validphys/tests/photon/test_compute.py b/validphys2/src/validphys/tests/photon/test_compute.py index 4b3275f067..f875f03ce9 100644 --- a/validphys2/src/validphys/tests/photon/test_compute.py +++ b/validphys2/src/validphys/tests/photon/test_compute.py @@ -19,7 +19,7 @@ "luxset": PDFset(PDF), "additional_errors": PDFset("LUXqed17_plus_PDF4LHC15_nnlo_100"), "luxseed": 123456789, - "eps_base": 1e-2, + "eps_base": 1e-2, # using low precision to speed up tests } FIATLUX_DEFAULT = { diff --git a/validphys2/src/validphys/tests/photon/test_structurefunctions.py b/validphys2/src/validphys/tests/photon/test_structurefunctions.py index 984eb2eecd..c2a8dddfff 100644 --- a/validphys2/src/validphys/tests/photon/test_structurefunctions.py +++ b/validphys2/src/validphys/tests/photon/test_structurefunctions.py @@ -2,7 +2,21 @@ import pineappl import validphys.photon.structure_functions as sf from validphys.lhapdfset import LHAPDFSet +from validphys.api import API +from ..conftest import PDF +from validphys.core import PDF as PDFset +TEST_THEORY = API.theoryid(theoryid=398) +NNPDF40 = PDFset(PDF) + +class ZeroPdfs: + def xfxQ(self, x, Q): + res = {} + for i in range(1, 6 + 1): + res[i] = res[-i] = 0.0 + return res + +TEST_THEORY = API.theoryid(theoryid=398) class ZeroPdfs: def xfxQ(self, x, Q): @@ -125,3 +139,20 @@ def test_F2(monkeypatch): for x in np.geomspace(1e-4, 1.0, 10): for Q in np.geomspace(10, 1000000, 10): np.testing.assert_allclose(structurefunc.fxq(x, Q), 0.0, rtol=1e-5) + +def test_interpolation_grid(): + pdfs = NNPDF40.load() + replica = 1 + for channel in ["F2", "FL"]: + tmp = "fastkernel/fiatlux_dis_" + channel + ".pineappl.lz4" + path_to_fktable = TEST_THEORY.path / tmp + fktable = pineappl.fk_table.FkTable.read(path_to_fktable) + x = np.unique(fktable.bin_left(1)) + q2 = np.unique(fktable.bin_left(0)) + predictions = fktable.convolute_with_one(2212, pdfs.members[replica].xfxQ2) + grid2D = predictions.reshape(len(x), len(q2)) + + struct_func = sf.InterpStructureFunction(path_to_fktable, pdfs.members[replica]) + for i,x_ in enumerate(x): + for j, q2_ in enumerate(q2): + np.testing.assert_allclose(struct_func.fxq(x_, np.sqrt(q2_)), grid2D[i,j], rtol=1e-5) From 4b0ed9c705a011d34d495b20331e49f4518fa0f3 Mon Sep 17 00:00:00 2001 From: niclaurenti Date: Fri, 16 Jun 2023 13:12:32 +0200 Subject: [PATCH 37/69] Run isort and black on test_structurefunctions.py --- .../tests/photon/test_structurefunctions.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/validphys2/src/validphys/tests/photon/test_structurefunctions.py b/validphys2/src/validphys/tests/photon/test_structurefunctions.py index c2a8dddfff..7c9929327f 100644 --- a/validphys2/src/validphys/tests/photon/test_structurefunctions.py +++ b/validphys2/src/validphys/tests/photon/test_structurefunctions.py @@ -1,14 +1,17 @@ import numpy as np import pineappl -import validphys.photon.structure_functions as sf -from validphys.lhapdfset import LHAPDFSet + from validphys.api import API -from ..conftest import PDF from validphys.core import PDF as PDFset +from validphys.lhapdfset import LHAPDFSet +import validphys.photon.structure_functions as sf + +from ..conftest import PDF TEST_THEORY = API.theoryid(theoryid=398) NNPDF40 = PDFset(PDF) + class ZeroPdfs: def xfxQ(self, x, Q): res = {} @@ -16,8 +19,10 @@ def xfxQ(self, x, Q): res[i] = res[-i] = 0.0 return res + TEST_THEORY = API.theoryid(theoryid=398) + class ZeroPdfs: def xfxQ(self, x, Q): res = {} @@ -27,7 +32,6 @@ def xfxQ(self, x, Q): def test_zero_pdfs(): - pdfs = ZeroPdfs() fake_theory = { @@ -140,6 +144,7 @@ def test_F2(monkeypatch): for Q in np.geomspace(10, 1000000, 10): np.testing.assert_allclose(structurefunc.fxq(x, Q), 0.0, rtol=1e-5) + def test_interpolation_grid(): pdfs = NNPDF40.load() replica = 1 @@ -153,6 +158,8 @@ def test_interpolation_grid(): grid2D = predictions.reshape(len(x), len(q2)) struct_func = sf.InterpStructureFunction(path_to_fktable, pdfs.members[replica]) - for i,x_ in enumerate(x): + for i, x_ in enumerate(x): for j, q2_ in enumerate(q2): - np.testing.assert_allclose(struct_func.fxq(x_, np.sqrt(q2_)), grid2D[i,j], rtol=1e-5) + np.testing.assert_allclose( + struct_func.fxq(x_, np.sqrt(q2_)), grid2D[i, j], rtol=1e-5 + ) From 10dd7e2d0b4de4d472bb205c42279759c8f29685 Mon Sep 17 00:00:00 2001 From: juacrumar Date: Fri, 16 Jun 2023 13:19:37 +0200 Subject: [PATCH 38/69] modify the call to generate_block to make it compatible with eko 0.13.5 --- conda-recipe/meta.yaml | 2 +- n3fit/src/evolven3fit_new/eko_utils.py | 23 +++-------------------- n3fit/src/evolven3fit_new/evolve.py | 21 +++++++++++++++------ 3 files changed, 19 insertions(+), 27 deletions(-) diff --git a/conda-recipe/meta.yaml b/conda-recipe/meta.yaml index fb9edea8bf..d2c41ea803 100644 --- a/conda-recipe/meta.yaml +++ b/conda-recipe/meta.yaml @@ -51,7 +51,7 @@ requirements: - sphinxcontrib-bibtex - curio >=1.0 - pineappl >=0.5.8 - - eko >=0.13.4,<0.14 + - eko >=0.13.5,<0.14 - banana-hep >=0.6.8 - fiatlux diff --git a/n3fit/src/evolven3fit_new/eko_utils.py b/n3fit/src/evolven3fit_new/eko_utils.py index 7eabc1b009..4203a3b128 100644 --- a/n3fit/src/evolven3fit_new/eko_utils.py +++ b/n3fit/src/evolven3fit_new/eko_utils.py @@ -87,7 +87,7 @@ def construct_eko_cards( legacy_class = runcards.Legacy(theory, {}) theory_card = legacy_class.new_theory - # construct operator card + # Generate the q2grid, if q_fin and q_points are None, use `nf0` to select a default q2_grid = utils.generate_q2grid( mu0, q_fin, @@ -99,6 +99,8 @@ def construct_eko_cards( }, theory["nf0"], ) + + # construct operator card op_card = default_op_card masses = np.array([theory["mc"], theory["mb"], theory["mt"]]) ** 2 thresholds_ratios = np.array([thresholds["c"], thresholds["b"], thresholds["t"]]) ** 2 @@ -144,22 +146,3 @@ def construct_eko_cards( op_card = runcards.OperatorCard.from_dict(op_card) return theory_card, op_card - - -def split_evolgrid(evolgrid): - """Split the evolgrid in blocks according to the number of flavors.""" - evolgrid_index_list = [] - evolgrid.sort() - starting_nf = evolgrid[0][1] - for evo_point in evolgrid: - current_nf = evo_point[1] - if current_nf != starting_nf: - evolgrid_index_list.append(evolgrid.index(evo_point)) - starting_nf = current_nf - start_index = 0 - evolgrid_list = [] - for index in evolgrid_index_list: - evolgrid_list.append(evolgrid[start_index:index]) - start_index = index - evolgrid_list.append(evolgrid[start_index:]) - return evolgrid_list diff --git a/n3fit/src/evolven3fit_new/evolve.py b/n3fit/src/evolven3fit_new/evolve.py index 8cf5e28cc6..8caab4e3e2 100644 --- a/n3fit/src/evolven3fit_new/evolve.py +++ b/n3fit/src/evolven3fit_new/evolve.py @@ -1,3 +1,4 @@ +from collections import defaultdict import logging import pathlib import sys @@ -178,19 +179,27 @@ def evolve_exportgrid(exportgrid, eko, x_grid, qed): # generate block to dump targetgrid = eko.bases.targetgrid.tolist() - def ev_pdf(pid, x, Q2): - return x * evolved_pdf[Q2]["pdfs"][pid][targetgrid.index(x)] + # Finally separate by nf block (and order per nf/q) + by_nf = defaultdict(list) + for q, nf in sorted(eko.evolgrid, key=lambda ep: ep[1]): + by_nf[nf].append(q) + q2block_per_nf = {nf: sorted(qs) for nf, qs in by_nf.items()} - evolgrid_list = eko_utils.split_evolgrid(eko.evolgrid) blocks = [] - for evgrid in evolgrid_list: + for nf, q2grid in q2block_per_nf.items(): + + def pdf_xq2(pid, x, Q2): + x_idx = targetgrid.index(x) + return x * evolved_pdf[(Q2, nf)]["pdfs"][pid][x_idx] + block = genpdf.generate_block( - ev_pdf, + pdf_xq2, xgrid=targetgrid, - evolgrid=evgrid, + sorted_q2grid=q2grid, pids=basis_rotation.flavor_basis_pids, ) blocks.append(block) + return blocks From 5ede6f4ed07ff34d6e1f31dc396a7bbe84f5d965 Mon Sep 17 00:00:00 2001 From: niclaurenti Date: Fri, 16 Jun 2023 13:21:11 +0200 Subject: [PATCH 39/69] Test init parameters of test_structurefunctions.py --- .../tests/photon/test_structurefunctions.py | 44 ++++++++++++------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/validphys2/src/validphys/tests/photon/test_structurefunctions.py b/validphys2/src/validphys/tests/photon/test_structurefunctions.py index 7c9929327f..12944a23d4 100644 --- a/validphys2/src/validphys/tests/photon/test_structurefunctions.py +++ b/validphys2/src/validphys/tests/photon/test_structurefunctions.py @@ -20,9 +20,6 @@ def xfxQ(self, x, Q): return res -TEST_THEORY = API.theoryid(theoryid=398) - - class ZeroPdfs: def xfxQ(self, x, Q): res = {} @@ -144,22 +141,37 @@ def test_F2(monkeypatch): for Q in np.geomspace(10, 1000000, 10): np.testing.assert_allclose(structurefunc.fxq(x, Q), 0.0, rtol=1e-5) - -def test_interpolation_grid(): +def test_params(): pdfs = NNPDF40.load() replica = 1 + theory = TEST_THEORY.get_description() for channel in ["F2", "FL"]: tmp = "fastkernel/fiatlux_dis_" + channel + ".pineappl.lz4" path_to_fktable = TEST_THEORY.path / tmp - fktable = pineappl.fk_table.FkTable.read(path_to_fktable) - x = np.unique(fktable.bin_left(1)) - q2 = np.unique(fktable.bin_left(0)) - predictions = fktable.convolute_with_one(2212, pdfs.members[replica].xfxQ2) - grid2D = predictions.reshape(len(x), len(q2)) - struct_func = sf.InterpStructureFunction(path_to_fktable, pdfs.members[replica]) - for i, x_ in enumerate(x): - for j, q2_ in enumerate(q2): - np.testing.assert_allclose( - struct_func.fxq(x_, np.sqrt(q2_)), grid2D[i, j], rtol=1e-5 - ) + np.testing.assert_allclose(struct_func.q2_max, 1e8) + f2lo = sf.F2LO(pdfs.members[replica], theory) + np.testing.assert_allclose(f2lo.thresh_c, theory["mc"]) + np.testing.assert_allclose(f2lo.thresh_b, theory["mb"]) + np.testing.assert_allclose(f2lo.thresh_t, np.inf) + + + +def test_interpolation_grid(): + pdfs = NNPDF40.load() + for replica in [1, 2, 3]: + for channel in ["F2", "FL"]: + tmp = "fastkernel/fiatlux_dis_" + channel + ".pineappl.lz4" + path_to_fktable = TEST_THEORY.path / tmp + fktable = pineappl.fk_table.FkTable.read(path_to_fktable) + x = np.unique(fktable.bin_left(1)) + q2 = np.unique(fktable.bin_left(0)) + predictions = fktable.convolute_with_one(2212, pdfs.members[replica].xfxQ2) + grid2D = predictions.reshape(len(x), len(q2)) + + struct_func = sf.InterpStructureFunction(path_to_fktable, pdfs.members[replica]) + for i, x_ in enumerate(x): + for j, q2_ in enumerate(q2): + np.testing.assert_allclose( + struct_func.fxq(x_, np.sqrt(q2_)), grid2D[i, j], rtol=1e-5 + ) From 52e91306085dab2490f419a44c0ee60bc44c4f99 Mon Sep 17 00:00:00 2001 From: niclaurenti Date: Fri, 16 Jun 2023 13:21:51 +0200 Subject: [PATCH 40/69] Run isort and black on test_structurefunctions.py --- .../src/validphys/tests/photon/test_structurefunctions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/validphys2/src/validphys/tests/photon/test_structurefunctions.py b/validphys2/src/validphys/tests/photon/test_structurefunctions.py index 12944a23d4..df1edf6faf 100644 --- a/validphys2/src/validphys/tests/photon/test_structurefunctions.py +++ b/validphys2/src/validphys/tests/photon/test_structurefunctions.py @@ -141,6 +141,7 @@ def test_F2(monkeypatch): for Q in np.geomspace(10, 1000000, 10): np.testing.assert_allclose(structurefunc.fxq(x, Q), 0.0, rtol=1e-5) + def test_params(): pdfs = NNPDF40.load() replica = 1 @@ -156,7 +157,6 @@ def test_params(): np.testing.assert_allclose(f2lo.thresh_t, np.inf) - def test_interpolation_grid(): pdfs = NNPDF40.load() for replica in [1, 2, 3]: From 370d0dd72a6c3d95def92e61a476fb94f8d439c6 Mon Sep 17 00:00:00 2001 From: niclaurenti Date: Fri, 16 Jun 2023 14:34:57 +0200 Subject: [PATCH 41/69] Use API to install pdfset --- validphys2/src/validphys/tests/photon/test_compute.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/validphys2/src/validphys/tests/photon/test_compute.py b/validphys2/src/validphys/tests/photon/test_compute.py index f875f03ce9..2b217bd448 100644 --- a/validphys2/src/validphys/tests/photon/test_compute.py +++ b/validphys2/src/validphys/tests/photon/test_compute.py @@ -17,7 +17,7 @@ FIATLUX_RUNCARD = { "luxset": PDFset(PDF), - "additional_errors": PDFset("LUXqed17_plus_PDF4LHC15_nnlo_100"), + "additional_errors": API.pdf(pdf='LUXqed17_plus_PDF4LHC15_nnlo_100'), "luxseed": 123456789, "eps_base": 1e-2, # using low precision to speed up tests } From b97450d097a14ba2409ebd622924bc2ee6141bcd Mon Sep 17 00:00:00 2001 From: niclaurenti Date: Fri, 16 Jun 2023 15:01:33 +0200 Subject: [PATCH 42/69] Refactor test_structurefunctions.py and add docstrings --- .../validphys/tests/photon/test_compute.py | 10 +- .../tests/photon/test_structurefunctions.py | 114 ++++-------------- 2 files changed, 33 insertions(+), 91 deletions(-) diff --git a/validphys2/src/validphys/tests/photon/test_compute.py b/validphys2/src/validphys/tests/photon/test_compute.py index 2b217bd448..00da494130 100644 --- a/validphys2/src/validphys/tests/photon/test_compute.py +++ b/validphys2/src/validphys/tests/photon/test_compute.py @@ -52,13 +52,13 @@ def test_parameters_init(): + "test initailization of the parameters from Photon class" fiatlux_runcard = FIATLUX_RUNCARD.copy() # we are not testing the photon here so we make it faster fiatlux_runcard['eps_base'] = 1e-1 photon = Photon(TEST_THEORY, fiatlux_runcard, [1, 2, 3]) - alpha = Alpha(TEST_THEORY.get_description()) np.testing.assert_equal(photon.replicas, [1, 2, 3]) np.testing.assert_equal(photon.luxpdfset._name, FIATLUX_RUNCARD["luxset"].name) @@ -66,10 +66,10 @@ def test_parameters_init(): np.testing.assert_equal(photon.luxseed, FIATLUX_RUNCARD["luxseed"]) np.testing.assert_equal(photon.path_to_eko_photon, TEST_THEORY.path / "eko_photon.tar") np.testing.assert_equal(photon.q_in, 100.0) - np.testing.assert_almost_equal(alpha.alpha_em_ref, TEST_THEORY.get_description()["alphaqed"]) def test_masses_init(): + "test thresholds in Alpha class" theory = TEST_THEORY.get_description() alpha = Alpha(theory) np.testing.assert_equal(alpha.thresh_t, np.inf) @@ -78,10 +78,12 @@ def test_masses_init(): def test_set_thresholds_alpha_em(): + "test value of alpha_em at threshold values" theory = TEST_THEORY.get_description() alpha = Alpha(theory) + np.testing.assert_almost_equal(alpha.alpha_em_ref, theory["alphaqed"]) np.testing.assert_almost_equal(alpha.thresh[5], theory["Qedref"]) np.testing.assert_almost_equal(alpha.thresh[4], theory["mb"]) np.testing.assert_almost_equal(alpha.thresh[3], theory["mc"]) @@ -99,6 +101,7 @@ def test_set_thresholds_alpha_em(): def test_betas(): + "test betas for different nf" alpha = Alpha(TEST_THEORY.get_description()) vec_beta0 = [ -0.5305164769729844, @@ -118,6 +121,9 @@ def test_betas(): def test_photon(): + """test that photon coming out of Photon interpolator matches the photon array + for XGRID points + """ fiatlux_runcard = FIATLUX_RUNCARD.copy() fiatlux_runcard["additional_errors"] = False theory = TEST_THEORY.get_description() diff --git a/validphys2/src/validphys/tests/photon/test_structurefunctions.py b/validphys2/src/validphys/tests/photon/test_structurefunctions.py index df1edf6faf..14f6b227bf 100644 --- a/validphys2/src/validphys/tests/photon/test_structurefunctions.py +++ b/validphys2/src/validphys/tests/photon/test_structurefunctions.py @@ -17,42 +17,12 @@ def xfxQ(self, x, Q): res = {} for i in range(1, 6 + 1): res[i] = res[-i] = 0.0 + res[21] = 0.0 + res[22] = 0.0 return res - - -class ZeroPdfs: - def xfxQ(self, x, Q): - res = {} - for i in range(1, 6 + 1): - res[i] = res[-i] = 0.0 - return res - - -def test_zero_pdfs(): - pdfs = ZeroPdfs() - - fake_theory = { - "mc": 1.3, - "mb": 5.0, - "mt": 172.0, - "kcThr": 1.0, - "kbThr": 1.0, - "ktThr": 1.0, - "MaxNfPdf": 5, - } - - f2lo = sf.F2LO(pdfs, fake_theory) - - np.testing.assert_equal(f2lo.thresh_t, np.inf) - - for x in np.geomspace(1e-4, 1.0, 10): - for Q in np.geomspace(10, 1000000, 10): - np.testing.assert_allclose(f2lo.fxq(x, Q), 0.0) - - -class FakeSet: - def get_entry(self, string): - return 0 + + def xfxQ2(self, i, x, Q2): + return self.xfxQ(x, np.sqrt(Q2))[i] class ZeroFKTable: @@ -73,76 +43,41 @@ def convolute_with_one(self, pdgid, xfxQ2): return np.zeros((10, 10)) -class OnePdf: - def __init__(self): - self.ao = 1 - - def xfxQ(self, x, Q): - return 1.0 - - def xfxQ2(self, x, Q): - return 1.0**2 - - def set(self): - return FakeSet() - - -class OneFKTable: - def __init__(self, path): - self.path = path - self.xgrid = np.geomspace(1e-4, 1.0, 10) - self.qgrid = np.geomspace(1.65, 1000, 10) - - def bin_left(self, i): - if i == 1: - return self.xgrid - if i == 0: - return self.qgrid - else: - return 0 - - def convolute_with_one(self, pdgid, xfxQ2): - return np.zeros((10, 10)) - +def test_zero_pdfs(): + "test that a zero PDF gives a zero structure function" + pdfs = ZeroPdfs() + theory = TEST_THEORY.get_description() + path_to_F2 = TEST_THEORY.path / "fastkernel/fiatlux_dis_F2.pineappl.lz4" + path_to_FL = TEST_THEORY.path / "fastkernel/fiatlux_dis_FL.pineappl.lz4" -class ZeroPdf: - def __init__(self): - self.ao = 1 + f2 = sf.InterpStructureFunction(path_to_F2, pdfs) + fl = sf.InterpStructureFunction(path_to_FL, pdfs) + f2lo = sf.F2LO(pdfs, theory) - def xfxQ(self, x, Q): - return 1.0 + np.testing.assert_equal(f2lo.thresh_t, np.inf) - def xfxQ2(self, x, Q): - return 1.0**2 + for x in np.geomspace(1e-4, 1.0, 10): + for Q in np.geomspace(10, 1000000, 10): + np.testing.assert_allclose(f2lo.fxq(x, Q), 0.0) + np.testing.assert_allclose(f2.fxq(x, Q), 0.0) + np.testing.assert_allclose(fl.fxq(x, Q), 0.0) - def set(self): - return FakeSet() -def test_F2(monkeypatch): - # grid put to 0 and pdf put to 1 +def test_zero_grid(monkeypatch): + "test that a zero grid gives a zero structure function" monkeypatch.setattr(pineappl.fk_table.FkTable, "read", ZeroFKTable) - structurefunc = sf.InterpStructureFunction("", OnePdf()) - for x in np.geomspace(1e-4, 1.0, 10): - for Q in np.geomspace(10, 1000000, 10): - np.testing.assert_allclose(structurefunc.fxq(x, Q), 0.0, rtol=1e-5) - # grid put to 0 and real pdf - pdf = LHAPDFSet("NNPDF40_nnlo_as_01180", "replicas") + pdf = PDFset(PDF).load() structurefunc = sf.InterpStructureFunction("", pdf.central_member) for x in np.geomspace(1e-4, 1.0, 10): for Q in np.geomspace(10, 1000000, 10): np.testing.assert_allclose(structurefunc.fxq(x, Q), 0.0, rtol=1e-5) - # grid put to 1 and pdf put to 0 - monkeypatch.setattr(pineappl.fk_table.FkTable, "read", OneFKTable) - structurefunc = sf.InterpStructureFunction("", ZeroPdf()) - for x in np.geomspace(1e-4, 1.0, 10): - for Q in np.geomspace(10, 1000000, 10): - np.testing.assert_allclose(structurefunc.fxq(x, Q), 0.0, rtol=1e-5) def test_params(): + "test initialization of parameters" pdfs = NNPDF40.load() replica = 1 theory = TEST_THEORY.get_description() @@ -158,6 +93,7 @@ def test_params(): def test_interpolation_grid(): + """test that the values coming out of InterpStructureFunction match the grid ones""" pdfs = NNPDF40.load() for replica in [1, 2, 3]: for channel in ["F2", "FL"]: From 3e548a88a38a00d0d0b1a07d58a34c9e24abe6df Mon Sep 17 00:00:00 2001 From: niclaurenti Date: Fri, 16 Jun 2023 15:07:47 +0200 Subject: [PATCH 43/69] Small modification --- .../src/validphys/tests/photon/test_structurefunctions.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/validphys2/src/validphys/tests/photon/test_structurefunctions.py b/validphys2/src/validphys/tests/photon/test_structurefunctions.py index 14f6b227bf..53dc7c1030 100644 --- a/validphys2/src/validphys/tests/photon/test_structurefunctions.py +++ b/validphys2/src/validphys/tests/photon/test_structurefunctions.py @@ -68,8 +68,8 @@ def test_zero_grid(monkeypatch): "test that a zero grid gives a zero structure function" monkeypatch.setattr(pineappl.fk_table.FkTable, "read", ZeroFKTable) # grid put to 0 and real pdf - pdf = PDFset(PDF).load() - structurefunc = sf.InterpStructureFunction("", pdf.central_member) + pdfs = NNPDF40.load() + structurefunc = sf.InterpStructureFunction("", pdfs.central_member) for x in np.geomspace(1e-4, 1.0, 10): for Q in np.geomspace(10, 1000000, 10): np.testing.assert_allclose(structurefunc.fxq(x, Q), 0.0, rtol=1e-5) From b40db35c19da9c82af9e59c41b9985fa10877318 Mon Sep 17 00:00:00 2001 From: niclaurenti Date: Fri, 16 Jun 2023 15:20:33 +0200 Subject: [PATCH 44/69] Use FIATLUX_DEFAULT from photon.compute --- .../validphys/tests/photon/test_compute.py | 32 ++----------------- .../tests/photon/test_structurefunctions.py | 3 +- 2 files changed, 3 insertions(+), 32 deletions(-) diff --git a/validphys2/src/validphys/tests/photon/test_compute.py b/validphys2/src/validphys/tests/photon/test_compute.py index 00da494130..948ed3d3db 100644 --- a/validphys2/src/validphys/tests/photon/test_compute.py +++ b/validphys2/src/validphys/tests/photon/test_compute.py @@ -9,7 +9,7 @@ from validphys.api import API from validphys.core import PDF as PDFset from validphys.photon import structure_functions as sf -from validphys.photon.compute import Alpha, Photon +from validphys.photon.compute import Alpha, Photon, FIATLUX_DEFAULT from ..conftest import PDF @@ -22,34 +22,6 @@ "eps_base": 1e-2, # using low precision to speed up tests } -FIATLUX_DEFAULT = { - "apfel": False, - "eps_rel": 1e-1, # extra precision on any single integration. - "mum_proton": 2.792847356, # proton magnetic moment, from - # http://pdglive.lbl.gov/DataBlock.action?node=S016MM which itself - # gets it from arXiv:1203.5425 (CODATA) - # the elastic param type, options: - # dipole - # A1_world_spline - # A1_world_pol_spline - "elastic_param": "A1_world_pol_spline", - "elastic_electric_rescale": 1, - "elastic_magnetic_rescale": 1, - # the inelastic param type, options: - "inelastic_param": "LHAPDF_Hermes_ALLM_CLAS", # Hermes_ALLM_CLAS, LHAPDF_Hermes_ALLM_CLAS - "rescale_r_twist4": 0, - "rescale_r": 1, - "allm_limits": 0, - "rescale_non_resonance": 1, - "rescale_resonance": 1, - "use_mu2_as_upper_limit": False, - "q2min_inel_override": 0.0, - "q2max_inel_override": 1e300, - "lhapdf_transition_q2": 9, - # general - "verbose": False, -} - def test_parameters_init(): "test initailization of the parameters from Photon class" @@ -69,7 +41,7 @@ def test_parameters_init(): def test_masses_init(): - "test thresholds in Alpha class" + "test thresholds values in Alpha class" theory = TEST_THEORY.get_description() alpha = Alpha(theory) np.testing.assert_equal(alpha.thresh_t, np.inf) diff --git a/validphys2/src/validphys/tests/photon/test_structurefunctions.py b/validphys2/src/validphys/tests/photon/test_structurefunctions.py index 53dc7c1030..8798a0e30f 100644 --- a/validphys2/src/validphys/tests/photon/test_structurefunctions.py +++ b/validphys2/src/validphys/tests/photon/test_structurefunctions.py @@ -3,7 +3,6 @@ from validphys.api import API from validphys.core import PDF as PDFset -from validphys.lhapdfset import LHAPDFSet import validphys.photon.structure_functions as sf from ..conftest import PDF @@ -66,8 +65,8 @@ def test_zero_pdfs(): def test_zero_grid(monkeypatch): "test that a zero grid gives a zero structure function" + # patching pineappl.fk_table.FkTable to use ZeroFKTable monkeypatch.setattr(pineappl.fk_table.FkTable, "read", ZeroFKTable) - # grid put to 0 and real pdf pdfs = NNPDF40.load() structurefunc = sf.InterpStructureFunction("", pdfs.central_member) for x in np.geomspace(1e-4, 1.0, 10): From 0958b08b6a03f2702f3eeec24d934cc9537bd825 Mon Sep 17 00:00:00 2001 From: niclaurenti Date: Fri, 16 Jun 2023 15:26:04 +0200 Subject: [PATCH 45/69] Remove unused import --- n3fit/src/n3fit/tests/test_evolven3fit.py | 1 - 1 file changed, 1 deletion(-) diff --git a/n3fit/src/n3fit/tests/test_evolven3fit.py b/n3fit/src/n3fit/tests/test_evolven3fit.py index aeee049ee5..820d867891 100644 --- a/n3fit/src/n3fit/tests/test_evolven3fit.py +++ b/n3fit/src/n3fit/tests/test_evolven3fit.py @@ -12,7 +12,6 @@ from reportengine.compat import yaml from validphys.api import API from validphys.pdfbases import PIDS_DICT -from validphys.core import TheoryIDSpec REGRESSION_FOLDER = pathlib.Path(__file__).with_name("regressions") log = logging.getLogger(__name__) From 61c5bb901176ddb82c6be37c492e98cfd8d8faac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Mon, 19 Jun 2023 10:14:13 +0200 Subject: [PATCH 46/69] Remove variable NNPDF40 --- .../src/validphys/tests/photon/test_structurefunctions.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/validphys2/src/validphys/tests/photon/test_structurefunctions.py b/validphys2/src/validphys/tests/photon/test_structurefunctions.py index 8798a0e30f..52f68f0a22 100644 --- a/validphys2/src/validphys/tests/photon/test_structurefunctions.py +++ b/validphys2/src/validphys/tests/photon/test_structurefunctions.py @@ -8,7 +8,6 @@ from ..conftest import PDF TEST_THEORY = API.theoryid(theoryid=398) -NNPDF40 = PDFset(PDF) class ZeroPdfs: @@ -67,7 +66,7 @@ def test_zero_grid(monkeypatch): "test that a zero grid gives a zero structure function" # patching pineappl.fk_table.FkTable to use ZeroFKTable monkeypatch.setattr(pineappl.fk_table.FkTable, "read", ZeroFKTable) - pdfs = NNPDF40.load() + pdfs = PDFset(PDF).load() structurefunc = sf.InterpStructureFunction("", pdfs.central_member) for x in np.geomspace(1e-4, 1.0, 10): for Q in np.geomspace(10, 1000000, 10): @@ -77,7 +76,7 @@ def test_zero_grid(monkeypatch): def test_params(): "test initialization of parameters" - pdfs = NNPDF40.load() + pdfs = PDFset(PDF).load() replica = 1 theory = TEST_THEORY.get_description() for channel in ["F2", "FL"]: @@ -93,7 +92,7 @@ def test_params(): def test_interpolation_grid(): """test that the values coming out of InterpStructureFunction match the grid ones""" - pdfs = NNPDF40.load() + pdfs = PDFset(PDF).load() for replica in [1, 2, 3]: for channel in ["F2", "FL"]: tmp = "fastkernel/fiatlux_dis_" + channel + ".pineappl.lz4" From 53d7c73728050d092065714fbc6671cf0edda27b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Mon, 19 Jun 2023 10:28:52 +0200 Subject: [PATCH 47/69] Add comment --- validphys2/src/validphys/photon/compute.py | 1 + 1 file changed, 1 insertion(+) diff --git a/validphys2/src/validphys/photon/compute.py b/validphys2/src/validphys/photon/compute.py index 189f801b97..52c3b04c78 100644 --- a/validphys2/src/validphys/photon/compute.py +++ b/validphys2/src/validphys/photon/compute.py @@ -17,6 +17,7 @@ log = logging.getLogger(__name__) +# not the complete fiatlux runcard since some parameters are set in the code FIATLUX_DEFAULT = { "apfel": False, "eps_rel": 1e-1, # extra precision on any single integration. From 95f1e2416d73f80f0d7180e42f7b214c8eb169ad Mon Sep 17 00:00:00 2001 From: Zahari Kassabov Date: Mon, 17 Apr 2023 09:21:05 +0100 Subject: [PATCH 48/69] Allow categorical variables in smpdf plots Fix crash in plot_smpdf when the variable in the color axis is categorical, such as for the W and Z total cross sections. Encode the categorical variables as integers and use an appropriate color map to display them. The implementation feels a bit untidy, with some variables acting at a distance, but there doesn't seem to be an easy better way considering that we'd like the color bar to be the same for all figures. Also, the fact that np.unique sorts the output may not be what we want. See https://github.com/numpy/numpy/issues/8621. But don't want to make it more complicated. --- validphys2/src/validphys/dataplots.py | 112 ++++++++++++++++---------- 1 file changed, 71 insertions(+), 41 deletions(-) diff --git a/validphys2/src/validphys/dataplots.py b/validphys2/src/validphys/dataplots.py index 8ae5fe1012..15aeec77c0 100644 --- a/validphys2/src/validphys/dataplots.py +++ b/validphys2/src/validphys/dataplots.py @@ -4,10 +4,11 @@ """ from __future__ import generator_stop +import logging +import itertools from collections import defaultdict from collections.abc import Sequence -import itertools -import logging + import matplotlib as mpl from matplotlib import cm @@ -387,6 +388,7 @@ def _plot_fancy_impl( lb = labellist[normalize_to] ax.set_ylabel(f"Ratio to {lb if lb else norm_result.label}") + ax.legend().set_zorder(100000) ax.set_xlabel(info.xlabel) fig.tight_layout() @@ -851,7 +853,7 @@ def plot_replica_sum_rules(pdf, sum_rules, Q): @figuregen -def plot_smpdf(pdf, dataset, obs_pdf_correlations, mark_threshold: float = 0.9): +def plot_smpdf(pdf, dataset, obs_pdf_correlations, mark_threshold:float=0.9): """ Plot the correlations between the change in the observable and the change in the PDF in (x,fl) space. @@ -879,7 +881,6 @@ def plot_smpdf(pdf, dataset, obs_pdf_correlations, mark_threshold: float = 0.9): info = get_info(dataset) table = kitable(dataset, info) - figby = sane_groupby_iter(table, info.figure_by) basis = obs_pdf_correlations.basis @@ -891,54 +892,83 @@ def plot_smpdf(pdf, dataset, obs_pdf_correlations, mark_threshold: float = 0.9): plotting_var = info.get_xcol(table) - # TODO: vmin vmax should be global or by figure? - vmin, vmax = min(plotting_var), max(plotting_var) - if info.x_scale == 'log': - norm = mcolors.LogNorm(vmin, vmax) + categorical = not np.issubdtype(plotting_var.dtype, np.number) + if categorical: + # Categorical + keys, values = np.unique(plotting_var, return_inverse=True) + plotting_var = values + nunique = len(keys) + if nunique <= len(cm.Set2.colors): + cmap = mcolors.ListedColormap(cm.Set2.colors[:nunique]) + else: + cmap = cm.viridis.resample(nunique) + bins = np.linspace(0, nunique, nunique + 1) + norm = mcolors.BoundaryNorm(bins, nunique) + else: - norm = mcolors.Normalize(vmin, vmax) - # http://stackoverflow.com/a/11558629/1007990 - sm = cm.ScalarMappable(cmap=cm.viridis, norm=norm) + cmap = cm.viridis + #TODO: vmin vmax should be global or by figure? + vmin,vmax = min(plotting_var), max(plotting_var) + if info.x_scale == 'log': + norm = mcolors.LogNorm(vmin, vmax) + else: + norm = mcolors.Normalize(vmin, vmax) + + + table["__plotting_var"] = plotting_var + sm = cm.ScalarMappable(cmap=cmap, norm=norm) + + figby = sane_groupby_iter(table, info.figure_by) for same_vals, fb in figby: - grid = fullgrid[np.asarray(fb.index), ...] + grid = fullgrid[ np.asarray(fb.index),...] + - # Use the maximum absolute correlation for plotting purposes + #Use the maximum absolute correlation for plotting purposes absgrid = np.max(np.abs(grid), axis=0) - mark_mask = absgrid > np.max(absgrid) * mark_threshold + mark_mask = absgrid > np.max(absgrid)*mark_threshold label = info.group_label(same_vals, info.figure_by) - # TODO: PY36ScalarMappable - # TODO Improve title? - title = "%s %s\n[%s]" % (info.dataset_label, '(%s)' % label if label else '', pdf.label) - - # Start plotting - w, h = mpl.rcParams["figure.figsize"] - h *= 2.5 - fig, axes = plotutils.subplots(nrows=nf, sharex=True, figsize=(w, h), sharey=True) + #TODO: PY36ScalarMappable + #TODO Improve title? + title = "%s %s\n[%s]" % (info.dataset_label, '(%s)'%label if label else '' ,pdf.label) + + #Start plotting + w,h = plt.rcParams["figure.figsize"] + h*=2.5 + fig,axes = plt.subplots(nrows=nf ,sharex=True, figsize=(w,h), sharey=True) fig.suptitle(title) - colors = sm.to_rgba(info.get_xcol(fb)) + colors = sm.to_rgba(fb["__plotting_var"]) for flindex, (ax, fl) in enumerate(zip(axes, fls)): - for i, color in enumerate(colors): - ax.plot(x, grid[i, flindex, :].T, color=color) + for i,color in enumerate(colors): + ax.plot(x, grid[i,flindex,:].T, color=color) - flmask = mark_mask[flindex, :] + + flmask = mark_mask[flindex,:] ranges = split_ranges(x, flmask, filter_falses=True) for r in ranges: ax.axvspan(r[0], r[-1], color='#eeeeff') - ax.set_ylabel("$%s$" % basis.elementlabel(fl)) + ax.set_ylabel("$%s$"%basis.elementlabel(fl)) ax.set_xscale(scale_from_grid(obs_pdf_correlations)) - ax.set_ylim(-1, 1) + ax.set_ylim(-1,1) ax.set_xlim(x[0], x[-1]) ax.set_xlabel('$x$') - # fig.subplots_adjust(hspace=0) + #fig.subplots_adjust(hspace=0) - fig.colorbar(sm, ax=axes.ravel().tolist(), label=info.xlabel, aspect=100) - # TODO: Fix title for this - # fig.tight_layout() - yield fig + cbar = fig.colorbar( + sm, + ax=axes.ravel().tolist(), + label=info.xlabel, + aspect=100, + ) + if categorical: + cbar.set_ticks(np.linspace(0.5, nunique - 0.5, nunique)) + cbar.ax.set_yticklabels(keys) + #TODO: Fix title for this + #fig.tight_layout() + yield fig @figure def plot_obscorrs(corrpair_datasets, obs_obs_correlations, pdf): @@ -1225,14 +1255,14 @@ def plot_xq2( highlight_datasets = set() def next_options(): - # Get the colors - prop_settings = mpl.rcParams['axes.prop_cycle'] - # Apparently calling the object gives us an infinite cycler + #Get the colors + prop_settings = plt.rcParams['axes.prop_cycle'] + #Apparently calling the object gives us an infinite cycler settings_cycler = prop_settings() - # So far, I don't understand how this is done with mpl "cycler" - # objects, or wether I like it. So far this is godd enough - for markeropts, settings in zip(plotutils.marker_iter_plot(), settings_cycler): - # Override last with first + #So far, I don't understand how this is done with mpl "cycler" + #objects, or wether I like it. So far this is godd enough + for markeropts, settings in zip(plotutils.marker_iter_plot(), settings_cycler): + #Override last with first options = { 'linestyle': 'none', **markeropts, @@ -1243,7 +1273,7 @@ def next_options(): next_opts = next_options() key_options = {} - for experiment, commondata, fitted, masked, group in dataset_inputs_by_groups_xq2map: + for (experiment, commondata, fitted, masked, group) in dataset_inputs_by_groups_xq2map: info = get_info(commondata) if marker_by == 'process type': key = info.process_description From ced398162ee853ce820d1cec51bfea3b5f10cbe4 Mon Sep 17 00:00:00 2001 From: Zahari Kassabov Date: Fri, 26 May 2023 11:53:35 +0100 Subject: [PATCH 49/69] Add test and improve variables --- validphys2/src/validphys/dataplots.py | 32 ++++++++---------- .../baseline/test_plot_smpdf_categorical.png | Bin 0 -> 139010 bytes validphys2/src/validphys/tests/conftest.py | 12 +++++++ validphys2/src/validphys/tests/test_plots.py | 5 +++ 4 files changed, 32 insertions(+), 17 deletions(-) create mode 100644 validphys2/src/validphys/tests/baseline/test_plot_smpdf_categorical.png diff --git a/validphys2/src/validphys/dataplots.py b/validphys2/src/validphys/dataplots.py index 15aeec77c0..3999ff6386 100644 --- a/validphys2/src/validphys/dataplots.py +++ b/validphys2/src/validphys/dataplots.py @@ -4,11 +4,10 @@ """ from __future__ import generator_stop -import logging -import itertools from collections import defaultdict from collections.abc import Sequence - +import itertools +import logging import matplotlib as mpl from matplotlib import cm @@ -895,20 +894,20 @@ def plot_smpdf(pdf, dataset, obs_pdf_correlations, mark_threshold:float=0.9): categorical = not np.issubdtype(plotting_var.dtype, np.number) if categorical: # Categorical - keys, values = np.unique(plotting_var, return_inverse=True) + categorical_keys, values = np.unique(plotting_var, return_inverse=True) plotting_var = values - nunique = len(keys) - if nunique <= len(cm.Set2.colors): - cmap = mcolors.ListedColormap(cm.Set2.colors[:nunique]) + num_categories = len(categorical_keys) + if num_categories <= len(cm.Set2.colors): + cmap = mcolors.ListedColormap(cm.Set2.colors[:num_categories]) else: - cmap = cm.viridis.resample(nunique) - bins = np.linspace(0, nunique, nunique + 1) - norm = mcolors.BoundaryNorm(bins, nunique) + cmap = cm.viridis.resample(num_categories) + bins = np.linspace(0, num_categories, num_categories + 1) + norm = mcolors.BoundaryNorm(bins, num_categories) else: cmap = cm.viridis #TODO: vmin vmax should be global or by figure? - vmin,vmax = min(plotting_var), max(plotting_var) + vmin, vmax = min(plotting_var), max(plotting_var) if info.x_scale == 'log': norm = mcolors.LogNorm(vmin, vmax) else: @@ -931,12 +930,12 @@ def plot_smpdf(pdf, dataset, obs_pdf_correlations, mark_threshold:float=0.9): label = info.group_label(same_vals, info.figure_by) #TODO: PY36ScalarMappable #TODO Improve title? - title = "%s %s\n[%s]" % (info.dataset_label, '(%s)'%label if label else '' ,pdf.label) + title = f"{info.dataset_label} {label if label else ''}\n[{pdf.label}]" #Start plotting - w,h = plt.rcParams["figure.figsize"] + w,h = mpl.rcParams["figure.figsize"] h*=2.5 - fig,axes = plt.subplots(nrows=nf ,sharex=True, figsize=(w,h), sharey=True) + fig, axes = plotutils.subplots(nrows=nf, sharex=True, figsize=(w,h), sharey=True) fig.suptitle(title) colors = sm.to_rgba(fb["__plotting_var"]) for flindex, (ax, fl) in enumerate(zip(axes, fls)): @@ -954,7 +953,6 @@ def plot_smpdf(pdf, dataset, obs_pdf_correlations, mark_threshold:float=0.9): ax.set_ylim(-1,1) ax.set_xlim(x[0], x[-1]) ax.set_xlabel('$x$') - #fig.subplots_adjust(hspace=0) cbar = fig.colorbar( sm, @@ -963,8 +961,8 @@ def plot_smpdf(pdf, dataset, obs_pdf_correlations, mark_threshold:float=0.9): aspect=100, ) if categorical: - cbar.set_ticks(np.linspace(0.5, nunique - 0.5, nunique)) - cbar.ax.set_yticklabels(keys) + cbar.set_ticks(np.linspace(0.5, num_categories - 0.5, num_categories)) + cbar.ax.set_yticklabels(categorical_keys) #TODO: Fix title for this #fig.tight_layout() diff --git a/validphys2/src/validphys/tests/baseline/test_plot_smpdf_categorical.png b/validphys2/src/validphys/tests/baseline/test_plot_smpdf_categorical.png new file mode 100644 index 0000000000000000000000000000000000000000..42349bad9596889cf930c5e5b1ee777709c3bf28 GIT binary patch literal 139010 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 Date: Fri, 26 May 2023 12:16:29 +0100 Subject: [PATCH 50/69] Remove figby in atlas total cross section Overall it makes little sense to separate 3 points into 2+1 --- nnpdfcpp/data/commondata/PLOTTING_ATLAS_WZ_TOT_13TEV.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/nnpdfcpp/data/commondata/PLOTTING_ATLAS_WZ_TOT_13TEV.yaml b/nnpdfcpp/data/commondata/PLOTTING_ATLAS_WZ_TOT_13TEV.yaml index c05aa86e87..73bbec06cb 100644 --- a/nnpdfcpp/data/commondata/PLOTTING_ATLAS_WZ_TOT_13TEV.yaml +++ b/nnpdfcpp/data/commondata/PLOTTING_ATLAS_WZ_TOT_13TEV.yaml @@ -3,8 +3,7 @@ dataset_label: "ATLAS $W,Z$ inclusive 13 TeV" x: " " y_label: $\sigma^{fid}$ (fb) -figure_by: - - boson + extra_labels: " ": - $W^-$ From 9b861be894054caa30c699bb554908807f5dd774 Mon Sep 17 00:00:00 2001 From: Zahari Kassabov Date: Mon, 19 Jun 2023 10:50:17 +0100 Subject: [PATCH 51/69] Improve comments --- validphys2/src/validphys/dataplots.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/validphys2/src/validphys/dataplots.py b/validphys2/src/validphys/dataplots.py index 3999ff6386..7a66a2e3e9 100644 --- a/validphys2/src/validphys/dataplots.py +++ b/validphys2/src/validphys/dataplots.py @@ -852,7 +852,7 @@ def plot_replica_sum_rules(pdf, sum_rules, Q): @figuregen -def plot_smpdf(pdf, dataset, obs_pdf_correlations, mark_threshold:float=0.9): +def plot_smpdf(pdf, dataset, obs_pdf_correlations, mark_threshold: float = 0.9): """ Plot the correlations between the change in the observable and the change in the PDF in (x,fl) space. @@ -893,7 +893,8 @@ def plot_smpdf(pdf, dataset, obs_pdf_correlations, mark_threshold:float=0.9): categorical = not np.issubdtype(plotting_var.dtype, np.number) if categorical: - # Categorical + # Plot lines using a categorical color map (for a reasonable number of + # categories), and set up the categorical labels (used below). categorical_keys, values = np.unique(plotting_var, return_inverse=True) plotting_var = values num_categories = len(categorical_keys) From e43cac7e5ad7aca49e5c612d163cd443d45aa223 Mon Sep 17 00:00:00 2001 From: Zahari Kassabov Date: Mon, 19 Jun 2023 10:57:23 +0100 Subject: [PATCH 52/69] Typo --- validphys2/src/validphys/tests/conftest.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/validphys2/src/validphys/tests/conftest.py b/validphys2/src/validphys/tests/conftest.py index b04d1d4eee..a78216b09b 100644 --- a/validphys2/src/validphys/tests/conftest.py +++ b/validphys2/src/validphys/tests/conftest.py @@ -27,7 +27,7 @@ def tmp(tmpdir): SINGLE_DATASET = {'dataset': 'NMC'} -SINGLE_CATEGICAL = {"dataset": "ATLAS_WZ_TOT_13TEV", 'cfac': ["QCD"]} +SINGLE_CATEGORICAL = {"dataset": "ATLAS_WZ_TOT_13TEV", 'cfac': ["QCD"]} DATA = [ {'dataset': 'NMC'}, @@ -102,7 +102,7 @@ def single_data_categorical_internal_cuts_config(data_internal_cuts_config): """Test dataset with categorical plotting variables""" return { **data_internal_cuts_config, - 'dataset_input': SINGLE_CATEGICAL, + 'dataset_input': SINGLE_CATEGORICAL, # NOTE: The old theory is currently bugged for this dataset 'theoryid': THEORYID_NEW, } From 80a99fcb31507ad5bc2cd5fc7972993368e2577b Mon Sep 17 00:00:00 2001 From: Zahari Kassabov Date: Mon, 19 Jun 2023 11:46:03 +0100 Subject: [PATCH 53/69] Leftover typo --- validphys2/src/validphys/dataplots.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/validphys2/src/validphys/dataplots.py b/validphys2/src/validphys/dataplots.py index 7a66a2e3e9..7a8088ed31 100644 --- a/validphys2/src/validphys/dataplots.py +++ b/validphys2/src/validphys/dataplots.py @@ -1255,7 +1255,7 @@ def plot_xq2( def next_options(): #Get the colors - prop_settings = plt.rcParams['axes.prop_cycle'] + prop_settings = mpl.rcParams['axes.prop_cycle'] #Apparently calling the object gives us an infinite cycler settings_cycler = prop_settings() #So far, I don't understand how this is done with mpl "cycler" From 6089608fb7fdd42ffc4de48b414bab0ab9a12745 Mon Sep 17 00:00:00 2001 From: Zahari Kassabov Date: Mon, 19 Jun 2023 11:49:31 +0100 Subject: [PATCH 54/69] Update test image --- .../tests/baseline/test_plot_smpdf.png | Bin 208347 -> 207972 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/validphys2/src/validphys/tests/baseline/test_plot_smpdf.png b/validphys2/src/validphys/tests/baseline/test_plot_smpdf.png index 7274fa0469d7cd899d5d2f9e514fb3e27ad68004..883dc4d07773b37ab5cc792ccae678a8b7b4b747 100644 GIT binary patch literal 207972 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

-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 literal 208347 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 MWY|$|l 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 From d5a48f9092beb2f9100ad19bed9145d4e61d2188 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Mon, 19 Jun 2023 15:05:21 +0200 Subject: [PATCH 55/69] Check installation of error pdf in test --- validphys2/src/validphys/tests/photon/test_compute.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/validphys2/src/validphys/tests/photon/test_compute.py b/validphys2/src/validphys/tests/photon/test_compute.py index 948ed3d3db..b7942cf468 100644 --- a/validphys2/src/validphys/tests/photon/test_compute.py +++ b/validphys2/src/validphys/tests/photon/test_compute.py @@ -10,14 +10,17 @@ from validphys.core import PDF as PDFset from validphys.photon import structure_functions as sf from validphys.photon.compute import Alpha, Photon, FIATLUX_DEFAULT +from validphys.loader import FallbackLoader from ..conftest import PDF TEST_THEORY = API.theoryid(theoryid=398) +# check if "LUXqed17_plus_PDF4LHC15_nnlo_100" is installed +FallbackLoader().check_pdf("LUXqed17_plus_PDF4LHC15_nnlo_100") FIATLUX_RUNCARD = { "luxset": PDFset(PDF), - "additional_errors": API.pdf(pdf='LUXqed17_plus_PDF4LHC15_nnlo_100'), + "additional_errors": PDFset('LUXqed17_plus_PDF4LHC15_nnlo_100'), "luxseed": 123456789, "eps_base": 1e-2, # using low precision to speed up tests } From 1e237da236ab9dbc0820e226dae11af387ba9745 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Mon, 19 Jun 2023 15:06:57 +0200 Subject: [PATCH 56/69] Call black and isort --- validphys2/src/validphys/tests/photon/test_compute.py | 6 +++--- .../src/validphys/tests/photon/test_structurefunctions.py | 4 +--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/validphys2/src/validphys/tests/photon/test_compute.py b/validphys2/src/validphys/tests/photon/test_compute.py index b7942cf468..b17547dcb0 100644 --- a/validphys2/src/validphys/tests/photon/test_compute.py +++ b/validphys2/src/validphys/tests/photon/test_compute.py @@ -8,9 +8,9 @@ from n3fit.io.writer import XGRID from validphys.api import API from validphys.core import PDF as PDFset -from validphys.photon import structure_functions as sf -from validphys.photon.compute import Alpha, Photon, FIATLUX_DEFAULT from validphys.loader import FallbackLoader +from validphys.photon import structure_functions as sf +from validphys.photon.compute import FIATLUX_DEFAULT, Alpha, Photon from ..conftest import PDF @@ -22,7 +22,7 @@ "luxset": PDFset(PDF), "additional_errors": PDFset('LUXqed17_plus_PDF4LHC15_nnlo_100'), "luxseed": 123456789, - "eps_base": 1e-2, # using low precision to speed up tests + "eps_base": 1e-2, # using low precision to speed up tests } diff --git a/validphys2/src/validphys/tests/photon/test_structurefunctions.py b/validphys2/src/validphys/tests/photon/test_structurefunctions.py index 52f68f0a22..571ae765f2 100644 --- a/validphys2/src/validphys/tests/photon/test_structurefunctions.py +++ b/validphys2/src/validphys/tests/photon/test_structurefunctions.py @@ -18,7 +18,7 @@ def xfxQ(self, x, Q): res[21] = 0.0 res[22] = 0.0 return res - + def xfxQ2(self, i, x, Q2): return self.xfxQ(x, np.sqrt(Q2))[i] @@ -61,7 +61,6 @@ def test_zero_pdfs(): np.testing.assert_allclose(fl.fxq(x, Q), 0.0) - def test_zero_grid(monkeypatch): "test that a zero grid gives a zero structure function" # patching pineappl.fk_table.FkTable to use ZeroFKTable @@ -73,7 +72,6 @@ def test_zero_grid(monkeypatch): np.testing.assert_allclose(structurefunc.fxq(x, Q), 0.0, rtol=1e-5) - def test_params(): "test initialization of parameters" pdfs = PDFset(PDF).load() From 1e105cdf1a53c5d97604b874e581a5c2b2cdacac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Laurenti?= Date: Mon, 19 Jun 2023 15:44:01 +0200 Subject: [PATCH 57/69] Fix last commit --- validphys2/src/validphys/tests/photon/test_compute.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/validphys2/src/validphys/tests/photon/test_compute.py b/validphys2/src/validphys/tests/photon/test_compute.py index b17547dcb0..9e3226062e 100644 --- a/validphys2/src/validphys/tests/photon/test_compute.py +++ b/validphys2/src/validphys/tests/photon/test_compute.py @@ -16,11 +16,10 @@ TEST_THEORY = API.theoryid(theoryid=398) -# check if "LUXqed17_plus_PDF4LHC15_nnlo_100" is installed -FallbackLoader().check_pdf("LUXqed17_plus_PDF4LHC15_nnlo_100") FIATLUX_RUNCARD = { "luxset": PDFset(PDF), - "additional_errors": PDFset('LUXqed17_plus_PDF4LHC15_nnlo_100'), + # check if "LUXqed17_plus_PDF4LHC15_nnlo_100" is installed + "additional_errors": FallbackLoader().check_pdf("LUXqed17_plus_PDF4LHC15_nnlo_100"), "luxseed": 123456789, "eps_base": 1e-2, # using low precision to speed up tests } From d6392ba4044947e5aac6018d95cfee2e642fb3ab Mon Sep 17 00:00:00 2001 From: Zaharid Date: Thu, 22 Jun 2023 09:29:26 +0100 Subject: [PATCH 58/69] Add luminosity channels (#1762) * Add luminosity channels This adds lumi channels corresponding to the main production channels for W and Z bosons. --------- Co-authored-by: Juan M. Cruz-Martinez --- validphys2/examples/pdf_lumi_plots.yaml | 3 ++- validphys2/src/validphys/gridvalues.py | 30 ++++++++++++++++++++++--- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/validphys2/examples/pdf_lumi_plots.yaml b/validphys2/examples/pdf_lumi_plots.yaml index 67d046dba7..c570249a83 100644 --- a/validphys2/examples/pdf_lumi_plots.yaml +++ b/validphys2/examples/pdf_lumi_plots.yaml @@ -13,7 +13,8 @@ pdf: {id: "NNPDF40_nlo_as_01180", label: "4.0 NLO"} sqrts: 13000 # GeV lumi_channel: "gg" # one of [gg, gq, qqbar, qq, ddbar, uubar, ssbar, - # ccbar, bbbar, dubar, udbar, scbar, csbar, pp, gp] + # ccbar, bbbar, dubar, udbar, scbar, csbar, pp, gp, + # wlum1, zlum1] PDFscalespecs: - xscale: log diff --git a/validphys2/src/validphys/gridvalues.py b/validphys2/src/validphys/gridvalues.py index 83628a9997..96d2e3aacb 100644 --- a/validphys2/src/validphys/gridvalues.py +++ b/validphys2/src/validphys/gridvalues.py @@ -32,6 +32,8 @@ 'csbar': r'c\bar{s}', 'pp': r'\gamma\gamma', 'gp': r'g\gamma', + 'zlum1': r'u\bar{u} + d\bar{d}', + 'wlum1': r'u\bar{d} + d\bar{u}', } QUARK_COMBINATIONS = { @@ -115,6 +117,15 @@ def central_grid_values(pdf: PDF, flmat, xmat, qmat): # TODO: Investigate writting these in cython/cffi/numba/... +def _parton_pair_lumi_inner(pdf_set, n, mx, x1, x2, i, j): + """Helper to evaluate lumis for pairs of partons.""" + # fmt: off + return ( + pdf_set.xfxQ(x1, mx, n, i)*pdf_set.xfxQ(x2, mx, n, j) + + pdf_set.xfxQ(x1, mx, n, j)*pdf_set.xfxQ(x2, mx, n, i) + ) + + def evaluate_luminosity( pdf_set: LHAPDFSet, n: int, s: float, mx: float, x1: float, x2: float, channel ): @@ -155,11 +166,24 @@ def evaluate_luminosity( # as in the second of Eq.(4) in arXiv:1607.01831 res = sum(a*b for a,b in itertools.product(r1,r2)) + elif channel == 'zlum1': + u, ubar = 2, -2 + d, dbar = -1, 1 + res = ( + _parton_pair_lumi_inner(pdf_set=pdf_set, n=n, mx=mx, x1=x1, x2=x2, i=u, j=ubar) + + _parton_pair_lumi_inner(pdf_set=pdf_set, n=n, mx=mx, x1=x1, x2=x2, i=d, j=dbar) + ) + elif channel == 'wlum1': + u, dbar = 2, -1 + d, ubar = 1, -2 + res = ( + _parton_pair_lumi_inner(pdf_set=pdf_set, n=n, mx=mx, x1=x1, x2=x2, i=u, j=dbar) + + _parton_pair_lumi_inner(pdf_set=pdf_set, n=n, mx=mx, x1=x1, x2=x2, i=d, j=ubar) + ) + elif channel in QUARK_COMBINATIONS.keys(): i, j = QUARK_COMBINATIONS[channel] - res = (pdf_set.xfxQ(x1, mx, n, i) * pdf_set.xfxQ(x2, mx, n, j) - + pdf_set.xfxQ(x1, mx, n, j) * pdf_set.xfxQ(x2, mx, n, i)) - + res = _parton_pair_lumi_inner(pdf_set=pdf_set, n=n, mx=mx, x1=x1, x2=x2, i=i, j=j) else: raise ValueError("Bad channel") # fmt: on From e868a239168a7d980fbd54d3d2a37c212f91485e Mon Sep 17 00:00:00 2001 From: Mark Nestor Costantini Date: Thu, 22 Jun 2023 09:33:41 +0100 Subject: [PATCH 59/69] ordering done with dictionary --- validphys2/src/validphys/pseudodata.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/validphys2/src/validphys/pseudodata.py b/validphys2/src/validphys/pseudodata.py index 20f8588ae6..847df753cf 100644 --- a/validphys2/src/validphys/pseudodata.py +++ b/validphys2/src/validphys/pseudodata.py @@ -369,7 +369,7 @@ def make_level1_data(data, level0_commondata_wc, filterseed, experiments_index, indexed_level1_data = indexed_make_replica(experiments_index, level1_data) - dataset_order = [cd.setname for cd in level0_commondata_wc] + dataset_order = {cd.setname: i for i, cd in enumerate(level0_commondata_wc)} # ===== create commondata instances with central values given by pseudo_data =====# level1_commondata_dict = {c.setname: c for c in level0_commondata_wc} @@ -381,9 +381,8 @@ def make_level1_data(data, level0_commondata_wc, filterseed, experiments_index, level1_commondata_dict[xx].with_central_value(grp.values) ) # sort back so as to mantain same order as in level0_commondata_wc - level1_commondata_instances_wc = sorted( - level1_commondata_instances_wc, key=lambda obj: dataset_order.index(obj.setname) - ) + level1_commondata_instances_wc.sort(key=lambda x: dataset_order[x.setname]) + return level1_commondata_instances_wc From acd0b0690803f16e046b9467c756310421b793d0 Mon Sep 17 00:00:00 2001 From: niclaurenti Date: Thu, 22 Jun 2023 15:36:02 +0200 Subject: [PATCH 60/69] Use function to generate fiatlux runcard in tests --- validphys2/src/validphys/tests/conftest.py | 1 + .../validphys/tests/photon/test_compute.py | 31 ++++++++++--------- .../tests/photon/test_structurefunctions.py | 4 +-- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/validphys2/src/validphys/tests/conftest.py b/validphys2/src/validphys/tests/conftest.py index a78216b09b..75d35c718c 100644 --- a/validphys2/src/validphys/tests/conftest.py +++ b/validphys2/src/validphys/tests/conftest.py @@ -56,6 +56,7 @@ def tmp(tmpdir): HESSIAN_PDF = "NNPDF40_nnlo_as_01180_hessian" THEORYID = 162 THEORYID_NEW = 399 +THEORY_QED = 398 FIT = "NNPDF40_nnlo_lowprecision" FIT_3REPLICAS = "Basic_runcard_3replicas_lowprec_221130" FIT_3REPLICAS_DCUTS = "Basic_runcard_3replicas_diffcuts_230221" diff --git a/validphys2/src/validphys/tests/photon/test_compute.py b/validphys2/src/validphys/tests/photon/test_compute.py index 9e3226062e..c5ad3dc74c 100644 --- a/validphys2/src/validphys/tests/photon/test_compute.py +++ b/validphys2/src/validphys/tests/photon/test_compute.py @@ -12,22 +12,23 @@ from validphys.photon import structure_functions as sf from validphys.photon.compute import FIATLUX_DEFAULT, Alpha, Photon -from ..conftest import PDF +from ..conftest import PDF, THEORY_QED -TEST_THEORY = API.theoryid(theoryid=398) +TEST_THEORY = API.theoryid(theoryid=THEORY_QED) -FIATLUX_RUNCARD = { - "luxset": PDFset(PDF), - # check if "LUXqed17_plus_PDF4LHC15_nnlo_100" is installed - "additional_errors": FallbackLoader().check_pdf("LUXqed17_plus_PDF4LHC15_nnlo_100"), - "luxseed": 123456789, - "eps_base": 1e-2, # using low precision to speed up tests -} +def generate_fiatlux_runcard(): + return { + "luxset": PDFset(PDF), + # check if "LUXqed17_plus_PDF4LHC15_nnlo_100" is installed + "additional_errors": FallbackLoader().check_pdf("LUXqed17_plus_PDF4LHC15_nnlo_100"), + "luxseed": 123456789, + "eps_base": 1e-2, # using low precision to speed up tests + } def test_parameters_init(): "test initailization of the parameters from Photon class" - fiatlux_runcard = FIATLUX_RUNCARD.copy() + fiatlux_runcard = generate_fiatlux_runcard() # we are not testing the photon here so we make it faster fiatlux_runcard['eps_base'] = 1e-1 @@ -35,9 +36,9 @@ def test_parameters_init(): photon = Photon(TEST_THEORY, fiatlux_runcard, [1, 2, 3]) np.testing.assert_equal(photon.replicas, [1, 2, 3]) - np.testing.assert_equal(photon.luxpdfset._name, FIATLUX_RUNCARD["luxset"].name) + np.testing.assert_equal(photon.luxpdfset._name, fiatlux_runcard["luxset"].name) np.testing.assert_equal(photon.additional_errors.name, "LUXqed17_plus_PDF4LHC15_nnlo_100") - np.testing.assert_equal(photon.luxseed, FIATLUX_RUNCARD["luxseed"]) + np.testing.assert_equal(photon.luxseed, fiatlux_runcard["luxseed"]) np.testing.assert_equal(photon.path_to_eko_photon, TEST_THEORY.path / "eko_photon.tar") np.testing.assert_equal(photon.q_in, 100.0) @@ -98,7 +99,7 @@ def test_photon(): """test that photon coming out of Photon interpolator matches the photon array for XGRID points """ - fiatlux_runcard = FIATLUX_RUNCARD.copy() + fiatlux_runcard = generate_fiatlux_runcard() fiatlux_runcard["additional_errors"] = False theory = TEST_THEORY.get_description() @@ -108,7 +109,7 @@ def test_photon(): # set up fiatlux path_to_F2 = TEST_THEORY.path / "fastkernel/fiatlux_dis_F2.pineappl.lz4" path_to_FL = TEST_THEORY.path / "fastkernel/fiatlux_dis_FL.pineappl.lz4" - pdfs = FIATLUX_RUNCARD["luxset"].load() + pdfs = fiatlux_runcard["luxset"].load() f2 = sf.InterpStructureFunction(path_to_F2, pdfs.members[replica]) fl = sf.InterpStructureFunction(path_to_FL, pdfs.members[replica]) f2lo = sf.F2LO(pdfs.members[replica], theory) @@ -118,7 +119,7 @@ def test_photon(): fiatlux_default['mproton'] = theory['MP'] fiatlux_default["qed_running"] = bool(np.isclose(theory["Qedref"], theory["Qref"])) fiatlux_default["q2_max"] = float(f2.q2_max) - fiatlux_default["eps_base"] = FIATLUX_RUNCARD["eps_base"] + fiatlux_default["eps_base"] = fiatlux_runcard["eps_base"] # load fiatlux with tempfile.NamedTemporaryFile(mode="w") as tmp: diff --git a/validphys2/src/validphys/tests/photon/test_structurefunctions.py b/validphys2/src/validphys/tests/photon/test_structurefunctions.py index 571ae765f2..f45cf94527 100644 --- a/validphys2/src/validphys/tests/photon/test_structurefunctions.py +++ b/validphys2/src/validphys/tests/photon/test_structurefunctions.py @@ -5,9 +5,9 @@ from validphys.core import PDF as PDFset import validphys.photon.structure_functions as sf -from ..conftest import PDF +from ..conftest import PDF, THEORY_QED -TEST_THEORY = API.theoryid(theoryid=398) +TEST_THEORY = API.theoryid(theoryid=THEORY_QED) class ZeroPdfs: From 40bc7bcb6dbfedf92d15011a71657cd37bfc5b49 Mon Sep 17 00:00:00 2001 From: niclaurenti Date: Thu, 22 Jun 2023 15:43:08 +0200 Subject: [PATCH 61/69] Call api inside tests --- validphys2/src/validphys/photon/compute.py | 9 ++++--- .../validphys/tests/photon/test_compute.py | 26 +++++++++++-------- .../tests/photon/test_structurefunctions.py | 17 ++++++------ 3 files changed, 30 insertions(+), 22 deletions(-) diff --git a/validphys2/src/validphys/photon/compute.py b/validphys2/src/validphys/photon/compute.py index 52c3b04c78..c9a5805f07 100644 --- a/validphys2/src/validphys/photon/compute.py +++ b/validphys2/src/validphys/photon/compute.py @@ -81,7 +81,6 @@ def __init__(self, theoryid, lux_params, replicas): self.path_to_eko_photon = theoryid.path / "eko_photon.tar" with EKO.read(self.path_to_eko_photon) as eko: self.q_in = np.sqrt(eko.mu20) - # set fiatlux self.lux = {} @@ -121,7 +120,9 @@ def __init__(self, theoryid, lux_params, replicas): self.lux[replica].PlugStructureFunctions(f2.fxq, fl.fxq, f2lo.fxq) photon_array = self.compute_photon_array(replica) - self.interpolator.append(interp1d(XGRID, photon_array, fill_value="extrapolate", kind="cubic")) + self.interpolator.append( + interp1d(XGRID, photon_array, fill_value="extrapolate", kind="cubic") + ) self.integral.append(trapezoid(photon_array, XGRID)) def compute_photon_array(self, replica): @@ -140,7 +141,9 @@ def compute_photon_array(self, replica): """ # Compute photon PDF log.info(f"Computing photon") - photon_qin = np.array([self.lux[replica].EvaluatePhoton(x, self.q_in**2).total for x in XGRID]) + photon_qin = np.array( + [self.lux[replica].EvaluatePhoton(x, self.q_in**2).total for x in XGRID] + ) photon_qin += self.generate_errors(replica) # fiatlux computes x * gamma(x) photon_qin /= XGRID diff --git a/validphys2/src/validphys/tests/photon/test_compute.py b/validphys2/src/validphys/tests/photon/test_compute.py index c5ad3dc74c..82787e7492 100644 --- a/validphys2/src/validphys/tests/photon/test_compute.py +++ b/validphys2/src/validphys/tests/photon/test_compute.py @@ -14,7 +14,6 @@ from ..conftest import PDF, THEORY_QED -TEST_THEORY = API.theoryid(theoryid=THEORY_QED) def generate_fiatlux_runcard(): return { @@ -29,23 +28,25 @@ def generate_fiatlux_runcard(): def test_parameters_init(): "test initailization of the parameters from Photon class" fiatlux_runcard = generate_fiatlux_runcard() + test_theory = API.theoryid(theoryid=THEORY_QED) # we are not testing the photon here so we make it faster fiatlux_runcard['eps_base'] = 1e-1 - photon = Photon(TEST_THEORY, fiatlux_runcard, [1, 2, 3]) + photon = Photon(test_theory, fiatlux_runcard, [1, 2, 3]) np.testing.assert_equal(photon.replicas, [1, 2, 3]) np.testing.assert_equal(photon.luxpdfset._name, fiatlux_runcard["luxset"].name) np.testing.assert_equal(photon.additional_errors.name, "LUXqed17_plus_PDF4LHC15_nnlo_100") np.testing.assert_equal(photon.luxseed, fiatlux_runcard["luxseed"]) - np.testing.assert_equal(photon.path_to_eko_photon, TEST_THEORY.path / "eko_photon.tar") + np.testing.assert_equal(photon.path_to_eko_photon, test_theory.path / "eko_photon.tar") np.testing.assert_equal(photon.q_in, 100.0) def test_masses_init(): "test thresholds values in Alpha class" - theory = TEST_THEORY.get_description() + test_theory = API.theoryid(theoryid=THEORY_QED) + theory = test_theory.get_description() alpha = Alpha(theory) np.testing.assert_equal(alpha.thresh_t, np.inf) np.testing.assert_almost_equal(alpha.thresh_b, theory["mb"]) @@ -54,7 +55,8 @@ def test_masses_init(): def test_set_thresholds_alpha_em(): "test value of alpha_em at threshold values" - theory = TEST_THEORY.get_description() + test_theory = API.theoryid(theoryid=THEORY_QED) + theory = test_theory.get_description() alpha = Alpha(theory) @@ -77,7 +79,8 @@ def test_set_thresholds_alpha_em(): def test_betas(): "test betas for different nf" - alpha = Alpha(TEST_THEORY.get_description()) + test_theory = API.theoryid(theoryid=THEORY_QED) + alpha = Alpha(test_theory.get_description()) vec_beta0 = [ -0.5305164769729844, -0.6719875374991137, @@ -101,14 +104,15 @@ def test_photon(): """ fiatlux_runcard = generate_fiatlux_runcard() fiatlux_runcard["additional_errors"] = False - theory = TEST_THEORY.get_description() + test_theory = API.theoryid(theoryid=THEORY_QED) + theory = test_theory.get_description() for replica in [1, 2, 3]: - photon = Photon(TEST_THEORY, fiatlux_runcard, [replica]) + photon = Photon(test_theory, fiatlux_runcard, [replica]) # set up fiatlux - path_to_F2 = TEST_THEORY.path / "fastkernel/fiatlux_dis_F2.pineappl.lz4" - path_to_FL = TEST_THEORY.path / "fastkernel/fiatlux_dis_FL.pineappl.lz4" + path_to_F2 = test_theory.path / "fastkernel/fiatlux_dis_F2.pineappl.lz4" + path_to_FL = test_theory.path / "fastkernel/fiatlux_dis_FL.pineappl.lz4" pdfs = fiatlux_runcard["luxset"].load() f2 = sf.InterpStructureFunction(path_to_F2, pdfs.members[replica]) fl = sf.InterpStructureFunction(path_to_FL, pdfs.members[replica]) @@ -137,7 +141,7 @@ def test_photon(): ] ) lux.PlugStructureFunctions(f2.fxq, fl.fxq, f2lo.fxq) - path_to_eko_photon = TEST_THEORY.path / "eko_photon.tar" + path_to_eko_photon = test_theory.path / "eko_photon.tar" with EKO.read(path_to_eko_photon) as eko: photon_fiatlux_qin = np.array([lux.EvaluatePhoton(x, eko.mu20).total for x in XGRID]) photon_fiatlux_qin /= XGRID diff --git a/validphys2/src/validphys/tests/photon/test_structurefunctions.py b/validphys2/src/validphys/tests/photon/test_structurefunctions.py index f45cf94527..5e83e6458f 100644 --- a/validphys2/src/validphys/tests/photon/test_structurefunctions.py +++ b/validphys2/src/validphys/tests/photon/test_structurefunctions.py @@ -7,8 +7,6 @@ from ..conftest import PDF, THEORY_QED -TEST_THEORY = API.theoryid(theoryid=THEORY_QED) - class ZeroPdfs: def xfxQ(self, x, Q): @@ -44,9 +42,10 @@ def convolute_with_one(self, pdgid, xfxQ2): def test_zero_pdfs(): "test that a zero PDF gives a zero structure function" pdfs = ZeroPdfs() - theory = TEST_THEORY.get_description() - path_to_F2 = TEST_THEORY.path / "fastkernel/fiatlux_dis_F2.pineappl.lz4" - path_to_FL = TEST_THEORY.path / "fastkernel/fiatlux_dis_FL.pineappl.lz4" + test_theory = API.theoryid(theoryid=THEORY_QED) + theory = test_theory.get_description() + path_to_F2 = test_theory.path / "fastkernel/fiatlux_dis_F2.pineappl.lz4" + path_to_FL = test_theory.path / "fastkernel/fiatlux_dis_FL.pineappl.lz4" f2 = sf.InterpStructureFunction(path_to_F2, pdfs) fl = sf.InterpStructureFunction(path_to_FL, pdfs) @@ -76,10 +75,11 @@ def test_params(): "test initialization of parameters" pdfs = PDFset(PDF).load() replica = 1 - theory = TEST_THEORY.get_description() + test_theory = API.theoryid(theoryid=THEORY_QED) + theory = test_theory.get_description() for channel in ["F2", "FL"]: tmp = "fastkernel/fiatlux_dis_" + channel + ".pineappl.lz4" - path_to_fktable = TEST_THEORY.path / tmp + path_to_fktable = test_theory.path / tmp struct_func = sf.InterpStructureFunction(path_to_fktable, pdfs.members[replica]) np.testing.assert_allclose(struct_func.q2_max, 1e8) f2lo = sf.F2LO(pdfs.members[replica], theory) @@ -91,10 +91,11 @@ def test_params(): def test_interpolation_grid(): """test that the values coming out of InterpStructureFunction match the grid ones""" pdfs = PDFset(PDF).load() + test_theory = API.theoryid(theoryid=THEORY_QED) for replica in [1, 2, 3]: for channel in ["F2", "FL"]: tmp = "fastkernel/fiatlux_dis_" + channel + ".pineappl.lz4" - path_to_fktable = TEST_THEORY.path / tmp + path_to_fktable = test_theory.path / tmp fktable = pineappl.fk_table.FkTable.read(path_to_fktable) x = np.unique(fktable.bin_left(1)) q2 = np.unique(fktable.bin_left(0)) From 32541473864d719b2acac5fd5796ec37c93390a4 Mon Sep 17 00:00:00 2001 From: Mark Nestor Costantini Date: Mon, 12 Jun 2023 17:55:51 +0100 Subject: [PATCH 62/69] fix bug due to pd.groupby alphabetical ordering --- validphys2/src/validphys/pseudodata.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/validphys2/src/validphys/pseudodata.py b/validphys2/src/validphys/pseudodata.py index f5d6fb0389..20f8588ae6 100644 --- a/validphys2/src/validphys/pseudodata.py +++ b/validphys2/src/validphys/pseudodata.py @@ -369,15 +369,21 @@ def make_level1_data(data, level0_commondata_wc, filterseed, experiments_index, indexed_level1_data = indexed_make_replica(experiments_index, level1_data) + dataset_order = [cd.setname for cd in level0_commondata_wc] + # ===== create commondata instances with central values given by pseudo_data =====# level1_commondata_dict = {c.setname: c for c in level0_commondata_wc} level1_commondata_instances_wc = [] + # note that groupby sorts alphabetically for xx, grp in indexed_level1_data.groupby('dataset'): level1_commondata_instances_wc.append( level1_commondata_dict[xx].with_central_value(grp.values) ) - + # sort back so as to mantain same order as in level0_commondata_wc + level1_commondata_instances_wc = sorted( + level1_commondata_instances_wc, key=lambda obj: dataset_order.index(obj.setname) + ) return level1_commondata_instances_wc From 58e3bba0beca4626c286c30561649645b73241c2 Mon Sep 17 00:00:00 2001 From: Mark Nestor Costantini Date: Thu, 22 Jun 2023 09:33:41 +0100 Subject: [PATCH 63/69] ordering done with dictionary --- validphys2/src/validphys/pseudodata.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/validphys2/src/validphys/pseudodata.py b/validphys2/src/validphys/pseudodata.py index 20f8588ae6..847df753cf 100644 --- a/validphys2/src/validphys/pseudodata.py +++ b/validphys2/src/validphys/pseudodata.py @@ -369,7 +369,7 @@ def make_level1_data(data, level0_commondata_wc, filterseed, experiments_index, indexed_level1_data = indexed_make_replica(experiments_index, level1_data) - dataset_order = [cd.setname for cd in level0_commondata_wc] + dataset_order = {cd.setname: i for i, cd in enumerate(level0_commondata_wc)} # ===== create commondata instances with central values given by pseudo_data =====# level1_commondata_dict = {c.setname: c for c in level0_commondata_wc} @@ -381,9 +381,8 @@ def make_level1_data(data, level0_commondata_wc, filterseed, experiments_index, level1_commondata_dict[xx].with_central_value(grp.values) ) # sort back so as to mantain same order as in level0_commondata_wc - level1_commondata_instances_wc = sorted( - level1_commondata_instances_wc, key=lambda obj: dataset_order.index(obj.setname) - ) + level1_commondata_instances_wc.sort(key=lambda x: dataset_order[x.setname]) + return level1_commondata_instances_wc From 7e28a83183f79f7717de58c6bbf63d3b50eddc60 Mon Sep 17 00:00:00 2001 From: Mark Nestor Costantini Date: Mon, 26 Jun 2023 14:52:29 +0100 Subject: [PATCH 64/69] tmp data_index for correct indexing --- validphys2/src/validphys/results.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/validphys2/src/validphys/results.py b/validphys2/src/validphys/results.py index 393891d223..e49f174f4e 100644 --- a/validphys2/src/validphys/results.py +++ b/validphys2/src/validphys/results.py @@ -151,6 +151,32 @@ def from_convolution(cls, pdf, posset): return cls(stats) +def data_index(data): + """ + Given a core.DataGroupSpec instance, return pd.MultiIndex + with first level given by datasets names and second level + by datapoint index (cuts already applied to). + + Parameters + ---------- + data: core.DataGroupSpec + + Returns + ------- + pd.MultiIndex + + """ + tuples = [] + + + for ds in data.datasets: + for i in ds.cuts.load(): + + tp = (ds.name, i) + tuples.append(tp) + return pd.MultiIndex.from_tuples(tuples, names=('dataset', 'id')) + + # TODO: finish deprecating all dependencies on this index largely in theorycovmat module groups_data = collect("data", ("group_dataset_inputs_by_metadata",)) From 6bc4cad8be901fa3c564be1f3faddb54e3f596a4 Mon Sep 17 00:00:00 2001 From: Mark Nestor Costantini Date: Mon, 26 Jun 2023 20:38:37 +0100 Subject: [PATCH 65/69] data_index function for correct experiments_index --- validphys2/src/validphys/results.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/validphys2/src/validphys/results.py b/validphys2/src/validphys/results.py index e49f174f4e..629c04b988 100644 --- a/validphys2/src/validphys/results.py +++ b/validphys2/src/validphys/results.py @@ -26,6 +26,7 @@ ) from validphys.convolution import PredictionsRequireCutsError, predictions from validphys.core import PDF, DataGroupSpec, DataSetSpec, Stats +from validphys.plotoptions import get_info log = logging.getLogger(__name__) @@ -154,8 +155,12 @@ def from_convolution(cls, pdf, posset): def data_index(data): """ Given a core.DataGroupSpec instance, return pd.MultiIndex - with first level given by datasets names and second level - by datapoint index (cuts already applied to). + with the following levels: + + 1. experiment + 2. datasets + 3. datapoints indices (cuts already applied to) + Parameters ---------- @@ -168,13 +173,15 @@ def data_index(data): """ tuples = [] - + for ds in data.datasets: - for i in ds.cuts.load(): - tp = (ds.name, i) + experiment = get_info(ds).experiment + + for i in ds.cuts.load(): + tp = (experiment, ds.name, i) tuples.append(tp) - return pd.MultiIndex.from_tuples(tuples, names=('dataset', 'id')) + return pd.MultiIndex.from_tuples(tuples, names=('experiment', 'dataset', 'id')) # TODO: finish deprecating all dependencies on this index largely in theorycovmat module From 25d485ac46a2d8b29119ff6607c2f88c3c83d046 Mon Sep 17 00:00:00 2001 From: Mark Nestor Costantini Date: Mon, 26 Jun 2023 20:41:38 +0100 Subject: [PATCH 66/69] closure tests use data_index for filtering of data. When running vp-setupfit data is written to folder using _filter_closure_data function. This function is looped over by filter_closure_data_by_experiment --- validphys2/src/validphys/filters.py | 10 +++++----- validphys2/src/validphys/pseudodata.py | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/validphys2/src/validphys/filters.py b/validphys2/src/validphys/filters.py index 91c80ce2fb..ad3e300070 100644 --- a/validphys2/src/validphys/filters.py +++ b/validphys2/src/validphys/filters.py @@ -110,7 +110,7 @@ def filter_closure_data(filter_path, data, fakepdf, fakenoise, filterseed, sep_m def filter_closure_data_by_experiment( - filter_path, experiments_data, fakepdf, fakenoise, filterseed, experiments_index, sep_mult + filter_path, experiments_data, fakepdf, fakenoise, filterseed, data_index, sep_mult ): """ Like :py:func:`filter_closure_data` except filters data by experiment. @@ -124,7 +124,7 @@ def filter_closure_data_by_experiment( res = [] for exp in experiments_data: - experiment_index = experiments_index[experiments_index.isin([exp.name], level=0)] + experiment_index = data_index[data_index.isin([exp.name], level=0)] res.append( _filter_closure_data( filter_path, exp, fakepdf, fakenoise, filterseed, experiment_index, sep_mult @@ -179,7 +179,7 @@ def _filter_real_data(filter_path, data): def _filter_closure_data( - filter_path, data, fakepdf, fakenoise, filterseed, experiments_index, sep_mult + filter_path, data, fakepdf, fakenoise, filterseed, data_index, sep_mult ): """ This function is accessed within a closure test only, that is, the fakedata @@ -213,7 +213,7 @@ def _filter_closure_data( random noise added to Level 0 data - experiments_index : pandas.MultiIndex + data_index : pandas.MultiIndex Returns @@ -241,7 +241,7 @@ def _filter_closure_data( if fakenoise: # ======= Level 1 closure test =======# - closure_data = make_level1_data(data, closure_data, filterseed, experiments_index, sep_mult) + closure_data = make_level1_data(data, closure_data, filterseed, data_index, sep_mult) # ====== write commondata and systype files ======# if fakenoise: diff --git a/validphys2/src/validphys/pseudodata.py b/validphys2/src/validphys/pseudodata.py index 847df753cf..00524114ea 100644 --- a/validphys2/src/validphys/pseudodata.py +++ b/validphys2/src/validphys/pseudodata.py @@ -293,7 +293,7 @@ def level0_commondata_wc(data, fakepdf): return level0_commondata_instances_wc -def make_level1_data(data, level0_commondata_wc, filterseed, experiments_index, sep_mult): +def make_level1_data(data, level0_commondata_wc, filterseed, data_index, sep_mult): """ Given a list of Level 0 commondata instances, return the same list with central values replaced by Level 1 data. @@ -331,7 +331,7 @@ def make_level1_data(data, level0_commondata_wc, filterseed, experiments_index, filterseed : int random seed used for the generation of Level 1 data - experiments_index : pandas.MultiIndex + data_index : pandas.MultiIndex Returns ------- @@ -367,7 +367,7 @@ def make_level1_data(data, level0_commondata_wc, filterseed, experiments_index, level0_commondata_wc, filterseed, covmat, sep_mult=sep_mult, genrep=True ) - indexed_level1_data = indexed_make_replica(experiments_index, level1_data) + indexed_level1_data = indexed_make_replica(data_index, level1_data) dataset_order = {cd.setname: i for i, cd in enumerate(level0_commondata_wc)} From f266993c8816a76afe6a2a72a302461375e76558 Mon Sep 17 00:00:00 2001 From: Mark Nestor Costantini Date: Mon, 26 Jun 2023 20:44:12 +0100 Subject: [PATCH 67/69] fixed bug in make level1 data due to experiments_index --- validphys2/src/validphys/pseudodata.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/validphys2/src/validphys/pseudodata.py b/validphys2/src/validphys/pseudodata.py index 851fc6fc95..00524114ea 100644 --- a/validphys2/src/validphys/pseudodata.py +++ b/validphys2/src/validphys/pseudodata.py @@ -371,8 +371,6 @@ def make_level1_data(data, level0_commondata_wc, filterseed, data_index, sep_mul dataset_order = {cd.setname: i for i, cd in enumerate(level0_commondata_wc)} - dataset_order = {cd.setname: i for i, cd in enumerate(level0_commondata_wc)} - # ===== create commondata instances with central values given by pseudo_data =====# level1_commondata_dict = {c.setname: c for c in level0_commondata_wc} level1_commondata_instances_wc = [] From c538371a69b975ca26ea37fd85f470a0b9a9b39d Mon Sep 17 00:00:00 2001 From: Mark Nestor Costantini Date: Mon, 26 Jun 2023 20:50:41 +0100 Subject: [PATCH 68/69] black for formatting --- validphys2/src/validphys/pseudodata.py | 4 ++-- validphys2/src/validphys/results.py | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/validphys2/src/validphys/pseudodata.py b/validphys2/src/validphys/pseudodata.py index 00524114ea..1fd0a5233d 100644 --- a/validphys2/src/validphys/pseudodata.py +++ b/validphys2/src/validphys/pseudodata.py @@ -369,7 +369,7 @@ def make_level1_data(data, level0_commondata_wc, filterseed, data_index, sep_mul indexed_level1_data = indexed_make_replica(data_index, level1_data) - dataset_order = {cd.setname: i for i, cd in enumerate(level0_commondata_wc)} + dataset_order = {cd.setname: i for i, cd in enumerate(level0_commondata_wc)} # ===== create commondata instances with central values given by pseudo_data =====# level1_commondata_dict = {c.setname: c for c in level0_commondata_wc} @@ -382,7 +382,7 @@ def make_level1_data(data, level0_commondata_wc, filterseed, data_index, sep_mul ) # sort back so as to mantain same order as in level0_commondata_wc level1_commondata_instances_wc.sort(key=lambda x: dataset_order[x.setname]) - + return level1_commondata_instances_wc diff --git a/validphys2/src/validphys/results.py b/validphys2/src/validphys/results.py index 629c04b988..e5a23c9dd4 100644 --- a/validphys2/src/validphys/results.py +++ b/validphys2/src/validphys/results.py @@ -156,11 +156,11 @@ def data_index(data): """ Given a core.DataGroupSpec instance, return pd.MultiIndex with the following levels: - + 1. experiment 2. datasets 3. datapoints indices (cuts already applied to) - + Parameters ---------- @@ -173,9 +173,7 @@ def data_index(data): """ tuples = [] - for ds in data.datasets: - experiment = get_info(ds).experiment for i in ds.cuts.load(): From a9c88abac3469e5e265523f2595d4e403fef96ca Mon Sep 17 00:00:00 2001 From: Mark Nestor Costantini Date: Mon, 26 Jun 2023 20:50:41 +0100 Subject: [PATCH 69/69] black for formatting --- validphys2/src/validphys/pseudodata.py | 4 ++-- validphys2/src/validphys/results.py | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/validphys2/src/validphys/pseudodata.py b/validphys2/src/validphys/pseudodata.py index 00524114ea..1fd0a5233d 100644 --- a/validphys2/src/validphys/pseudodata.py +++ b/validphys2/src/validphys/pseudodata.py @@ -369,7 +369,7 @@ def make_level1_data(data, level0_commondata_wc, filterseed, data_index, sep_mul indexed_level1_data = indexed_make_replica(data_index, level1_data) - dataset_order = {cd.setname: i for i, cd in enumerate(level0_commondata_wc)} + dataset_order = {cd.setname: i for i, cd in enumerate(level0_commondata_wc)} # ===== create commondata instances with central values given by pseudo_data =====# level1_commondata_dict = {c.setname: c for c in level0_commondata_wc} @@ -382,7 +382,7 @@ def make_level1_data(data, level0_commondata_wc, filterseed, data_index, sep_mul ) # sort back so as to mantain same order as in level0_commondata_wc level1_commondata_instances_wc.sort(key=lambda x: dataset_order[x.setname]) - + return level1_commondata_instances_wc diff --git a/validphys2/src/validphys/results.py b/validphys2/src/validphys/results.py index 629c04b988..e5a23c9dd4 100644 --- a/validphys2/src/validphys/results.py +++ b/validphys2/src/validphys/results.py @@ -156,11 +156,11 @@ def data_index(data): """ Given a core.DataGroupSpec instance, return pd.MultiIndex with the following levels: - + 1. experiment 2. datasets 3. datapoints indices (cuts already applied to) - + Parameters ---------- @@ -173,9 +173,7 @@ def data_index(data): """ tuples = [] - for ds in data.datasets: - experiment = get_info(ds).experiment for i in ds.cuts.load():