{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.11.11","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":102335,"databundleVersionId":12518947,"sourceType":"competition"}],"dockerImageVersionId":31040,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# **FOREWORD**\n\nThis kernel is a test for the 3500 prospective sequences in the test set, using the train set data\n\n- I deliberatly mask off 1750 sequences outside IMU sensors as np.nan to indicate that we have IMU sensors for them\n- I retain the same structure as test and test demographics otherwise and present the results\n\nThis kernel could be a source for test data to **evaluate the time to complete your next submission**. One could also consider using the data and test to check for silly errors in your actual submission.","metadata":{}},{"cell_type":"code","source":"import pandas as pd, numpy as np, os\nfrom tqdm.notebook import tqdm\nimport polars as pl\nimport polars.selectors as cs","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-06-12T20:54:14.969374Z","iopub.execute_input":"2025-06-12T20:54:14.969721Z","iopub.status.idle":"2025-06-12T20:54:14.974532Z","shell.execute_reply.started":"2025-06-12T20:54:14.969696Z","shell.execute_reply":"2025-06-12T20:54:14.973633Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# **DATA LOADS**","metadata":{}},{"cell_type":"code","source":"%%time \n\ntrain    = pd.read_csv(f\"/kaggle/input/cmi-detect-behavior-with-sensor-data/train.csv\")\ntraind   = pd.read_csv(f\"/kaggle/input/cmi-detect-behavior-with-sensor-data/train_demographics.csv\")\n\nprint(f\"---> Original shape = {train.shape}\")\n\nsel_seq  = train[\"sequence_id\"].unique()[0 : 3500]\nseq      = sel_seq[0: 1750]\noth_cols = train.columns[9:]\n\ntrain    = train.loc[train.sequence_id.isin(sel_seq)]\ntrain.loc[train.sequence_id.isin(seq), oth_cols] = np.nan\n\nprint(f\"---> Truncated shape = {train.shape}\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-06-12T20:48:13.346013Z","iopub.execute_input":"2025-06-12T20:48:13.346371Z","iopub.status.idle":"2025-06-12T20:48:33.323739Z","shell.execute_reply.started":"2025-06-12T20:48:13.346350Z","shell.execute_reply":"2025-06-12T20:48:33.322892Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train.to_csv(f\"test.csv\", index = False)\ntraind.to_csv(f\"test_demographics.csv\", index = False)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-06-12T20:49:12.510005Z","iopub.execute_input":"2025-06-12T20:49:12.510977Z","iopub.status.idle":"2025-06-12T20:49:58.542123Z","shell.execute_reply.started":"2025-06-12T20:49:12.510916Z","shell.execute_reply":"2025-06-12T20:49:58.541095Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# **USING THIS IN YOUR SUBMISSION**","metadata":{}},{"cell_type":"code","source":"%%time \n\nimport kaggle_evaluation.cmi_inference_server\n\ncounter = 0\n\ndef predict(\n    sequence     : pl.DataFrame, \n    demographics : pl.DataFrame,\n) -> str:\n    \"\"\"\n    Prediction function for Kaggle evaluation - uses a dummy submission to test my datasets\n    Replace this with your submission script and test the timing using the cell magic command\n    \"\"\"\n    \n    global counter\n    pred = 'Cheek - pinch skin'\n    if counter % 100 == 0 :\n        print(f\"---> Final prediction = {pred} | {counter} \")\n    counter = counter + 1\n    \n    return pred","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-06-12T20:57:17.355779Z","iopub.execute_input":"2025-06-12T20:57:17.356109Z","iopub.status.idle":"2025-06-12T20:57:17.362037Z","shell.execute_reply.started":"2025-06-12T20:57:17.356083Z","shell.execute_reply":"2025-06-12T20:57:17.360989Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"%%time \n\ninference_server = \\\nkaggle_evaluation.cmi_inference_server.CMIInferenceServer(predict)\n\nif os.getenv('KAGGLE_IS_COMPETITION_RERUN'):\n    inference_server.serve()\nelse:\n    inference_server.run_local_gateway(\n        data_paths=(\n            '/kaggle/working/test.csv',\n            '/kaggle/working/test_demographics.csv',\n        )\n    )\n\nprint()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-06-12T20:57:19.744442Z","iopub.execute_input":"2025-06-12T20:57:19.745140Z","iopub.status.idle":"2025-06-12T21:01:15.911799Z","shell.execute_reply.started":"2025-06-12T20:57:19.745113Z","shell.execute_reply":"2025-06-12T21:01:15.910590Z"}},"outputs":[],"execution_count":null}]}