{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "d563033c",
   "metadata": {},
   "source": [
    "# Import tools/models be used"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "fc9e6e26",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from math import pi\n",
    "from sklearn.gaussian_process import GaussianProcessRegressor   # import model to be used\n",
    "from sklearn.gaussian_process.kernels import RBF                # import kernel to be used\n",
    "import joblib                                                   # to store model\n",
    "import os\n",
    "import errno\n",
    "from sklearn.model_selection import train_test_split  # this is very important"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "313e157e",
   "metadata": {},
   "source": [
    "# Read data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "bdc08ed0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>$M_{inv}$</th>\n",
       "      <th>$rapidity$</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>512.889687</td>\n",
       "      <td>-1.698364</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>349.604335</td>\n",
       "      <td>0.649795</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>102.015218</td>\n",
       "      <td>0.935912</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>475.693746</td>\n",
       "      <td>1.691695</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>422.624040</td>\n",
       "      <td>1.233733</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8604</th>\n",
       "      <td>310.392511</td>\n",
       "      <td>1.763102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8605</th>\n",
       "      <td>322.772764</td>\n",
       "      <td>1.343101</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8606</th>\n",
       "      <td>373.867518</td>\n",
       "      <td>-0.255696</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8607</th>\n",
       "      <td>275.877980</td>\n",
       "      <td>0.169265</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8608</th>\n",
       "      <td>440.485176</td>\n",
       "      <td>0.265116</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8609 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       $M_{inv}$  $rapidity$\n",
       "0     512.889687   -1.698364\n",
       "1     349.604335    0.649795\n",
       "2     102.015218    0.935912\n",
       "3     475.693746    1.691695\n",
       "4     422.624040    1.233733\n",
       "...          ...         ...\n",
       "8604  310.392511    1.763102\n",
       "8605  322.772764    1.343101\n",
       "8606  373.867518   -0.255696\n",
       "8607  275.877980    0.169265\n",
       "8608  440.485176    0.265116\n",
       "\n",
       "[8609 rows x 2 columns]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "directory = '../data/'\n",
    "filein    = 'checkNLO.txt'\n",
    "file      = directory+filein\n",
    "data = np.genfromtxt(file)\n",
    "\n",
    "m        = data[:,0:1]\n",
    "rap      = data[:,1:2]\n",
    "x2       = data[:,2:3]\n",
    "\n",
    "m = np.concatenate((m),axis=0) \n",
    "rap = np.concatenate((rap),axis=0) \n",
    "x2 = np.concatenate((x2),axis=0) \n",
    "\n",
    "Data_ave = np.stack((m,rap),axis=-1)\n",
    "df = pd.DataFrame(Data_ave)\n",
    "df.columns = ['$M_{inv}$','$rapidity$']\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0248b96b",
   "metadata": {},
   "source": [
    "# Split data into training and testing sub-sets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "de4cf784",
   "metadata": {},
   "outputs": [],
   "source": [
    "# for reproducibility\n",
    "#X_train, X_test, y_train, y_test = train_test_split(Data_ave, x2, test_size=0.4, train_size=0.6 , random_state=0)\n",
    "X_train, X_test, y_train, y_test = train_test_split(Data_ave, x2, test_size=0.4, train_size=0.6 )\n",
    "\n",
    "# rename data for convenience\n",
    "x2_train   = y_train\n",
    "m_train    = X_train[:,0:1]\n",
    "rap_train  = X_train[:,1:2]\n",
    "\n",
    "x2_test   = y_test\n",
    "m_test    = X_test[:,0:1]\n",
    "rap_test  = X_test[:,1:2]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2624e86c",
   "metadata": {},
   "source": [
    "# Now let's do some training"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "b8ef444a",
   "metadata": {},
   "outputs": [],
   "source": [
    "'''Training and prediction'''\n",
    "#-----------------------------------------------------------------------------#\n",
    "# Input:                                                                      #\n",
    "# X_train  := training data set                                               #\n",
    "# y_train  := targets for training                                            #\n",
    "# X_trest  := testing data set                                                #\n",
    "# y_test   := targets for testing                                             #\n",
    "# filename := name for training storage                                       #\n",
    "# model    := name of the mode we want to use                                 #\n",
    "# ----------------------------------------------------------------------------#\n",
    "# Output:                                                                     #  \n",
    "# loaded_model := trained model                                               #\n",
    "# R2 := quality of the training on the testing set                            #\n",
    "# y_fit := predicted targets                                                  #\n",
    "# y_est := estimated targets                                                  #\n",
    "# ----------------------------------------------------------------------------#\n",
    "# Output labelling :                                                          #\n",
    "# Training(X,y,filename)[0] -> R2                                             #\n",
    "# Training(X,y,filename)[1] -> y_new                                          #\n",
    "# ----------------------------------------------------------------------------#\n",
    "\n",
    "def training (X_train, y_train, X_test, y_test,filename,model):\n",
    "\n",
    "    # train \n",
    "    model.fit(X_train, y_train)\n",
    "\n",
    "    # save trained model\n",
    "    joblib.dump(model, filename)\n",
    "\n",
    "    # load model \n",
    "    loaded_model = joblib.load(filename)\n",
    "\n",
    "    # R^2\n",
    "    R2   = loaded_model.score(X_test, y_test)\n",
    "    \n",
    "    # predicted targets \n",
    "    y_fit = loaded_model.predict(X_test)\n",
    "    # estimated targets\n",
    "    y_est = loaded_model.predict(X_train)\n",
    "\n",
    "    \n",
    "    return R2, y_fit,y_est, model.get_params(deep=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "06b6bed9",
   "metadata": {},
   "outputs": [],
   "source": [
    "x2_train,x2_test;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "ca19e5ea",
   "metadata": {},
   "outputs": [],
   "source": [
    "m_train,m_test;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "be16d388",
   "metadata": {},
   "outputs": [],
   "source": [
    "# name of the model for storage\n",
    "filename = 'storage/x2_NLO_Gaussian_RBF_model.sav'\n",
    "\n",
    "# train \n",
    "Training_machine_learning = training(X_train,y_train,X_test,y_test,filename,GaussianProcessRegressor(kernel=RBF(1.0),random_state=0))\n",
    "\n",
    "# predict\n",
    "R2    = Training_machine_learning[0] \n",
    "y_fit = Training_machine_learning[1]\n",
    "y_est = Training_machine_learning[2]\n",
    "coefs = Training_machine_learning[3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "3b225d13",
   "metadata": {},
   "outputs": [],
   "source": [
    "y_est,y_train;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "1cf2c418",
   "metadata": {},
   "outputs": [],
   "source": [
    "y_fit,y_test;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "49492be3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9946111766167525"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "R2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "93efe92e",
   "metadata": {},
   "outputs": [],
   "source": [
    "coefs"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "56253913",
   "metadata": {},
   "source": [
    "# Let's plot and see what we have"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "c97b86ca",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, (ax1, ax2) = plt.subplots(1, 2)\n",
    "\n",
    "ax1.scatter(m, x2, label='data')\n",
    "ax1.scatter(m_test, y_fit,label='prediction')\n",
    "ax1.scatter(m_train, y_est,label='estimated')\n",
    "ax1.legend()\n",
    "\n",
    "ax1.set_xlabel(xlabel='m',fontsize=16)\n",
    "ax1.set_ylabel(ylabel=r'$x_2$',fontsize=16)\n",
    "\n",
    "ax2.scatter(rap, x2, label='data')\n",
    "ax2.scatter(rap_test, y_fit,label='prediction')\n",
    "ax2.scatter(rap_train, y_est,label='estimated')\n",
    "\n",
    "ax2.set_xlabel(xlabel='rapidity',fontsize=16)\n",
    "\n",
    "plt.savefig('Plots/x2_NLO_Gaussian.pdf')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "1292c0f8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, (ax1) = plt.subplots(1, 1)\n",
    "\n",
    "plt.ylim(-1,1)\n",
    "ax1.scatter(m_test,(y_test-y_fit)/y_test,label='relative % diff test')\n",
    "ax1.scatter(m_train, (y_train-y_est)/y_train,label='relative % diff train')\n",
    "ax1.legend()\n",
    "\n",
    "ax1.set_xlabel(xlabel='m',fontsize=16)\n",
    "ax1.set_ylabel(ylabel=r'$\\%$ diff',fontsize=16)\n",
    "\n",
    "plt.savefig('Plots/x2_NLO_Gaussian_relative.pdf')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "223a95b9",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
