{"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3","language":"python"},"language_info":{"name":"python","version":"3.10.14","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"gpu","dataSources":[{"sourceId":70367,"databundleVersionId":9188054,"sourceType":"competition"},{"sourceId":199386667,"sourceType":"kernelVersion"}],"dockerImageVersionId":30787,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true},"papermill":{"default_parameters":{},"duration":2221.535472,"end_time":"2024-09-25T10:14:45.945057","environment_variables":{},"exception":null,"input_path":"__notebook__.ipynb","output_path":"__notebook__.ipynb","parameters":{},"start_time":"2024-09-25T09:37:44.409585","version":"2.6.0"},"widgets":{"application/vnd.jupyter.widget-state+json":{"state":{"0428cf343f3145f1a04400f0e94c6bd1":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"11a469b7a9814ee4a26ec47390772e6c":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"15499b70143a4010b01e3fe3c43550e4":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_b2f0a72aaa444abd91f746d016588cbf","placeholder":"​","style":"IPY_MODEL_0428cf343f3145f1a04400f0e94c6bd1","value":" 673/673 [00:52&lt;00:00, 13.33it/s]"}},"16a170c8ddab46bda7dbaa71c57e787e":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_89dab35da7974700b6ad8c700c9ae94a","IPY_MODEL_c7dd79e12a644d7d83f6103fde7e146c","IPY_MODEL_4616391bbb944e86a89f6c84428fe56a"],"layout":"IPY_MODEL_93db348379c84836a5f37f191ea4b328"}},"16ebbb1fd0eb4923b731786fbc3bd04d":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"195553d03aa44c3990cbc2cbb3507f8e":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"1b3c313d3dbd440d94973958cbebc892":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_bf1d9a542b66489c9c4b195384a1c5ce","placeholder":"​","style":"IPY_MODEL_bb27c58de282428c9e73b30ae50eeeb2","value":" 673/673 [03:55&lt;00:00,  2.87it/s]"}},"246726e70a6c40c294c3cd9e28bc39d1":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"2b47d728d045444089943a85439ba194":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"2ff76e3aac254332be08c10b40cce713":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"319ec24d4fc54866ab75eacbeb03ead5":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_eeb14a2d37cb4eec86d0a494e0e0fa65","IPY_MODEL_c02a808e29ea465da41f7bfded72038a","IPY_MODEL_1b3c313d3dbd440d94973958cbebc892"],"layout":"IPY_MODEL_6726bd7e1e6c4da39e98ecfa722ee8c5"}},"36dab2490faa416fb2aa1a8f1df49325":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_70ab60af6366486ab130f88df3096459","placeholder":"​","style":"IPY_MODEL_97a57340dc6f458caa49d9db8c79de3b","value":" 673/673 [08:10&lt;00:00,  1.41it/s]"}},"3dbfad8b5e2f456fb93a3197f730ce8a":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"4616391bbb944e86a89f6c84428fe56a":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_d28c9136af1b4d00967d034252d7576a","placeholder":"​","style":"IPY_MODEL_4a08d4f767684f569ff9dbcc232c00d7","value":" 673/673 [01:38&lt;00:00,  7.29it/s]"}},"468010b9e74f48649a382a43e4ab5eae":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_99fe5b527e734481a038d68093d12ad0","max":673,"min":0,"orientation":"horizontal","style":"IPY_MODEL_67899cf6c0fc46d6bcd2c4f8d2bac90c","value":673}},"491589262952424cb8c7aade5263e606":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"4a08d4f767684f569ff9dbcc232c00d7":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"518d8d9ba8e3412ba57838c6aeee3331":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_975449a7babf4c0d95ea75d59f9683cc","placeholder":"​","style":"IPY_MODEL_749d839ca3e24f9b8535db302e55df3c","value":" 673/673 [01:55&lt;00:00,  6.10it/s]"}},"51f32fd5556d4e9ba6b1f40cfb481ece":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"52e20eb8a17e4eed837d0a1dd0aea8f2":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"58ef4651c4334102a8b50153a88d2b68":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_51f32fd5556d4e9ba6b1f40cfb481ece","max":673,"min":0,"orientation":"horizontal","style":"IPY_MODEL_246726e70a6c40c294c3cd9e28bc39d1","value":673}},"5e95773727b14d54bb533ec5a11fdadb":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_bb31590871664a24a75d3b38a4550032","max":673,"min":0,"orientation":"horizontal","style":"IPY_MODEL_655b3faeea3d4f1782b3f582a29145ba","value":673}},"6369b98d06a34bc1b66390dfa668739e":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"655b3faeea3d4f1782b3f582a29145ba":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"671040c544d14305ab949223ae8ee195":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"6726bd7e1e6c4da39e98ecfa722ee8c5":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"67899cf6c0fc46d6bcd2c4f8d2bac90c":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"6b382874646a488985dededbeb99b2b4":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_ee8112857f5647438ceea9284d8ff3f5","IPY_MODEL_58ef4651c4334102a8b50153a88d2b68","IPY_MODEL_36dab2490faa416fb2aa1a8f1df49325"],"layout":"IPY_MODEL_a586ae047acd4e40a1c7567445a981ca"}},"6d1ca99359214488ae9b51af48a980d4":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_11a469b7a9814ee4a26ec47390772e6c","placeholder":"​","style":"IPY_MODEL_491589262952424cb8c7aade5263e606","value":" 673/673 [08:30&lt;00:00,  1.34it/s]"}},"6de97fd720f342cfbe69e95ee8e283b0":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_86161dc0501c4ed19546befac5d63caf","placeholder":"​","style":"IPY_MODEL_671040c544d14305ab949223ae8ee195","value":"100%"}},"70ab60af6366486ab130f88df3096459":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"749d839ca3e24f9b8535db302e55df3c":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"759182b4ec7841328ce1ab96691e8f2f":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"768e583183c845abb723b8f83371c2ed":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_9273bc0a60fe4bf0a4d9d57f69409e4f","IPY_MODEL_5e95773727b14d54bb533ec5a11fdadb","IPY_MODEL_518d8d9ba8e3412ba57838c6aeee3331"],"layout":"IPY_MODEL_a1e6c42218d344f89b769ac514680bff"}},"84f4c2f6858547aca615d41027aad024":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"86161dc0501c4ed19546befac5d63caf":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"881eb383a7a440ad9c3752b0b866ff1f":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"89dab35da7974700b6ad8c700c9ae94a":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_9ea50d14dc3643208a4c090c4824cd96","placeholder":"​","style":"IPY_MODEL_96df98c4926b4e20b594f83c84a1bcb2","value":"100%"}},"8b5bf97804ce47668d29229cbf88bab7":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"90ec716e471f4fdca659d8ad37c2a0d8":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"910a050fbe4e4fcd8689bd1d266e1b64":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_759182b4ec7841328ce1ab96691e8f2f","max":673,"min":0,"orientation":"horizontal","style":"IPY_MODEL_881eb383a7a440ad9c3752b0b866ff1f","value":673}},"9273bc0a60fe4bf0a4d9d57f69409e4f":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_2b47d728d045444089943a85439ba194","placeholder":"​","style":"IPY_MODEL_6369b98d06a34bc1b66390dfa668739e","value":"100%"}},"93db348379c84836a5f37f191ea4b328":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"96df98c4926b4e20b594f83c84a1bcb2":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"975449a7babf4c0d95ea75d59f9683cc":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"97a57340dc6f458caa49d9db8c79de3b":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"97ae464842bb4c88ae8cf18dce4d0aea":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_16ebbb1fd0eb4923b731786fbc3bd04d","placeholder":"​","style":"IPY_MODEL_d31989ad02654abda275c8d4b23986c2","value":"100%"}},"99caf73b04c34ad78cfdca6ca6e6707c":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"99fe5b527e734481a038d68093d12ad0":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"9ea50d14dc3643208a4c090c4824cd96":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"a1e6c42218d344f89b769ac514680bff":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"a586ae047acd4e40a1c7567445a981ca":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ae6fa882479444e39df88390d8a4efc7":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"aee8ef7045e04411bd3a60dee8e7a410":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_fd5b55ab0b0a43f5968cb11b64d7c538","IPY_MODEL_f0db7314db89444f926829e7dc991835","IPY_MODEL_15499b70143a4010b01e3fe3c43550e4"],"layout":"IPY_MODEL_fda398db9b26410baa81ed4e53fe9b26"}},"b2f0a72aaa444abd91f746d016588cbf":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b46ccb071c494cd584a2d5fb135d2e30":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_52e20eb8a17e4eed837d0a1dd0aea8f2","placeholder":"​","style":"IPY_MODEL_baa4f349023e4b6697fb4688a9b9411e","value":" 673/673 [00:49&lt;00:00, 14.38it/s]"}},"baa4f349023e4b6697fb4688a9b9411e":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"bb27c58de282428c9e73b30ae50eeeb2":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"bb31590871664a24a75d3b38a4550032":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"bf1d9a542b66489c9c4b195384a1c5ce":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"c02a808e29ea465da41f7bfded72038a":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_8b5bf97804ce47668d29229cbf88bab7","max":673,"min":0,"orientation":"horizontal","style":"IPY_MODEL_ce2903eff4034ede92e75d52e0d0e1b1","value":673}},"c546a869d072437ebc5bde446d3a1223":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"c7dd79e12a644d7d83f6103fde7e146c":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_d6b49a56bc03408a8877cf8b20468fd4","max":673,"min":0,"orientation":"horizontal","style":"IPY_MODEL_d42334ef7d05453d895aa4a1c56db75c","value":673}},"ce2903eff4034ede92e75d52e0d0e1b1":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"d28c9136af1b4d00967d034252d7576a":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d31989ad02654abda275c8d4b23986c2":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"d42334ef7d05453d895aa4a1c56db75c":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"d6b49a56bc03408a8877cf8b20468fd4":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d9a4917eff1d48b988e2e86d65c08231":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_97ae464842bb4c88ae8cf18dce4d0aea","IPY_MODEL_468010b9e74f48649a382a43e4ab5eae","IPY_MODEL_6d1ca99359214488ae9b51af48a980d4"],"layout":"IPY_MODEL_2ff76e3aac254332be08c10b40cce713"}},"dbdb4ea5c4ff47429017cb9c2cb4f8d2":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ProgressStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"ded29b9dbd814e58a09d35b7d1bab5dc":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ee5e648d526b4bed8c17f6cbdb102d29":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_6de97fd720f342cfbe69e95ee8e283b0","IPY_MODEL_910a050fbe4e4fcd8689bd1d266e1b64","IPY_MODEL_b46ccb071c494cd584a2d5fb135d2e30"],"layout":"IPY_MODEL_84f4c2f6858547aca615d41027aad024"}},"ee8112857f5647438ceea9284d8ff3f5":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_3dbfad8b5e2f456fb93a3197f730ce8a","placeholder":"​","style":"IPY_MODEL_99caf73b04c34ad78cfdca6ca6e6707c","value":"100%"}},"eeb14a2d37cb4eec86d0a494e0e0fa65":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_c546a869d072437ebc5bde446d3a1223","placeholder":"​","style":"IPY_MODEL_ae6fa882479444e39df88390d8a4efc7","value":"100%"}},"f0db7314db89444f926829e7dc991835":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"FloatProgressModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_90ec716e471f4fdca659d8ad37c2a0d8","max":673,"min":0,"orientation":"horizontal","style":"IPY_MODEL_dbdb4ea5c4ff47429017cb9c2cb4f8d2","value":673}},"fd5b55ab0b0a43f5968cb11b64d7c538":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"HTMLModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_ded29b9dbd814e58a09d35b7d1bab5dc","placeholder":"​","style":"IPY_MODEL_195553d03aa44c3990cbc2cbb3507f8e","value":"100%"}},"fda398db9b26410baa81ed4e53fe9b26":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}}},"version_major":2,"version_minor":0}}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport seaborn as sns\nimport scipy.stats\nfrom tqdm import tqdm\n\nfrom sklearn.model_selection import cross_val_predict\nfrom sklearn.linear_model import Ridge\nfrom sklearn.metrics import r2_score, mean_squared_error\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nfrom fastprogress import master_bar, progress_bar\nfrom torch.optim import Adam\nfrom torch.optim.lr_scheduler import CosineAnnealingLR\nfrom torch.utils.data import Dataset, DataLoader\nfrom torchvision.transforms import transforms\nimport torchvision.models as models\nfrom torchvision.models.efficientnet import _efficientnet_conf, _efficientnet\nfrom functools import partial\nimport random, os\nfrom scipy.optimize import minimize\n\n\ndef seed_everything(seed: int):\n    random.seed(seed)\n    os.environ['PYTHONHASHSEED'] = str(seed)\n    np.random.seed(seed)\n    torch.manual_seed(seed)\n    torch.cuda.manual_seed(seed)\n    torch.backends.cudnn.deterministic = True\n    torch.backends.cudnn.benchmark = False\n    \nseed_everything(239)","metadata":{"papermill":{"duration":7.393406,"end_time":"2024-09-25T09:37:54.54632","exception":false,"start_time":"2024-09-25T09:37:47.152914","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2024-10-07T20:35:33.754363Z","iopub.execute_input":"2024-10-07T20:35:33.754915Z","iopub.status.idle":"2024-10-07T20:35:40.531874Z","shell.execute_reply.started":"2024-10-07T20:35:33.754862Z","shell.execute_reply":"2024-10-07T20:35:40.531049Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"class ParticipantVisibleError(Exception):\n    pass\ndef ariel_score(\n        solution,\n        submission,\n        naive_mean,\n        naive_sigma,\n        sigma_true\n    ):\n    '''\n    This is a Gaussian Log Likelihood based metric. For a submission, which contains the predicted mean (x_hat) and variance (x_hat_std),\n    we calculate the Gaussian Log-likelihood (GLL) value to the provided ground truth (x). We treat each pair of x_hat,\n    x_hat_std as a 1D gaussian, meaning there will be 283 1D gaussian distributions, hence 283 values for each test spectrum,\n    the GLL value for one spectrum is the sum of all of them.\n\n    Inputs:\n        - solution: Ground Truth spectra (from test set)\n            - shape: (nsamples, n_wavelengths)\n        - submission: Predicted spectra and errors (from participants)\n            - shape: (nsamples, n_wavelengths*2)\n        naive_mean: (float) mean from the train set.\n        naive_sigma: (float) standard deviation from the train set.\n        sigma_true: (float) essentially sets the scale of the outputs.\n    '''\n\n    if submission.min() < 0:\n        raise ParticipantVisibleError('Negative values in the submission')\n\n    n_wavelengths = 283\n\n    y_pred = submission[:, :n_wavelengths]\n    # Set a non-zero minimum sigma pred to prevent division by zero errors.\n    sigma_pred = np.clip(submission[:, n_wavelengths:], a_min=10**-15, a_max=None)\n    y_true = solution\n\n    GLL_pred = np.sum(scipy.stats.norm.logpdf(y_true, loc=y_pred, scale=sigma_pred))\n    GLL_true = np.sum(scipy.stats.norm.logpdf(y_true, loc=y_true, scale=sigma_true * np.ones_like(y_true)))\n    GLL_mean = np.sum(scipy.stats.norm.logpdf(y_true, loc=naive_mean * np.ones_like(y_true), scale=naive_sigma * np.ones_like(y_true)))\n\n    #print(GLL_pred, GLL_true, GLL_mean)\n    submit_score = (GLL_pred - GLL_mean)/(GLL_true - GLL_mean)\n    return submit_score #float(np.clip(submit_score, 0.0, 1.0))","metadata":{"papermill":{"duration":0.019163,"end_time":"2024-09-25T09:37:54.57272","exception":false,"start_time":"2024-09-25T09:37:54.553557","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2024-10-07T20:35:40.533356Z","iopub.execute_input":"2024-10-07T20:35:40.533808Z","iopub.status.idle":"2024-10-07T20:35:40.543249Z","shell.execute_reply.started":"2024-10-07T20:35:40.533773Z","shell.execute_reply":"2024-10-07T20:35:40.542409Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_adc_info = pd.read_csv('/kaggle/input/ariel-data-challenge-2024/train_adc_info.csv',\n                           index_col='planet_id')\ntrain_labels = pd.read_csv('/kaggle/input/ariel-data-challenge-2024/train_labels.csv',\n                           index_col='planet_id')\n\nfull_train = np.load('/kaggle/input/ariel-train-clean-full/train_clean_full.npy')","metadata":{"papermill":{"duration":52.621947,"end_time":"2024-09-25T09:38:47.201192","exception":false,"start_time":"2024-09-25T09:37:54.579245","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2024-10-07T20:35:40.544323Z","iopub.execute_input":"2024-10-07T20:35:40.544743Z","iopub.status.idle":"2024-10-07T20:36:59.382698Z","shell.execute_reply.started":"2024-10-07T20:35:40.544704Z","shell.execute_reply":"2024-10-07T20:36:59.381679Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"fig, ax = plt.subplots(figsize=(12,7))\nplt.plot(train_labels.values.mean(axis=0))\nplt.grid()\nplt.xticks(np.arange(283)[::10]);","metadata":{"papermill":{"duration":0.425256,"end_time":"2024-09-25T09:38:47.634583","exception":false,"start_time":"2024-09-25T09:38:47.209327","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2024-10-07T20:36:59.385058Z","iopub.execute_input":"2024-10-07T20:36:59.385368Z","iopub.status.idle":"2024-10-07T20:36:59.879068Z","shell.execute_reply.started":"2024-10-07T20:36:59.385334Z","shell.execute_reply":"2024-10-07T20:36:59.878082Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def rmse(y, y_signal):\n    n = y_signal.shape[0]\n    se = (y - np.repeat(y_signal, 283).reshape((n,283))) ** 2.0\n    return np.mean(se) ** 0.5\n\ndef prmse(y, y_signal):\n    se = (y - y_signal) ** 2.0\n    return np.mean(se) ** 0.5","metadata":{"papermill":{"duration":0.015686,"end_time":"2024-09-25T09:38:47.658121","exception":false,"start_time":"2024-09-25T09:38:47.642435","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2024-10-07T20:36:59.880111Z","iopub.execute_input":"2024-10-07T20:36:59.880396Z","iopub.status.idle":"2024-10-07T20:36:59.886115Z","shell.execute_reply.started":"2024-10-07T20:36:59.880363Z","shell.execute_reply":"2024-10-07T20:36:59.885202Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"x = np.array([0,1,2,3,4,5,6])\ny = np.exp(-(x-3)**2.0/2.7)\ny = y / np.sum(y)\nplt.plot(x,y)\ny","metadata":{"execution":{"iopub.status.busy":"2024-10-07T20:36:59.887076Z","iopub.execute_input":"2024-10-07T20:36:59.887367Z","iopub.status.idle":"2024-10-07T20:37:00.148607Z","shell.execute_reply.started":"2024-10-07T20:36:59.887333Z","shell.execute_reply":"2024-10-07T20:37:00.147443Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from scipy.signal import savgol_filter\nfrom sklearn.preprocessing import PolynomialFeatures\nfrom sklearn.linear_model import LinearRegression\nfrom scipy.optimize import minimize_scalar\n\ndef smooth_data(data, window_size, deg=3):\n    return savgol_filter(data, window_size, deg)  # window size 51, polynomial order 3\n\ndef phase_detector(signal, w=5, margin=1, scale=30):\n    phase1, phase2 = None, None\n    midpoint = signal.shape[0] // 2\n    best_drop = 0\n    for i in range(40*scale,82*scale):        \n        t1 = signal[i-w:i+w].max() - signal[i-w:i+w].min()\n        if t1 > best_drop:\n            i_max = i - w + np.argmax(signal[i-w:i+w])\n            i_min = i - w + np.argmax(-signal[i-w:i+w])\n            if i_max > i_min:\n                continue\n\n            best_drop = t1\n            \n            phase1 = (i_max - margin, i_min + margin)\n\n    best_drop = 0\n    for i in range(105*scale,147*scale):        \n        t1 = signal[i-w:i+w].max() - signal[i-w:i+w].min()\n        if t1 > best_drop:\n            i_max = i - w + np.argmax(signal[i-w:i+w])\n            i_min = i - w + np.argmax(-signal[i-w:i+w])\n            if i_min > i_max:\n                continue\n\n            best_drop = t1\n            \n            phase2 = (i_min - margin, i_max + margin)\n\n\n    return phase1[0], phase1[1], phase2[0], phase2[1]\n\n\nclass SignalPoly():\n    def __init__(self, deg):\n        self.deg = deg\n        self.poly_features = PolynomialFeatures(degree=deg, include_bias=True)\n        self.model = LinearRegression()\n        \n    def fit(self, x, y):\n        X_poly = self.poly_features.fit_transform(np.array(x).reshape(-1, 1))\n        self.model.fit(X_poly, y)\n\n    def predict(self, x):\n        X_poly = self.poly_features.transform(np.array(x).reshape(-1, 1))\n        return self.model.predict(X_poly)\n    \ndef f_coef(px, y, s):\n    q = np.abs(px - y * s).mean()\n    return q    \n\ndef try_s_alpenglow2(px, y, y2, y3, s):\n    q = np.abs(px - y * (y2 +y3 * s)).mean()\n    return q\n\ndef calibrate_train_alpenglow2(signal, p0, p1, p2, p3, max_deg=6, min_deg=1):\n    best_deg, best_score, best_s, best_poly = 1, 1e12, 0, None\n    signal = np.asarray(signal)  # ensure signal is a numpy array for faster slicing\n    out = np.concatenate((np.arange(p0), np.arange(p3, signal.shape[0])))  # faster range handling\n    x, y = out, signal[out]\n    x2 = np.arange(p1, p2)\n    y2 = signal[p1:p2]\n\n    x = np.concatenate((x, x2))  # concatenate arrays directly\n    y = np.concatenate((y, y2))  # combine arrays without list conversion\n    y2 = np.ones_like(y)\n    y3 = np.zeros_like(y)\n    y3[out.shape[0]:] = 1.0\n    for deg in range(min_deg, max_deg):        \n        p = SignalPoly(deg)\n        p.fit(x[:len(out)], y[:len(out)])        \n        px = p.predict(x)\n        \n        f = partial(try_s_alpenglow2, px, y, y2, y3)\n        #r = minimize(f, [0.0025], method='Nelder-Mead', options={'xatol':1e-7})\n        r = minimize_scalar(f)\n        s = r.x\n        q = r.fun\n\n        if q < best_score:\n            best_score = q\n            best_poly = p\n            best_s = s\n            best_deg = deg\n\n    return best_s, best_deg, best_poly, best_score\n\ndef smooth_data_lambda(train_signal, win=3):\n    q = train_signal[:,40-win:322+win]\n    q = q / train_signal[:,40-win:322+win].mean(axis=1, keepdims=True)\n    q_coef = q.mean(axis=0)\n    gauss_coefs = np.array([0.01227215, 0.07819333, 0.23753036, 0.34400831, 0.23753036, 0.07819333, 0.01227215])\n    \n    t_smooth = train_signal[:,40-win:322+win].copy()\n    for l in range(win,t_smooth.shape[1]-win):\n        coefs = q_coef[l-win:l+win+1] / q_coef[l]\n        \n        t_smooth[:,l] = np.dot(train_signal[:,40-win+l-win:40-win+l+win+1] * coefs, gauss_coefs)\n    if win > 0:\n        t_smooth = t_smooth[:,win:-win][:,::-1]\n    else:\n        t_smooth = t_smooth[:,::-1]\n    return np.concatenate([train_signal[:,0:1], t_smooth], axis=1)","metadata":{"papermill":{"duration":0.101902,"end_time":"2024-09-25T09:38:47.767364","exception":false,"start_time":"2024-09-25T09:38:47.665462","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2024-10-07T20:37:00.149993Z","iopub.execute_input":"2024-10-07T20:37:00.150316Z","iopub.status.idle":"2024-10-07T20:37:00.221612Z","shell.execute_reply.started":"2024-10-07T20:37:00.15028Z","shell.execute_reply":"2024-10-07T20:37:00.220838Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"feats = np.zeros((len(full_train),283,9))\nmax_degs = np.zeros(len(full_train)).astype(int)\n\nfor i in tqdm(range(len(full_train))):       \n    train = smooth_data_lambda(full_train[i], 3)\n    \n    ranges = [(0,283)]\n    for r1,r2 in ranges:\n        signal = train[:,r1:r2].mean(axis=1)\n        signal = smooth_data(signal, 330, 3) \n        p0,p1,p2,p3 = phase_detector(signal, 90, margin=30)\n        s,max_deg,_,_ = calibrate_train_alpenglow2(signal, p0,p1,p2,p3)\n        max_degs[i] = max_deg+1\n        feats[i,r1:r2,0] = s\n\n    x_out = np.concatenate((np.arange(p0), np.arange(p3, signal.shape[0])))\n    x_in = np.arange(p1, p2)\n       \n    ranges = [(0,133),(133,283)]\n    for r1,r2 in ranges:\n        signal = train[:,r1:r2].mean(axis=1)\n        signal = smooth_data(signal, 330, 3) \n        s,_,_,_ = calibrate_train_alpenglow2(signal, p0,p1,p2,p3, max_degs[i])\n        feats[i,r1:r2,1] = s\n\n    ranges = [(0,62),(62,133),(133,200),(200,283)]\n    for r1,r2 in ranges:\n        signal = train[:,r1:r2].mean(axis=1)\n        signal = smooth_data(signal, 330, 3) \n        s,_,p,_ = calibrate_train_alpenglow2(signal, p0,p1,p2,p3, max_degs[i])\n        feats[i,r1:r2,2] = s\n\n        px = p.predict(np.arange(full_train.shape[1]))\n        for l in range(r1,r2):\n            signal = smooth_data(train[:,l], 330, 3)\n            \n            f = partial(f_coef, px[x_out], signal[x_out])\n            r = minimize_scalar(f)\n            a = r.x\n            score_a = r.fun\n    \n            f = partial(f_coef, px[x_in], signal[x_in])\n            r = minimize_scalar(f)\n            b = r.x\n            score_b = r.fun\n    \n            feats[i,l,7] = (1.0 - a / b)\n\n    ranges = [(j*50,50+j*50) for j in range(283//50+1)]\n    for r1,r2 in ranges:\n        signal = train[:,r1:r2].mean(axis=1)\n        signal = smooth_data(signal, 330, 3) \n        s,_,p,_ = calibrate_train_alpenglow2(signal, p0,p1,p2,p3, 4)\n        feats[i,r1:r2,3] = s\n        \n        px = p.predict(np.arange(full_train.shape[1]))\n        if r2 > 283:\n            r2 = 283\n        for l in range(r1,r2):\n            signal = smooth_data(train[:,l], 330, 3)\n            \n            f = partial(f_coef, px[x_out], signal[x_out])\n            r = minimize_scalar(f)\n            a = r.x\n            score_a = r.fun\n    \n            f = partial(f_coef, px[x_in], signal[x_in])\n            r = minimize_scalar(f)\n            b = r.x\n            score_b = r.fun\n    \n            feats[i,l,8] = (1.0 - a / b)\n\n    ranges = [(0,1),(1,16),(16,31),(31,46),(46,62),(62,77),(77,97),(97,112),(112,133),(133,149),(149,168),\n              (168,185),(185,200),(200,215),(215,240),(240,255),(255,283)]\n    for r1,r2 in ranges:\n        signal = train[:,r1:r2].mean(axis=1)\n        signal = smooth_data(signal, 330, 3) \n        s,_,_,_ = calibrate_train_alpenglow2(signal, p0,p1,p2,p3, 3)\n        feats[i,r1:r2,4] = s\n        \n    ranges = [(j*8,8+j*8) for j in range(283//8+1)]\n    for r1,r2 in ranges:\n        signal = train[:,r1:r2].mean(axis=1)\n        signal = smooth_data(signal, 330, 3) \n        s,_,_,_ = calibrate_train_alpenglow2(signal, p0,p1,p2,p3, 3)\n        feats[i,r1:r2,5] = s\n\n    q_train = smooth_data(train.transpose(1,0), 330, 3)\n    q_train = q_train / q_train.mean(axis=1, keepdims=True)\n    \n    signal = q_train.mean(axis=0)\n    s,_,p,_ = calibrate_train_alpenglow2(signal, p0,p1,p2,p3, max_degs[i])\n    \n    px = p.predict(np.arange(full_train.shape[1]))\n\n    for l in range(283):\n        signal = q_train[l]\n\n        f = partial(f_coef, px[x_out], signal[x_out])\n        r = minimize_scalar(f)\n        a = r.x\n        score_a = r.fun\n\n        f = partial(f_coef, px[x_in], signal[x_in])\n        r = minimize_scalar(f)\n        b = r.x\n        score_b = r.fun\n\n        feats[i,l,6] = (1.0 - a / b)","metadata":{"execution":{"iopub.status.busy":"2024-10-07T20:37:00.222809Z","iopub.execute_input":"2024-10-07T20:37:00.223261Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"for i in range(9):\n    print(i, prmse(train_labels.values, feats[...,i]))","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"cnn_train = feats.transpose(0,2,1).copy()\nlabels = train_labels.values\n\ncnn_train = (cnn_train - 0.0025)*1e3\nlabels = (labels - 0.0025)*1e3\n\ncnn_train.mean(), labels.mean()","metadata":{"papermill":{"duration":0.057602,"end_time":"2024-09-25T10:04:40.315122","exception":false,"start_time":"2024-09-25T10:04:40.25752","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"cell_type":"code","source":"cnn_train.shape","metadata":{},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import torch\nimport torch.nn as nn\nimport torch.nn.functional as F\n\nclass CustomCNN(nn.Module):\n    def __init__(self):\n        super(CustomCNN, self).__init__()\n        \n        self.spectra = nn.Sequential(\n            nn.Conv1d(9, 256, 3, padding='same', bias=False),\n            nn.ReLU(),\n            nn.Conv1d(256, 256, 5, padding='same', bias=False),\n            nn.ReLU(),\n            nn.Conv1d(256, 256, 7, padding='same', bias=False),\n            nn.ReLU(),\n            nn.Conv1d(256, 256, 9, padding='same', bias=False),\n            nn.ReLU(),\n            nn.Conv1d(256, 256, 11, padding='same', bias=False),\n            nn.ReLU(),\n            nn.Conv1d(256, 256, 13, padding='same', bias=False),\n            nn.ReLU(),\n            nn.Conv1d(256, 1, 1, padding='same', bias=False),\n        )\n        \n        self.sigma = nn.Sequential(\n            nn.Conv1d(1, 32, kernel_size=3, bias=False),\n            nn.ReLU(),\n            nn.MaxPool1d(kernel_size=2, stride=2),\n            nn.Conv1d(32, 64, kernel_size=3, bias=False),\n            nn.ReLU(),\n            nn.MaxPool1d(kernel_size=2, stride=2),\n            nn.Conv1d(64, 128, kernel_size=3, bias=False),\n            nn.ReLU(),\n            nn.MaxPool1d(kernel_size=2, stride=2),\n            nn.Flatten()\n        )\n        \n        # Вычисляем размер выхода после сверток и пулинга\n        self._to_linear = None\n        self._get_conv_output((1, 283))\n        \n        # Полносвязные слои\n        self.sigma_out = nn.Linear(self._to_linear, 1)\n        \n    def _get_conv_output(self, shape):\n        batch_size = 1\n        input = torch.autograd.Variable(torch.rand(batch_size, *shape))\n        output = self.sigma(input)\n        self._to_linear = int(torch.numel(output) / batch_size)\n    \n    def forward(self, x_in):\n        x = self.spectra(x_in[:,:9])\n        spectrum = torch.flatten(x, start_dim=1)\n        #y = torch.cat([x_in[:,7:], x-x_in[:,:1,:]], dim=1)\n        y = x-x_in[:,:1,:]\n        sigma = self.sigma_out(self.sigma(y))\n        \n        return spectrum, sigma","metadata":{"papermill":{"duration":0.034724,"end_time":"2024-09-25T10:04:40.368377","exception":false,"start_time":"2024-09-25T10:04:40.333653","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from sklearn.model_selection import KFold\n\nkf = KFold(n_splits=5)\nX = list(range(len(full_train)))\n\nmean_pred = np.zeros_like(train_labels.values)\nmean_sigma = np.zeros_like(train_labels.values)\n\nl2loss = nn.MSELoss()\n\ndef create_mean_model():\n    model = CustomCNN()\n    return model\n\nfor ifold, (train_index, test_index) in enumerate(kf.split(X)):\n    train_x = torch.from_numpy(cnn_train[train_index]).float()\n    train_y = torch.from_numpy(labels[train_index]).float() \n    train_dataset = torch.utils.data.TensorDataset(train_x, train_y)\n    training_loader = torch.utils.data.DataLoader(train_dataset, batch_size=16, shuffle=True)\n\n    val_x = torch.from_numpy(cnn_train[test_index]).float()\n    val_y = torch.from_numpy(labels[test_index]).float() \n    val_dataset = torch.utils.data.TensorDataset(val_x, val_y)\n    validation_loader = torch.utils.data.DataLoader(val_dataset, batch_size=16, shuffle=False)\n    \n    model = create_mean_model().cuda()\n\n    best_metric = 0\n    total_train_losses = []\n\n    optimizer = torch.optim.AdamW(model.parameters(), lr=0.0001)\n    scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, 200, eta_min=0, last_epoch=-1)\n    for epoch in range(200):\n        ep_losses = []        \n        model.train()\n        for i, data in enumerate(training_loader):\n            # Every data instance is an input + label pair\n            inputs, tlabels = data\n\n            #z = torch.randn_like(inputs) * 1e-5\n            #u = (torch.rand_like(inputs) > 0.8).float()\n            #inputs += z*u \n\n            # Zero your gradients for every batch!\n            optimizer.zero_grad()\n\n            # Make predictions for this batch\n            outputs, sigma = model(inputs.cuda())\n            \n            # Compute the loss and its gradients\n            loss1 = l2loss(outputs, tlabels.cuda())\n            \n            mean_diff = torch.mean((outputs - tlabels.cuda()) ** 2.0, dim=1, keepdims=True) ** 0.5\n            loss2 = F.smooth_l1_loss(sigma, mean_diff)\n            #print(sigma.shape, mean_diff.shape)\n            loss = loss1 + loss2 * 1e-3\n            \n            loss.backward()\n\n            # Adjust learning weights\n            optimizer.step()\n\n            # Gather data and report\n            #print(epoch, i, loss.item())\n            ep_losses.append(loss.item())\n\n        avg_loss = np.mean(ep_losses)\n        total_train_losses.append(avg_loss)\n        scheduler.step()\n\n    model.eval()\n    running_vloss = 0\n    preds = np.zeros((len(val_dataset), 283))\n    ss = np.zeros((len(val_dataset), 283))\n    v_offset = 0\n    with torch.no_grad():        \n        for i, vdata in enumerate(validation_loader):\n            vinputs, vlabels = vdata\n            voutputs, vsigma = model(vinputs.cuda())\n            preds[v_offset:v_offset+len(vinputs)] = voutputs.detach().cpu().numpy() * 1e-3 + 0.0025\n            ss[v_offset:v_offset+len(vinputs)] = vsigma.detach().cpu().numpy().clip(0) * 1e-3\n            vloss = l2loss(voutputs, vlabels.cuda())\n            running_vloss += vloss\n            v_offset += len(vinputs)\n\n    avg_vloss = running_vloss / (i + 1)\n\n    metric1 = prmse(train_labels.values[test_index], preds)\n    metric = ariel_score(train_labels.values[test_index],\n            np.concatenate([preds.clip(0), ss.clip(0)], axis=1),    \n            train_labels.values[train_index].mean(),\n            train_labels.values[train_index].std(),\n            sigma_true=1e-5)\n\n    print('fold {} epoch {} train {} valid {} rmse {} ariel {}'.format(ifold, epoch, \n                                                                round(avg_loss,6), \n                                                                round(avg_vloss.item(),6), \n                                                                round(metric1,6),\n                                                                round(metric,6)\n                                                               ))\n\n        \n    mean_pred[test_index] = preds\n    mean_sigma[test_index] = ss\n    torch.save(model.state_dict(), 'wvn_model_wide_{}'.format(ifold))","metadata":{"papermill":{"duration":603.271491,"end_time":"2024-09-25T10:14:43.648561","exception":false,"start_time":"2024-09-25T10:04:40.37707","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"cell_type":"code","source":"prmse(train_labels.values, mean_pred)","metadata":{"papermill":{"duration":0.018932,"end_time":"2024-09-25T10:14:43.676654","exception":false,"start_time":"2024-09-25T10:14:43.657722","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"cell_type":"code","source":"sigma = mean_sigma.copy()\nsigma[mean_pred.max(axis=1)-mean_pred.min(axis=1) > 0.00018] += 2e-5\n\npreds = mean_pred.copy()\npreds[(mean_pred[:,:250].max(axis=1) - mean_pred[:,:250].min(axis=1)) < (mean_pred[:,250:].max(axis=1) - mean_pred[:,250:].min(axis=1)), 250:] = mean_pred[(mean_pred[:,:250].max(axis=1) - mean_pred[:,:250].min(axis=1)) < (mean_pred[:,250:].max(axis=1) - mean_pred[:,250:].min(axis=1)), 250:251]\npreds[(mean_pred[:,:200].max(axis=1) - mean_pred[:,:200].min(axis=1)) < (mean_pred[:,200:].max(axis=1) - mean_pred[:,200:].min(axis=1)), 200:] = mean_pred[(mean_pred[:,:200].max(axis=1) - mean_pred[:,:200].min(axis=1)) < (mean_pred[:,200:].max(axis=1) - mean_pred[:,200:].min(axis=1)), 200:201]\npreds[mean_pred.max(axis=1)-mean_pred.min(axis=1) < 0.0002] = smooth_data(preds[mean_pred.max(axis=1)-mean_pred.min(axis=1) < 0.0002], 100, 3)\n\nariel_score(train_labels.values,\n            np.concatenate([preds.clip(0), sigma], axis=1),    \n            train_labels.values.mean(),\n            train_labels.values.std(),\n            sigma_true=1e-5)","metadata":{"papermill":{"duration":0.084638,"end_time":"2024-09-25T10:14:43.770533","exception":false,"start_time":"2024-09-25T10:14:43.685895","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{},"outputs":[],"execution_count":null},{"cell_type":"code","source":"n = 26\nplt.plot(preds[n])\nplt.plot(train_labels.values[n])\nnp.mean((train_labels.values[n] - preds[n])**2.0) ** 0.5, sigma[n,0]","metadata":{"papermill":{"duration":0.297351,"end_time":"2024-09-25T10:14:44.087724","exception":false,"start_time":"2024-09-25T10:14:43.790373","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"papermill":{"duration":0.009874,"end_time":"2024-09-25T10:14:44.128304","exception":false,"start_time":"2024-09-25T10:14:44.11843","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"papermill":{"duration":0.009895,"end_time":"2024-09-25T10:14:44.148329","exception":false,"start_time":"2024-09-25T10:14:44.138434","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"papermill":{"duration":0.010809,"end_time":"2024-09-25T10:14:44.16924","exception":false,"start_time":"2024-09-25T10:14:44.158431","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"papermill":{"duration":0.009898,"end_time":"2024-09-25T10:14:44.189287","exception":false,"start_time":"2024-09-25T10:14:44.179389","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"papermill":{"duration":0.009814,"end_time":"2024-09-25T10:14:44.20912","exception":false,"start_time":"2024-09-25T10:14:44.199306","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"papermill":{"duration":0.009965,"end_time":"2024-09-25T10:14:44.229301","exception":false,"start_time":"2024-09-25T10:14:44.219336","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"papermill":{"duration":0.009993,"end_time":"2024-09-25T10:14:44.249397","exception":false,"start_time":"2024-09-25T10:14:44.239404","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"papermill":{"duration":0.009872,"end_time":"2024-09-25T10:14:44.269393","exception":false,"start_time":"2024-09-25T10:14:44.259521","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"papermill":{"duration":0.009883,"end_time":"2024-09-25T10:14:44.289356","exception":false,"start_time":"2024-09-25T10:14:44.279473","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"papermill":{"duration":0.010159,"end_time":"2024-09-25T10:14:44.309652","exception":false,"start_time":"2024-09-25T10:14:44.299493","status":"completed"},"tags":[]},"outputs":[],"execution_count":null}]}