Commit 2e3db8fc authored by Guillaume HEUSCH's avatar Guillaume HEUSCH

more on fr-pad: espc (basic) code ok

parent fc7dbff0
Pipeline #25389 passed with stage
in 58 seconds
...@@ -20,9 +20,22 @@ ...@@ -20,9 +20,22 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 1, "execution_count": 6,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [
{
"data": {
"image/png": "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nkyvXr046KCDUv5cptUlptLSUho3bpzBqESkPlKJLg1WrFjBzTffzNSpU8sT169+9SuOPPJIjjjiCG688UYA1qxZw2GHHcYll1xCnz59WLt2LTNmzCA/P59evXpx1VVX1eq4Y8eOZfXq1QwbNow777yTCy64gJKSEgoKCvj73//OvHnz6N27N/n5+fzwhz/k66+/BoKeZm6++WaOOeYYZsyYweLFixkxYgQFBQV89dVX1R4vLy+Pa6+9loEDB9KvXz/eeOMNhgwZwiGHHMKDDz4IBKXP4447jjPOOIOePXsyduxYdu3aBVDluZaWllJUVESvXr3Iz8/n7rvvZtasWZViSuVcHnvsMe6991569uzJEUccwbnnnlur6yki8RSfEl1EduzYwfnnn8+ECRPo1KkTAHPmzGHlypUsWrQId2fYsGHMnz+fTp06sXz5ch555BEeeOAB1q9fz1VXXcWSJUto06YNgwcP5qmnnuL000+vdJyXX36ZgoKC8vePP/44Dz74IM8//zwvvvgibdu2ZcCAAUyYMIHZs2ezfft2CgsLmTdvHt26dePCCy9k4sSJXH755UDQzH7BggUA/P73v2fChAn069evxvPt2LEjCxcuZNy4cRQVFfHKK6+wfft2Dj/8cMaOHQvAokWLeO+99+jcuTMnnXQSTzzxBEcddVSV59qxY0c+/vhj3nnnHQC2bt3Kfvvtx3333Vce0/bt2ykqKkrpXA466CA++OAD9tprL7Zu3VrXf1YRiRGV6PbQDTfcwOGHH75b6WHOnDnMmTOH3r1706dPH95//31WrlwJQOfOnfnOd74DwOuvv05hYSHt2rWjSZMmjBgxgvnz51d5nGOPPZaSkpLy6ZBDDkka1/Lly+nSpQvdunUDYOTIkbvt+5xzzqnT+Q4bNgyA/Px8BgwYQKtWrWjXrh3NmzcvTyz9+/ena9euNG7cmPPOO48FCxZUe65du3Zl9erVXHbZZTz//PPsu+++e3QuRxxxBCNGjGDatGk0aaL/x4mki423aqdcp0S3B4qLi3n88ce57777dlvu7lxzzTXlSWnVqlVcdNFFAOy99967bVeVxIYude3MuqYBdRPjqI299toLgEaNGpW/Lnu/c+dOoHLLRjOrNp42bdrw1ltvUVhYyP3338/FF19caZvanMtf/vIXLr30UpYsWULfvn3LYxKRhkuJro4+/fRTRo0axR//+EdatWq127ohQ4bwhz/8gS+++AKAjz/+mE2bNlXax4ABA3jppZfYvHkzpaWlzJgxg+OPP54zzjijPEmmUp1YlR49erBmzRpWrVoFwNSpUzn++OOr3LZVq1Zs27atTsepyqJFi/jggw/YtWsXM2fO5Jhjjqn2XDdv3syuXbs488wzueWWW3jjjTcqxZTquezatYu1a9cyaNAgfvnLX7J169byfwMRabhUt1NHDz74IJs2beLHP/7xbsuvueYazjnnHJYtW8bAgQMB2GeffZg2bVqlFoEHHnggt99+O4MGDcLdOfnkkznttNOqPF7Fe3TXX389w4cPrza+5s2b88gjj3DWWWexc+dOjjzyyPJ7aBUVFRUxduxYWrRowcKFC2nRokVK16A6AwcO5Oqrr2bp0qXlDVMaNWpU5bm+9dZbjBo1qrzByu23315lTKmcS2lpKRdccAGfffYZ7s64cePYb7/99uhcRKT+s5qqhXJBv379vGIV3rJlyzjssMMiikiqU1xcXN4gJlfpuyNSe8nuxfmN0eQRM1vi7jVWe6nqUkREYk1Vl5JWhYWFFBYWRh2GiEg5lehERCTWlOhERCTWlOhERCTWlOhERCTWlOj2wMaNGzn//PPp2rUrffv2ZeDAgTz55JNpPcbTTz/NHXfckdZ9iog0JLFpdZnu/tZqei7E3Tn99NMZOXIkf/rTnwD48MMPefrpp9Max7Bhw8r7lxQRkdpTia6O/va3v9GsWbPdeujo3Lkzl112GaWlpVx55ZXlw/Q89NBDQPAwdWFhIcOHD6dHjx6MGDGivB/HvLw8Nm/eDMDixYvLm+hPnjyZn/zkJ0DQW8hPf/pTjjrqKLp27brbgKhVDQskIiIxKtFl27vvvkufPn2qXPfwww/TunVrXn/9db7++muOPvpoBg8eDMCbb77Ju+++y0EHHcTRRx/NK6+8wjHHHJPycTds2MCCBQt4//33GTZsGMOHD692WKDjjjsuLecqIlKfKdGlyaWXXsqCBQto1qwZnTt35u233y4vcX322WesXLmSZs2a0b9/fzp06ABAQUEBa9asqVWiO/3002nUqBE9e/Zk48aNwO7DAgF88cUXrFy5UolORAQlujo7/PDDefzxx8vf33///WzevJl+/frRqVMnfvvb3zJkyJDdPlNcXLzb0DaNGzcuH0amSZMm5R0bb9++vdrjJn6+rNqzbFigMWPG7PmJiYjEjO7R1dF3v/tdtm/fzsSJE8uXffnll0AwTM/EiRPZsWMHACtWrOBf//pX0v3l5eWxZMkSgN0SaCpSHRZIRKQhUomujsyMp556inHjxvHLX/6Sdu3asffee3PnnXdy1llnsWbNGvr06YO7065dO5566qmk+7vxxhu56KKL+MUvfsGAAQNqFcvgwYOrHBaoffv2dT4/EZG40DA90uDouyNSexqmR0REJEcp0YmISKwp0YmISKypMYqISAxUdw8tqvtnuUQlOhERiTUlOhERiTUluj3QuHFjCgoKyqey4XQKCwvp3r17+fLhw4cDcNNNN3HwwQdTUFBAz549mTFjRqV93nbbbeWfS9z/vffeS1FR0W4dOadLYWEhFR/fSKa4uJhTTz21ynWJnVOLiOQC3aPbAy1atKCkpKTKddOnT6dfv8qPd4wbN44rrriClStX0rdvX4YPH07Tpk3L11933XVcd911QPDgd+L+i4qKaoyptLSUxo0b1/JMRETiK2MlOjPraGYvmtkyM3vXzH4WLt/fzF4ws5XhvE2mYshlhx56KC1btuTTTz+t1efmz59faZie4uJiBg0axPnnn09+fj4A06ZNo3///hQUFDBmzBhKS0spLS2lqKiIXr16kZ+fz913312+38cee4z+/fvTrVs3Xn75ZSDoc3PUqFHk5+fTu3dvXnzxxUrxbNmyhcGDB9O7d2/GjBlDfeiAQEQalkxWXe4Efu7uhwHfAS41s57A1cA8dz8UmBe+r5e++uqr3aouZ86cWb5uxIgR5cuvvPLKSp994403OPTQQ2vdTVfZMD2zZ8/m6qv/c+kWLVrEbbfdxnvvvceyZcuYOXMmr7zyCiUlJTRu3Jjp06dTUlLCxx9/zDvvvMPSpUsZNWpU+ed37tzJokWLuOeeexg/fjwQdFQNsHTpUmbMmMHIkSMrdTg9fvx4jjnmGN58802GDRvGRx99VKvzERHJtIxVXbr7BmBD+HqbmS0DDgZOAwrDzaYAxcBVe3zAwsLKy84+Gy65BL78Ek4+ufL6oqJg2rwZwvto5YqLazxkXaou7777bn73u9+xevVqnn/++RqPUVFVw/QA9O/fny5dugAwb948lixZwpFHHgkECbl9+/YMHTqU1atXc9lll3HKKaeUj5EH8P3vfx+Avn37smbNGgAWLFjAZZddBkCPHj3o3LkzK1as2C2e+fPn88QTTwBwyimn0KZNgyygi0gOy0pjFDPLA3oD/wd8I0yCZcmwyiKNmY02s8VmtviTTz7JRphZMW7cOJYvX87MmTO58MILkw7JU5WqhukB2HvvvXdbPnLkSEpKSigpKWH58uXcdNNNtGnThrfeeovCwkLuv/9+Lr744kr7TRw6KNVqSLPq+8ATEYlaxhujmNk+wOPA5e7+eap/FN19EjAJgk6da/xAshJYy5bJ17dtm1IJLp2+//3vM2XKFKZMmZL2ceROOOEETjvtNMaNG0f79u355z//ybZt29h7771p1qwZZ555JoccckiNjVuOO+44pk+fzne/+11WrFjBRx99RPfu3Vm4cGGlba6//nqee+65Wt9zFBHJtIwmOjNrSpDkprv7E+HijWZ2oLtvMLMDgXo7cFrZPboyJ510UvkjBiNGjKBFixYAtG3blrlz51b6/P/8z/9w/vnn86Mf/YhGjdJXuO7Zsye33norgwcPZteuXTRt2pT777+fFi1aMGrUqPIBXm+//fak+7nkkksYO3Ys+fn5NGnShMmTJ+9WooRgeKHzzjuPPn36cPzxx9OpU6e0nYeISDpkbJgeC4puU4B/uvvlCct/BWxx9zvM7Gpgf3f/72T70jA9kk767kgcZboLsPo8TE8mS3RHAz8AlppZWYuNa4E7gEfN7CLgI+CsDMYgIiINXCZbXS4AqvsvwAmZOq6IiEgidQEmIiKxVq8TnXrhkNrSd0ak4am3ia558+Zs2bJFf7gkZe7Oli1baN68edShiEgW1dtOnTt06MC6deuI08PkknnNmzenQ4cOUYchIllUbxNd06ZNy7u8EhERqU69rboUERFJhRKdiIjEmhKdiIjEmhKdiIjEmhKdiIjEmhKdiIjEmhKdiIjEmhKdiIjEmhKdiIjEmhKdiIjEmhKdiIjEmhKdiIjEmhKdiEiiV18NJomNejt6gYhIRlx7bTAvLo40DEkflehERCTWlOhERCTWlOhERCTWlOhERCTW1BhFRCTRPfdEHYGkmRKdiEiigoKoI5A0U9WliEiiuXODSWJDJToRkUS33hrMTzwx2jgkbVSiExGRWFOiExGRWFOiExGRWFOiExGRWFNjFBGRRA89FHUEkmZKdCIiibp3jzoCSTNVXYqIJHrmmWCS2FCJTkQk0V13BfOhQ6ONI01svFW53G/0Wm1fn6lEJyIisaZEJyIisaZEJyIisaZEJyIisVZjYxQza+zupdkIRkQkclOnRh2BpFkqJbpVZvYrM+uZ8WhERKLWsWMwSWykkuiOAFYAvzez18xstJntm+G4RESiMXNmMEls1Jjo3H2bu//O3Y8C/hu4EdhgZlPM7FsZj1BEJJsmTgwmiY0aE52ZNTazYWb2JPAb4C6gK/AM8GyG4xMREdkjqfSMshJ4EfiVu7+asHyWmR2XmbBERETSI5VEd6G7L0hcYGZHu/sr7v7TDMUlIiKSFqk0Rrm3imW/TXcgIiIimVBtic7MBgJHAe3M7L8SVu0LNK5px2b2B+BUYJO79wqX3QT8CPgk3Oxad9d9PhHJHbNmRR2BpFmyEl0zYB+CZNgqYfocGJ7CvicDJ1Wx/G53LwgnJTkRyS1t2waTxEa1JTp3fwl4ycwmu/uHtd2xu883s7w9iE1EJPsmTw7mRUVRRiFplKzq8h53vxy4z8wqDVzk7sPqeMyfmNmFwGLg5+7+aR33IyKSfkp0sZOs1WVZh28T0ni8icAtgIfzu4AfVrWhmY0GRgN06tQpjSGIiEhDkqzqckk4f6lsmZm1ATq6+9t1OZi7b0zY1++A2Um2nQRMAujXr1/VQ+GKiIjUIJWeUYrNbF8z2x94C3jEzH5dl4OZ2YEJb88A3qnLfkRERFKVygPjrd39czO7GHjE3W80sxpLdGY2AygE2prZOoI+MgvNrICg6nINMKbOkYuIiKQglUTXJCyJnQ1cl+qO3f28KhY/nOrnRUQi8ayeeoqbVHpGuRn4K7DK3V83s64E/V+KiMRPy5bBJLFRY4nO3R8DHkt4vxo4M5NBiYhE5oEHgvkll0QbRz1i463K5X5jbrQjrDHRmVk7gm678hK3d/cqHwsQEanXHn00mCvRxUYq9+j+F3gZmAuUZjYcERGR9Eol0bV096syHomIiEgGpNIYZbaZnZzxSERERDIglUT3M4Jkt93MPjezbWb2eaYDExERSYdUWl22ykYgIiI5obg46ggkzVLpAszM7AIzuyF839HM+mc+NBERkT2XStXlA8BA4Pzw/RfA/RmLSEQkShMmBJPERiqJboC7XwpsBwjHj2uW0ahERKIye3YwSWykkuh2mFljgo6Yyx4g35XRqERERNIklUR3L/Ak0N7MbgMWAL/IaFQiIiJpkkqry+lmtgQ4ATDgdHdflvHIRERE0iCVvi7zgR7AJmCZkpyIxFqLFlFHIGlWbaIzs9YE/Vx2BN4mKM3lm9lHwGnurofGRSR+nnsu6ggkzZLdo7sFWAwc6u5nuPvpQDfgdeC2bAQnIiKyp5JVXZ4IHOHu5S0s3b3UzK4FlmY8MhGRKNxySzC/4YZo45C0SVai+7e776y4MFz2deZCEhGJ0Lx5wSSxkaxE19zMehPcm0tkwF6ZC0lERCR9kiW6DcCvq1n3jwzEIiIiknbVJjp3H5TNQERERDIhlRHGRUQajgMOiDoCSTMlOhGRRI8/HnUEkmap9HUpIiJSb6Uy8OrjZnaKmSkpikj8XXNNMElspJK8JhIMurrSzO4wsx4ZjklEJDoLFwaTxEaNic7d57r7CKAPsAZ4wcxeNbNRZtY00wGKiIjsiZSqI83sAKAIuBh4E/gNQeJ7IWORiYiIpEEqw/Q8QTBMz1RgqLtvCFfNNLPFmQxORERkT6XyeMHv3f3ZxAVmtpe7f+3u/TIUl4hINDp0iDoCSbNUEt2twLMVli0kqLoUEYmXadOijkDSLNnAq98EDgZaVOjceV+gZRZiExER2WPJSnRDCBqgdGD3zp23AddmMCYRkehcfnkwv+eeaOOQtEnWqfMUYIqZnenu6hNHRBqGkpKoI5A0S1Z1eYG7TwPyzOy/Kq539+qG8BEREckZyaou9w7n+2QjEBERkUxIVnX5UDgfn71wRERE0itZ1eW9yT7o7j9NfzgiIhHr1i3qCCTNklVdLslaFCIiuWLSpKgjkDSrqdWliIhIvZas6vIed7/czJ4BvOJ6dx+W0chERKIwenQwV8kuNpJVXU4N5xOyEYiISE5YsSLqCCTNklVdLgnnL5lZM4IRDBxY7u7/zlJ8IiIieySVYXpOAR4E/k7Q32UXMxvj7s9lOjgREZE9lcroBXcBg9x9FYCZHQL8BVCiExGRnJdKottUluRCq4FNGYpHRCRaBQVRRyBplqzV5ffDl++a2bPAowT36M4CXs9CbCIi2adRC2InWYluaMLrjcDx4etPgDY17djM/gCcSlAi7BUu2x+YCeQBa4Cz3f3TWkctItJA2XireaMs7qc+SNbqctQe7nsycB/wx4RlVwPz3P0OM7s6fH/VHh5HRCR9LrggmGuk8dhIpdVlc+Ai4HCgedlyd/9hss+5+3wzy6uw+DSgMHw9BShGiU5Ecsm6dVFHIGnWKIVtpgLfJBhx/CWCEce31fF433D3DQDhvH0d9yMiIpKSVBLdt9z9BuBfYf+XpwD5mQ0LzGy0mS02s8WffPJJpg8nIiIxlUqi2xHOt5pZL6A1QWOSuthoZgcChPNqH1Nw90nu3s/d+7Vr166OhxMRkYYulefoJplZG+AG4GmCEcdvqOPxngZGAneE8/+t435ERDJj4MCoI5A0qzHRufvvw5cvAV1T3bGZzSBoeNLWzNYBNxIkuEfN7CLgI4Jn8kREcsftt0cdgaRZKq0uDwBuAo4meGD8ZeAWd9+S7HPufl41q06oZYwiIiJ1lso9uj8T3Es7ExgObCZ46FtEJH7OPDOYJDZSuUe3v7vfkvD+VjM7PVMBiYhEakvSyiqph1Ip0b1oZueaWaNwOptg9AIREZGcl6xT520E9+QM+C+grD+cRsAXBI1LREREclqyvi5bZTMQERGRTEjlHh1mNgw4Lnxb7O6zMxeSiEiETlDD8LhJ5fGCO4Ajgenhop+Z2THufnVGIxMRicINde0PQ3JVKiW6k4ECd98FYGZTgDcJhtgRERHJaam0ugTYL+F160wEIiKSE773vWCS2EilRHc78KaZvUjQAvM44JqMRiUiEpWvvoo6AkmzpInOzAxYAHyH4D6dAVe5+z+yEJuIiMgeS5ro3N3N7Cl370sw8oCIiEi9kso9utfM7MiMRyIiIpIBqdyjGwSMNbM1wL8Iqi/d3Y/IZGAiIpE49dSoI5A0SyXRqfmRiDQcV1wRdQSSZsn6umwOjAW+BSwFHnb3ndkKTEREJB2S3aObAvQjSHLfA+7KSkQiIlEqLAwmiY1kVZc93T0fwMweBhZlJyQREZH0SVai21H2QlWWIiJSXyUr0X3bzD4PXxvQInxf1upy34xHJyIisoeSjUfXOJuBiIiIZEJK49GJpMWkSZWXjR6d/ThEkjn77KgjkDRTohMRSXTJJVFHIGmmRCfxoRKjpMOXXwbzli2jjUPSRolORCTRyScH8+LiSMOQ9El14FUREZF6SYlORERiTYlORERiTYlORERiTY1RREQSFRVFHYGkmRKdiEgiJbrYUdWliEiizZuDSWJDJTqpv6p6QFxkTw0fHsz1HF1sqEQnIiKxpkQnIiKxpkQnIiKxpnt0Insi1Y6k1eG0SGSU6EREEv34x1FHIGmmRCfxphKX1NY550QdgaSZ7tGJiCRauzaYJDZUohMRSfSDHwRzPUcXG0p0ItVRdaZILKjqUkREYk0lOkkPlX5EJEepRCciIrGmEp1kThw7Xc6Fc1LpObN+/vOoI5A0U6ITEUk0dGjUEUiaKdGJpFsulPqk7pYvD+bdu0cbh6RNJInOzNYA24BSYKe794siDhGRSsaMCeZ6ji42oizRDXJ3DePb0O1JF10iIilQq0sREYm1qBKdA3PMbImZqbmYiIhkTFRVl0e7+3ozaw+8YGbvu/v8xA3CBDgaoFMIbw1nAAAKLUlEQVSnTlHEKCIiMRBJonP39eF8k5k9CfQH5lfYZhIwCaBfv36e9SClevX9fll9j18y6/rro45A0izric7M9gYaufu28PVg4OZsxyEiUqUTT4w6AkmzKEp03wCeNLOy4//J3Z+PIA4RkcpKSoJ5QUG0cUjaZD3Ruftq4NvZPq6ISEouvzyY6zm62NDjBSIiEmvqAkxyT0NuLKIOm0XSTiU6ERGJNZXoRKLSkEuuIlmkRCcikugXv4g6AkkzJToRkURHHZW1Q9l4y9qxolDd+fmN2e0DRPfoREQSvfpqMElsqEQnyek+kjQ0114bzPUcXWyoRCciIrGmEp1IrlOpWmSPqEQnIiKxpkQnIiKxpqpLEZFE99wTdQSSZkp0DZX6VBSpmobniR1VXYqIJJo7N5gkNlSiExFJdOutwVwjjceGEp38h5qxx4uqp0UAVV2KiEjMKdGJiEisKdGJiEis6R5dfaf7MAK6v5pODz0UdQSSZkp0IiKJunePOgJJMyW6OFIpT6TunnkmmA8dGm0ckjZKdCIiie66K5gr0cWGEp1IQ6LSvjRAanUpIiKxphJdQ6FWeSLSQKlEJyIisaYSnYhIoqlTo45A0kyJTkQkUceOUUcgaaaqSxGRRDNnBpPEhkp0IiKJJk4M5uecE20ckjYq0YmISKwp0YmISKwp0YmISKwp0YmISKypMYqISKJZs6KOQNJMiS7T1Imu5Lp0fkfj8H1v2zbqCCTNVHUpIpJo8uRgkthQiS5XxeF/xiL1UVmSKyqKMgpJI5XoREQk1lSiqyuVuERE6gWV6EREJNZUokunug5uqkFRJdek8p1UDYbUE0p0IiKJnn026ggkzZTo6hOV/CSXZPr7GNV98JYtM38MySrdoxMRSfTAA8EksaFEJyKS6NFHg0liI5KqSzM7CfgN0Bj4vbvfEUUckVEVpDR0ejxHsijrJTozawzcD3wP6AmcZ2Y9sx2HiIg0DFGU6PoDq9x9NYCZ/Rk4DXgv40dWSUokd+n3KRkSxT26g4G1Ce/XhctERETSLooSnVWxzCttZDYaKKu0/8LMloev2wKbMxRbHOl61Y6uV+3UfL3GjEnf0dK5r5pYVX+q9pi+X4DdlPK1rel6dU5lJ1EkunVAx4T3HYD1FTdy90lApboMM1vs7v0yF1686HrVjq5X7eh61Y6uV+2k63pFUXX5OnComXUxs2bAucDTEcQhIiINQNZLdO6+08x+AvyV4PGCP7j7u9mOQ0REGoZInqNz92eBunYop6ZZtaPrVTu6XrWj61U7ul61k5brZe6V2oGIiIjEhroAExGRWMv5RGdm+5vZC2a2Mpy3qWa7UjMrCacG27gl1esVbruvmX1sZvdlM8Zcksr1MrPOZrYk/G69a2Zjo4g1F6R4vQrMbGF4rd42s3OiiDUX1OLv1/NmttXMZmc7xlxgZieZ2XIzW2VmV1exfi8zmxmu/z8zy6vN/nM+0QFXA/Pc/VBgXvi+Kl+5e0E4DcteeDkn1esFcAvwUlaiyl2pXK8NwFHuXgAMAK42s4OyGGMuSeV6fQlc6O6HAycB95jZflmMMZek+nv8FfCDrEWVQ1LsFvIi4FN3/xZwN3BnbY5RHxLdacCU8PUU4PQIY6kPUrpeZtYX+AYwJ0tx5aoar5e7/9vdvw7f7kX9+N1kSirXa4W7rwxfrwc2Ae2yFmFuSen36O7zgG3ZCirHlHcL6e7/Bsq6hUyUeB1nASeYpf5Ef334wX7D3TcAhPP21WzX3MwWm9lrZtaQk2GN18vMGgF3AVdmObZclNL3y8w6mtnbBN3X3Rn+AW+IUv09AmBm/YFmwN+zEFsuqtX1aqBS6RayfBt33wl8BhyQ6gFyYoRxM5sLfLOKVdfVYjed3H29mXUF/mZmS909lj+uNFyvS4Bn3X1tLf5TVG+l4/vl7muBI8Iqy6fMbJa7b0xXjLkkTb9HzOxAYCow0t13pSO2XJSu69WApdItZEpdR1YnJxKdu59Y3Toz22hmB7r7hvCHs6mafawP56vNrBjoTUz/F5mG6zUQONbMLgH2AZqZ2Rfunux+Xr2Vju9Xwr7Wm9m7wLEEVSixk47rZWb7An8Brnf31zIUak5I5/ergUqlW8iybdaZWROgNfDPVA9QH6ounwZGhq9HAv9bcQMza2Nme4Wv2wJHk41hf3JTjdfL3Ue4eyd3zwOuAP4Y1ySXglS+Xx3MrEX4ug3B92t5xe0aiFSuVzPgSYLv1WNZjC0X1Xi9JKVuIROv43Dgb16bh8DdPacngnrYecDKcL5/uLwfwejkAEcBS4G3wvlFUcedy9erwvZFwH1Rx53L1wv4f8Db4ffrbWB01HHn+PW6ANgBlCRMBVHHnqvXK3z/MvAJ8BVB6WVI1LFn+TqdDKwgqIW7Llx2MzAsfN0ceAxYBSwCutZm/+oZRUREYq0+VF2KiIjUmRKdiIjEmhKdiIjEmhKdiIjEmhKdiIjEmhKdSB2Z2XUJPfSXmNmALB13spmNqbDsdDNLOpixma0JnzMVaVCU6ETqwMwGAqcCfdz9COBEdu+vry77TLWnohkED9UmOjdcLiIVKNGJ1M2BwGYPRzVw980edkNnZkea2atm9paZLTKzVmbW3MweMbOlZvammQ0Kty0ys8fM7BnCkSTM7Eozez0sKY6v4thzgR5hl1KYWUuCRPtU+P6pcPy8d81sdMUPm1memb2T8P4KM7spfH1IODbaEjN72cx6pO2KiUREiU6kbuYAHc1shZk9YGbHQ3n3VzOBn7n7twkS0FfApQDung+cB0wxs+bhvgYSdHz8XTMbDBxKMHRJAdDXzI5LPLC7lwJPAGeHi4YBL7p72TAvP3T3vgS9b/zUzFLu5R2YBFwWfv4K4IFafFYkJynRidSBu38B9AVGE3TdNNPMioDuwAZ3fz3c7nMPhhU5hqAnf9z9feBDoFu4uxfcvayD2sHh9CbwBtCDIPFVlFh9WbHa8qdm9hbwGkFHuFV9vhIz24egO73HzKwEeIig5CpSr+XE6AUi9VFYsioGis1sKUGns29Q9fAhycZD+leF7W5394dqOPwrwIFm9m2C5HQugJkVEpQiB7r7l+FIHs0rfHYnu/8nt2x9I2CrByOpi8SGSnQidWBm3c0ssaRUQFBKex84yMyODLdrFTYymQ+MCJd1AzpR9QgIfwV+GJauMLODzazSYJ0edFL7KMGoy8+6+/ZwVWvg0zDJ9QC+U8UxNgLtzeyAcNSPU8N9fg58YGZnhce2MJGK1GtKdCJ1sw/Bfbb3wpHHewI3ufu/gXOA34bVhy8QlJgeABqHJb+ZQFFZQ5ZE7j4H+BOwMNx2FtCqmhhmAN8G/pyw7HmgSRjTLQTVlxWPsYOgZ/j/A2YTJOcyI4CLwtjfBU5L5WKI5DKNXiAiIrGmEp2IiMSaEp2IiMSaEp2IiMSaEp2IiMSaEp2IiMSaEp2IiMSaEp2IiMSaEp2IiMTa/we0YJejaGvsCAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 504x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [ "source": [
"# code to plot scores distribution without PAs (with threshold)\n", "# code to plot scores distribution without PAs (with threshold)\n",
"from plot import get_scores_complete\n", "from plot import get_scores_complete\n",
...@@ -68,26 +81,14 @@ ...@@ -68,26 +81,14 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 32, "execution_count": 5,
"metadata": { "metadata": {},
"scrolled": true
},
"outputs": [ "outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. ]\n",
"[0.5]\n",
"[[-0.12550996 -0.07791668 -0.07287739 -0.06847641 -0.06634311 -0.06468388\n",
" -0.06210078 -0.06176296 -0.06027544 -0.05844076 -0.05817013]]\n"
]
},
{ {
"data": { "data": {
"image/png": "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\n", "image/png": "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\n",
"text/plain": [ "text/plain": [
"<Figure size 432x288 with 1 Axes>" "<Figure size 504x360 with 2 Axes>"
] ]
}, },
"metadata": { "metadata": {
...@@ -103,79 +104,21 @@ ...@@ -103,79 +104,21 @@
"spoof_dev = get_scores_complete('data/fr-pad/scores-amir-2/vgg-replay/scores-dev-spoof')\n", "spoof_dev = get_scores_complete('data/fr-pad/scores-amir-2/vgg-replay/scores-dev-spoof')\n",
"spoof_eval = get_scores_complete('data/fr-pad/scores-amir-2/vgg-replay/scores-eval-spoof')\n", "spoof_eval = get_scores_complete('data/fr-pad/scores-amir-2/vgg-replay/scores-eval-spoof')\n",
"\n", "\n",
"def sort_spoof_scores(scores):\n", "from plot_fr_pad import plot_espc\n",
" scores_attack = []\n", "plot_espc(licit_dev, licit_eval, spoof_dev, spoof_eval)\n",
" scores_genuine = []\n", "\n"
" for s in scores:\n",
" if s['real_id'] == 'attack':\n",
" scores_attack.append(s['score'])\n",
" else:\n",
" scores_genuine.append(s['score'])\n",
" return scores_attack, scores_genuine\n",
" \n",
"def sort_licit_scores(scores):\n",
" scores_zei = []\n",
" scores_genuine = []\n",
" for s in scores:\n",
" if s['claim_id'] == s['real_id']:\n",
" scores_genuine.append(s['score'])\n",
" else:\n",
" scores_zei.append(s['score'])\n",
" return scores_zei, scores_genuine\n",
" \n",
"licit_dev_neg, licit_dev_pos = sort_licit_scores(licit_dev)\n",
"licit_eval_neg, licit_eval_pos = sort_licit_scores(licit_eval)\n",
"spoof_dev_neg, spoof_dev_pos = sort_spoof_scores(spoof_dev)\n",
"spoof_eval_neg, spoof_eval_pos = sort_spoof_scores(spoof_eval)\n",
"\n",
"from error_utils import epsc_thresholds\n",
"points = 10\n",
"omega, beta, thrs = epsc_thresholds(\n",
" licit_dev_neg,\n",
" licit_dev_pos,\n",
" spoof_dev_neg,\n",
" spoof_dev_pos,\n",
" points=points,\n",
" criteria='eer',\n",
" beta=0.5)\n",
"\n",
"print(omega)\n",
"print(beta)\n",
"print(thrs)\n",
"\n",
"from error_utils import all_error_rates\n",
"errors = all_error_rates(\n",
" licit_eval_neg, licit_eval_pos, spoof_eval_neg,\n",
" spoof_eval_pos, thrs, omega, beta\n",
" ) \n",
"errors\n",
"\n",
"from matplotlib import pyplot\n",
"pyplot.plot(omega, 100. * errors[4].flatten())\n",
"pyplot.plot(omega, 100. * errors[2].flatten())\n",
"pyplot.show()"
] ]
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"### Now we fuse FV scores and PAD scores " "### Now we fuse FV scores and PAD scores\n"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"fr_scores_dev_licit = get_scores_complete('data/fr-pad/scores-amir-2/vgg-replay/scores-dev')\n",
"pad_scores_dev = get_scores_complete('data/fr-pad/scores-amir-2/iqm-replay/scores-dev')\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
...@@ -199,21 +142,9 @@ ...@@ -199,21 +142,9 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 15, "execution_count": null,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [],
{
"ename": "ImportError",
"evalue": "cannot import name 'bob_fusion_decision_boundary'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-15-dd59ad8e478d>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mbob\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfusion\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbase\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mscript\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mbob_fusion_decision_boundary\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mImportError\u001b[0m: cannot import name 'bob_fusion_decision_boundary'"
]
}
],
"source": [] "source": []
}, },
{ {
......
...@@ -112,13 +112,53 @@ def scatter_plot(fr_scores, pad_scores): ...@@ -112,13 +112,53 @@ def scatter_plot(fr_scores, pad_scores):
fig, ax1 = pyplot.subplots(figsize=(7,5)) fig, ax1 = pyplot.subplots(figsize=(7,5))
def espc(): def sort_spoof_scores(scores):
licit_dev_neg = input_scores[0][0] scores_attack = []
licit_dev_pos = input_scores[0][1] scores_genuine = []
licit_eval_neg = input_scores[1][0] for s in scores:
licit_eval_pos = input_scores[1][1] if s['real_id'] == 'attack':
spoof_dev_neg = input_scores[2][0] scores_attack.append(s['score'])
spoof_dev_pos = input_scores[2][1] else:
spoof_eval_neg = input_scores[3][0] scores_genuine.append(s['score'])
spoof_eval_pos = input_scores[3][1] return scores_attack, scores_genuine
def sort_licit_scores(scores):
scores_zei = []
scores_genuine = []
for s in scores:
if s['claim_id'] == s['real_id']:
scores_genuine.append(s['score'])
else:
scores_zei.append(s['score'])
return scores_zei, scores_genuine
def plot_espc(licit_dev, licit_eval, spoof_dev, spoof_eval):
licit_dev_neg, licit_dev_pos = sort_licit_scores(licit_dev)
licit_eval_neg, licit_eval_pos = sort_licit_scores(licit_eval)
spoof_dev_neg, spoof_dev_pos = sort_spoof_scores(spoof_dev)
spoof_eval_neg, spoof_eval_pos = sort_spoof_scores(spoof_eval)
from error_utils import epsc_thresholds
points = 10
omega, beta, thrs = epsc_thresholds(
licit_dev_neg,
licit_dev_pos,
spoof_dev_neg,
spoof_dev_pos,
points=points,
criteria='eer',
beta=0.5)
from error_utils import all_error_rates
errors = all_error_rates(licit_eval_neg, licit_eval_pos, spoof_eval_neg,
spoof_eval_pos, thrs, omega, beta)
# plot
from matplotlib import pyplot
fig, ax1 = pyplot.subplots(figsize=(7,5))
ax1.plot(omega, 100. * errors[4].flatten())
ax2 = ax1.twinx()
ax2.plot(omega, 100. * errors[2].flatten())
pyplot.show()
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment