287 lines
225 KiB
Plaintext
287 lines
225 KiB
Plaintext
![]() |
{
|
||
|
"cells": [
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"# imports and initialization"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 1,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"import numpy as np\n",
|
||
|
"import os\n",
|
||
|
"import pickle\n",
|
||
|
"import matplotlib.pyplot as plt\n",
|
||
|
"import matplotlib\n",
|
||
|
"from g2p_en import G2p\n",
|
||
|
"\n",
|
||
|
"from nejm_b2txt_utils.general_utils import *\n",
|
||
|
"\n",
|
||
|
"matplotlib.rcParams['pdf.fonttype'] = 42\n",
|
||
|
"matplotlib.rcParams['ps.fonttype'] = 42\n",
|
||
|
"matplotlib.rcParams['font.family'] = 'sans-serif'\n",
|
||
|
"\n",
|
||
|
"g2p = G2p()"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"# load Copy Task evaluation data"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 2,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"# load pickled data\n",
|
||
|
"with open('../data/t15_personalUse.pkl', 'rb') as f:\n",
|
||
|
" dat = pickle.load(f)\n",
|
||
|
"\n",
|
||
|
"t15_personal_use_trials = dat['trialized_info']\n",
|
||
|
"total_use_time = dat['total_use_time']\n",
|
||
|
"total_trial_count = dat['total_trial_count']"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"# plot cumulative use time and sentence count"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 10,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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
|
||
|
"text/plain": [
|
||
|
"<Figure size 640x480 with 2 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"post_implant_day = []\n",
|
||
|
"total_use_time_by_day = []\n",
|
||
|
"total_sentences_by_day = []\n",
|
||
|
"\n",
|
||
|
"for day in total_use_time.keys():\n",
|
||
|
"\n",
|
||
|
" if total_use_time[day] == 0:\n",
|
||
|
" continue\n",
|
||
|
"\n",
|
||
|
" post_implant_day.append(day)\n",
|
||
|
" total_use_time_by_day.append(total_use_time[day])\n",
|
||
|
" total_sentences_by_day.append(total_trial_count[day])\n",
|
||
|
"\n",
|
||
|
"post_implant_day = np.array(post_implant_day)\n",
|
||
|
"total_use_time_by_day = np.array(total_use_time_by_day) / 3600\n",
|
||
|
"total_sentences_by_day = np.array(total_sentences_by_day)\n",
|
||
|
"\n",
|
||
|
"total_use_time_by_day_cumsum = np.cumsum(total_use_time_by_day)\n",
|
||
|
"total_sentences_by_day_cumsum = np.cumsum(total_sentences_by_day)\n",
|
||
|
"\n",
|
||
|
"plt.figure()\n",
|
||
|
"\n",
|
||
|
"plt.subplot(211)\n",
|
||
|
"plt.plot(post_implant_day, total_use_time_by_day_cumsum, 'b.-')\n",
|
||
|
"plt.ylabel('Total use time (hours)')\n",
|
||
|
"plt.grid(axis='y', alpha=0.3)\n",
|
||
|
"plt.gca().spines['top'].set_visible(False)\n",
|
||
|
"plt.gca().spines['right'].set_visible(False)\n",
|
||
|
"\n",
|
||
|
"plt.subplot(212)\n",
|
||
|
"plt.plot(post_implant_day, total_sentences_by_day_cumsum, 'r.-')\n",
|
||
|
"plt.ylabel('Total sentences')\n",
|
||
|
"plt.xlabel('Post-implant day')\n",
|
||
|
"plt.grid(axis='y', alpha=0.3)\n",
|
||
|
"plt.gca().spines['top'].set_visible(False)\n",
|
||
|
"plt.gca().spines['right'].set_visible(False)\n",
|
||
|
"\n",
|
||
|
"plt.tight_layout()\n",
|
||
|
"plt.show()"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"# plot sentence correctness"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 11,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAk0AAAJOCAYAAACqbjP2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAB1AUlEQVR4nO3dd3hUVcIG8PdOzWTSO4GEAAm9xdBBAUGKiKIICEgRBaysrmVlV7HXdVX8sKyIICoiKCgL0pUqIC30EiChJRDSk0ky9X5/REbHJDCBmZwp72+fPGvu3My8E5G8OefccyVZlmUQERER0RUpRAcgIiIi8gYsTUREREROYGkiIiIicgJLExEREZETWJqIiIiInMDSREREROQEliYiIiIiJ7A0ERERETmBpYmIiIjICSxNROTVkpKSMHHiRNExiMgPsDQRudjOnTvx6KOPok2bNtDr9UhMTMTIkSNx/Phxh/NsNhvmzZuH22+/HQkJCdDr9Wjbti1effVVVFZWVnvejz/+GCNGjEBiYiIkSaq1KKxfvx6TJk1C8+bNERgYiKZNm+KBBx5ATk5OjeebTCa8/vrraNmyJQICAhAbG4shQ4bg3LlzV3yf2dnZePHFF5Genu7U96UmP/30E1588cVr/npP5+vvj8jfSLz3HJFr3X333di6dStGjBiB9u3b48KFC5g1axbKysqwfft2tG3bFgBQVlaG4OBgdOvWDbfddhtiYmKwbds2fPHFF7jpppvw888/Q5Ik+/MmJSWhtLQUXbp0wbp16zB27FjMmzev2ut36tQJBQUFGDFiBFJSUnDq1CnMmjULgYGBSE9PR1xcnP1cs9mMW2+9Fb/++ismT56M9u3bo7CwEDt27MALL7yANm3a1Po+d+3ahc6dO2Pu3LnXPNLz6KOP4sMPP8T1/DWUlJSEPn361Pi9EM0V74+IPIdKdAAiX/P3v/8dCxYsgEajsR8bNWoU2rVrhzfffBNfffUVAECj0WDr1q3o0aOH/bzJkycjKSkJL7zwAtavX4/+/fvbH9u4caN9lCkoKKjW13/33XfRq1cvKBR/DCQPGjQIvXv3xqxZs/Dqq6/aj7/33nvYuHEjtmzZgi5durjk/RMR+SpOzxG5WI8ePRwKEwCkpKSgTZs2OHLkiP2YRqNxKEyX3XnnnQDgcC4ANG7c2GHkqTY33XSTQ2G6fCwiIsLhOW02G2bOnIk777wTXbp0gcViQXl5+dXfIIANGzagc+fOAID77rsPkiRBkiSH0Z7FixcjLS0NOp0OUVFRuPfee3H+/Hn74xMnTsSHH34IAPav//P7e+edd9CjRw9ERkZCp9MhLS0N3333nVP5arJw4UKkpaUhODgYISEhaNeuHWbOnOlwTlFRER5//HEkJCRAq9UiOTkZb731Fmw2m/2crKwsSJKEd955B59++imaNWsGrVaLzp07Y+fOnU6/P5vNhvfffx9t2rSxT4tOnToVhYWFDpmSkpJw22232YttQEAAmjZtivnz51d7j0VFRXjiiSeQlJQErVaLRo0aYfz48cjLy7OfYzQa8cILLyA5ORlarRYJCQl45plnYDQaHZ5r7dq16NWrF8LCwhAUFIQWLVrgn//85zV854l8B0eaiOqBLMu4ePHiFae7Lrtw4QIAICoqymWvX1ZWhrKyMofnPHz4MLKzs9G+fXtMmTIFX3zxBUwmk71M9O3bt9bna9WqFV5++WXMmDEDU6ZMwY033ggA9hI4b9483HfffejcuTPeeOMNXLx4ETNnzsTWrVuxd+9ehIWFYerUqcjOzsbatWvx5ZdfVnuNmTNn4vbbb8fYsWNhMpmwcOFCjBgxAsuXL8eQIUPq9P7Xrl2L0aNHo1+/fnjrrbcAVJXSrVu34m9/+xsAoLy8HL1798b58+cxdepUJCYm4tdff8X06dORk5OD999/3+E5FyxYgNLSUkydOhWSJOHtt9/GXXfdhVOnTkGtVl/1/U2dOtX+fZo2bRoyMzMxa9Ys7N27F1u3boVarbafe+LECdx99924//77MWHCBHz++eeYOHEi0tLS7H+mysrKcOONN+LIkSOYNGkSbrjhBuTl5WHZsmU4d+4coqKiYLPZcPvtt2PLli2YMmUKWrVqhQMHDuC9997D8ePH8cMPPwAADh06hNtuuw3t27fHyy+/DK1WixMnTmDr1q11+r4T+RyZiNzuyy+/lAHIc+bMueq5/fv3l0NCQuTCwsJaz9Hr9fKECROcfv1XXnlFBiCvX7/efmzJkiUyADkyMlJOSUmR586dK8+dO1dOSUmRNRqNvG/fvis+586dO2UA8ty5cx2Om0wmOSYmRm7btq1cUVFhP758+XIZgDxjxgz7sUceeUSu7a+h8vLyas/btm1b+eabb3Y43rhx46t+L/72t7/JISEhssViqfWcV155Rdbr9fLx48cdjj/77LOyUqmUz5w5I8uyLGdmZtq/bwUFBfbzfvzxRxmA/L///e+q72/z5s0yAPnrr792OL5q1apqxxs3biwDkDdt2mQ/lpubK2u1WvnJJ5+0H5sxY4YMQF6yZEm117PZbLIsV/05VCgU8ubNmx0e/+STT2QA8tatW2VZluX33ntPBiBfunSplu8WkX/i9ByRmx09ehSPPPIIunfvjgkTJlzx3Ndffx3r1q3Dm2++ibCwMJe8/qZNm/DSSy9h5MiRuPnmm+3Hy8rKAAClpaVYv349Jk6ciIkTJ2LdunWQZRlvv/32Nb3erl27kJubi4cffhgBAQH240OGDEHLli2xYsUKp55Hp9PZ/7mwsBDFxcW48cYbsWfPnjpnCgsLg8FgwNq1a2s9Z/HixbjxxhsRHh6OvLw8+0f//v1htVqxadMmh/NHjRqF8PBw++eXR9tOnTp11TyLFy9GaGgobrnlFofXSktLQ1BQEH755ReH81u3bm1/fgCIjo5GixYtHF7r+++/R4cOHezTu392eVpw8eLFaNWqFVq2bOnwupf/XFx+3ct/9n788UeHqUkif8fpOSI3unDhAoYMGYLQ0FB89913UCqVtZ777bff4rnnnsP999+Phx56yCWvf/ToUdx5551o27YtPvvsM4fHLpeSnj17IiEhwX48MTERvXr1wq+//npNr3n69GkAQIsWLao91rJlS2zZssWp51m+fDleffVVpKenO6y3cWZd1189/PDDWLRoEQYPHoyGDRtiwIABGDlyJAYNGmQ/JyMjA/v370d0dHSNz5Gbm+vweWJiosPnlwvUX9ck1SQjIwPFxcWIiYm5pte6/Hp/fq2TJ09i+PDhV33dI0eOXPU9jho1Cp999hkeeOABPPvss+jXrx/uuusu3H333dXWyxH5E5YmIjcpLi7G4MGDUVRUhM2bNyM+Pr7Wc9euXYvx48djyJAh+OSTT1zy+mfPnsWAAQMQGhqKn376CcHBwQ6PX84TGxtb7WtjYmKwd+9el+S4Fps3b8btt9+Om266CR999BEaNGgAtVqNuXPnYsGCBXV+vpiYGKSnp2P16tVYuXIlVq5ciblz52L8+PH44osvAFQtzL7lllvwzDPP1PgczZs3d/i8tgIsO7G9gM1mQ0xMDL7++usaH/9rqbme1/rr67Zr1w7vvvtujY9fLs86nQ6bNm3CL7/8ghUrVmDVqlX49ttvcfPNN2PNmjVXLP9EvoylicgNKisrMXToUBw/fhzr1q1D69ataz13x44duPPOO9GpUycsWrQIKtX1/2eZn5+PAQMGwGg0Yv369WjQoEG1c9q1awe1Wu1wRdtl2dnZtY5GXFbbiE/jxo0BAMeOHXOYDrx87PLjV3qO77//HgEBAVi9ejW0Wq39+Ny5c6+Y6Uo0Gg2GDh2KoUOHwmaz4eGHH8Z///tfPP/880hOTkazZs1QVlbmsM3D9art/TVr1gzr1q1Dz549HaYhr0ezZs1w8ODBq56zb98+9OvX76ojdgqFAv369UO/fv3w7rvv4vXXX8e//vUv/PLLLy79HhF5E46zErmY1WrFqFGjsG3bNixevBjdu3ev9dwjR45gyJAhSEpKwvLly13yA9RgMODWW2/F+fPn8dNPPyElJaX
|
||
|
"text/plain": [
|
||
|
"<Figure size 600x600 with 1 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"fully_correct_count = np.sum([c==\"correct\" for c in t15_personal_use_trials['correctness_rating']])\n",
|
||
|
"mostly_correct_count = np.sum([c==\"mostly correct\" for c in t15_personal_use_trials['correctness_rating']])\n",
|
||
|
"one_word_wrong_count = np.sum([c==\"one word wrong\" for c in t15_personal_use_trials['correctness_rating']])\n",
|
||
|
"incorrect_count = np.sum([c==\"incorrect\" for c in t15_personal_use_trials['correctness_rating']])\n",
|
||
|
"\n",
|
||
|
"# pie chart\n",
|
||
|
"labels = [f'100%\\ncorrect\\n({fully_correct_count})', f'Mostly\\ncorrect\\n({one_word_wrong_count+mostly_correct_count})', f'Incorrect\\n({incorrect_count})']\n",
|
||
|
"sizes = [fully_correct_count, one_word_wrong_count+mostly_correct_count, incorrect_count]\n",
|
||
|
"colors = ['lightgreen', (255/255, 213/255, 128/255), 'lightcoral']\n",
|
||
|
"\n",
|
||
|
"plt.figure(figsize=(6, 6))\n",
|
||
|
"plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', shadow=False, startangle=90)\n",
|
||
|
"plt.axis('equal')\n",
|
||
|
"plt.title(f'{fully_correct_count + one_word_wrong_count+mostly_correct_count + incorrect_count} total sentences')\n",
|
||
|
"\n",
|
||
|
"plt.tight_layout()\n",
|
||
|
"plt.show()"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 13,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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
|
||
|
"text/plain": [
|
||
|
"<Figure size 1000x600 with 3 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"# correctness and wpm by day\n",
|
||
|
"unique_days = np.sort(np.unique(t15_personal_use_trials['post_implant_day']))\n",
|
||
|
"\n",
|
||
|
"post_implant_day = []\n",
|
||
|
"num_trials_by_day = []\n",
|
||
|
"fully_correct_count_by_day = []\n",
|
||
|
"mostly_correct_count_by_day = []\n",
|
||
|
"one_word_wrong_count_by_day = []\n",
|
||
|
"incorrect_count_by_day = []\n",
|
||
|
"response_timeout_count_by_day = []\n",
|
||
|
"blank_trial_count_by_day = []\n",
|
||
|
"no_user_rating_count_by_day = []\n",
|
||
|
"wpm_by_day = []\n",
|
||
|
"\n",
|
||
|
"for day in unique_days:\n",
|
||
|
" ind = np.array(t15_personal_use_trials['post_implant_day'])==day\n",
|
||
|
"\n",
|
||
|
" if np.sum(ind) == 0:\n",
|
||
|
" continue\n",
|
||
|
"\n",
|
||
|
" post_implant_day.append(day)\n",
|
||
|
" num_trials_by_day.append(np.sum(ind))\n",
|
||
|
" fully_correct_count_by_day.append(np.sum([c==\"correct\" for c in np.array(t15_personal_use_trials['correctness_rating'])[ind]]))\n",
|
||
|
" mostly_correct_count_by_day.append(np.sum([c==\"mostly correct\" for c in np.array(t15_personal_use_trials['correctness_rating'])[ind]]))\n",
|
||
|
" one_word_wrong_count_by_day.append(np.sum([c==\"one word wrong\" for c in np.array(t15_personal_use_trials['correctness_rating'])[ind]]))\n",
|
||
|
" incorrect_count_by_day.append(np.sum([c==\"incorrect\" for c in np.array(t15_personal_use_trials['correctness_rating'])[ind]]))\n",
|
||
|
" response_timeout_count_by_day.append(np.sum([c==\"response timeout\" for c in np.array(t15_personal_use_trials['correctness_rating'])[ind]]))\n",
|
||
|
" blank_trial_count_by_day.append(np.sum([c==\"blank trial\" for c in np.array(t15_personal_use_trials['correctness_rating'])[ind]]))\n",
|
||
|
" no_user_rating_count_by_day.append(np.sum([c==\"no user rating\" for c in np.array(t15_personal_use_trials['correctness_rating'])[ind]]))\n",
|
||
|
"\n",
|
||
|
" if np.all(np.isnan(np.array(t15_personal_use_trials['wpm'])[ind])):\n",
|
||
|
" wpm_by_day.append(0)\n",
|
||
|
" else:\n",
|
||
|
" wpm_by_day.append(np.nanmean(np.array(t15_personal_use_trials['wpm'])[ind]))\n",
|
||
|
"\n",
|
||
|
"post_implant_day = np.array(post_implant_day)\n",
|
||
|
"fully_correct_count_by_day = np.array(fully_correct_count_by_day)\n",
|
||
|
"mostly_correct_count_by_day = np.array(mostly_correct_count_by_day)\n",
|
||
|
"one_word_wrong_count_by_day = np.array(one_word_wrong_count_by_day)\n",
|
||
|
"incorrect_count_by_day = np.array(incorrect_count_by_day)\n",
|
||
|
"response_timeout_count_by_day = np.array(response_timeout_count_by_day)\n",
|
||
|
"blank_trial_count_by_day = np.array(blank_trial_count_by_day)\n",
|
||
|
"no_user_rating_count_by_day = np.array(no_user_rating_count_by_day)\n",
|
||
|
"wpm_by_day = np.array(wpm_by_day)\n",
|
||
|
"\n",
|
||
|
"\n",
|
||
|
"# plot\n",
|
||
|
"plt.figure(figsize=(10, 6))\n",
|
||
|
"\n",
|
||
|
"plt.subplot2grid((5, 1), (0, 0), rowspan=3)\n",
|
||
|
"plt.plot(post_implant_day, fully_correct_count_by_day / num_trials_by_day * 100, 'g.-', label='Fully correct', linewidth=1)\n",
|
||
|
"plt.plot(post_implant_day, (mostly_correct_count_by_day + one_word_wrong_count_by_day) / num_trials_by_day * 100, 'y.-', label='Mostly correct', linewidth=1)\n",
|
||
|
"plt.plot(post_implant_day, incorrect_count_by_day / num_trials_by_day * 100, 'r.-', label='Incorrect', linewidth=1)\n",
|
||
|
"plt.plot(post_implant_day, blank_trial_count_by_day / num_trials_by_day * 100, '.-', label='Blank trial', color=(0.4, 0.4, 0.4), linewidth=1)\n",
|
||
|
"plt.plot(post_implant_day, (response_timeout_count_by_day + no_user_rating_count_by_day) / num_trials_by_day * 100, '.-', label='No user rating', color=(0.6, 0.6, 0.6), linewidth=1)\n",
|
||
|
"plt.grid(axis='y', alpha=0.3)\n",
|
||
|
"plt.legend()\n",
|
||
|
"plt.gca().spines['top'].set_visible(False)\n",
|
||
|
"plt.gca().spines['right'].set_visible(False)\n",
|
||
|
"xlimits = plt.xlim()\n",
|
||
|
"plt.ylabel('Sentence correctness (%)', fontsize=12)\n",
|
||
|
"\n",
|
||
|
"plt.subplot2grid((5, 1), (3, 0))\n",
|
||
|
"# bar plot of total number of sentences per day\n",
|
||
|
"plt.bar(post_implant_day, fully_correct_count_by_day + one_word_wrong_count_by_day + mostly_correct_count_by_day + incorrect_count_by_day + blank_trial_count_by_day + response_timeout_count_by_day + no_user_rating_count_by_day, color='lightgray', width=1)\n",
|
||
|
"plt.xlim(xlimits)\n",
|
||
|
"plt.ylabel('Number of\\nsentences', fontsize=12)\n",
|
||
|
"plt.grid(axis='y', alpha=0.3)\n",
|
||
|
"plt.gca().spines['top'].set_visible(False)\n",
|
||
|
"plt.gca().spines['right'].set_visible(False)\n",
|
||
|
"\n",
|
||
|
"plt.subplot2grid((5, 1), (4, 0))\n",
|
||
|
"# line plot of wpm\n",
|
||
|
"plt.plot(post_implant_day, wpm_by_day, '.-', color=(0.5, 0.5, 0.5), linewidth=1)\n",
|
||
|
"plt.xlim(xlimits)\n",
|
||
|
"plt.xlabel('Post-implant day', fontsize=12)\n",
|
||
|
"plt.ylabel('WPM', fontsize=12)\n",
|
||
|
"plt.grid(axis='y', alpha=0.3)\n",
|
||
|
"plt.gca().spines['top'].set_visible(False)\n",
|
||
|
"plt.gca().spines['right'].set_visible(False)\n",
|
||
|
"\n",
|
||
|
"plt.tight_layout()\n",
|
||
|
"plt.show()"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"metadata": {
|
||
|
"kernelspec": {
|
||
|
"display_name": "base",
|
||
|
"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.15"
|
||
|
}
|
||
|
},
|
||
|
"nbformat": 4,
|
||
|
"nbformat_minor": 2
|
||
|
}
|