You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

366 lines
109 KiB

10 months ago
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "code",
  5. "execution_count": 1,
  6. "metadata": {},
  7. "outputs": [],
  8. "source": [
  9. "import uproot\n",
  10. "import awkward as ak\n",
  11. "input_tree_md = uproot.open({\"/work/guenther/reco_tuner/data/param_data_MD_selected_8520.root\": \"Selected\"})\n",
  12. "input_tree_mu = uproot.open({\"/work/guenther/reco_tuner/data/param_data_MU_selected_8520.root\": \"Selected\"})\n",
  13. "# this is an event list of dictionaries containing awkward arrays\n",
  14. "array_md = input_tree_md.arrays()\n",
  15. "array_mu = input_tree_mu.arrays()\n",
  16. "array = ak.concatenate([array_md, array_mu])\n",
  17. "array[\"dSlope_fringe\"] = array[\"tx_ref\"] - array[\"tx\"]\n",
  18. "array[\"z_mag_x_fringe\"] = (array[\"x\"] - array[\"x_ref\"] - array[\"tx\"] * array[\"z\"] + array[\"tx_ref\"] * array[\"z_ref\"] ) / array[\"dSlope_fringe\"]\n",
  19. "def format_array(name, coef):\n",
  20. " coef = [str(c)+\"f\" for c in coef if c != 0.0]\n",
  21. " code = f\"constexpr std::array {name}\"\n",
  22. " code += \"{\" + \", \".join(list(coef)) +\"};\"\n",
  23. " return code"
  24. ]
  25. },
  26. {
  27. "cell_type": "code",
  28. "execution_count": 2,
  29. "metadata": {},
  30. "outputs": [
  31. {
  32. "data": {
  33. "text/plain": [
  34. "<AxesSubplot: >"
  35. ]
  36. },
  37. "execution_count": 2,
  38. "metadata": {},
  39. "output_type": "execute_result"
  40. },
  41. {
  42. "data": {
  43. "image/png": "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
  44. "text/plain": [
  45. "<Figure size 640x480 with 1 Axes>"
  46. ]
  47. },
  48. "metadata": {},
  49. "output_type": "display_data"
  50. }
  51. ],
  52. "source": [
  53. "import seaborn as sns\n",
  54. "import numpy as np\n",
  55. "bins = 50#np.linspace( -1.5, 1.5, 50 )\n",
  56. "sns.regplot(x=ak.to_numpy(array[\"dSlope_fringe\"]), y=ak.to_numpy(array[\"CX_ex\"]), x_bins=bins, fit_reg=None, x_estimator=np.mean)"
  57. ]
  58. },
  59. {
  60. "cell_type": "code",
  61. "execution_count": 3,
  62. "metadata": {},
  63. "outputs": [
  64. {
  65. "data": {
  66. "text/plain": [
  67. "<AxesSubplot: >"
  68. ]
  69. },
  70. "execution_count": 3,
  71. "metadata": {},
  72. "output_type": "execute_result"
  73. },
  74. {
  75. "data": {
  76. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiIAAAGsCAYAAADg5swfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAtfUlEQVR4nO3dfXDU1aH/8c93l5AIJKkhkoAgCT7FEKuYKCAgesvTtLalMxeuV1BxChfuUAt17q+V+6sKP1qhtzqdO95qFDqosRavT/TBqQJjpShBEoFWErQgBCkPCTGSBDQh7J7fH2nWLNnsbmB3zz68XzM79+a7Z3fPyaHuJ+fp6xhjjAAAACxw2a4AAABIXQQRAABgDUEEAABYQxABAADWEEQAAIA1BBEAAGANQQQAAFhDEAEAANYQRAAAgDUEEQAAYE3CBJE///nP+uY3v6lhw4bJcRxt2LAh6p955MgRzZ07V4MHD9aAAQN0/fXX6/3334/65wIAkCoSJoicPn1a1113nf7nf/4nJp/32WefacKECUpLS9Mf//hH1dbW6rHHHtNXvvKVmHw+AACpwEnEm945jqPXXntNM2fO9F07c+aMfvzjH+vXv/61Tp48qZKSEv3sZz/Trbfeel6f8cADD+jdd9/V1q1bI1NpAADQQ8KMiIRy77336t1339X69ev117/+VbNmzdKMGTO0b9++83q/3/3udyorK9OsWbM0ZMgQjRkzRmvWrIlwrQEASG1JMSLy8ccf68orr9Tf//53DRs2zFduypQpuummm/TII4/0+TMyMjIkSffff79mzZqlHTt2aOnSpXrqqad09913R6QdAACkun62KxAJO3fulDFGV111ld/19vZ2DR48WJJUV1enwsLCoO+zePFi3xoUr9ersrIyX4gZM2aMampq9OSTTxJEAACIkKQIIl6vV263W++//77cbrffc4MGDZIkXXrppdq7d2/Q97n44ot9///QoUNVXFzs9/w111yjV155JUK1BgAASRFExowZI4/Ho4aGBk2aNClgmbS0NBUVFYX9nhMmTNBHH33kd+1vf/ubRo4ceUF1BQAAX0qYIHLq1Cnt37/f9/PBgwe1e/du5eTk6KqrrtKcOXN0991367HHHtOYMWPU2Niot956S9dee62+/vWv9/nzfvCDH+jmm2/WI488otmzZ2vHjh16+umn9fTT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
  77. "text/plain": [
  78. "<Figure size 640x480 with 1 Axes>"
  79. ]
  80. },
  81. "metadata": {},
  82. "output_type": "display_data"
  83. }
  84. ],
  85. "source": [
  86. "bins = 50#np.linspace( -1., 1., 50 )\n",
  87. "sns.regplot(x=ak.to_numpy(array[\"tx\"]), y=ak.to_numpy(array[\"CX_ex\"]), x_bins=bins, fit_reg=None, x_estimator=np.mean)"
  88. ]
  89. },
  90. {
  91. "cell_type": "code",
  92. "execution_count": 4,
  93. "metadata": {},
  94. "outputs": [
  95. {
  96. "data": {
  97. "text/plain": [
  98. "<AxesSubplot: >"
  99. ]
  100. },
  101. "execution_count": 4,
  102. "metadata": {},
  103. "output_type": "execute_result"
  104. },
  105. {
  106. "data": {
  107. "image/png": "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
  108. "text/plain": [
  109. "<Figure size 640x480 with 1 Axes>"
  110. ]
  111. },
  112. "metadata": {},
  113. "output_type": "display_data"
  114. }
  115. ],
  116. "source": [
  117. "bins = 50#np.linspace( -1., 1., 50 )\n",
  118. "sns.regplot(x=ak.to_numpy(array[\"x\"]), y=ak.to_numpy(array[\"CX\"]), x_bins=bins, fit_reg=None, x_estimator=np.mean)"
  119. ]
  120. },
  121. {
  122. "cell_type": "code",
  123. "execution_count": 5,
  124. "metadata": {},
  125. "outputs": [
  126. {
  127. "data": {
  128. "text/plain": [
  129. "<AxesSubplot: >"
  130. ]
  131. },
  132. "execution_count": 5,
  133. "metadata": {},
  134. "output_type": "execute_result"
  135. },
  136. {
  137. "data": {
  138. "image/png": "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
  139. "text/plain": [
  140. "<Figure size 640x480 with 1 Axes>"
  141. ]
  142. },
  143. "metadata": {},
  144. "output_type": "display_data"
  145. }
  146. ],
  147. "source": [
  148. "bins = 50#np.linspace( -1., 1., 50 )\n",
  149. "sns.regplot(x=ak.to_numpy(array[\"dSlope_fringe\"]), y=ak.to_numpy(array[\"DX\"]), x_bins=bins, fit_reg=None, x_estimator=np.mean)"
  150. ]
  151. },
  152. {
  153. "cell_type": "code",
  154. "execution_count": 6,
  155. "metadata": {},
  156. "outputs": [
  157. {
  158. "data": {
  159. "text/plain": [
  160. "<AxesSubplot: >"
  161. ]
  162. },
  163. "execution_count": 6,
  164. "metadata": {},
  165. "output_type": "execute_result"
  166. },
  167. {
  168. "data": {
  169. "image/png": "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j85RfnZyWOuJ+vCybds2paenR7oMAAC6tfzsZH3w8/FqamlVQ9NJJSb0CNsYlzOFNLw0Njbqk08+cT+vqKhQWVmZkpOTdeGFF2rRokXav3+/XnzxRUnSo48+quzsbA0dOlQnTpzQypUrtXr1aq1evTqUZQIAgAAlxDkiFlrahDS8lJaW6sorr3Q/X7BggSRp1qxZev7551VdXa2qqir36ydOnNDChQu1f/9+9erVS0OHDtUbb7yha665JpRlAgAACwnbgN1wCWbADwAAiA7BfH9H1VRpAAAAfwgvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUggvAADAUkIaXjZt2qQpU6YoIyNDNptNa9eu9bvPxo0bNWLECCUkJGjAgAFatmxZKEsEAAAWE9LwcuzYMV188cV6/PHHA2pfUVGha665RmPGjNG2bdv085//XD/5yU+0evXqUJYJAAAspEco33zy5MmaPHlywO2XLVumCy+8UI8++qgk6aKLLlJpaal+85vf6Prrrw9RlQAAwEqiasxLcXGxCgsLPbZNnDhRpaWlamlp8bpPc3Oz6uvrPR4AACB2RVV4qampUWpqqse21NRUnTx5UgcPHvS6z9KlS+V0Ot2PzMzMcJQKAAAiJKrCiyTZbDaP58YYr9vbLFq0SHV1de7Hvn37Ql4jAACInJCOeQlWWlqaampqPLbV1taqR48e6tevn9d94uPjFR8fH47yAABAFIiqMy8jR45UUVGRx7Z169YpPz9fcXFxEaoKAABEk5CGl8bGRpWVlamsrEzSqanQZWVlqqqqknTqks8tt9zibj9v3jzt3btXCxYsUHl5uX7/+9/r2Wef1cKFC0NZJgAAsJCQXjYqLS3VlVde6X6+YMECSdKsWbP0/PPPq7q62h1kJCknJ0dvvvmm7rzzTj3xxBPKyMjQY489xjRpAADgZjNtI2JjRH19vZxOp+rq6pSUlBTpcgAAQACC+f6OqjEvAAAA/hBeAACApRBeAACApRBeAACApRBeAACApRBeAACApRBeAACApRBeAACApRBeAACApRBeAACApRBeAACApRBeAACApRBeAACApRBeAACApRBeAACApRBeAACApRBeAACApRBeAACApRBeAACApRBeAACApRBeAACApfSIdAEAAFjZ3BWlqjx4XJKUndJbT8/Mj3BFsY/wAgDAWag8eFy7DzRIklzGRLia7oHLRgAAdFJJ5WHtP/qV+/me2kbNXVGq0srDEawq9hFeAADohBVb9mrasmI1Np/02L6+vFY3LCvWyi17I1RZ7CO8AAAQpJLKw7pn7Q55u0jU6jIyku5eu4MzMCFCeAEAIEjL3/tMdrvNZxu73abl71eEqaLuhfACAEAQmlpaVbTrgFp
  170. "text/plain": [
  171. "<Figure size 640x480 with 1 Axes>"
  172. ]
  173. },
  174. "metadata": {},
  175. "output_type": "display_data"
  176. }
  177. ],
  178. "source": [
  179. "bins = 50#np.linspace( -1., 1., 50 )\n",
  180. "sns.regplot(x=ak.to_numpy(array[\"tx\"]), y=ak.to_numpy(array[\"DX\"]), x_bins=bins, fit_reg=None, x_estimator=np.mean)"
  181. ]
  182. },
  183. {
  184. "cell_type": "code",
  185. "execution_count": 7,
  186. "metadata": {},
  187. "outputs": [
  188. {
  189. "data": {
  190. "text/plain": [
  191. "<AxesSubplot: >"
  192. ]
  193. },
  194. "execution_count": 7,
  195. "metadata": {},
  196. "output_type": "execute_result"
  197. },
  198. {
  199. "data": {
  200. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAGsCAYAAAAVGEevAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA0VklEQVR4nO3de3RUVZ7+/6cSQoVLUhoCqURjErq5CKERiUpQvCERRLrp9ofYjgiugQF7GAfRmZH2hqhN66jDctCOto5K8Da9EMZZohJHLtoEO8HQDUgjCCGIhBiQVBLItfbvD76ppkilUgWpy0ner7VqLevUPlWfbCL1sM/e+9iMMUYAAAAWERPpAgAAAIJBeAEAAJZCeAEAAJZCeAEAAJZCeAEAAJZCeAEAAJZCeAEAAJZCeAEAAJZCeAEAAJZCeAEAAJbSpcPLpk2bNGXKFKWlpclms2nNmjUh/byamhotWLBAGRkZ6tWrl8aOHavi4uKQfiYAAN1Nlw4vdXV1GjlypJYvXx6Wz5s9e7YKCwtVUFCg7du3Ky8vTzfccIMOHToUls8HAKA7sHWXGzPabDatXr1aU6dO9RxrbGzUQw89pDfffFPHjx9Xdna2nnrqKV177bVBv//JkyeVkJCg//mf/9HkyZM9xy+55BLdfPPNeuKJJzrhpwAAAD0iXUAk3XXXXSorK9M777yjtLQ0rV69WhMnTtT27ds1aNCgoN6rublZLS0tio+P9zreq1cvff75551ZNgAA3Vq3HXn55ptvNGjQIH377bdKS0vztLvhhht0+eWX6ze/+U3QnzF27Fj17NlTb731llJSUvT222/rzjvv1KBBg7R79+7O+lEAAOjWuvScF3++/PJLGWM0ePBg9e3b1/PYuHGjvvnmG0lSWVmZbDab38f8+fM971lQUCBjjC644ALZ7XY9//zzuv322xUbGxupHxMAgC6n2142crvdio2N1datW9uEi759+0qSLrjgAu3atcvv+5x//vme//7Rj36kjRs3qq6uTi6XS6mpqZo+fbqysrI6/wcAAKCb6rbhZdSoUWppaVFlZaXGjRvns01cXJyGDh0a9Hv36dNHffr00Q8//KCPP/5YTz/99LmWCwAA/p8uHV5qa2u1d+9ez/P9+/dr27ZtSkpK0uDBg/V3f/d3uvPOO/Xss89q1KhRqqqq0qeffqoRI0bopptuCvrzPv74YxljNGTIEO3du1f/8i//oiFDhuiuu+7qzB8LAIBurUtP2N2wYYOuu+66Nsdnzpyp119/XU1NTXriiSe0YsUKHTp0SP369VNubq4ee+wxjRgxIujP++///m8tWrRI3377rZKSknTLLbfoySeflMPh6IwfBwAAqIuHFwAA0PV029VGAADAmggvAADAUrrchF23263vvvtOCQkJstlskS4HAAAEwBijmpoapaWlKSbG/9hKlwsv3333ndLT0yNdBgAAOAsHDx7UhRde6LdNlwsvCQkJkk798ImJiRGuBgAABMLlcik9Pd3zPe5PlwsvrZeKEhMTCS8AAFhMIFM+mLALAAAshfACAAAshfACAAAshfACAAAshfACAAAshfACAAAshfACAAAshfACAAAshfACAAAshfACAAAsJaThZdOmTZoyZYrS0tJks9m0Zs0av+03bNggm83W5vHXv/41lGUCAAALCem9jerq6jRy5EjddddduuWWWwI+b/fu3V73Jerfv38oygMAAEGYW1CisqoTkqTM5N56aUZOROoIaXiZNGmSJk2aFPR5AwYM0Hnnndf5BQEAgLNWVnVCu4/USJLcxkSsjqic8zJq1CilpqZq/PjxWr9+vd+2DQ0NcrlcXg8AANC5isuO6dDxk57neyprNbegRCVlx8JeS1SFl9TUVL388statWqV3nvvPQ0ZMkTjx4/Xpk2b2j1n6dKlcjgcnkd6enoYKwYAoOsr2HJAt+YXqbah2ev4J7sqNS2/SCu3HAhrPTZjwjPuY7PZtHr1ak2dOjWo86ZMmSKbzab333/f5+sNDQ1qaGjwPHe5XEpPT1d1dbXXvBkAABC84rJjujW/SP7Cgk3SH+blKicz6aw/x+VyyeFwBPT9HVUjL76MGTNGe/bsafd1u92uxMRErwcAAOgcr3y2TzExNr9tYmJseuXz/WGqyALhpbS0VKmpqZEuAwCAbqe+qUWFXx1Ri9v/RZoWt9G6nRWqb2oJS10hXW1UW1urvXv3ep7v379f27ZtU1JSki666CItWrRIhw4d0ooVKyRJy5YtU2ZmpoYPH67GxkatXLlSq1at0qpVq0JZJgAA8KGmvlkd5BYPtznVPj4uNrRFKcThpaSkRNddd53n+cKFCyVJM2fO1Ouvv67Dhw+rvLzc83pjY6Puv/9+HTp0SL169dLw4cP1wQcf6KabbgplmQAAwIeE+B6KsSmgABNjO9U+HMI2YTdcgpnwAwAA/JtbUKJPdlX6vXQUG2PThGEpyr9j9Fl/TpeasAsAACJn9riBcncw9OJ2G82+KitMFRFeAACAH5dlJunxqdnytd4oNsYmm6THp2af0zLpYIXn4hQAALCsO8ZkaKgzQf/41pc64vrb3moThqVo9lVZYQ0uEuEFAAAEICczSV/8+gbVN7Wopr5ZCfE9wrKyyBfCCwAACFh8XGzEQksr5rwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLIbwAAABLCWl42bRpk6ZMmaK0tDTZbDatWbOmw3M2btyo0aNHKz4+XgMHDlR+fn4oSwQAABYT0vBSV1enkSNHavny5QG1379/v2666SaNGzdOpaWl+vWvf6177rlHq1atCmWZAADAQnqE8s0nTZqkSZMmBdw+Pz9fF110kZYtWyZJuvjii1VSUqJnnnlGt9xyS4iqBAAAVhJVc16KioqUl5fndezGG29USUmJmpqafJ7T0NAgl8vl9QAAAF1XVIWXiooKpaSkeB1LSUlRc3OzqqqqfJ6zdOlSORwOzyM9PT0cpQIAgAiJqvAiSTabzeu5Mcbn8VaLFi1SdXW153Hw4MGQ1wgAACInpHNeguV0OlVRUeF1rLKyUj169FC/fv18nmO322W328NRHgAAiAJRNfKSm5urwsJCr2Pr1q1TTk6O4uLiIlQVAACIJiENL7W1tdq2bZu2bdsm6dRS6G3btqm8vFzSqUs+d955p6f9vHnzdODAAS1cuFC7du3Sf/3Xf+nVV1/V/fffH8oyAQCAhYT0slFJSYmuu+46z/OFCxdKkmbOnKnXX39dhw8f9gQZScrKytLatWt177336oUXXlBaWpqef/55lkkDAAAPm2mdEdtFuFwuORwOVVdXKzExMdLlAACAAATz/R1Vc14AAAA6QngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACWQngBAACW0iPSBQAAYGVzC0pUVnVCkpSZ3FsvzciJcEVdH+EFAIBzUFZ1QruP1ES6jG6Fy0YAAHQStzGRLqFbILwAAHCWisuO6dDxk57neyprNbegRCVlxyJYVddHeAEA4CwUbDmgW/OLVNvQ7HX8k12VmpZfpJVbDkSosq6P8AIAQJCKy47pkTU75OsiUYvbyEh6eM0ORmBChPACAECQXvlsn2JibH7bxMTY9Mrn+8NUUfdCeAEAIAj1TS0q/OqIWtz+J+e2uI3W7axQfVNLmCr
  201. "text/plain": [
  202. "<Figure size 640x480 with 1 Axes>"
  203. ]
  204. },
  205. "metadata": {},
  206. "output_type": "display_data"
  207. }
  208. ],
  209. "source": [
  210. "bins = 50#np.linspace( -1., 1., 50 )\n",
  211. "sns.regplot(x=ak.to_numpy(array[\"x\"]), y=ak.to_numpy(array[\"DX\"]), x_bins=bins, fit_reg=None, x_estimator=np.mean)"
  212. ]
  213. },
  214. {
  215. "cell_type": "code",
  216. "execution_count": 8,
  217. "metadata": {},
  218. "outputs": [
  219. {
  220. "name": "stdout",
  221. "output_type": "stream",
  222. "text": [
  223. "['dSlope_fringe' 'tx dSlope_fringe' 'ty dSlope_fringe'\n",
  224. " 'tx^2 dSlope_fringe' 'tx ty dSlope_fringe' 'ty^2 dSlope_fringe']\n",
  225. "intercept= 0.0\n",
  226. "coef= {'dSlope_fringe': 2.3340814100448438e-05, 'tx dSlope_fringe': 8.310801914170572e-09, 'ty dSlope_fringe': -1.025087641029144e-06, 'tx^2 dSlope_fringe': 8.228862899700043e-06, 'tx ty dSlope_fringe': -1.5662848683486495e-06, 'ty^2 dSlope_fringe': -0.0003728935994887431}\n",
  227. "r2 score= 0.9860788549938552\n",
  228. "RMSE = 6.07178841864582e-07\n",
  229. "constexpr std::array cx_params{2.3340814100448438e-05f, 8.310801914170572e-09f, -1.025087641029144e-06f, 8.228862899700043e-06f, -1.5662848683486495e-06f, -0.0003728935994887431f};\n"
  230. ]
  231. }
  232. ],
  233. "source": [
  234. "from sklearn.preprocessing import PolynomialFeatures\n",
  235. "from sklearn.linear_model import LinearRegression, Lasso, Ridge\n",
  236. "from sklearn.model_selection import train_test_split\n",
  237. "from sklearn.pipeline import Pipeline\n",
  238. "from sklearn.metrics import mean_squared_error\n",
  239. "\n",
  240. "features = [\n",
  241. " \"tx\", \n",
  242. " \"ty\",\n",
  243. " \"dSlope_fringe\",\n",
  244. "]\n",
  245. "target_feat = \"CX_ex\"\n",
  246. "\n",
  247. "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n",
  248. "target = ak.to_numpy(array[target_feat])\n",
  249. "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n",
  250. "\n",
  251. "poly = PolynomialFeatures(degree=3, include_bias=False)\n",
  252. "X_train_model = poly.fit_transform( X_train ) \n",
  253. "X_test_model = poly.fit_transform( X_test ) \n",
  254. "\n",
  255. "poly_features = poly.get_feature_names_out(input_features=features)\n",
  256. "remove = [i for i, f in enumerate(poly_features) if (\"dSlope_fringe\" not in f ) or (\"dSlope_fringe^\" in f)]\n",
  257. "X_train_model = np.delete( X_train_model, remove, axis=1)\n",
  258. "X_test_model = np.delete( X_test_model, remove, axis=1)\n",
  259. "poly_features = np.delete(poly_features, remove )\n",
  260. "print(poly_features)\n",
  261. "\n",
  262. "lin_reg = LinearRegression(fit_intercept=False)\n",
  263. "lin_reg.fit( X_train_model, y_train)\n",
  264. "y_pred_test = lin_reg.predict( X_test_model )\n",
  265. "print(\"intercept=\", lin_reg.intercept_)\n",
  266. "print(\"coef=\", dict(zip(poly_features, lin_reg.coef_)))\n",
  267. "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n",
  268. "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n",
  269. "print(format_array(\"cx_params\", lin_reg.coef_))"
  270. ]
  271. },
  272. {
  273. "cell_type": "code",
  274. "execution_count": 9,
  275. "metadata": {},
  276. "outputs": [
  277. {
  278. "name": "stdout",
  279. "output_type": "stream",
  280. "text": [
  281. "['dSlope_fringe' 'tx dSlope_fringe' 'ty dSlope_fringe'\n",
  282. " 'tx^2 dSlope_fringe' 'tx ty dSlope_fringe' 'ty^2 dSlope_fringe']\n",
  283. "intercept= 0.0\n",
  284. "coef= {'dSlope_fringe': -7.054315710920644e-09, 'tx dSlope_fringe': 2.22196526392023e-11, 'ty dSlope_fringe': 6.104698063377923e-10, 'tx^2 dSlope_fringe': 2.85681046841909e-09, 'tx ty dSlope_fringe': 3.789175266592706e-10, 'ty^2 dSlope_fringe': 9.907774160587578e-08}\n",
  285. "r2 score= 0.97610245571401\n",
  286. "RMSE = 2.4251033068807623e-10\n",
  287. "constexpr std::array dx_params{-7.054315710920644e-09f, 2.22196526392023e-11f, 6.104698063377923e-10f, 2.85681046841909e-09f, 3.789175266592706e-10f, 9.907774160587578e-08f};\n"
  288. ]
  289. }
  290. ],
  291. "source": [
  292. "features = [\n",
  293. " \"tx\", \n",
  294. " \"ty\",\n",
  295. " \"dSlope_fringe\",\n",
  296. "]\n",
  297. "target_feat = \"DX_ex\"\n",
  298. "\n",
  299. "data = np.column_stack([ak.to_numpy(array[feat]) for feat in features])\n",
  300. "target = ak.to_numpy(array[target_feat])\n",
  301. "X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)\n",
  302. "\n",
  303. "poly = PolynomialFeatures(degree=3, include_bias=False)\n",
  304. "X_train_model = poly.fit_transform( X_train ) \n",
  305. "X_test_model = poly.fit_transform( X_test ) \n",
  306. "\n",
  307. "poly_features = poly.get_feature_names_out(input_features=features)\n",
  308. "remove = [i for i, f in enumerate(poly_features) if (\"dSlope_fringe\" not in f ) or (\"dSlope_fringe^\" in f)]\n",
  309. "X_train_model = np.delete( X_train_model, remove, axis=1)\n",
  310. "X_test_model = np.delete( X_test_model, remove, axis=1)\n",
  311. "poly_features = np.delete(poly_features, remove )\n",
  312. "print(poly_features)\n",
  313. "\n",
  314. "lin_reg = LinearRegression(fit_intercept=False)\n",
  315. "lin_reg.fit( X_train_model, y_train)\n",
  316. "y_pred_test = lin_reg.predict( X_test_model )\n",
  317. "print(\"intercept=\", lin_reg.intercept_)\n",
  318. "print(\"coef=\", dict(zip(poly_features,lin_reg.coef_)))\n",
  319. "print(\"r2 score=\", lin_reg.score(X_test_model, y_test))\n",
  320. "print(\"RMSE =\", mean_squared_error(y_test, y_pred_test, squared=False))\n",
  321. "print(format_array(\"dx_params\", lin_reg.coef_))"
  322. ]
  323. },
  324. {
  325. "cell_type": "code",
  326. "execution_count": null,
  327. "metadata": {},
  328. "outputs": [],
  329. "source": []
  330. },
  331. {
  332. "cell_type": "code",
  333. "execution_count": null,
  334. "metadata": {},
  335. "outputs": [],
  336. "source": []
  337. }
  338. ],
  339. "metadata": {
  340. "kernelspec": {
  341. "display_name": "Python 3.10.6 (conda)",
  342. "language": "python",
  343. "name": "python3"
  344. },
  345. "language_info": {
  346. "codemirror_mode": {
  347. "name": "ipython",
  348. "version": 3
  349. },
  350. "file_extension": ".py",
  351. "mimetype": "text/x-python",
  352. "name": "python",
  353. "nbconvert_exporter": "python",
  354. "pygments_lexer": "ipython3",
  355. "version": "3.10.6"
  356. },
  357. "orig_nbformat": 4,
  358. "vscode": {
  359. "interpreter": {
  360. "hash": "a2eff8b4da8b8eebf5ee2e5f811f31a557e0a202b4d2f04f849b065340a6eda6"
  361. }
  362. }
  363. },
  364. "nbformat": 4,
  365. "nbformat_minor": 2
  366. }