{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","scrolled":true,"execution":{"iopub.status.busy":"2023-02-25T02:17:46.057576Z","iopub.execute_input":"2023-02-25T02:17:46.058603Z","iopub.status.idle":"2023-02-25T02:17:46.086296Z","shell.execute_reply.started":"2023-02-25T02:17:46.058541Z","shell.execute_reply":"2023-02-25T02:17:46.085033Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Basic Libraries**","metadata":{}},{"cell_type":"code","source":"import gc\nimport warnings\nwarnings.simplefilter(action='ignore', category=FutureWarning)","metadata":{"execution":{"iopub.status.busy":"2023-02-25T02:17:46.092009Z","iopub.execute_input":"2023-02-25T02:17:46.092340Z","iopub.status.idle":"2023-02-25T02:17:46.097600Z","shell.execute_reply.started":"2023-02-25T02:17:46.092306Z","shell.execute_reply":"2023-02-25T02:17:46.096632Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**READ THE DATA**","metadata":{}},{"cell_type":"code","source":"### ------------------------------------\n### Basic Functions\n### ------------------------------------\n\ndef expand_contact_id(df):\n    \"\"\"\n    Splits out contact_id into seperate columns.\n    \"\"\"\n    df[\"game_play\"] = df[\"contact_id\"].str[:12]\n    df[\"step\"] = df[\"contact_id\"].str.split(\"_\").str[-3].astype(\"int\")\n    df[\"nfl_player_id_1\"] = df[\"contact_id\"].str.split(\"_\").str[-2]\n    df[\"nfl_player_id_2\"] = df[\"contact_id\"].str.split(\"_\").str[-1]\n    return df\n\ndef add_contact_id(df):\n    # Create contact ids\n    df[\"contact_id\"] = (\n        df[\"game_play\"].astype(\"str\")\n        + \"_\"\n        + df[\"step\"].astype(\"str\")\n        + \"_\"\n        + df[\"nfl_player_id_1\"].astype(\"str\")\n        + \"_\"\n        + df[\"nfl_player_id_2\"].astype(\"str\")\n    )\n    return df","metadata":{"execution":{"iopub.status.busy":"2023-02-25T02:17:46.099318Z","iopub.execute_input":"2023-02-25T02:17:46.099734Z","iopub.status.idle":"2023-02-25T02:17:46.113051Z","shell.execute_reply.started":"2023-02-25T02:17:46.099693Z","shell.execute_reply":"2023-02-25T02:17:46.111815Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"### ------------------------------------\n### Read Datasets into Memory\n### ------------------------------------\n\nTRtracking = pd.read_csv('/kaggle/input/nfl-player-contact-detection/train_player_tracking.csv')\nTEtracking = pd.read_csv('/kaggle/input/nfl-player-contact-detection/test_player_tracking.csv')\nTRhelmets = pd.read_csv('/kaggle/input/nfl-player-contact-detection/train_baseline_helmets.csv')\nTEhelmets = pd.read_csv('/kaggle/input/nfl-player-contact-detection/test_baseline_helmets.csv')\nTRvideoMeta = pd.read_csv('/kaggle/input/nfl-player-contact-detection/train_video_metadata.csv')\nTEvideoMeta = pd.read_csv('/kaggle/input/nfl-player-contact-detection/test_video_metadata.csv')\nsub = pd.read_csv('/kaggle/input/nfl-player-contact-detection/sample_submission.csv')\ntrainlabels = pd.read_csv('/kaggle/input/nfl-player-contact-detection/train_labels.csv')","metadata":{"execution":{"iopub.status.busy":"2023-02-25T02:17:46.115691Z","iopub.execute_input":"2023-02-25T02:17:46.116539Z","iopub.status.idle":"2023-02-25T02:18:00.413660Z","shell.execute_reply.started":"2023-02-25T02:17:46.116478Z","shell.execute_reply":"2023-02-25T02:18:00.412237Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"### -------------------------------------------\n### Basic processing of the trainlabels dataset\n### -------------------------------------------\n\n\nA = trainlabels[trainlabels['game_play']=='58168_003392']\nB = trainlabels[trainlabels['game_play']=='58172_003247']\nC = pd.concat([A,B], axis=0)\n\nC['game_play'] = C['game_play'].astype(pd.StringDtype())\nC['nfl_player_id_2'] = C['nfl_player_id_2'].astype(pd.StringDtype())\nC['step'] = C['step'].astype('int32')\nC['nfl_player_id_1'] = C['nfl_player_id_1'].astype('int32')\nC['contact'] = C['contact'].astype('int32')\n\nC # 49588 rows × 7 columns","metadata":{"scrolled":true,"execution":{"iopub.status.busy":"2023-02-25T02:18:00.415142Z","iopub.execute_input":"2023-02-25T02:18:00.415523Z","iopub.status.idle":"2023-02-25T02:18:01.118129Z","shell.execute_reply.started":"2023-02-25T02:18:00.415484Z","shell.execute_reply":"2023-02-25T02:18:01.116865Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"### -------------------------------------------\n### Basic processing of the TRtracking dataset\n### -------------------------------------------\n\na = TRtracking[TRtracking['game_play']=='58168_003392']\nb = TRtracking[TRtracking['game_play']=='58172_003247']\nZTRtracking = pd.concat([a,b], axis=0)\n#c # 14872 rows × 17 columns\nZTRtracking = ZTRtracking[['game_play','step','team', 'position',\n             'x_position', 'y_position', 'speed', 'distance','acceleration']]\n\nZTRtracking['game_play'] = ZTRtracking['game_play'].astype(pd.StringDtype())\nZTRtracking['team'] = ZTRtracking['team'].astype(pd.StringDtype())\nZTRtracking['position'] = ZTRtracking['position'].astype(pd.StringDtype())\nZTRtracking['step'] = ZTRtracking['step'].astype('int32')\nZTRtracking['x_position'] = ZTRtracking['x_position'].astype('float32')\nZTRtracking['y_position'] = ZTRtracking['y_position'].astype('float32')\nZTRtracking['speed'] = ZTRtracking['speed'].astype('float32')\nZTRtracking['distance'] = ZTRtracking['distance'].astype('float32')\nZTRtracking['acceleration'] = ZTRtracking['acceleration'].astype('float32')\n\ndisplay(ZTRtracking) # 14872 rows × 9 columns\n#","metadata":{"scrolled":true,"execution":{"iopub.status.busy":"2023-02-25T02:18:01.119743Z","iopub.execute_input":"2023-02-25T02:18:01.120155Z","iopub.status.idle":"2023-02-25T02:18:01.359800Z","shell.execute_reply.started":"2023-02-25T02:18:01.120114Z","shell.execute_reply":"2023-02-25T02:18:01.358597Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"### -------------------------------------------\n### Basic processing of the TRhelmets dataset\n### -------------------------------------------\n\ng = TRhelmets[TRhelmets['game_play']=='58168_003392']\nh = TRhelmets[TRhelmets['game_play']=='58172_003247']\nZTRhelmets = pd.concat([g,h], axis=0)\n#i # 47330 rows × 12 columns\nZTRhelmets = ZTRhelmets[['game_play','view','left', 'width', 'top', 'height']]\nZTRhelmets['game_play'] = ZTRhelmets['game_play'].astype(pd.StringDtype())\nZTRhelmets['view'] = ZTRhelmets['view'].astype(pd.StringDtype())\nZTRhelmets['left'] = ZTRhelmets['left'].astype('int32')\nZTRhelmets['width'] = ZTRhelmets['width'].astype('int32')\nZTRhelmets['top'] = ZTRhelmets['top'].astype('float32')\nZTRhelmets['height'] = ZTRhelmets['height'].astype('float32')\n\ndisplay(ZTRhelmets)\n","metadata":{"scrolled":true,"execution":{"iopub.status.busy":"2023-02-25T02:18:01.361279Z","iopub.execute_input":"2023-02-25T02:18:01.361679Z","iopub.status.idle":"2023-02-25T02:18:01.937922Z","shell.execute_reply.started":"2023-02-25T02:18:01.361642Z","shell.execute_reply":"2023-02-25T02:18:01.936675Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"### -------------------------------------------\n### Basic processing of the TRVideoMeta dataset\n### -------------------------------------------\n\nm = TRvideoMeta[TRvideoMeta['game_play']=='58168_003392']\nn = TRvideoMeta[TRvideoMeta['game_play']=='58172_003247']\nZTRvideoMeta = pd.concat([m,n], axis=0)\n#o # 4 rows × 7 columns\nZTRvideoMeta['end_start_seconds'] = (pd.to_datetime(ZTRvideoMeta['end_time']) - pd.to_datetime(ZTRvideoMeta['start_time'])).dt.total_seconds()\nZTRvideoMeta = ZTRvideoMeta[['game_play','view','end_start_seconds']]\nZTRvideoMeta['game_play'] = ZTRvideoMeta['game_play'].astype(pd.StringDtype())\nZTRvideoMeta['view'] = ZTRvideoMeta['view'].astype(pd.StringDtype())\nZTRvideoMeta['end_start_seconds'] = ZTRvideoMeta['end_start_seconds'].astype('float32')\n\ndisplay(ZTRvideoMeta)\nprint('')\ndisplay(ZTRvideoMeta.shape) # (4, 3)","metadata":{"scrolled":true,"execution":{"iopub.status.busy":"2023-02-25T02:18:01.942206Z","iopub.execute_input":"2023-02-25T02:18:01.942678Z","iopub.status.idle":"2023-02-25T02:18:01.973226Z","shell.execute_reply.started":"2023-02-25T02:18:01.942635Z","shell.execute_reply":"2023-02-25T02:18:01.971320Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"### ----------------------------\n### Basic merge all TR datasets\n### ----------------------------\n\nZTRhelmets = ZTRhelmets[['game_play','view','width','height']]\n#iSelect = i[['game_play','view','left', 'width', 'top', 'height']]\nm1 = ZTRhelmets.merge(ZTRvideoMeta, on='game_play',how='left')#.fillna('void')\n###m1 = pd.concat([ZTRhelmets,ZTRvideoMeta], axis=1)\n\nm2right = ZTRtracking.join(m1, how = 'right', lsuffix='left', rsuffix='right')\nm2rightD = m2right.dropna(axis=1)\n\nm2rightD.rename(columns={'game_playright':'game_play'},inplace=True)\n\nm2rightD # 94660 rows × 6 columns","metadata":{"scrolled":true,"execution":{"iopub.status.busy":"2023-02-25T02:18:01.975274Z","iopub.execute_input":"2023-02-25T02:18:01.976184Z","iopub.status.idle":"2023-02-25T02:18:02.103493Z","shell.execute_reply.started":"2023-02-25T02:18:01.976138Z","shell.execute_reply":"2023-02-25T02:18:02.102016Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"### ----------------------------------------------\n### Basic alignment of TR and trainlabels datasets\n### ----------------------------------------------\n\nextracted_col = m2rightD[['view_x', 'width', 'height', 'view_y','end_start_seconds']]\nC = C.join(extracted_col)\nC.dropna()\n#print(\"Second dataframe after adding column from first dataframe:\")\ndisplay(C) # 49588 rows × 12 columns","metadata":{"scrolled":true,"execution":{"iopub.status.busy":"2023-02-25T02:18:02.104909Z","iopub.execute_input":"2023-02-25T02:18:02.105263Z","iopub.status.idle":"2023-02-25T02:18:02.188230Z","shell.execute_reply.started":"2023-02-25T02:18:02.105229Z","shell.execute_reply":"2023-02-25T02:18:02.187148Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"### ----------------------------------------\n### Derived datasets for trainging the model\n### ----------------------------------------\n\nCOMPDATA1 = C[['step','view_x', 'width', 'height', 'end_start_seconds', 'contact']]\nCOMPDATACAT1 = COMPDATA1.copy()\n\n'''apply a user function to rank the 'yardsToGo' value'''\ndef placement_contact(x):\n    if x == 0:\n        return 'zero'\n    else:\n        return 'one'\nCOMPDATACAT1['contact_R']=COMPDATACAT1['contact'].apply(placement_contact)\n\ndef placement_width(x):\n    if x <= 15.000000:\n        return '< 50% Average Width'\n    else:\n        return '> 50% Average Width'\nCOMPDATACAT1['width_R']=COMPDATACAT1['width'].apply(placement_width)\n\ndef placement_height(x):\n    if x <= 18.000000:\n        return '< 50% Average Height'\n    else:\n        return '> 50% Average Height'\nCOMPDATACAT1['height_R']=COMPDATACAT1['height'].apply(placement_height)\n\ndef placement_end_start_seconds(x):\n    if x <= 11.837000:\n        return '< 50% Average end_start_seconds'\n    else:\n        return '> 50% Average end_start_seconds'\nCOMPDATACAT1['end_start_seconds_R']=COMPDATACAT1['end_start_seconds'].apply(placement_end_start_seconds)\ndisplay(COMPDATA1) # 49588 rows × 6 columns\nprint('')\ndisplay(COMPDATACAT1) # 49588 rows × 10 columns","metadata":{"scrolled":true,"execution":{"iopub.status.busy":"2023-02-25T02:18:02.189525Z","iopub.execute_input":"2023-02-25T02:18:02.189900Z","iopub.status.idle":"2023-02-25T02:18:02.283559Z","shell.execute_reply.started":"2023-02-25T02:18:02.189866Z","shell.execute_reply":"2023-02-25T02:18:02.282241Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**A MultinomialNB Model (using Numerical data)**","metadata":{}},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.naive_bayes import MultinomialNB\n\nCOMPDATATPOT = COMPDATA1[['step', 'width', 'height', 'end_start_seconds', 'contact']]\nCOMPDATATPOT.rename(columns={'contact':'target'},inplace=True)\n\n# NOTE: Make sure that the outcome column is labeled 'target' in the data file\ntpot_data = COMPDATATPOT #pd.read_csv('PATH/TO/DATA/FILE', sep='COLUMN_SEPARATOR', dtype=np.float64)\nfeatures = tpot_data.drop('target', axis=1)\ntraining_features, testing_features, training_target, testing_target = \\\n            train_test_split(features, tpot_data['target'], random_state=123)\n\n# Average CV score on the training set was: 0.9832015833586926\nexported_pipeline = MultinomialNB(alpha=0.1, fit_prior=True)\n# Fix random state in exported estimator\nif hasattr(exported_pipeline, 'random_state'):\n    setattr(exported_pipeline, 'random_state', 123)\n\nexported_pipeline.fit(training_features, training_target)\nresults = exported_pipeline.predict(testing_features)\n\ndfresults = pd.DataFrame(results)\ndfresults[0].value_counts()","metadata":{"execution":{"iopub.status.busy":"2023-02-25T02:18:02.285229Z","iopub.execute_input":"2023-02-25T02:18:02.285761Z","iopub.status.idle":"2023-02-25T02:18:02.803902Z","shell.execute_reply.started":"2023-02-25T02:18:02.285706Z","shell.execute_reply":"2023-02-25T02:18:02.802623Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Putting the dataset for testing the model**","metadata":{}},{"cell_type":"code","source":"### -----------------------------------------------\n### Deriving the TEST dataset for testing the model\n### -----------------------------------------------\n\n'''TEtracking dataset'''\naT = TEtracking[TEtracking['game_play']=='58168_003392']\nbT = TEtracking[TEtracking['game_play']=='58172_003247']\nZTEtracking = pd.concat([aT,bT], axis=0)\n#c # 14872 rows × 17 columns\nZTEtracking = ZTEtracking[['game_play','step','team', 'position',\n             'x_position', 'y_position', 'speed', 'distance','acceleration']]\nZTEtracking['game_play'] = ZTEtracking['game_play'].astype(pd.StringDtype())\nZTEtracking['team'] = ZTEtracking['team'].astype(pd.StringDtype())\nZTEtracking['position'] = ZTEtracking['position'].astype(pd.StringDtype())\nZTEtracking['step'] = ZTEtracking['step'].astype('int32')\nZTEtracking['x_position'] = ZTEtracking['x_position'].astype('float32')\nZTEtracking['y_position'] = ZTEtracking['y_position'].astype('float32')\nZTEtracking['speed'] = ZTEtracking['speed'].astype('float32')\nZTEtracking['distance'] = ZTEtracking['distance'].astype('float32')\nZTEtracking['acceleration'] = ZTEtracking['acceleration'].astype('float32')\n\n'''TEhelmets dataset'''\ngT = TEhelmets[TEhelmets['game_play']=='58168_003392']\nhT = TEhelmets[TEhelmets['game_play']=='58172_003247']\nZTEhelmets = pd.concat([gT,hT], axis=0)\n#i # 47330 rows × 12 columns\nZTEhelmets = ZTEhelmets[['game_play','view','left', 'width', 'top', 'height']]\nZTEhelmets['game_play'] = ZTEhelmets['game_play'].astype(pd.StringDtype())\nZTEhelmets['view'] = ZTEhelmets['view'].astype(pd.StringDtype())\nZTEhelmets['left'] = ZTEhelmets['left'].astype('int32')\nZTEhelmets['width'] = ZTEhelmets['width'].astype('int32')\nZTEhelmets['top'] = ZTEhelmets['top'].astype('float32')\nZTEhelmets['height'] = ZTEhelmets['height'].astype('float32')\n\n'''TEvideoMeta dataset'''\nmT = TEvideoMeta[TEvideoMeta['game_play']=='58168_003392']\nnT = TEvideoMeta[TEvideoMeta['game_play']=='58172_003247']\nZTEvideoMeta = pd.concat([mT,nT], axis=0)\n#o # 4 rows × 7 columns\nZTEvideoMeta['end_start_seconds'] = (pd.to_datetime(ZTEvideoMeta['end_time']) - pd.to_datetime(ZTEvideoMeta['start_time'])).dt.total_seconds()\nZTEvideoMeta = ZTEvideoMeta[['game_play','view','end_start_seconds']]\nZTEvideoMeta['game_play'] = ZTEvideoMeta['game_play'].astype(pd.StringDtype())\nZTEvideoMeta['view'] = ZTEvideoMeta['view'].astype(pd.StringDtype())\nZTEvideoMeta['end_start_seconds'] = ZTEvideoMeta['end_start_seconds'].astype('float32')\n\n'''merging the TE datasets'''\nZTEhelmets = ZTEhelmets[['game_play','view','width','height']]\n#iSelect = i[['game_play','view','left', 'width', 'top', 'height']]\nm1T = ZTEhelmets.merge(ZTEvideoMeta, on='game_play',how='left')#.fillna('void')\n###m1 = pd.concat([ZTRhelmets,ZTRvideoMeta], axis=1)\nm2Tright = ZTEtracking.join(m1T, how = 'right', lsuffix='left', rsuffix='right')\nm2TrightD = m2Tright.dropna(axis=1)\nm2TrightD.rename(columns={'game_playright':'game_play'},inplace=True)\nm2TrightD\n\n'''realigning the TE datasets with the trainlabels dataset'''\nextracted_colT = m2TrightD[['view_x', 'width', 'height', 'end_start_seconds']] # 'view_y',\n#print(\"column to be added from first dataframe to second:\")\nCT = C #.join(extracted_colT)\n#CT.dropna()\n#print(\"Second dataframe after adding columns from first dataframe:\")\n#display(CT) 49588 rows × 12 columns\nCOMPTESTDATA1 = CT[['step','view_x', 'width', 'height', 'end_start_seconds', 'contact']]\nCOMPTESTDATA1 # 49588 rows × 6 columns# 49588 rows × 6 columns","metadata":{"scrolled":true,"execution":{"iopub.status.busy":"2023-02-25T02:18:02.808230Z","iopub.execute_input":"2023-02-25T02:18:02.808708Z","iopub.status.idle":"2023-02-25T02:18:03.034061Z","shell.execute_reply.started":"2023-02-25T02:18:02.808659Z","shell.execute_reply":"2023-02-25T02:18:03.032539Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Submission**","metadata":{}},{"cell_type":"code","source":"COMPTESTDATATPOT = COMPTESTDATA1[['step', 'width', 'height', 'end_start_seconds', 'contact']]\nCOMPTESTDATATPOT.rename(columns={'contact':'target'},inplace=True)\ndel COMPTESTDATATPOT['target']\nCOMPTESTDATATPOT\n\ntesting_features = COMPTESTDATATPOT\n\nresults = exported_pipeline.predict(testing_features)\ndfresults = pd.DataFrame(results)\ndfresults , dfresults[0].value_counts() #0    49588","metadata":{"execution":{"iopub.status.busy":"2023-02-25T02:18:03.035859Z","iopub.execute_input":"2023-02-25T02:18:03.036348Z","iopub.status.idle":"2023-02-25T02:18:03.075938Z","shell.execute_reply.started":"2023-02-25T02:18:03.036309Z","shell.execute_reply":"2023-02-25T02:18:03.067442Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"### -------------------------------\n### Generating Submission .csv file\n### -------------------------------\n\n''' testing the model'''\nCOMPTESTDATATPOT = COMPTESTDATA1[['step', 'width', 'height', 'end_start_seconds', 'contact']]\nCOMPTESTDATATPOT.rename(columns={'contact':'target'},inplace=True)\ndel COMPTESTDATATPOT['target']\nCOMPTESTDATATPOT\n\ntesting_features = COMPTESTDATATPOT\n\nresults = exported_pipeline.predict(testing_features)\ndfresults = pd.DataFrame(results)\n#dfresults , dfresults[0].value_counts() #0    49588\ndfresults.rename(columns={0:'contact'},inplace=True)\n\n''' putting together the Submission dataframe'''\nSubmission = pd.DataFrame()\nSubmission['contact_id'] = C['contact_id']\nSubmission['contact'] = dfresults['contact']\n\n'''change data type'''\nSubmission['contact'] = Submission['contact'].astype('int64')\n#Submission[:3] \n\n''' save of the Submission to file'''\nSubmission.to_csv('submission.csv',index=False)","metadata":{"execution":{"iopub.status.busy":"2023-02-25T02:18:03.078710Z","iopub.execute_input":"2023-02-25T02:18:03.079482Z","iopub.status.idle":"2023-02-25T02:18:03.268333Z","shell.execute_reply.started":"2023-02-25T02:18:03.079418Z","shell.execute_reply":"2023-02-25T02:18:03.266896Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}