diff --git a/conda-recipe/meta.yaml b/conda-recipe/meta.yaml index 578d154f4a..419771b79a 100644 --- a/conda-recipe/meta.yaml +++ b/conda-recipe/meta.yaml @@ -38,7 +38,7 @@ requirements: - requests - prompt_toolkit - validobj - - pineappl >=0.8.2,<1.0 + - pineappl >=1.0.0 - eko >=0.15.1,<0.16 - fiatlux - sphinx >=5.0.2 diff --git a/pyproject.toml b/pyproject.toml index cc05b18be8..136a866629 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -62,7 +62,7 @@ vp-deltachi2 = "validphys.scripts.vp_deltachi2:main" # Generic dependencies (i.e., validphys) python = ">=3.9" matplotlib = "^3.9" -pineappl = "^0.8.2" +pineappl = "^1.0.0" pandas = "*" numpy = "*" "ruamel.yaml" = "*" diff --git a/validphys2/examples/API_extension_Pineappl.ipynb b/validphys2/examples/API_extension_Pineappl.ipynb index 42fae70a6a..0192d6e9d4 100644 --- a/validphys2/examples/API_extension_Pineappl.ipynb +++ b/validphys2/examples/API_extension_Pineappl.ipynb @@ -1,23 +1,21 @@ { "cells": [ { - "cell_type": "code", - "execution_count": null, - "id": "b5ed6828-9d50-4a55-bf09-38ce2c10bfd0", + "cell_type": "markdown", + "id": "46daf1f5-7b71-46ee-b2b7-3c15ee076984", "metadata": { "vscode": { "languageId": "plaintext" } }, - "outputs": [], "source": [ - "Example extending the validphys API to utilize grids instead of FkTables to compute different quantities.\n", + "This is an example that extends the validphys API to utilize Grids instead of Fk Tables to compute different quantities.\n", "\n", "In this example the grids are all in the folder `pineappl_grids` set in the first cell of the notebook.\n", "\n", - "Since it is using validphys in the background the grids need to have exact the same name they would have if they were FKTables.\n", + "Since it is using validphys in the background the grids need to have exact the same name they would have if they were FK Tables.\n", "\n", - "This notebooks monkeypatchs the following validphys functions:\n", + "This notebooks monkeypatch the following validphys functions:\n", "\n", "```\n", "validphys.results.results\n", @@ -25,14 +23,14 @@ "validphys.theorycovariance.construction.results_central_bytheoryids\n", "```\n", "\n", - "to utilize the pineappl grids directly instead of loading them as FKTables.\n", + "to utilize the pineappl grids directly instead of loading them as FK Tables.\n", "\n", - "Note that any function in validphys that computes predictions without going through any of those three will try to use FkTables and will thus fail." + "Note that any function in validphys that computes predictions without going through any of those three will try to use Fk Tables and will thus fail." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "ff3938d5-f8db-4b73-9935-030aa7c6edb2", "metadata": {}, "outputs": [], @@ -57,16 +55,16 @@ "tid = 41000000\n", "\n", "# 9 points\n", - "#all_scales = [(1.0, 1.0), (1.0, 2.0), (2.0, 1.0), (1.0, 0.5), (0.5, 1.0), (0.5, 0.5), (2.0, 2.0), (2.0, 0.5), (0.5, 2.0)]\n", + "#all_scales = [(1.0, 1.0, 0.0), (1.0, 2.0, 0.0), (2.0, 1.0, 0.0), (1.0, 0.5, 0.0), (0.5, 1.0, 0.0), (0.5, 0.5, 0.0), (2.0, 2.0, 0.0), (2.0, 0.5, 0.0), (0.5, 2.0, 0.0)]\n", "# Do just 3 for testing\n", - "all_scales = [(1.0, 1.0), (1.0, 2.0), (2.0, 1.0)]\n", + "all_scales = [(1.0, 1.0, 0.0), (1.0, 2.0, 0.0), (2.0, 1.0, 0.0)]\n", "\n", "APPLY_BIN_NORMALIZATION = False" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 2, "id": "62ef3d68-89ed-4014-8719-4de3fbc1ecc6", "metadata": {}, "outputs": [], @@ -95,10 +93,16 @@ "\n", " # Take only the QCD corerctions\n", " all_ord = self._grid.orders()\n", - " mask_nnlo = pineappl.grid.Order.create_mask(all_ord, 3, 0, False)\n", + " mask_nnlo = pineappl.boc.Order.create_mask(all_ord, 3, 0, False)\n", "\n", " for _, member in enumerate(pdf.members):\n", - " tmp = self._grid.convolve_with_one(2212, member.xfxQ2, member.alphasQ2, order_mask=mask_nnlo, xi=all_scales).reshape(-1, len(all_scales))\n", + " tmp = self._grid.convolve(\n", + " pdg_convs=self._grid.convolutions,\n", + " xfxs=[member.xfxQ2],\n", + " alphas=member.alphasQ2,\n", + " order_mask=mask_nnlo,\n", + " xi=all_scales,\n", + " ).reshape(-1, len(all_scales))\n", "\n", " if self._apply_bin:\n", " tmp *= bin_norm\n", @@ -150,7 +154,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "09b0bc28-e540-414f-a789-ed8fb5bac5a6", "metadata": {}, "outputs": [], @@ -260,7 +264,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 4, "id": "0d88977d-5763-4929-8766-3919c8f70817", "metadata": { "scrolled": true @@ -271,9 +275,9 @@ "output_type": "stream", "text": [ "Normalization factors: 1000.0\n", - "Exp chi2: 1.799\n", - "Exp+th chi2: 1.777\n", - "Exp+th+pdf chi2: 1.655\n" + "Exp chi2: 6.601\n", + "Exp+th chi2: 6.259\n", + "Exp+th+pdf chi2: 4.925\n" ] } ], @@ -298,18 +302,18 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 5, "id": "06d4e9a6-854b-4548-9707-7e51744d3000", "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnQAAAHWCAYAAAD+VRS3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB1jElEQVR4nO3dd3gU1f4/8Pem7G56Ib0nQAg19BhUBAmEIoKFYiME9YqCV+CnKF4VLFcsVxCBK3qvghQFpIooCAFEJLQEhBAglJBGekjvu/P7g2/2sqTtht2dneT9ep59HnbmzMznzJDdz54554xMEAQBRERERCRZFmIHQERERER3hwkdERERkcQxoSMiIiKSOCZ0RERERBLHhI6IiIhI4pjQEREREUkcEzoiIiIiiWNCR0RERCRxTOiIiIiIJI4JHREREZHEMaEjIiIta9asgUwmw/Xr19vl8czl2ADwySefICwsDGq1WpTj62rVqlUICAhATU2N2KFQM5jQkVn497//DZlMhoiIiEbrZDKZTq9Dhw5pPpxPnTp118e93blz5/D4448jMDAQSqUSvr6+GDlyJJYvX67Tcdzd3VuN/4UXXmhy2+nTp7e4XVZWVrPH1efc6eLhhx+Gra0tysrKmi3z1FNPQS6Xo7CwsNkyJ0+exOzZs9GzZ0/Y2dkhICAAkydPRkpKSpPla2pq8Prrr8PHxwc2NjaIiIjAvn37tMqUl5dj4cKFGD16NFxdXSGTybBmzZom96dP2ZZcvXoVL7zwAkJCQqBUKuHo6Ih7770Xy5YtQ1VVld7709XRo0exaNEiFBcXG+0Y7Ym5nq/S0lJ8/PHHeP3112Fhof11fDefGcYwffp01NbW4quvvjLZMUk/VmIHQAQAGzZsQFBQEE6cOIErV66gS5cumnXr1q3TKrt27Vrs27ev0fLu3bvr/Su7peM2OHr0KIYPH46AgAA8//zz8PLyQkZGBo4dO4Zly5bh5ZdfbvEY9fX1WLp0aZPrSktL8eqrr6KmpgYTJ05ssswLL7yAqKgorWWCIGDmzJkICgqCr69vs8fW59zp4qmnnsKuXbuwfft2TJs2rdH6yspK7Ny5E6NHj0anTp2a3c/HH3+MP//8E5MmTUKfPn2Qk5ODFStWoH///jh27Bh69eqlVX769OnYsmUL5syZg65du2LNmjUYO3YsDh48iPvuuw8AUFBQgPfeew8BAQEIDw9vMUnVp2xzdu/ejUmTJkGhUGDatGno1asXamtrceTIEbz22ms4f/48vv76a733q4ujR4/i3XffxfTp0+Hs7GyUY7QnLZ2vZ555BlOnToVCoTB5XN9++y3q6+vxxBNPaC2/288MY1AqlYiJicGSJUvw8ssvQyaTmezYpCOBSGTXrl0TAAjbtm0T3N3dhUWLFrVYftasWUJz/3VXr14tABBOnjxpsOOOHTtWcHd3F27evNloXW5ubqvHaU51dbUwbNgwAYDw73//W69t//jjDwGA8M9//lOv7Vo6d7qorKwUHBwchOjo6CbXf//99wIAYePGjS3u588//xRqamq0lqWkpAgKhUJ46qmntJYfP35cACB8+umnmmVVVVVC586dhcjISM2y6upqITs7WxAEQTh58qQAQFi9enWTx9enbFOuXbsm2NvbC2FhYcKNGzcarb98+bLw+eef67w/fX366acCACE1NVWn8uXl5Xrtv+HvSNf93y1jH0/f82Uqffr0EZ5++mmdy9/NZ4YhnDp1SgAgxMXFmfzY1DreciXRbdiwAS4uLhg3bhwef/xxbNiwwayOe/XqVfTs2bPJlhAPD482HVulUuHJJ5/EoUOHsGjRIrz44ot6bf/9999DJpPhySefbNPxm5OVlYUZM2bA09MTCoUCPXv2xLfffqtZb2Njg0cffRRxcXHIy8trMi4HBwc8/PDDLR5nyJAhkMvlWsu6du2Knj174sKFC1rLt2zZAktLS/ztb3/TLFMqlXj22WcRHx+PjIwMAIBCoYCXl5dO9dSnbFM++eQTlJeX45tvvoG3t3ej9V26dMErr7yied/aeW2waNEiyGQyXLlyRdOa5OTkhNjYWFRWVmrKvPbaawCA4OBgze23htbphn0kJyfjySefhIuLC+677z6kpaXhpZdeQrdu3WBjY4NOnTph0qRJbe47VlZWhjlz5iAoKAgKhQIeHh4YOXIkEhMTtcrpWvem6LptVlYWnn32Wfj4+EChUCA4OBgvvvgiamtrWz1fzfWhO336NMaMGQNHR0fY29tjxIgROHbsmFYZXa5Xc1JTU3H27NlGre/NudvPDEMYMGAAXF1dsXPnTpMfm1rHW64kug0bNuDRRx+FXC7HE088gS+//BInT57EoEGDzOK4gYGBiI+PR1JSUqNbgW314osvYtu2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", + "image/png": "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QhiS/lkJjUaDzMxMuLq6QqFQSB0OgBvZenBwMNLS0uDm5iZ1OG2G+839tgbcb+vab8B69537rd9+CyFQUlKCwMBA2Njo1zqONXQNsLGxQfv27aUOo0Fubm5W9SWow/22Ltxv62Kt+w1Y775zv5unb81cHXaKICIiIpI5JnREREREMseETiZUKhXmzZsHlUoldShtivvN/bYG3G/r2m/Aeved+226/WanCCIiIiKZYw0dERERkcwxoSMiIiKSOSZ0RERERDLHhE5CS5YsQVhYGBwcHBATE4OjR482Wvbbb7/F7bffjnbt2qFdu3YYMWJEvfLTpk2DQqHQedxzzz2m3g2DGbLfy5cvr7dPDg4OOmWEEHj77bcREBAAR0dHjBgxAhcvXjT1bhjMkP0eOnRovf1WKBQYPXq0towczveBAwcwZswYBAYGQqFQYPPmzc2+Z//+/ejTpw9UKhU6duyI5cuX1ytjyLGUgqH7vXHjRtx9993w8fGBm5sbBg0ahB07duiUeeedd+qd76ioKBPuheEM3e/9+/c3+DnPzs7WKWdp57uh765CoUC3bt20Zcz9fM+fPx/9+/eHq6srfH19MW7cOFy4cKHZ9/3000+IioqCg4MDevTogd9++03ndXO/nrdkv9vq/zcTOomsW7cOc+bMwbx58xAfH4/o6GjExsYiNze3wfL79+/Hww8/jH379iEuLg7BwcEYOXIkMjIydMrdc889yMrK0j7WrFnTFrujN0P3G7gxEOPN+5SSkqLz+scff4zPP/8cS5cuxZEjR+Ds7IzY2FhUVlaaenf0Zuh+b9y4UWefExMTYWtriwkTJuiUM/fzXVZWhujoaCxZskSv8snJyRg9ejSGDRuGkydPYtasWXjqqad0kpuWfIbamqH7feDAAdx999347bffcOLECQwbNgxjxoxBQkKCTrlu3brpnO+DBw+aIvwWM3S/61y4cEFnv3x9fbWvWeL5XrRokc7+pqWlwdPTs97325zP9x9//IEZM2bgr7/+wq5du1BTU4ORI0eirKys0fccPnwYDz/8MJ588kkkJCRg3LhxGDduHBITE7VlzP163pL9brP/34IkMWDAADFjxgztc7VaLQIDA8X8+fP1en9tba1wdXUVK1as0C6bOnWqGDt2rLFDNSpD93vZsmXC3d290fVpNBrh7+8vPvnkE+2ywsJCoVKpxJo1a4wWd2u19nwvXLhQuLq6itLSUu0yOZzvmwEQmzZtarLMq6++Krp166azbNKkSSI2Nlb7vLXHsq3ps98N6dq1q3j33Xe1z+fNmyeio6ONF5iJ6bPf+/btEwDE9evXGy1jDed706ZNQqFQiKtXr2qXye185+bmCgDijz/+aLTMxIkTxejRo3WWxcTEiGeffVYIIZ/r+c302e9bmer/N2voJFBdXY0TJ05gxIgR2mU2NjYYMWIE4uLi9FpHeXk5ampq4OnpqbN8//798PX1RefOnfH888+joKDAqLG3Rkv3u7S0FKGhoQgODsbYsWNx5swZ7WvJycnIzs7WWae7uztiYmL0PpamZozz/d1332Hy5MlwdnbWWW7O57sl4uLidI4TAMTGxmqPkzGOpRxoNBqUlJTU+35fvHgRgYGBiIiIwJQpU5CamipRhMbVq1cvBAQE4O6778ahQ4e0y63lfH/33XcYMWIEQkNDdZbL6XwXFRUBQL3P7M2a+37L4Xp+K332+1am+v/NhE4C+fn5UKvV8PPz01nu5+dXr+1IY1577TUEBgbqfPDvuece/PDDD9izZw8++ugj/PHHHxg1ahTUarVR42+plux3586d8f3332PLli348ccfodFoMHjwYKSnpwOA9n2tOZam1trzffToUSQmJuKpp57SWW7u57slsrOzGzxOxcXFqKioMMp3Rw7+85//oLS0FBMnTtQui4mJwfLly7F9+3Z89dVXSE5Oxu23346SkhIJI22dgIAALF26FBs2bMCGDRsQHByMoUOHIj4+HoBxrpXmLjMzE7///nu977eczrdGo8GsWbMwZMgQdO/evdFyjX2/686lHK7nN9N3v29lqv/fdgZFT2bhww8/xNq1a7F//36dDgKTJ0/W/t2jRw/07NkTHTp0wP79+zF8+HApQm21QYMGYdCgQdrngwcPRpcuXfD111/jvffekzCytvPdd9+hR48eGDBggM5ySzzfBKxevRrvvvsutmzZotOWbNSoUdq/e/bsiZiYGISGhmL9+vV48sknpQi11Tp37ozOnTtrnw8ePBiXL1/GwoULsXLlSgkjazsrVqyAh4cHxo0bp7NcTud7xowZSExMNKs2fm2hJfttyv/frKGTgLe3N2xtbZGTk6OzPCcnB/7+/k2+9z//+Q8+/PBD7Ny5Ez179myybEREBLy9vXHp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", "text/plain": [ "
" ] }, - "execution_count": 15, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -409,7 +413,7 @@ "kernelspec": { "display_name": "nnpdf", "language": "python", - "name": "python3" + "name": "nnpdf" }, "language_info": { "codemirror_mode": { @@ -421,7 +425,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.15" + "version": "3.11.5" } }, "nbformat": 4, diff --git a/validphys2/src/validphys/coredata.py b/validphys2/src/validphys/coredata.py index 13dfd076f0..eedffe3ebd 100644 --- a/validphys2/src/validphys/coredata.py +++ b/validphys2/src/validphys/coredata.py @@ -5,6 +5,7 @@ import dataclasses import logging +from typing import Optional import numpy as np import pandas as pd @@ -63,7 +64,7 @@ class FKTableData: ndata: int xgrid: np.ndarray sigma: pd.DataFrame - convolution_types: tuple[str] = None + convolution_types: Optional[tuple[str]] = None metadata: dict = dataclasses.field(default_factory=dict, repr=False) protected: bool = False @@ -201,7 +202,6 @@ def determine_pdfs(self, pdf): conv_pdfs = [] for convolution_type in self.convolution_types: - # Check the type of convolutions that the fktable is asking for and match it to the PDF if convolution_type == "UnpolPDF": if pdf.is_polarized: @@ -209,18 +209,19 @@ def determine_pdfs(self, pdf): raise ValueError( "The FKTable asked for an unpolarized PDF but received only polarized PDFs" ) - conv_pdfs.append(pdf.unpolarized_bc.make_only_cv()) else: conv_pdfs.append(pdf) - elif convolution_type == "PolPDF": if not pdf.is_polarized: raise ValueError( - """The FKTable asked for a polarized PDF, but the PDF received cannot be understood as polarized. - When using a polarized PDF make sure to include a boundary condition `unpolarized_bc: ` whenever needed (`t0`, `dataspecs`...).""" + """The FKTable asked for a polarized PDF, but the PDF received cannot be understood + as polarized. When using a polarized PDF make sure to include a boundary condition + `unpolarized_bc: ` whenever needed (`t0`, `dataspecs`...).""" ) conv_pdfs.append(pdf) + else: # Other scenarios (such as `time_like`) should be implemented as another `elif` statement + raise ValueError("The convolution type is not recognized!") return conv_pdfs diff --git a/validphys2/src/validphys/photon/structure_functions.py b/validphys2/src/validphys/photon/structure_functions.py index 73b45f4746..dfdcf9da2b 100644 --- a/validphys2/src/validphys/photon/structure_functions.py +++ b/validphys2/src/validphys/photon/structure_functions.py @@ -38,12 +38,13 @@ class InterpStructureFunction(StructureFunction): def __init__(self, path_to_fktable, pdfs): self.fktable = pineappl.fk_table.FkTable.read(path_to_fktable) - x = np.unique(self.fktable.bin_left(1)) - q2 = np.unique(self.fktable.bin_left(0)) + bin_specs = np.array(self.fktable.bin_limits()) + q2 = np.unique(bin_specs[:, 0, 0]) # Q2 in the 1st dimension + x = np.unique(bin_specs[:, 1, 0]) # x in 2nd dimension self.q2_max = max(q2) - predictions = self.fktable.convolve_with_one(2212, pdfs.xfxQ2) + predictions = self.fktable.convolve(pdg_convs=self.fktable.convolutions, xfxs=[pdfs.xfxQ2]) grid2D = predictions.reshape(len(x), len(q2)) self.interpolator = RectBivariateSpline(x, q2, grid2D) diff --git a/validphys2/src/validphys/pineparser.py b/validphys2/src/validphys/pineparser.py index f77954af84..72f24ce111 100644 --- a/validphys2/src/validphys/pineparser.py +++ b/validphys2/src/validphys/pineparser.py @@ -75,20 +75,41 @@ def _pinelumi_to_columns(pine_luminosity, hadronic): ) flav_size = len(evol_basis_pids) columns = [] + # TODO: Extend this to deal with a generic number of convolutions if hadronic: for i, j in pine_luminosity: idx = evol_basis_pids.index(i) jdx = evol_basis_pids.index(j) columns.append(flav_size * idx + jdx) else: - # The proton might come from both sides - try: - columns = [evol_basis_pids.index(i) for _, i in pine_luminosity] - except ValueError: - columns = [evol_basis_pids.index(i) for i, _ in pine_luminosity] + # Now for DIS, there is only ONE single PID + columns = [evol_basis_pids.index(i[0]) for i in pine_luminosity] return columns +def _get_convolution_types(convolutions): + """Get the type of convolutions from for the given FK table. + + Parameters + ---------- + convolutions: list[pineappl.convolutions.Conv] + a list of PineAPPL object containing the types of convolutions + + Returns + ------- + tuple(str): a tuple of string containing whose elements are either + `UnpolPDF` or `PolPDF` + """ + # TODO: Extend the following to deal with `time_like` FFs + convolution_types = [] + for convolution in convolutions: + if convolution.convolution_types.polarized: + convolution_types.append("PolPDF") + else: + convolution_types.append("UnpolPDF") + return tuple(convolution_types) + + def get_yaml_information(yaml_file, theorypath): """Reads the yaml information from a yaml compound file @@ -155,28 +176,24 @@ def pineappl_reader(fkspec): # Extract metadata from the first grid pine_rep = pines[0] - # Is it hadronic? (at the moment only hadronic and DIS are considered) - try: - parton1 = pine_rep.key_values()["convolution_particle_1"] - parton2 = pine_rep.key_values()["convolution_particle_2"] - except KeyError: - # Old pineappl FKTables used `initial_state` instead of `convolution_particle` - parton1 = pine_rep.key_values()["initial_state_1"] - parton2 = pine_rep.key_values()["initial_state_2"] - hadronic = parton1 == parton2 - - # NOTE: while the following can accept any number of convolutions, at the moment only - # 1 (DIS) or 2 (hadronic) are implemented. - # In the case of DIS grids, convolution 1 refers to the hadron - conv_types = [pine_rep.key_values().get("convolution_type_1", "UnpolPDF")] - if hadronic: - # Sanity check (in case at some point we start fitting things that are not protons) - if parton1 != "2212": - raise ValueError("vp can only read hadronic fktables with 2 protons!") + # Get the convolution types for this FK table + convolutions = pine_rep.convolutions + convolution_types = _get_convolution_types(convolutions) + + # Is it hadronic? For the time being, hadronic is defined with `len(convolutions) == 2`. + # Hadronic could also involve 3 convolutions in processes such as `pp->H` (with FFs). + # DIS FK table now only contains ONE single convolutions. + hadronic = len(convolutions) == 2 + # For the time being, allow only hadronic with identical initial-state protons + if hadronic and (convolutions[0].pid != 2212 or convolutions[1].pid != 2212): + raise ValueError("Only two identical protons in the initial-state are allowed.") - conv_types.append(pine_rep.key_values().get("convolution_type_2", "UnpolPDF")) + # TODO: While now any arbittrary number of convolutions is allowed, for the time being, + # raise Errors when the number of convolutions is more than 2. + if len(convolutions) > 2: + raise ValueError("Only FK tables with maximum 2 convolutions are allowed.") - Q0 = np.sqrt(pine_rep.muf2()) + Q0 = np.sqrt(pine_rep.fac0()) xgrid = np.array([]) for pine in pines: xgrid = np.union1d(xgrid, pine.x_grid()) @@ -212,6 +229,9 @@ def pineappl_reader(fkspec): # Read the table, remove bin normalization and apply cfactors raw_fktable = (cfprod * p.table().T / p.bin_normalizations()).T + # If it is a DIS FK table then we need to expand the dimension + if not hadronic: + raw_fktable = np.expand_dims(raw_fktable, axis=-1) n = raw_fktable.shape[0] # Apply possible per-fktable fixes @@ -272,7 +292,7 @@ def pineappl_reader(fkspec): sigma=sigma, ndata=ndata, Q0=Q0, - convolution_types=tuple(conv_types), + convolution_types=convolution_types, metadata=fkspec.metadata, hadronic=hadronic, xgrid=xgrid, diff --git a/validphys2/src/validphys/tests/photon/test_structurefunctions.py b/validphys2/src/validphys/tests/photon/test_structurefunctions.py index f3bba28d0d..e103c859d0 100644 --- a/validphys2/src/validphys/tests/photon/test_structurefunctions.py +++ b/validphys2/src/validphys/tests/photon/test_structurefunctions.py @@ -1,5 +1,6 @@ import numpy as np -import pineappl +from pineappl.convolutions import Conv, ConvType +from pineappl.fk_table import FkTable from validphys.api import API from validphys.core import PDF as PDFset @@ -27,15 +28,15 @@ def __init__(self, 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 bin_limits(self): + return [[(x, x), (q, q)] for x, q, in zip(self.xgrid, self.qgrid)] - def convolve_with_one(self, pdgid, xfxQ2): + @property + def convolutions(self): + convtype = ConvType(polarized=False, time_like=False) + return [Conv(convolution_types=convtype, pid=2212)] + + def convolve(self, pdg_convs, xfxs): return np.zeros((10, 10)) @@ -63,7 +64,7 @@ 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) + monkeypatch.setattr(FkTable, "read", ZeroFKTable) pdfs = PDFset(PDF).load() structurefunc = sf.InterpStructureFunction("", pdfs.central_member) for x in np.geomspace(1e-4, 1.0, 10): @@ -96,10 +97,11 @@ def test_interpolation_grid(): for kind in ["F2", "FL"]: tmp = "fastkernel/FIATLUX_DIS_" + kind + ".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.convolve_with_one(2212, pdfs.members[replica].xfxQ2) + fktable = FkTable.read(path_to_fktable) + bin_specs = np.array(fktable.bin_limits()) + q2 = np.unique(bin_specs[:, 0, 0]) # Q2 in the 1st dimension + x = np.unique(bin_specs[:, 1, 0]) # x in 2nd dimension + predictions = fktable.convolve(fktable.convolutions, [pdfs.members[replica].xfxQ2]) grid2D = predictions.reshape(len(x), len(q2)) struct_func = sf.InterpStructureFunction(path_to_fktable, pdfs.members[replica])