{"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\n\nimport matplotlib.pyplot as plt\n\nimport numpy as np\n\nimport seaborn as sns\n\nimport scipy.stats\n\nfrom tqdm import tqdm\n\n\n\nfrom sklearn.model_selection import cross_val_predict\n\nfrom sklearn.linear_model import Ridge\n\nfrom sklearn.metrics import r2_score, mean_squared_error\n\nimport torch\n\nimport torch.nn as nn\n\nimport torch.nn.functional as F\n\nfrom fastprogress import master_bar, progress_bar\n\nfrom torch.optim import Adam\n\nfrom torch.optim.lr_scheduler import CosineAnnealingLR\n\nfrom torch.utils.data import Dataset, DataLoader\n\nfrom torchvision.transforms import transforms\n\nimport torchvision.models as models\n\nfrom torchvision.models.efficientnet import _efficientnet_conf, _efficientnet\n\nfrom functools import partial\n\nimport random, os\n\nfrom scipy.optimize import minimize\n\n\n\n\n\ndef seed_everything(seed: int):\n\n    random.seed(seed)\n\n    os.environ['PYTHONHASHSEED'] = str(seed)\n\n    np.random.seed(seed)\n\n    torch.manual_seed(seed)\n\n    torch.cuda.manual_seed(seed)\n\n    torch.backends.cudnn.deterministic = True\n\n    torch.backends.cudnn.benchmark = False\n\n    \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":[],"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T16:23:33.584436Z","iopub.execute_input":"2024-11-07T16:23:33.585203Z","iopub.status.idle":"2024-11-07T16:23:39.389608Z","shell.execute_reply.started":"2024-11-07T16:23:33.585151Z","shell.execute_reply":"2024-11-07T16:23:39.38879Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"class ParticipantVisibleError(Exception):\n\n    pass\n\ndef ariel_score(\n\n        solution,\n\n        submission,\n\n        naive_mean,\n\n        naive_sigma,\n\n        sigma_true\n\n    ):\n\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\n    we calculate the Gaussian Log-likelihood (GLL) value to the provided ground truth (x). We treat each pair of x_hat,\n\n    x_hat_std as a 1D gaussian, meaning there will be 283 1D gaussian distributions, hence 283 values for each test spectrum,\n\n    the GLL value for one spectrum is the sum of all of them.\n\n\n\n    Inputs:\n\n        - solution: Ground Truth spectra (from test set)\n\n            - shape: (nsamples, n_wavelengths)\n\n        - submission: Predicted spectra and errors (from participants)\n\n            - shape: (nsamples, n_wavelengths*2)\n\n        naive_mean: (float) mean from the train set.\n\n        naive_sigma: (float) standard deviation from the train set.\n\n        sigma_true: (float) essentially sets the scale of the outputs.\n\n    '''\n\n\n\n    if submission.min() < 0:\n\n        raise ParticipantVisibleError('Negative values in the submission')\n\n\n\n    n_wavelengths = 283\n\n\n\n    y_pred = submission[:, :n_wavelengths]\n\n    # Set a non-zero minimum sigma pred to prevent division by zero errors.\n\n    sigma_pred = np.clip(submission[:, n_wavelengths:], a_min=10**-15, a_max=None)\n\n    y_true = solution\n\n\n\n    GLL_pred = np.sum(scipy.stats.norm.logpdf(y_true, loc=y_pred, scale=sigma_pred))\n\n    GLL_true = np.sum(scipy.stats.norm.logpdf(y_true, loc=y_true, scale=sigma_true * np.ones_like(y_true)))\n\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\n\n    #print(GLL_pred, GLL_true, GLL_mean)\n\n    submit_score = (GLL_pred - GLL_mean)/(GLL_true - GLL_mean)\n\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":[],"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T16:23:39.391085Z","iopub.execute_input":"2024-11-07T16:23:39.391551Z","iopub.status.idle":"2024-11-07T16:23:39.401169Z","shell.execute_reply.started":"2024-11-07T16:23:39.391517Z","shell.execute_reply":"2024-11-07T16:23:39.400203Z"}},"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')\n\ntrain_labels = pd.read_csv('/kaggle/input/ariel-data-challenge-2024/train_labels.csv',\n                           index_col='planet_id')\n\n\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":[],"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T16:23:39.40247Z","iopub.execute_input":"2024-11-07T16:23:39.403099Z","iopub.status.idle":"2024-11-07T16:24:25.578112Z","shell.execute_reply.started":"2024-11-07T16:23:39.403056Z","shell.execute_reply":"2024-11-07T16:24:25.577306Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"fig, ax = plt.subplots(figsize=(12,7))\n\nplt.plot(train_labels.values.mean(axis=0))\n\nplt.grid()\n\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":[],"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T16:24:25.58009Z","iopub.execute_input":"2024-11-07T16:24:25.580423Z","iopub.status.idle":"2024-11-07T16:24:26.056518Z","shell.execute_reply.started":"2024-11-07T16:24:25.580391Z","shell.execute_reply":"2024-11-07T16:24:26.055619Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def rmse(y, y_signal):\n\n    n = y_signal.shape[0]\n\n    se = (y - np.repeat(y_signal, 283).reshape((n,283))) ** 2.0\n\n    return np.mean(se) ** 0.5\n\n\n\ndef prmse(y, y_signal):\n\n    se = (y - y_signal) ** 2.0\n\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":[],"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T16:24:26.057723Z","iopub.execute_input":"2024-11-07T16:24:26.05809Z","iopub.status.idle":"2024-11-07T16:24:26.063831Z","shell.execute_reply.started":"2024-11-07T16:24:26.057992Z","shell.execute_reply":"2024-11-07T16:24:26.062902Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"x = np.array([0,1,2,3,4,5,6])\n\ny = np.exp(-(x-3)**2.0/2.7)\n\ny = y / np.sum(y)\n\nplt.plot(x,y)\n\ny","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T16:24:26.065003Z","iopub.execute_input":"2024-11-07T16:24:26.065341Z","iopub.status.idle":"2024-11-07T16:24:26.323019Z","shell.execute_reply.started":"2024-11-07T16:24:26.065283Z","shell.execute_reply":"2024-11-07T16:24:26.322185Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from scipy.signal import savgol_filter\n\nfrom sklearn.preprocessing import PolynomialFeatures\n\nfrom sklearn.linear_model import LinearRegression\n\nfrom scipy.optimize import minimize_scalar\n\nfrom scipy.stats import norm\n\n\n\n\n\ndef smooth_data(data, window_size, deg=3):\n\n    return savgol_filter(data, window_size, deg)  # window size 51, polynomial order 3\n\n\n\ndef phase_detector(signal, w=5, margin=1, scale=30):\n\n    phase1, phase2 = None, None\n\n    midpoint = signal.shape[0] // 2\n\n    best_drop = 0\n\n    for i in range(40*scale,82*scale):        \n\n        t1 = signal[i-w:i+w].max() - signal[i-w:i+w].min()\n\n        if t1 > best_drop:\n\n            i_max = i - w + np.argmax(signal[i-w:i+w])\n\n            i_min = i - w + np.argmax(-signal[i-w:i+w])\n\n            if i_max > i_min:\n\n                continue\n\n\n\n            best_drop = t1\n\n            \n\n            phase1 = (i_max - margin, i_min + margin)\n\n\n\n    best_drop = 0\n\n    for i in range(105*scale,147*scale):        \n\n        t1 = signal[i-w:i+w].max() - signal[i-w:i+w].min()\n\n        if t1 > best_drop:\n\n            i_max = i - w + np.argmax(signal[i-w:i+w])\n\n            i_min = i - w + np.argmax(-signal[i-w:i+w])\n\n            if i_min > i_max:\n\n                continue\n\n\n\n            best_drop = t1\n\n            \n\n            phase2 = (i_min - margin, i_max + margin)\n\n\n\n\n\n    return phase1[0], phase1[1], phase2[0], phase2[1]\n\n\n\n\n\nclass SignalPoly():\n\n    def __init__(self, deg):\n\n        self.deg = deg\n\n        self.poly_features = PolynomialFeatures(degree=deg, include_bias=True)\n\n        self.model = LinearRegression()\n\n        \n\n    def fit(self, x, y):\n\n        X_poly = self.poly_features.fit_transform(np.array(x).reshape(-1, 1))\n\n        self.model.fit(X_poly, y)\n\n\n\n    def predict(self, x):\n\n        X_poly = self.poly_features.transform(np.array(x).reshape(-1, 1))\n\n        return self.model.predict(X_poly)\n\n    \n\ndef f_coef(px, y, s):\n\n    q = -np.sum(norm.logpdf(y * s, px, 1.0)) \n\n    return q  \n\n\n\ndef try_s_alpenglow2(px, y, s):\n\n    q = -np.sum(norm.logpdf(y * (1 + s), px, 1.0)) \n\n    return q\n\n\n\ndef calibrate_train_alpenglow2(signal, p0, p1, p2, p3, max_deg=6, min_deg=1):\n\n    best_deg, best_score, best_s, best_poly = 1, 1e12, 0, None\n\n    signal = np.asarray(signal)  # ensure signal is a numpy array for faster slicing\n\n    out = np.concatenate((np.arange(p0), np.arange(p3, signal.shape[0])))  # faster range handling\n\n    x, y = out, signal[out]\n\n    x2 = np.arange(p1, p2)\n\n    y2 = signal[p1:p2]\n\n\n\n    for deg in range(min_deg, max_deg):        \n\n        p = SignalPoly(deg)\n\n        p.fit(x, y)        \n\n        px = p.predict(x)\n\n        q0 = -np.sum(norm.logpdf(y, px, 1.0)) \n\n\n\n        px2 = p.predict(x2)\n\n        f = partial(try_s_alpenglow2, px2, y2)\n\n        r = minimize_scalar(f, bounds=(1e-5, 1))\n\n        s = r.x\n\n        q = q0 + r.fun\n\n\n\n        if q < best_score:\n\n            best_score = q\n\n            best_poly = p\n\n            best_s = (1.0 - 1.0 / (1.0 + s))\n\n            best_deg = deg\n\n\n\n    return best_s, best_deg, best_poly, best_score\n\n\n\ndef smooth_data_lambda(train_signal, win=3):\n\n    q = train_signal[:,40-win:322+win]\n\n    q = q / train_signal[:,40-win:322+win].mean(axis=1, keepdims=True)\n\n    q_coef = q.mean(axis=0)\n\n    gauss_coefs = np.array([0.01227215, 0.07819333, 0.23753036, 0.34400831, 0.23753036, 0.07819333, 0.01227215])\n\n    \n\n    t_smooth = train_signal[:,40-win:322+win].copy()\n\n    for l in range(win,t_smooth.shape[1]-win):\n\n        coefs = q_coef[l-win:l+win+1] / q_coef[l]\n\n        \n\n        t_smooth[:,l] = np.dot(train_signal[:,40-win+l-win:40-win+l+win+1] * coefs, gauss_coefs)\n\n    if win > 0:\n\n        t_smooth = t_smooth[:,win:-win][:,::-1]\n\n    else:\n\n        t_smooth = t_smooth[:,::-1]\n\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":[],"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T16:24:26.32447Z","iopub.execute_input":"2024-11-07T16:24:26.32474Z","iopub.status.idle":"2024-11-07T16:24:26.406769Z","shell.execute_reply.started":"2024-11-07T16:24:26.324711Z","shell.execute_reply":"2024-11-07T16:24:26.406019Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"feats = np.zeros((len(full_train),283,11))\n\nmax_degs = np.zeros(len(full_train)).astype(int)\n\n\n\nfor i in tqdm(range(len(full_train))):       \n\n    train = smooth_data_lambda(full_train[i], 3)\n\n    \n\n    ranges = [(0,283)]\n\n    for r1,r2 in ranges:\n\n        signal = train[:,r1:r2].mean(axis=1)\n\n        signal = smooth_data(signal, 330, 3) \n\n        p0,p1,p2,p3 = phase_detector(signal, 90, margin=30)\n\n        s,max_deg,_,_ = calibrate_train_alpenglow2(signal, p0,p1,p2,p3)\n\n        max_degs[i] = max_deg+1\n\n        feats[i,r1:r2,0] = s\n\n\n\n    x_out = np.concatenate((np.arange(p0), np.arange(p3, signal.shape[0])))\n\n    x_in = np.arange(p1, p2)\n\n       \n\n    ranges = [(0,133),(133,283)]\n\n    for r1,r2 in ranges:\n\n        signal = train[:,r1:r2].mean(axis=1)\n\n        signal = smooth_data(signal, 330, 3) \n\n        s,_,_,_ = calibrate_train_alpenglow2(signal, p0,p1,p2,p3, max_degs[i])\n\n        feats[i,r1:r2,1] = s\n\n\n\n\n\n    ranges = [(0,62),(62,133),(133,200),(200,283)]\n\n    for r1,r2 in ranges:\n\n        signal = train[:,r1:r2].mean(axis=1)\n\n        signal = smooth_data(signal, 330, 3) \n\n        s,_,p,_ = calibrate_train_alpenglow2(signal, p0,p1,p2,p3, max_degs[i])\n\n        feats[i,r1:r2,2] = s\n\n\n\n        px = p.predict(np.arange(full_train.shape[1]))\n\n        for l in range(r1,r2):\n\n            signal = smooth_data(train[:,l], 330, 3)\n\n            \n\n            f = partial(f_coef, px[x_out], signal[x_out])\n\n            r = minimize_scalar(f)\n\n            a = r.x\n\n            score_a = r.fun\n\n    \n\n            f = partial(f_coef, px[x_in], signal[x_in])\n\n            r = minimize_scalar(f)\n\n            b = r.x\n\n            score_b = r.fun\n\n    \n\n            feats[i,l,7] = (1.0 - a / b)\n\n\n\n\n\n    ranges = [(j*50,50+j*50) for j in range(283//50+1)]\n\n    for r1,r2 in ranges:\n\n        signal = train[:,r1:r2].mean(axis=1)\n\n        signal = smooth_data(signal, 330, 3) \n\n        s,_,p,_ = calibrate_train_alpenglow2(signal, p0,p1,p2,p3, 4)\n\n        feats[i,r1:r2,3] = s\n\n        \n\n        px = p.predict(np.arange(full_train.shape[1]))\n\n        if r2 > 283:\n\n            r2 = 283\n\n        for l in range(r1,r2):\n\n            signal = smooth_data(train[:,l], 330, 3)\n\n            \n\n            f = partial(f_coef, px[x_out], signal[x_out])\n\n            r = minimize_scalar(f)\n\n            a = r.x\n\n            score_a = r.fun\n\n    \n\n            f = partial(f_coef, px[x_in], signal[x_in])\n\n            r = minimize_scalar(f)\n\n            b = r.x\n\n            score_b = r.fun\n\n    \n\n            feats[i,l,8] = (1.0 - a / b)\n\n\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\n              (168,185),(185,200),(200,215),(215,240),(240,255),(255,283)]\n\n    for r1,r2 in ranges:\n\n        signal = train[:,r1:r2].mean(axis=1)\n\n        signal = smooth_data(signal, 330, 3) \n\n        s,_,_,_ = calibrate_train_alpenglow2(signal, p0,p1,p2,p3, 3)\n\n        feats[i,r1:r2,4] = s\n\n        \n\n    ranges = [(j*8,8+j*8) for j in range(283//8+1)]\n\n    for r1,r2 in ranges:\n\n        signal = train[:,r1:r2].mean(axis=1)\n\n        signal = smooth_data(signal, 330, 3) \n\n        s,_,_,_ = calibrate_train_alpenglow2(signal, p0,p1,p2,p3, 3)\n\n        feats[i,r1:r2,5] = s\n\n\n\n    ranges = [(j*13,13+j*13) for j in range(283//13+1)]\n\n    for r1,r2 in ranges:\n\n        signal = train[:,r1:r2].mean(axis=1)\n\n        signal = smooth_data(signal, 330, 3) \n\n        s,_,_,_ = calibrate_train_alpenglow2(signal, p0,p1,p2,p3, 3)\n\n        feats[i,r1:r2,9] = s\n\n\n\n    feats[i,:,10] = (train[x_out].mean(axis=0) - train[x_out].mean()) / train[x_out].mean()\n\n\n\n    q_train = smooth_data(train.transpose(1,0), 330, 3)\n\n    q_train = q_train / q_train.mean(axis=1, keepdims=True)\n\n    \n\n    signal = q_train.mean(axis=0)\n\n    s,_,p,_ = calibrate_train_alpenglow2(signal, p0,p1,p2,p3, max_degs[i])\n\n    \n\n    px = p.predict(np.arange(full_train.shape[1]))\n\n\n\n    for l in range(283):\n\n        signal = q_train[l]\n\n\n\n        f = partial(f_coef, px[x_out], signal[x_out])\n\n        r = minimize_scalar(f)\n\n        a = r.x\n\n        score_a = r.fun\n\n\n\n        f = partial(f_coef, px[x_in], signal[x_in])\n\n        r = minimize_scalar(f)\n\n        b = r.x\n\n        score_b = r.fun\n\n\n\n        feats[i,l,6] = (1.0 - a / b)\n\n\n\n    #for k in range(10):\n\n    #    print(k, prmse(train_labels.values[i], feats[i,:,k]), np.mean(np.abs(train_labels.values[i] - feats[i,:,k])))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T16:24:26.407944Z","iopub.execute_input":"2024-11-07T16:24:26.408429Z","iopub.status.idle":"2024-11-07T18:02:06.680739Z","shell.execute_reply.started":"2024-11-07T16:24:26.408395Z","shell.execute_reply":"2024-11-07T18:02:06.67982Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"for i in range(10):\n\n    print(i, prmse(train_labels.values, feats[...,i]))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T18:02:06.682124Z","iopub.execute_input":"2024-11-07T18:02:06.682808Z","iopub.status.idle":"2024-11-07T18:02:06.703635Z","shell.execute_reply.started":"2024-11-07T18:02:06.682763Z","shell.execute_reply":"2024-11-07T18:02:06.70269Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"for i in range(10):\n\n    print(i, prmse(train_labels.values, feats[...,i]))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T18:02:06.707188Z","iopub.execute_input":"2024-11-07T18:02:06.707512Z","iopub.status.idle":"2024-11-07T18:02:06.724945Z","shell.execute_reply.started":"2024-11-07T18:02:06.707477Z","shell.execute_reply":"2024-11-07T18:02:06.72396Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"np.save('feats_11_two_ns.npy', feats)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T18:02:06.726061Z","iopub.execute_input":"2024-11-07T18:02:06.726482Z","iopub.status.idle":"2024-11-07T18:02:06.743516Z","shell.execute_reply.started":"2024-11-07T18:02:06.726433Z","shell.execute_reply":"2024-11-07T18:02:06.742775Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"#np.save('feats_two_ns.npy', feats)\n\n#feats = np.load('feats_two_ns.npy')\n\nfor i in range(9):\n\n    print(i, prmse(train_labels.values, feats[...,i]))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T18:02:06.744549Z","iopub.execute_input":"2024-11-07T18:02:06.744842Z","iopub.status.idle":"2024-11-07T18:02:06.762458Z","shell.execute_reply.started":"2024-11-07T18:02:06.744811Z","shell.execute_reply":"2024-11-07T18:02:06.761583Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"for i in range(9):\n\n    print(i, prmse(train_labels.values, feats[...,i]))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T18:02:06.763523Z","iopub.execute_input":"2024-11-07T18:02:06.763795Z","iopub.status.idle":"2024-11-07T18:02:06.779492Z","shell.execute_reply.started":"2024-11-07T18:02:06.763766Z","shell.execute_reply":"2024-11-07T18:02:06.778575Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"cnn_train = feats.transpose(0,2,1).copy()\n\nlabels = train_labels.values\n\n\n\ncnn_train[:,:10] = (cnn_train[:,:10] - 0.0025)*1e3\n\nlabels = (labels - 0.0025)*1e3\n\n\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":[],"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T18:02:06.780835Z","iopub.execute_input":"2024-11-07T18:02:06.781191Z","iopub.status.idle":"2024-11-07T18:02:06.803034Z","shell.execute_reply.started":"2024-11-07T18:02:06.78112Z","shell.execute_reply":"2024-11-07T18:02:06.802039Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"labels.std(), cnn_train.std()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T18:02:06.804213Z","iopub.execute_input":"2024-11-07T18:02:06.804542Z","iopub.status.idle":"2024-11-07T18:02:06.820951Z","shell.execute_reply.started":"2024-11-07T18:02:06.804509Z","shell.execute_reply":"2024-11-07T18:02:06.820028Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"plt.plot(cnn_train[0,10,50:80],alpha=0.1)\n\nplt.plot(cnn_train[2,10,50:80],alpha=0.1)\n\nplt.plot(cnn_train[65,10,50:80],alpha=0.1)\n\nplt.plot(cnn_train[210,10,50:80],alpha=0.1)\n\nplt.plot(cnn_train[656,10,50:80],alpha=0.1)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T18:02:06.822194Z","iopub.execute_input":"2024-11-07T18:02:06.822893Z","iopub.status.idle":"2024-11-07T18:02:07.072987Z","shell.execute_reply.started":"2024-11-07T18:02:06.822848Z","shell.execute_reply":"2024-11-07T18:02:07.07212Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import torch\n\nimport torch.nn as nn\n\nimport torch.nn.functional as F\n\n\n\nclass CustomCNN(nn.Module):\n\n    def __init__(self):\n\n        super(CustomCNN, self).__init__()\n\n        \n\n        self.spectra = nn.Sequential(\n\n            nn.Conv1d(11, 256, 3, padding='same', bias=False),\n\n            nn.ReLU(),\n\n            nn.Conv1d(256, 256, 5, padding='same', bias=False),\n\n            nn.ReLU(),\n\n            nn.Conv1d(256, 256, 7, padding='same', bias=False),\n\n            nn.ReLU(),\n\n            nn.Conv1d(256, 256, 9, padding='same', bias=False),\n\n            nn.ReLU(),\n\n            nn.Conv1d(256, 256, 11, padding='same', bias=False),\n\n            nn.ReLU(),\n\n            nn.Conv1d(256, 256, 13, padding='same', bias=False),\n\n            nn.ReLU(),\n\n            nn.Conv1d(256, 1, 1, padding='same', bias=False),\n\n        )\n\n        \n\n        self.spectra200 = nn.Sequential(\n\n            nn.Conv1d(11, 256, 3, padding='same', bias=False),\n\n            nn.ReLU(),\n\n            nn.Conv1d(256, 256, 5, padding='same', bias=False),\n\n            nn.ReLU(),\n\n            nn.Conv1d(256, 256, 7, padding='same', bias=False),\n\n            nn.ReLU(),\n\n            nn.Conv1d(256, 256, 9, padding='same', bias=False),\n\n            nn.ReLU(),\n\n            nn.Conv1d(256, 256, 11, padding='same', bias=False),\n\n            nn.ReLU(),\n\n            nn.Conv1d(256, 256, 13, padding='same', bias=False),\n\n            nn.ReLU(),\n\n            nn.Conv1d(256, 1, 1, padding='same', bias=False),\n\n        )\n\n        \n\n        self.sigma = nn.Sequential(\n\n            nn.Conv1d(1, 32, kernel_size=3, bias=False),\n\n            nn.ReLU(),\n\n            nn.MaxPool1d(kernel_size=2, stride=2),\n\n            nn.Conv1d(32, 64, kernel_size=3, bias=False),\n\n            nn.ReLU(),\n\n            nn.MaxPool1d(kernel_size=2, stride=2),\n\n            nn.Conv1d(64, 128, kernel_size=3, bias=False),\n\n            nn.ReLU(),\n\n            nn.MaxPool1d(kernel_size=2, stride=2),\n\n            nn.Flatten()\n\n        )\n\n        \n\n        # Вычисляем размер выхода после сверток и пулинга\n\n        self._to_linear = None\n\n        self._get_conv_output((1, 283))\n\n        \n\n        # Полносвязные слои\n\n        self.sigma_out = nn.Linear(self._to_linear, 1)\n\n        \n\n    def _get_conv_output(self, shape):\n\n        batch_size = 1\n\n        input = torch.autograd.Variable(torch.rand(batch_size, *shape))\n\n        output = self.sigma(input)\n\n        self._to_linear = int(torch.numel(output) / batch_size)\n\n    \n\n    def forward(self, x_in):\n\n        \n\n        x1 = self.spectra(x_in[:,:11,:221])\n\n        x2 = self.spectra200(x_in[:,:11,200-21:])\n\n        x = torch.cat([x1[:,:,:200],x2[:,:,-83:]], dim=-1)\n\n        spectrum = torch.flatten(x, start_dim=1)\n\n        #y = torch.cat([x_in[:,7:], x-x_in[:,:1,:]], dim=1)\n\n        y = x-x_in[:,:1,:]\n\n        sigma = self.sigma_out(self.sigma(y))\n\n        \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":[],"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T18:06:56.537261Z","iopub.execute_input":"2024-11-07T18:06:56.537958Z","iopub.status.idle":"2024-11-07T18:06:56.556672Z","shell.execute_reply.started":"2024-11-07T18:06:56.537921Z","shell.execute_reply":"2024-11-07T18:06:56.555629Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from sklearn.model_selection import KFold\n\n\n\nkf = KFold(n_splits=5)\n\nX = list(range(len(full_train)))\n\n\n\nmean_pred = np.zeros_like(train_labels.values)\n\nmean_sigma = np.zeros_like(train_labels.values)\n\n\n\nl2loss = nn.MSELoss()\n\ngsloss = nn.GaussianNLLLoss(eps=1e-6)\n\n\n\n\n\ndef create_mean_model():\n\n    model = CustomCNN()\n\n    return model\n\n\n\nfor ifold, (train_index, test_index) in enumerate(kf.split(X)):\n\n    train_x = torch.from_numpy(cnn_train[train_index]).float()\n\n    train_y = torch.from_numpy(labels[train_index]).float() \n\n    train_dataset = torch.utils.data.TensorDataset(train_x, train_y)\n\n    training_loader = torch.utils.data.DataLoader(train_dataset, batch_size=16, shuffle=True)\n\n\n\n    val_x = torch.from_numpy(cnn_train[test_index]).float()\n\n    val_y = torch.from_numpy(labels[test_index]).float() \n\n    val_dataset = torch.utils.data.TensorDataset(val_x, val_y)\n\n    validation_loader = torch.utils.data.DataLoader(val_dataset, batch_size=16, shuffle=False)\n\n    \n\n    model = create_mean_model().cuda()\n\n\n\n    best_metric = 0\n\n    total_train_losses = []\n\n\n\n    optimizer = torch.optim.AdamW(model.parameters(), lr=0.0003)\n\n    scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, 200, eta_min=0, last_epoch=-1)\n\n    for epoch in range(200):\n\n        ep_losses = []        \n\n        model.train()\n\n        for i, data in enumerate(training_loader):\n\n            # Every data instance is an input + label pair\n\n            inputs, tlabels = data\n\n\n\n            #z = torch.randn_like(inputs) * 1e-5\n\n            #u = (torch.rand_like(inputs) > 0.8).float()\n\n            #inputs += z*u \n\n\n\n            # Zero your gradients for every batch!\n\n            optimizer.zero_grad()\n\n\n\n            # Make predictions for this batch\n\n            outputs, sigma = model(inputs.cuda())\n\n            \n\n            # Compute the loss and its gradients\n\n            #loss1 = l2loss(outputs, tlabels.cuda())            \n\n            #mean_diff = torch.mean((outputs - tlabels.cuda()) ** 2.0, dim=1, keepdims=True)\n\n            #loss2 = F.smooth_l1_loss(sigma * 1e-3, mean_diff)\n\n            #print(sigma.shape, mean_diff.shape)\n\n            #loss = loss1 + loss2\n\n            loss = gsloss(outputs, tlabels.cuda(), sigma.abs() * 1e-3)            \n\n            loss.backward()\n\n\n\n            torch.nn.utils.clip_grad_norm_(model.parameters(), 1e3)\n\n            # Adjust learning weights\n\n            optimizer.step()\n\n\n\n            # Gather data and report\n\n            #print(epoch, i, loss.item())\n\n            ep_losses.append(loss.item())\n\n\n\n        avg_loss = np.mean(ep_losses)\n\n        total_train_losses.append(avg_loss)\n\n        scheduler.step()\n\n\n\n    model.eval()\n\n    running_vloss = 0\n\n    preds = np.zeros((len(val_dataset), 283))\n\n    ss = np.zeros((len(val_dataset), 283))\n\n    v_offset = 0\n\n    with torch.no_grad():        \n\n        for i, vdata in enumerate(validation_loader):\n\n            vinputs, vlabels = vdata\n\n            voutputs, vsigma = model(vinputs.cuda())\n\n            preds[v_offset:v_offset+len(vinputs)] = voutputs.detach().cpu().numpy() * 1e-3 + 0.0025\n\n            ss[v_offset:v_offset+len(vinputs)] = (vsigma.abs().detach().cpu().numpy() * 1e-3) ** 0.5 * 1e-3\n\n            vloss = l2loss(voutputs, vlabels.cuda())\n\n            running_vloss += vloss\n\n            v_offset += len(vinputs)\n\n\n\n    avg_vloss = running_vloss / (i + 1)\n\n\n\n    metric1 = prmse(train_labels.values[test_index], preds)\n\n    metric = ariel_score(train_labels.values[test_index],\n\n            np.concatenate([preds.clip(0), ss.clip(0)], axis=1),    \n\n            train_labels.values[train_index].mean(),\n\n            train_labels.values[train_index].std(),\n\n            sigma_true=1e-5)\n\n\n\n    print('fold {} epoch {} train {} valid {} rmse {} ariel {}'.format(ifold, epoch, \n\n                                                                round(avg_loss,6), \n\n                                                                round(avg_vloss.item(),6), \n\n                                                                round(metric1,6),\n\n                                                                round(metric,6)\n\n                                                               ))\n\n\n\n        \n\n    mean_pred[test_index] = preds\n\n    mean_sigma[test_index] = ss\n\n    torch.save(model.state_dict(), 'f11_wide_pdf_{}'.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":[],"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T18:10:04.262303Z","iopub.execute_input":"2024-11-07T18:10:04.262964Z","iopub.status.idle":"2024-11-07T18:24:02.301336Z","shell.execute_reply.started":"2024-11-07T18:10:04.262922Z","shell.execute_reply":"2024-11-07T18:24:02.300404Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"for ifold, (train_index, test_index) in enumerate(kf.split(X)):\n    if ifold != 1:\n        continue\n\n    train_x = torch.from_numpy(cnn_train[train_index]).float()\n\n    train_y = torch.from_numpy(labels[train_index]).float() \n\n    train_dataset = torch.utils.data.TensorDataset(train_x, train_y)\n\n    training_loader = torch.utils.data.DataLoader(train_dataset, batch_size=16, shuffle=True)\n\n\n\n    val_x = torch.from_numpy(cnn_train[test_index]).float()\n\n    val_y = torch.from_numpy(labels[test_index]).float() \n\n    val_dataset = torch.utils.data.TensorDataset(val_x, val_y)\n\n    validation_loader = torch.utils.data.DataLoader(val_dataset, batch_size=16, shuffle=False)\n\n    \n\n    model = create_mean_model().cuda()\n\n\n\n    best_metric = 0\n\n    total_train_losses = []\n\n\n\n    optimizer = torch.optim.AdamW(model.parameters(), lr=0.0003)\n\n    scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, 200, eta_min=0, last_epoch=-1)\n\n    for epoch in range(200):\n\n        ep_losses = []        \n\n        model.train()\n\n        for i, data in enumerate(training_loader):\n\n            # Every data instance is an input + label pair\n\n            inputs, tlabels = data\n\n\n\n            #z = torch.randn_like(inputs) * 1e-5\n\n            #u = (torch.rand_like(inputs) > 0.8).float()\n\n            #inputs += z*u \n\n\n\n            # Zero your gradients for every batch!\n\n            optimizer.zero_grad()\n\n\n\n            # Make predictions for this batch\n\n            outputs, sigma = model(inputs.cuda())\n\n            \n\n            # Compute the loss and its gradients\n\n            #loss1 = l2loss(outputs, tlabels.cuda())            \n\n            #mean_diff = torch.mean((outputs - tlabels.cuda()) ** 2.0, dim=1, keepdims=True)\n\n            #loss2 = F.smooth_l1_loss(sigma * 1e-3, mean_diff)\n\n            #print(sigma.shape, mean_diff.shape)\n\n            #loss = loss1 + loss2\n\n            loss = gsloss(outputs, tlabels.cuda(), sigma.abs() * 1e-3)            \n\n            loss.backward()\n\n\n\n            torch.nn.utils.clip_grad_norm_(model.parameters(), 1e3)\n\n            # Adjust learning weights\n\n            optimizer.step()\n\n\n\n            # Gather data and report\n\n            #print(epoch, i, loss.item())\n\n            ep_losses.append(loss.item())\n\n\n\n        avg_loss = np.mean(ep_losses)\n\n        total_train_losses.append(avg_loss)\n\n        scheduler.step()\n\n\n\n    model.eval()\n\n    running_vloss = 0\n\n    preds = np.zeros((len(val_dataset), 283))\n\n    ss = np.zeros((len(val_dataset), 283))\n\n    v_offset = 0\n\n    with torch.no_grad():        \n\n        for i, vdata in enumerate(validation_loader):\n\n            vinputs, vlabels = vdata\n\n            voutputs, vsigma = model(vinputs.cuda())\n\n            preds[v_offset:v_offset+len(vinputs)] = voutputs.detach().cpu().numpy() * 1e-3 + 0.0025\n\n            ss[v_offset:v_offset+len(vinputs)] = (vsigma.abs().detach().cpu().numpy() * 1e-3) ** 0.5 * 1e-3\n\n            vloss = l2loss(voutputs, vlabels.cuda())\n\n            running_vloss += vloss\n\n            v_offset += len(vinputs)\n\n\n\n    avg_vloss = running_vloss / (i + 1)\n\n\n\n    metric1 = prmse(train_labels.values[test_index], preds)\n\n    metric = ariel_score(train_labels.values[test_index],\n\n            np.concatenate([preds.clip(0), ss.clip(0)], axis=1),    \n\n            train_labels.values[train_index].mean(),\n\n            train_labels.values[train_index].std(),\n\n            sigma_true=1e-5)\n\n\n\n    print('fold {} epoch {} train {} valid {} rmse {} ariel {}'.format(ifold, epoch, \n\n                                                                round(avg_loss,6), \n\n                                                                round(avg_vloss.item(),6), \n\n                                                                round(metric1,6),\n\n                                                                round(metric,6)\n\n                                                               ))\n\n\n\n        \n\n    mean_pred[test_index] = preds\n\n    mean_sigma[test_index] = ss\n\n    torch.save(model.state_dict(), 'f11_wide_pdf_{}'.format(ifold))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T18:24:07.458272Z","iopub.execute_input":"2024-11-07T18:24:07.458881Z","iopub.status.idle":"2024-11-07T18:26:54.960257Z","shell.execute_reply.started":"2024-11-07T18:24:07.45884Z","shell.execute_reply":"2024-11-07T18:26:54.959259Z"}},"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":[],"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T18:26:54.961976Z","iopub.execute_input":"2024-11-07T18:26:54.96231Z","iopub.status.idle":"2024-11-07T18:26:54.969408Z","shell.execute_reply.started":"2024-11-07T18:26:54.962277Z","shell.execute_reply":"2024-11-07T18:26:54.968523Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"sigma = mean_sigma.copy()\n\nsigma[mean_pred.max(axis=1)-mean_pred.min(axis=1) > 0.00018] += 2e-5\n\n\n\npreds = mean_pred.copy()\n\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]\n\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]\n\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\n\n\nariel_score(train_labels.values,\n\n            np.concatenate([preds.clip(0), sigma], axis=1),    \n\n            train_labels.values.mean(),\n\n            train_labels.values.std(),\n\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":[],"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T18:26:54.970417Z","iopub.execute_input":"2024-11-07T18:26:54.970709Z","iopub.status.idle":"2024-11-07T18:26:55.043061Z","shell.execute_reply.started":"2024-11-07T18:26:54.970678Z","shell.execute_reply":"2024-11-07T18:26:55.041737Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{},"outputs":[],"execution_count":null},{"cell_type":"code","source":"n = 301\n\nplt.plot(preds[n])\n\nplt.plot(train_labels.values[n])\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":[],"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T18:26:55.046248Z","iopub.execute_input":"2024-11-07T18:26:55.046734Z","iopub.status.idle":"2024-11-07T18:26:55.278701Z","shell.execute_reply.started":"2024-11-07T18:26:55.046678Z","shell.execute_reply":"2024-11-07T18:26:55.277876Z"}},"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":"np.save('feats_11_pdf_crit_1.npy', feats)\n\nnp.save('preds_11_pdf_crit_1.npy', mean_pred)\n\nnp.save('sigma_11_pdf_crit_1.npy', mean_sigma)","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":[],"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T18:26:55.279991Z","iopub.execute_input":"2024-11-07T18:26:55.280425Z","iopub.status.idle":"2024-11-07T18:26:55.301878Z","shell.execute_reply.started":"2024-11-07T18:26:55.280374Z","shell.execute_reply":"2024-11-07T18:26:55.300991Z"}},"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}]}