diff --git a/ROC.ipynb b/ROC.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..da7f31c03d5e16f4a557a9dd123fb1efb6069d14 --- /dev/null +++ b/ROC.ipynb @@ -0,0 +1,106 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from nnfwtbn import Variable, Process, Cut, roc" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import seaborn as sns\n", + "#df = pd.read_hdf(\"test.h5\")\n", + "df = pd.read_hdf(\"demo/mva.h5\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "p_sig = Process(r\"Signal\", range=(1, 1000))\n", + "p_bkg = Process(r\"Background\", range=(-999, -1))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "c_vbf = Cut(lambda d: d.dijet_p4__M > 400) & \\\n", + " Cut(lambda d: d.jet_1_p4__Pt >= 30) & \\\n", + " Cut(lambda d: d.is_dijet_centrality == 1) & \\\n", + " Cut(lambda d: d.jet_0_p4__Eta * df.jet_1_p4__Eta < 0) & \\\n", + " Cut(lambda d: (d.jet_0_p4__Eta - df.jet_1_p4__Eta).abs() > 3)\n", + "\n", + "c_vbf_150 = c_vbf & Cut(lambda d: d.ditau_mmc_mlm_m < 140)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEDCAYAAAAx/aOOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3Xl4VOXZ+PHvPZOdkI2w72uQxSAEAZWKO6CAgBS1VbQobtS1alt/b1u7vbVqtVreKta1bohVIYJVEREXNlGQRUAWZQ8BQoAsZLt/f8zkkCGBTCaZzCS5P9c1l3POnPM8T45h7jy7qCrGGGNMOVeoC2CMMSa8WGAwxhjjwwKDMcYYHxYYjDHG+LDAYIwxxocFBmOMMT4iQl0Af8THx2vv3r0Dvj83N5fExMRalSFc0sjOzqZly5YhLUO4pGHP4jh7FsfZszhu5cqVR1W1eY1vVNWwf8XFxWlt3HjjjbW6P5zSGDRoUMjLEC5p2LM4zp7FcfYsjgPyNIDvXGtKMsYY46NJBIYxY8Y0mjTCoQzhkkY4lCFc0giHMoRLGuFQhnBJI1CiDWBJjGbNmmleXl6oixEWMjIy+PLLL0NdjLBgz+I4exbH2bM4TkTyVbVZTe9rEjUGY4wx/msQgSE1NTXURQgb06ZNC3URwoY9i+PsWRxnz8JHdiA3NYimpIyMDLWqoTHG1IyIrFTVjJre1yDmMeTm5jp/BYwZMyYsOqiMMSYcZWZmkpmZWX4Y0EQIqzEYY0wjFWiNoUH0MRhjjKk/TS4wrF27FhHxeT3//PM+10RERFS65lSvZ599lp07d/qcu+uuu/wu0xVXXOFzb2xs7Cmvf/LJJ+nSpQuRkZHOPW63m+bNm3P66afz5ptvBvRsjGkKJk2axPTp0znnnHPo3Lkzn332Gddccw29evVi6tSpoS5eWGgQfQx1aeLEiZXOLVq0iOuvvx6AZcuWUVpaWqM0r7rqKmbOnOlz7rLLLvPr3i1btvDWW2/5nCssLCQ/P5+4uLhK12dkZLBy5cpK58vKyjh69Chr1qxh27ZtNSi9MfXvwcx1rN99uE7T7NMugd+O6VvtdWvWrGHYsGH84x//4M9//jNTp05l0aJFtGzZkg4dOnDs2DGio6PrtGwNTdACg4g8B1wG7FPVflV8/hPgfkCAI8Atqro6WOUBmDVrFps2bap0fvXq49m2bduWGTNmOMfFxcXceeedzvGZZ57JlClTnOOEhATi4uL4+OOPfdI877zz/CrThAkTqKqf57333qsUxO655x6foHDhhRcyfPhwVJUNGzawbNkytm3bxlVXXeVX3sY0NYWFhRw6dMj5Ny0iTJ06lbZt2wLgdrt59dVX+fvf/86qVasoLi6mR48ezJgxg/379/P4449XOn/xxRdzzz33oKoUFRVx9dVXM2LEiBD+lLUXzBrDC8A/gJdO8vk24FxVzRGRUcBMYEgQy8PNN9/svE9OTiYnJweAH374wTnfqVMnbr31Vud47ty5PmlMnTq1ynHSFYNLUlISLlf1rXTz58/nm2++cY7j4uLIz88H4KOPPqoUGF577TXn/aWXXsq7775bKc19+/bRqlWravMOpqSkJMaNG8eLL75Y7bUxMTH85S9/8Qm+pvHz5y/7YFi3bh0DBw50/n2uXr2aW265BYCdO3fSrl07RIS0tDS++OILsrKyGDZsmHN/VeefeeYZRo8ezahRowAoKiqq55+q7gWtj0FVFwMHT/H5F6qa4z1cCnQIVlkA7rvvPg4dOgRAdHQ0//znP53PcnNzT3rf+++/73N8+eWXV3ndnj17nPfdu3f3q0zXXXed83706NH06tXLOf7qq68qXV9xWZCFCxfywAMPsH37dp9rqgsKl1xySaUliaOioqo8d/vtt1f7M9RWYWFhwEGhYr+M2+1m0KBBjeIfpQmeNWvWkJ6e7hx/8803nH766YAnSJS/v+KKK/jPf/7DBx98wMUXX+xcX9X5devWMXjwYOeaqKio+vhRgipcOp+nAu8FK/GjR4/y2GOPOce//vWvufTSS51jVa3yixhg+fLlzvuoqKgqv3j37t3r84U0ZEj1FZ8//elPZGd7JiVGRETw2muv0bfv8b+itm7dWumeHj16OO8LCgr485//TOfOnYmPj2fMmDHs37+/2nwvv/xy9u/f75R31apVlJWVcfDgQZ9zxcXFPoHLH2VlZZSUlNTontpasGABqkpmZiarVq2qssyFhYV1mmddp2fqz5o1axgwYADg+f9YUFBAcnIy4BskygeAtG7d2qf2X9X5vn37+jTxNoo/TgJZq9vfF9AFWFvNNecB3wItTnZNp06ddNCgQZVeTz/9tF9rko8aNUoBBbRFixbO+aioKOf8H//4xyrvTU5Odq7p3LlzldfMmDHDuQbQ+fPnn7I8BQUFGh0d7Vx/9913V0rH7XZXum/Tpk3arFkzn7wqviIjI3XDhg2nzPvIkSMK6L///W9VVb3zzju1R48empiY6HMuIiLCueepp57SuLg4BTQuLk6feuop57PExEQ966yztHnz5groggULNDExUa+99lpVVf366681JiZGR48eXWV53G63PvTQQ6qqeu6552qHDh20W7duCmh0dLS++OKLJ/1ZyvMr1759e+3fv7+T7siRIzUmJkYBLSgo0MzMTE1MTHTS/vWvf+3zbFu1auX8jGeffbY2b97cJ69JkyZpZGSk82zmzZunKSkpKiIaGRmpd955p3P97373O+f3y+Vy6aWXXqqqqhs2bHDyERFNSEjQ4uLik/6Mpv49//zzmpmZqSUlJVpaWuocn+z8sWPH9LbbbtPbbrtNb775Zl20aFG9l/npp5+u8jsS+F4D+e4O5Ca/E68mMACnA1uAXqdKpzYbb6xdu9bny/Odd95xPmvXrp1z/mRfXCJS7TXjx4/3yaO0tPSUZZo4caJzbUJCgnN+69atPuls3bq10r0FBQX6q1/9Srt3764RERGVgkNGRka1zyQpKUnHjRunqqr9+/fX6667Ts866yyfcz179lRV1c2bN6uI6E033aQFBQU6ffp0FRHdtGmTqnoCg9vt1nfeeUcLCgo0Ly/PCQyffPKJRkZG6k9+8pOTluXEwADo7373Oz127JgOHTpUmzVrdtJ7KwaGOXPmqMvl0ilTpjjpxsTE6NKlS/XAgQOal5enERERetFFF+mRI0f0kUce8QniHTt21I4dO2p2drbOmTNH3W53pcCQkpKimzdv1gMHDmhWVpa63W69/vrrtaCgQF999VUVEZ0zZ46qqrpcLn3yySdV1fP/9eWXX1ZV1aFDh+ppp52meXl5mpeXp08++WS1vy/GBAr4UhtSYAA6AZuBs6pLpzaBIS0t7aR/YVd8devWrdK9S5cu9bmm/AvsROV/4Z74RV+VrVu3+gSbU72eeOKJan++119/3SdAtGrVqtp7zj33XG3btq2qqsbExOgHH3ygf/jDH3zO3XDDDaqqetNNN1X6co6Pj9epU6eqqicwDB8+3OfzxMREHThwoLrdbp0+ffopy3JiYEhOTnY+mzNnjnoqtVUr/5lFRCMiIvTss892/vp2u9163XXXOdc++eST6nK5fP4679Spk5577rl67NixSjW9qmoMjzzyiHN8++23V/p/3bt3bx0xYoST/9VXX607duzwuWb48OHapk0bn5qOMcESaGAIWh+DiLwGLAHSRGSniEwVkZtFpHxo0G+AFsD/icgqEanzNS/eeOMNNm7c6Ne1u3fvrnTuxBFJ48ePr/LeXbt2Oe+7det2ynzGjx9fHhirtXjxYuf9gw8+yMGDlfvyJ0+e7DPfwZ8RSWPGjGHv3r1s2bKFoqIiLrroIq677jrnXGFhIddccw3gGbGVlJTkc39ycrLPSK4uXbpUyuPrr78mLi6Ohx56qNryVFRxj9uUlBTg1G36CxYsoKysjOLiYj777DMiIo4PtEtLS3Pef/fdd8TExPh83rZtW/bu3cuGDRsAfDoQO3fuXCmv8vbn8vQOHz7s0wG+YcMG9u3bB8Czzz7LwoUL6dSpE0lJSc48l9dff5327dszcuRIIiMjGTlypH8Pxph6FLThqqp6ysH0qnoDcEOw8ge46aabnPedO3d2hpOV27dvnzO5rLCwkMLCQmJiYpzPlyxZ4rx3u9307NmzUh779+/n2LFjzvH27dsZOnRopev++te/kpeX5zOs9aqrrqq02fecOXOcEU5r1651zj/44IM8+OCDpKWlMWLECHr06EFWVhavvvoqhw8fnyh0//33n+RpHHf99dfzi1/8gunTpzvjtzt06EBMTAzTp0/H7Xbzox/9CPA8t08//dTn/pycHJ8vThGplMfkyZNZtGgRvXr1YuvWrSEZqVGx07Bnz54UFhZSUlLiBIe9e/fSpUsXevfuDcDKlSu55JJLAN8hzFWl1717d1JSUjhw4ECVeU+ZMoUpU6aQn5/P1Vdfza233sq0adNo166ds4nM22+/zcSJE3n44Ye599576+aHNqYuBFLNqO9XIE1J9913n0+zzPr16ytdU1BQcNL+B1XVtm3bOp+1adOmynyefvppv5qFVq9erS1btqy2I3vKlCnONfHx8aqqunz5cr/yKO/w9Ud8fLyKiE6YMME5179/fxURn7Jt2rRJAb311lu1oKBAb7/9dgWcTu6KHc3lys8dOXJEW7ZsqZ07dz5pB+uJTUldunRxPvv000+djuOqcELn88nSVfV0ukdEROgll1yieXl5+thjjymg8+bNU1VPH0Pnzp01Oztb582bV2UfQ8W8du3apW63W2+66Sanv+CFF17QzMxMPXLkiN5yyy36ww8/qKrn/2n5YIL/+Z//0QULFmhpaakuXbpUXS6XPvroo1X+DMbUFuHWlBRKR48e5W9/+5tznJGRwWmnnVbpupiYGCIjI53jBQsW+Hxe3iwAvs0SFZ14T1VcLhfz5s1zhqcC/OMf/6jy2kGDBjnvjx49SllZGd27d+euu+7itNNOIzY21ucv16ioKPr168e8efP8mlBWrl+/fqgqEyZMcM5dcMEFqCpnn322c65nz57MmDGD559/ntjYWJ555hlmzJhx0udRUXx8PJs2beLw4cP07t273oeynliWN998k6VLl9KsWTPuv/9+7rvvPkaPHg145qvk5+fTsmVLJk2axKBBg3yanU7Url07MjMzeeutt4iPjyc+Pp4777zTmWvyxhtv0KVLF0SE2bNn88QTTwCeIZGXXHIJbrebs846ixEjRnD33XcH/wEYUwO27LYxVRgyZAj79+9ny5YtoS6KMQGzjXqMqYX58+eTn5/PhAkTePHFF1mxYoVf/TXGhJu62Kgn5P0H/rxqM1zVGH+88MILzrDfiIgIvfjii21+QSPkcrk0PT1d+/btq1dccYXm5eXV6P7HHnvM555Ro0ZpTk7OSa//7W9/qw8//LDf6T///PN62223Ofe2a9dO09PTtUePHjp+/Hhdt25djcqL9TEYE7gpU6ZQXFyMqlJcXMz777/v10KIpmGJjY1l1apVrF27lqioKJ566im/7y0tLeXxxx93FroET03zxOHcdemuu+5i1apVfPfdd0yePJnzzz/fp68yWOw33xjTJA0fPpzNmzcDnjXEBg0aRN++fX32VomPj+eee+4hPT2dP/3pT+zevZvzzjvPWVa/S5cuzhplL730Eqeffjrp6enOPKCKtmzZwsiRIxk0aBDDhw935s/4a/LkyVx88cW8+uqrgf7IfmsQfQzGmEbmvV/C3jV1m2ab/jDqL35dWlJSwnvvvedMMHzuuedISUmhoKCAwYMHM3HiRFq0aEFeXh5Dhgzh0Ucfda77+OOPSU1N9Ulv3bp1/PGPf+SLL74gNTW1ysmo06ZN46mnnqJnz54sW7aMW2+9lYULF9boRxw4cGCNA0ogLDAYY5qMgoICZ3XV4cOHO1t5PvHEE7z99tsA7Nixg++++44WLVrgdrur3PXx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\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7fa0ffc4a5f8>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import warnings\n", + "warnings.filterwarnings(\"error\")\n", + "import matplotlib.pyplot as plt\n", + "fig, ax = plt.subplots()\n", + "\n", + "v_mmc = Variable(r\"$m_\\mathrm{MMC}$\", \"ditau_mmc_mlm_m\", \"GeV\")\n", + "roc(df, p_sig, p_bkg, v_mmc, selection=c_vbf_150, axes=ax, steps=400)\n", + "roc(df, p_sig, p_bkg, Variable(\"Particle ID\", \"fpid\"), selection=c_vbf_150, axes=ax)\n", + "None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.5.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}