{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"nvidiaTeslaT4","dataSources":[{"sourceId":53666,"databundleVersionId":6589269,"sourceType":"competition"},{"sourceId":6879418,"sourceType":"datasetVersion","datasetId":3785250},{"sourceId":144358840,"sourceType":"kernelVersion"},{"sourceId":149254949,"sourceType":"kernelVersion"}],"dockerImageVersionId":30559,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"See the following repositories for details  \nhttps://github.com/tubo213/kaggle-child-mind-institute-detect-sleep-states","metadata":{}},{"cell_type":"markdown","source":"# Install additional libraries","metadata":{}},{"cell_type":"code","source":"!pip install hydra-core segmentation_models_pytorch==0.3.3 --no-index --find-links=/kaggle/input/ex-library","metadata":{"execution":{"iopub.status.busy":"2023-11-28T14:53:55.167237Z","iopub.execute_input":"2023-11-28T14:53:55.167771Z","iopub.status.idle":"2023-11-28T14:54:17.818728Z","shell.execute_reply.started":"2023-11-28T14:53:55.167743Z","shell.execute_reply":"2023-11-28T14:54:17.817669Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%cd /kaggle/input/cmi-code/kaggle-child-mind-institute-detect-sleep-states/","metadata":{"execution":{"iopub.status.busy":"2023-11-28T14:54:17.820925Z","iopub.execute_input":"2023-11-28T14:54:17.821320Z","iopub.status.idle":"2023-11-28T14:54:17.830369Z","shell.execute_reply.started":"2023-11-28T14:54:17.821285Z","shell.execute_reply":"2023-11-28T14:54:17.829429Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Config","metadata":{}},{"cell_type":"code","source":"# Config\nDURATION = 5760\nDOWNSAMPLE_RATE = 2\nPHASE = 'test'\nEXP_NAME = 'exp001'","metadata":{"execution":{"iopub.status.busy":"2023-11-28T14:54:17.831510Z","iopub.execute_input":"2023-11-28T14:54:17.831825Z","iopub.status.idle":"2023-11-28T14:54:17.844691Z","shell.execute_reply.started":"2023-11-28T14:54:17.831800Z","shell.execute_reply":"2023-11-28T14:54:17.843673Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Preprocess","metadata":{}},{"cell_type":"code","source":"!python -m run.prepare_data dir=kaggle phase=$PHASE","metadata":{"execution":{"iopub.status.busy":"2023-11-28T14:54:17.846527Z","iopub.execute_input":"2023-11-28T14:54:17.846833Z","iopub.status.idle":"2023-11-28T14:54:20.583153Z","shell.execute_reply.started":"2023-11-28T14:54:17.846802Z","shell.execute_reply":"2023-11-28T14:54:20.581838Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Inference","metadata":{}},{"cell_type":"code","source":"!python -m run.inference\\\n    dir=kaggle\\\n    model.encoder_name=resnet34\\\n    model.encoder_weights=null\\\n    num_workers=2\\\n    exp_name=$EXP_NAME\\\n    weight.run_name=single\\\n    batch_size=64\\\n    duration=$DURATION\\\n    downsample_rate=$DOWNSAMPLE_RATE\\\n    post_process.score_th=0.005\\\n    post_process.distance=40\\\n    phase=$PHASE","metadata":{"execution":{"iopub.status.busy":"2023-11-28T14:54:20.584707Z","iopub.execute_input":"2023-11-28T14:54:20.585048Z","iopub.status.idle":"2023-11-28T14:55:00.760429Z","shell.execute_reply.started":"2023-11-28T14:54:20.585015Z","shell.execute_reply":"2023-11-28T14:55:00.759167Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pandas as pd\n\n# 读取CSV文件\ndf = pd.read_csv('/kaggle/working/submission.csv')\n\n# 根据条件删除行\nto_delete = []\nfor index, row in df.iterrows():\n    if index < len(df) - 1:\n        next_row = df.loc[index+1]\n        if row['event'] == 'wakeup' and next_row['event'] == 'onset' and next_row['step'] - row['step'] < 1440:\n            print('1',row)\n            to_delete.extend([index, index+1])\n        elif row['event'] == next_row['event']:\n            if row['score'] < next_row['score']:\n                to_delete.append(index)\n                print('2',row)\n            else:\n                to_delete.append(index+1)\n                print('3',row)\n\n# 删除标记的行\ndf = df.drop(to_delete)\n\n# 重新填充row_id列\ndf['row_id'] = range(len(df))\n\n# 存储到新的CSV文件\ndf.to_csv('/kaggle/working/submission.csv', index=False)\n\n# 显示前10行\nprint(df.head(10))","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\n!rm -rf /kaggle/working/processed_data\n!rm -rf /kaggle/working/output\n","metadata":{"execution":{"iopub.status.busy":"2023-11-28T14:55:00.762104Z","iopub.execute_input":"2023-11-28T14:55:00.762455Z","iopub.status.idle":"2023-11-28T14:55:00.770755Z","shell.execute_reply.started":"2023-11-28T14:55:00.762425Z","shell.execute_reply":"2023-11-28T14:55:00.769815Z"},"trusted":true},"execution_count":null,"outputs":[]}]}