diff --git a/Workshop3/molcal.ipynb b/Workshop3/molcal.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..f831e5cbaecec30d7124e2fa54c5b28df5217a34
--- /dev/null
+++ b/Workshop3/molcal.ipynb
@@ -0,0 +1,4004 @@
+{
+  "nbformat": 4,
+  "nbformat_minor": 0,
+  "metadata": {
+    "colab": {
+      "provenance": []
+    },
+    "kernelspec": {
+      "name": "python3",
+      "display_name": "Python 3"
+    },
+    "language_info": {
+      "name": "python"
+    },
+    "widgets": {
+      "application/vnd.jupyter.widget-state+json": {
+        "f7321d7b1b9a4dbe905092f388240f23": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HBoxModel",
+          "model_module_version": "1.5.0",
+          "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_79500fbf2f93417796e265786cb54a43",
+              "IPY_MODEL_b755785fab01467cb5989d11385e716c",
+              "IPY_MODEL_c26f6b42e3f348f2a4e161765d99042e"
+            ],
+            "layout": "IPY_MODEL_d7150457f96049c88b5a7e2604670830"
+          }
+        },
+        "79500fbf2f93417796e265786cb54a43": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HTMLModel",
+          "model_module_version": "1.5.0",
+          "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_49a1ca9a00214ab8bf626d1d16f64c75",
+            "placeholder": "​",
+            "style": "IPY_MODEL_ff6205ce16e447368fe2f232db393de0",
+            "value": "Sanity Checking DataLoader 0: 100%"
+          }
+        },
+        "b755785fab01467cb5989d11385e716c": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "FloatProgressModel",
+          "model_module_version": "1.5.0",
+          "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": "",
+            "description": "",
+            "description_tooltip": null,
+            "layout": "IPY_MODEL_5ecf53db53174e2c86358541bc4f1a2b",
+            "max": 2,
+            "min": 0,
+            "orientation": "horizontal",
+            "style": "IPY_MODEL_db1985753e164a188e96db0188528d22",
+            "value": 2
+          }
+        },
+        "c26f6b42e3f348f2a4e161765d99042e": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HTMLModel",
+          "model_module_version": "1.5.0",
+          "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_14ad15cdf67047879b38fcb976c793a7",
+            "placeholder": "​",
+            "style": "IPY_MODEL_690367a2eeee4bb9bedc20effdc450b3",
+            "value": " 2/2 [00:00<00:00,  4.32it/s]"
+          }
+        },
+        "d7150457f96049c88b5a7e2604670830": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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": "inline-flex",
+            "flex": null,
+            "flex_flow": "row wrap",
+            "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": "hidden",
+            "width": "100%"
+          }
+        },
+        "49a1ca9a00214ab8bf626d1d16f64c75": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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
+          }
+        },
+        "ff6205ce16e447368fe2f232db393de0": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "DescriptionStyleModel",
+          "model_module_version": "1.5.0",
+          "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": ""
+          }
+        },
+        "5ecf53db53174e2c86358541bc4f1a2b": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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": "2",
+            "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
+          }
+        },
+        "db1985753e164a188e96db0188528d22": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "ProgressStyleModel",
+          "model_module_version": "1.5.0",
+          "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": ""
+          }
+        },
+        "14ad15cdf67047879b38fcb976c793a7": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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
+          }
+        },
+        "690367a2eeee4bb9bedc20effdc450b3": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "DescriptionStyleModel",
+          "model_module_version": "1.5.0",
+          "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": ""
+          }
+        },
+        "56705796817d43028c6eddfefc18336f": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HBoxModel",
+          "model_module_version": "1.5.0",
+          "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_d80bf4bdb76149b68e674b2ee649626c",
+              "IPY_MODEL_867bb34bd9534aa39c85c07fe3f92f4e",
+              "IPY_MODEL_dffbbe151dd34200beff08eafd98a380"
+            ],
+            "layout": "IPY_MODEL_f0507d80a2c74d53b4963130af706fb8"
+          }
+        },
+        "d80bf4bdb76149b68e674b2ee649626c": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HTMLModel",
+          "model_module_version": "1.5.0",
+          "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_79fcd95516f44348a313203b209e0dbb",
+            "placeholder": "​",
+            "style": "IPY_MODEL_5393fa5795634e8ba5603785421b4b7e",
+            "value": "Epoch 4: 100%"
+          }
+        },
+        "867bb34bd9534aa39c85c07fe3f92f4e": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "FloatProgressModel",
+          "model_module_version": "1.5.0",
+          "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_629aa27bc05e4b6890c0457d57175e57",
+            "max": 218,
+            "min": 0,
+            "orientation": "horizontal",
+            "style": "IPY_MODEL_39c9bef36079445199e8b9b4c310a207",
+            "value": 218
+          }
+        },
+        "dffbbe151dd34200beff08eafd98a380": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HTMLModel",
+          "model_module_version": "1.5.0",
+          "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_2abee34399b5404f8aa2d13ca1f8a0a1",
+            "placeholder": "​",
+            "style": "IPY_MODEL_82c48b8ef01b462d9df631e9d172316b",
+            "value": " 218/218 [01:03<00:00,  3.43it/s, v_num=0, val_Total_Loss=0.0667, val_MAE=0.169, val_RMSE=0.251, train_Total_Loss=0.0663, train_MAE=0.169, train_RMSE=0.251]"
+          }
+        },
+        "f0507d80a2c74d53b4963130af706fb8": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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": "inline-flex",
+            "flex": null,
+            "flex_flow": "row wrap",
+            "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": "100%"
+          }
+        },
+        "79fcd95516f44348a313203b209e0dbb": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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
+          }
+        },
+        "5393fa5795634e8ba5603785421b4b7e": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "DescriptionStyleModel",
+          "model_module_version": "1.5.0",
+          "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": ""
+          }
+        },
+        "629aa27bc05e4b6890c0457d57175e57": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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": "2",
+            "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
+          }
+        },
+        "39c9bef36079445199e8b9b4c310a207": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "ProgressStyleModel",
+          "model_module_version": "1.5.0",
+          "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": ""
+          }
+        },
+        "2abee34399b5404f8aa2d13ca1f8a0a1": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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
+          }
+        },
+        "82c48b8ef01b462d9df631e9d172316b": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "DescriptionStyleModel",
+          "model_module_version": "1.5.0",
+          "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": ""
+          }
+        },
+        "73653ee65cde4122ba0268dabc34f827": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HBoxModel",
+          "model_module_version": "1.5.0",
+          "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_b96935fe7dea45859703dcd49a3b1f52",
+              "IPY_MODEL_d94c1dbd52b44ae9b9e565e44f691e05",
+              "IPY_MODEL_a2ae7f36742049ab9980e60fc1014d86"
+            ],
+            "layout": "IPY_MODEL_bb160cdca74641a088df5ba8445517cc"
+          }
+        },
+        "b96935fe7dea45859703dcd49a3b1f52": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HTMLModel",
+          "model_module_version": "1.5.0",
+          "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_02b5bd9111e14cc2acb3ca61bbd7878d",
+            "placeholder": "​",
+            "style": "IPY_MODEL_cb9e5e4447c64dcc950f0f9b6f64eacd",
+            "value": "Validation DataLoader 0: 100%"
+          }
+        },
+        "d94c1dbd52b44ae9b9e565e44f691e05": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "FloatProgressModel",
+          "model_module_version": "1.5.0",
+          "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": "",
+            "description": "",
+            "description_tooltip": null,
+            "layout": "IPY_MODEL_02f73d2307e0464aadeb4e728ea98f6b",
+            "max": 73,
+            "min": 0,
+            "orientation": "horizontal",
+            "style": "IPY_MODEL_df300bb1205d4ccf90ade86c1197a971",
+            "value": 73
+          }
+        },
+        "a2ae7f36742049ab9980e60fc1014d86": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HTMLModel",
+          "model_module_version": "1.5.0",
+          "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_2a15f542acf8406b890f4b1d4063446a",
+            "placeholder": "​",
+            "style": "IPY_MODEL_c45569e490c74ca996fee25f8bd31cdf",
+            "value": " 73/73 [00:09<00:00,  7.85it/s]"
+          }
+        },
+        "bb160cdca74641a088df5ba8445517cc": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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": "inline-flex",
+            "flex": null,
+            "flex_flow": "row wrap",
+            "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": "hidden",
+            "width": "100%"
+          }
+        },
+        "02b5bd9111e14cc2acb3ca61bbd7878d": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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
+          }
+        },
+        "cb9e5e4447c64dcc950f0f9b6f64eacd": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "DescriptionStyleModel",
+          "model_module_version": "1.5.0",
+          "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": ""
+          }
+        },
+        "02f73d2307e0464aadeb4e728ea98f6b": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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": "2",
+            "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
+          }
+        },
+        "df300bb1205d4ccf90ade86c1197a971": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "ProgressStyleModel",
+          "model_module_version": "1.5.0",
+          "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": ""
+          }
+        },
+        "2a15f542acf8406b890f4b1d4063446a": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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
+          }
+        },
+        "c45569e490c74ca996fee25f8bd31cdf": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "DescriptionStyleModel",
+          "model_module_version": "1.5.0",
+          "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": ""
+          }
+        },
+        "d79c6b456ffb4289921288199c1a5e93": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HBoxModel",
+          "model_module_version": "1.5.0",
+          "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_74559eacbf754aec8abd39be4ce5948b",
+              "IPY_MODEL_3d9ca4d6a78b4be388d47a2c26a2d534",
+              "IPY_MODEL_1abde559f901468aa22132e3e7ded2c6"
+            ],
+            "layout": "IPY_MODEL_589dc33928254b279a9561a9f0e1edd2"
+          }
+        },
+        "74559eacbf754aec8abd39be4ce5948b": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HTMLModel",
+          "model_module_version": "1.5.0",
+          "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_543ce0246d5d4f26b149f57170032644",
+            "placeholder": "​",
+            "style": "IPY_MODEL_68c82105b3f04b00bdbb4b7bc31d0db5",
+            "value": "Validation DataLoader 0: 100%"
+          }
+        },
+        "3d9ca4d6a78b4be388d47a2c26a2d534": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "FloatProgressModel",
+          "model_module_version": "1.5.0",
+          "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": "",
+            "description": "",
+            "description_tooltip": null,
+            "layout": "IPY_MODEL_a2b86afdb6fd4447abd6a782ec961e7b",
+            "max": 73,
+            "min": 0,
+            "orientation": "horizontal",
+            "style": "IPY_MODEL_3bcbe7eb46c1470d91c137937ca29cb6",
+            "value": 73
+          }
+        },
+        "1abde559f901468aa22132e3e7ded2c6": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HTMLModel",
+          "model_module_version": "1.5.0",
+          "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_f7255b3f29b740339a4bfa0419d46114",
+            "placeholder": "​",
+            "style": "IPY_MODEL_66b0e7e3d46248c3b6fed1687ec424ac",
+            "value": " 73/73 [00:09<00:00,  7.64it/s]"
+          }
+        },
+        "589dc33928254b279a9561a9f0e1edd2": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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": "inline-flex",
+            "flex": null,
+            "flex_flow": "row wrap",
+            "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": "hidden",
+            "width": "100%"
+          }
+        },
+        "543ce0246d5d4f26b149f57170032644": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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
+          }
+        },
+        "68c82105b3f04b00bdbb4b7bc31d0db5": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "DescriptionStyleModel",
+          "model_module_version": "1.5.0",
+          "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": ""
+          }
+        },
+        "a2b86afdb6fd4447abd6a782ec961e7b": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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": "2",
+            "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
+          }
+        },
+        "3bcbe7eb46c1470d91c137937ca29cb6": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "ProgressStyleModel",
+          "model_module_version": "1.5.0",
+          "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": ""
+          }
+        },
+        "f7255b3f29b740339a4bfa0419d46114": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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
+          }
+        },
+        "66b0e7e3d46248c3b6fed1687ec424ac": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "DescriptionStyleModel",
+          "model_module_version": "1.5.0",
+          "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": ""
+          }
+        },
+        "3b8db07a150a4f058a540e5d584a981c": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HBoxModel",
+          "model_module_version": "1.5.0",
+          "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_c51ffc590efd48988bc043157000c46d",
+              "IPY_MODEL_0bc1b357649b490696dc0498590c2253",
+              "IPY_MODEL_b8ed08a8827440e5944221ee4e577a22"
+            ],
+            "layout": "IPY_MODEL_9bf98247ac654ced921ccb3f59029f46"
+          }
+        },
+        "c51ffc590efd48988bc043157000c46d": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HTMLModel",
+          "model_module_version": "1.5.0",
+          "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_4abf302ed171414e9a4204d72e84af21",
+            "placeholder": "​",
+            "style": "IPY_MODEL_1dc96decbde849fc9750042eabc26918",
+            "value": "Validation DataLoader 0: 100%"
+          }
+        },
+        "0bc1b357649b490696dc0498590c2253": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "FloatProgressModel",
+          "model_module_version": "1.5.0",
+          "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": "",
+            "description": "",
+            "description_tooltip": null,
+            "layout": "IPY_MODEL_ef2d223473fd466e83ea73541e50b114",
+            "max": 73,
+            "min": 0,
+            "orientation": "horizontal",
+            "style": "IPY_MODEL_9f3e170ad77d494785fb4a1827472873",
+            "value": 73
+          }
+        },
+        "b8ed08a8827440e5944221ee4e577a22": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HTMLModel",
+          "model_module_version": "1.5.0",
+          "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_cbd1497f4a404b649052068a93025e31",
+            "placeholder": "​",
+            "style": "IPY_MODEL_0b7acd53e36347b38de1e31a244bd484",
+            "value": " 73/73 [00:09<00:00,  7.69it/s]"
+          }
+        },
+        "9bf98247ac654ced921ccb3f59029f46": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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": "inline-flex",
+            "flex": null,
+            "flex_flow": "row wrap",
+            "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": "hidden",
+            "width": "100%"
+          }
+        },
+        "4abf302ed171414e9a4204d72e84af21": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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
+          }
+        },
+        "1dc96decbde849fc9750042eabc26918": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "DescriptionStyleModel",
+          "model_module_version": "1.5.0",
+          "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": ""
+          }
+        },
+        "ef2d223473fd466e83ea73541e50b114": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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": "2",
+            "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
+          }
+        },
+        "9f3e170ad77d494785fb4a1827472873": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "ProgressStyleModel",
+          "model_module_version": "1.5.0",
+          "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": ""
+          }
+        },
+        "cbd1497f4a404b649052068a93025e31": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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
+          }
+        },
+        "0b7acd53e36347b38de1e31a244bd484": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "DescriptionStyleModel",
+          "model_module_version": "1.5.0",
+          "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": ""
+          }
+        },
+        "8f22afc4e41a45f28fb1c81f37c554fc": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HBoxModel",
+          "model_module_version": "1.5.0",
+          "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_629f5065fec04c039ce71a88aca28ac7",
+              "IPY_MODEL_3671f10fdae141cb9e0a47cc1db97210",
+              "IPY_MODEL_50f79d64fa0a4b94b24b5c7a06e0af12"
+            ],
+            "layout": "IPY_MODEL_4fd6b3e353ad4fb4af11ca5985e1bfe5"
+          }
+        },
+        "629f5065fec04c039ce71a88aca28ac7": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HTMLModel",
+          "model_module_version": "1.5.0",
+          "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_693131233ec241bcb7ddbe8a8e1ff2e0",
+            "placeholder": "​",
+            "style": "IPY_MODEL_73eed7e431de45f091117115ed11dbe5",
+            "value": "Validation DataLoader 0: 100%"
+          }
+        },
+        "3671f10fdae141cb9e0a47cc1db97210": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "FloatProgressModel",
+          "model_module_version": "1.5.0",
+          "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": "",
+            "description": "",
+            "description_tooltip": null,
+            "layout": "IPY_MODEL_7b94ecf3158748728de903d980e18c38",
+            "max": 73,
+            "min": 0,
+            "orientation": "horizontal",
+            "style": "IPY_MODEL_43d879e9907b43f6a800861eae99e048",
+            "value": 73
+          }
+        },
+        "50f79d64fa0a4b94b24b5c7a06e0af12": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HTMLModel",
+          "model_module_version": "1.5.0",
+          "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_4f99d7a4c905449db8ed0f8061a485b8",
+            "placeholder": "​",
+            "style": "IPY_MODEL_d54dea38ba5449de89353102e31c9214",
+            "value": " 73/73 [00:08<00:00,  8.39it/s]"
+          }
+        },
+        "4fd6b3e353ad4fb4af11ca5985e1bfe5": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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": "inline-flex",
+            "flex": null,
+            "flex_flow": "row wrap",
+            "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": "hidden",
+            "width": "100%"
+          }
+        },
+        "693131233ec241bcb7ddbe8a8e1ff2e0": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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
+          }
+        },
+        "73eed7e431de45f091117115ed11dbe5": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "DescriptionStyleModel",
+          "model_module_version": "1.5.0",
+          "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": ""
+          }
+        },
+        "7b94ecf3158748728de903d980e18c38": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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": "2",
+            "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
+          }
+        },
+        "43d879e9907b43f6a800861eae99e048": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "ProgressStyleModel",
+          "model_module_version": "1.5.0",
+          "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": ""
+          }
+        },
+        "4f99d7a4c905449db8ed0f8061a485b8": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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
+          }
+        },
+        "d54dea38ba5449de89353102e31c9214": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "DescriptionStyleModel",
+          "model_module_version": "1.5.0",
+          "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": ""
+          }
+        },
+        "21db824539da4758a8aa5c6351949cc5": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HBoxModel",
+          "model_module_version": "1.5.0",
+          "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_73ae5b95afc24ba2bebdcdf077ec7c43",
+              "IPY_MODEL_7112ceeb185f424a95b08454ee688b18",
+              "IPY_MODEL_dd06ea396d3c4faeba71a50f77b75701"
+            ],
+            "layout": "IPY_MODEL_d5ab3316f9754baa80a985abfc27b64d"
+          }
+        },
+        "73ae5b95afc24ba2bebdcdf077ec7c43": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HTMLModel",
+          "model_module_version": "1.5.0",
+          "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_0d2671b5646542419e45f1311d8993c3",
+            "placeholder": "​",
+            "style": "IPY_MODEL_df51d44724d64c0ca5c127afdf373ac7",
+            "value": "Validation DataLoader 0: 100%"
+          }
+        },
+        "7112ceeb185f424a95b08454ee688b18": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "FloatProgressModel",
+          "model_module_version": "1.5.0",
+          "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": "",
+            "description": "",
+            "description_tooltip": null,
+            "layout": "IPY_MODEL_2fd82da052dd482eab2679261b5c0f3f",
+            "max": 73,
+            "min": 0,
+            "orientation": "horizontal",
+            "style": "IPY_MODEL_e5a739d5069f4e0db2cca257a96bf97a",
+            "value": 73
+          }
+        },
+        "dd06ea396d3c4faeba71a50f77b75701": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "HTMLModel",
+          "model_module_version": "1.5.0",
+          "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_00a869694a674b6c842722a59cb8da12",
+            "placeholder": "​",
+            "style": "IPY_MODEL_8dd15ab4f07246a2b263fdf29c1656f9",
+            "value": " 73/73 [00:11<00:00,  6.63it/s]"
+          }
+        },
+        "d5ab3316f9754baa80a985abfc27b64d": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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": "inline-flex",
+            "flex": null,
+            "flex_flow": "row wrap",
+            "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": "hidden",
+            "width": "100%"
+          }
+        },
+        "0d2671b5646542419e45f1311d8993c3": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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
+          }
+        },
+        "df51d44724d64c0ca5c127afdf373ac7": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "DescriptionStyleModel",
+          "model_module_version": "1.5.0",
+          "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": ""
+          }
+        },
+        "2fd82da052dd482eab2679261b5c0f3f": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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": "2",
+            "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
+          }
+        },
+        "e5a739d5069f4e0db2cca257a96bf97a": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "ProgressStyleModel",
+          "model_module_version": "1.5.0",
+          "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": ""
+          }
+        },
+        "00a869694a674b6c842722a59cb8da12": {
+          "model_module": "@jupyter-widgets/base",
+          "model_name": "LayoutModel",
+          "model_module_version": "1.2.0",
+          "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
+          }
+        },
+        "8dd15ab4f07246a2b263fdf29c1656f9": {
+          "model_module": "@jupyter-widgets/controls",
+          "model_name": "DescriptionStyleModel",
+          "model_module_version": "1.5.0",
+          "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": ""
+          }
+        }
+      }
+    }
+  },
+  "cells": [
+    {
+      "cell_type": "code",
+      "execution_count": 1,
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/"
+        },
+        "id": "bV_P-WaWFxQo",
+        "outputId": "9d4c2445-eaca-4197-a56d-5180a554564f"
+      },
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Collecting jarvis-tools\n",
+            "  Downloading jarvis_tools-2024.10.10-py2.py3-none-any.whl.metadata (3.1 kB)\n",
+            "Requirement already satisfied: numpy>=1.20.1 in /usr/local/lib/python3.10/dist-packages (from jarvis-tools) (1.26.4)\n",
+            "Requirement already satisfied: scipy>=1.5.0 in /usr/local/lib/python3.10/dist-packages (from jarvis-tools) (1.13.1)\n",
+            "Requirement already satisfied: matplotlib>=3.0.0 in /usr/local/lib/python3.10/dist-packages (from jarvis-tools) (3.8.0)\n",
+            "Requirement already satisfied: joblib>=0.14.1 in /usr/local/lib/python3.10/dist-packages (from jarvis-tools) (1.4.2)\n",
+            "Requirement already satisfied: requests>=2.23.0 in /usr/local/lib/python3.10/dist-packages (from jarvis-tools) (2.32.3)\n",
+            "Requirement already satisfied: toolz>=0.9.0 in /usr/local/lib/python3.10/dist-packages (from jarvis-tools) (0.12.1)\n",
+            "Collecting xmltodict>=0.11.0 (from jarvis-tools)\n",
+            "  Downloading xmltodict-0.14.2-py2.py3-none-any.whl.metadata (8.0 kB)\n",
+            "Requirement already satisfied: tqdm>=4.41.1 in /usr/local/lib/python3.10/dist-packages (from jarvis-tools) (4.66.6)\n",
+            "Requirement already satisfied: scikit-learn in /usr/local/lib/python3.10/dist-packages (from jarvis-tools) (1.5.2)\n",
+            "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.0.0->jarvis-tools) (1.3.0)\n",
+            "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.0.0->jarvis-tools) (0.12.1)\n",
+            "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.0.0->jarvis-tools) (4.54.1)\n",
+            "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.0.0->jarvis-tools) (1.4.7)\n",
+            "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.0.0->jarvis-tools) (24.1)\n",
+            "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.0.0->jarvis-tools) (10.4.0)\n",
+            "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.0.0->jarvis-tools) (3.2.0)\n",
+            "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.0.0->jarvis-tools) (2.8.2)\n",
+            "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.23.0->jarvis-tools) (3.4.0)\n",
+            "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.23.0->jarvis-tools) (3.10)\n",
+            "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.23.0->jarvis-tools) (2.2.3)\n",
+            "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.23.0->jarvis-tools) (2024.8.30)\n",
+            "Requirement already satisfied: threadpoolctl>=3.1.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn->jarvis-tools) (3.5.0)\n",
+            "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib>=3.0.0->jarvis-tools) (1.16.0)\n",
+            "Downloading jarvis_tools-2024.10.10-py2.py3-none-any.whl (4.2 MB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m4.2/4.2 MB\u001b[0m \u001b[31m19.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading xmltodict-0.14.2-py2.py3-none-any.whl (10.0 kB)\n",
+            "Installing collected packages: xmltodict, jarvis-tools\n",
+            "Successfully installed jarvis-tools-2024.10.10 xmltodict-0.14.2\n"
+          ]
+        }
+      ],
+      "source": [
+        "!pip install jarvis-tools"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        " !pip3 install pymatgen"
+      ],
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/"
+        },
+        "id": "q-pMYyCvF4Cq",
+        "outputId": "ccf55b22-b816-4581-e1d6-13d8e2a9cdee"
+      },
+      "execution_count": 2,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Collecting pymatgen\n",
+            "  Downloading pymatgen-2024.10.29-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (13 kB)\n",
+            "Requirement already satisfied: joblib>=1 in /usr/local/lib/python3.10/dist-packages (from pymatgen) (1.4.2)\n",
+            "Requirement already satisfied: matplotlib>=3.8 in /usr/local/lib/python3.10/dist-packages (from pymatgen) (3.8.0)\n",
+            "Collecting monty>=2024.7.29 (from pymatgen)\n",
+            "  Downloading monty-2024.10.21-py3-none-any.whl.metadata (3.6 kB)\n",
+            "Requirement already satisfied: networkx>=3 in /usr/local/lib/python3.10/dist-packages (from pymatgen) (3.4.2)\n",
+            "Collecting palettable>=3.3.3 (from pymatgen)\n",
+            "  Downloading palettable-3.3.3-py2.py3-none-any.whl.metadata (3.3 kB)\n",
+            "Requirement already satisfied: pandas>=2 in /usr/local/lib/python3.10/dist-packages (from pymatgen) (2.2.2)\n",
+            "Requirement already satisfied: plotly>=4.5.0 in /usr/local/lib/python3.10/dist-packages (from pymatgen) (5.24.1)\n",
+            "Collecting pybtex>=0.24.0 (from pymatgen)\n",
+            "  Downloading pybtex-0.24.0-py2.py3-none-any.whl.metadata (2.0 kB)\n",
+            "Requirement already satisfied: requests>=2.32 in /usr/local/lib/python3.10/dist-packages (from pymatgen) (2.32.3)\n",
+            "Collecting ruamel.yaml>=0.17.0 (from pymatgen)\n",
+            "  Downloading ruamel.yaml-0.18.6-py3-none-any.whl.metadata (23 kB)\n",
+            "Requirement already satisfied: scipy>=1.13.0 in /usr/local/lib/python3.10/dist-packages (from pymatgen) (1.13.1)\n",
+            "Collecting spglib>=2.5.0 (from pymatgen)\n",
+            "  Downloading spglib-2.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.2 kB)\n",
+            "Requirement already satisfied: sympy>=1.2 in /usr/local/lib/python3.10/dist-packages (from pymatgen) (1.13.1)\n",
+            "Requirement already satisfied: tabulate>=0.9 in /usr/local/lib/python3.10/dist-packages (from pymatgen) (0.9.0)\n",
+            "Requirement already satisfied: tqdm>=4.60 in /usr/local/lib/python3.10/dist-packages (from pymatgen) (4.66.6)\n",
+            "Collecting uncertainties>=3.1.4 (from pymatgen)\n",
+            "  Downloading uncertainties-3.2.2-py3-none-any.whl.metadata (6.9 kB)\n",
+            "Requirement already satisfied: numpy<3,>=1.25.0 in /usr/local/lib/python3.10/dist-packages (from pymatgen) (1.26.4)\n",
+            "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.8->pymatgen) (1.3.0)\n",
+            "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.8->pymatgen) (0.12.1)\n",
+            "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.8->pymatgen) (4.54.1)\n",
+            "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.8->pymatgen) (1.4.7)\n",
+            "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.8->pymatgen) (24.1)\n",
+            "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.8->pymatgen) (10.4.0)\n",
+            "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.8->pymatgen) (3.2.0)\n",
+            "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.8->pymatgen) (2.8.2)\n",
+            "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas>=2->pymatgen) (2024.2)\n",
+            "Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.10/dist-packages (from pandas>=2->pymatgen) (2024.2)\n",
+            "Requirement already satisfied: tenacity>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from plotly>=4.5.0->pymatgen) (9.0.0)\n",
+            "Requirement already satisfied: PyYAML>=3.01 in /usr/local/lib/python3.10/dist-packages (from pybtex>=0.24.0->pymatgen) (6.0.2)\n",
+            "Collecting latexcodec>=1.0.4 (from pybtex>=0.24.0->pymatgen)\n",
+            "  Downloading latexcodec-3.0.0-py3-none-any.whl.metadata (4.9 kB)\n",
+            "Requirement already satisfied: six in /usr/local/lib/python3.10/dist-packages (from pybtex>=0.24.0->pymatgen) (1.16.0)\n",
+            "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.32->pymatgen) (3.4.0)\n",
+            "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.32->pymatgen) (3.10)\n",
+            "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.32->pymatgen) (2.2.3)\n",
+            "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.32->pymatgen) (2024.8.30)\n",
+            "Collecting ruamel.yaml.clib>=0.2.7 (from ruamel.yaml>=0.17.0->pymatgen)\n",
+            "  Downloading ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.7 kB)\n",
+            "Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from sympy>=1.2->pymatgen) (1.3.0)\n",
+            "Downloading pymatgen-2024.10.29-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.9 MB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m4.9/4.9 MB\u001b[0m \u001b[31m35.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading monty-2024.10.21-py3-none-any.whl (68 kB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m68.5/68.5 kB\u001b[0m \u001b[31m3.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading palettable-3.3.3-py2.py3-none-any.whl (332 kB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m332.3/332.3 kB\u001b[0m \u001b[31m8.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading pybtex-0.24.0-py2.py3-none-any.whl (561 kB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m561.4/561.4 kB\u001b[0m \u001b[31m21.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading ruamel.yaml-0.18.6-py3-none-any.whl (117 kB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m117.8/117.8 kB\u001b[0m \u001b[31m6.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading spglib-2.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.1/1.1 MB\u001b[0m \u001b[31m35.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading uncertainties-3.2.2-py3-none-any.whl (58 kB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m3.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading latexcodec-3.0.0-py3-none-any.whl (18 kB)\n",
+            "Downloading ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (722 kB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m722.2/722.2 kB\u001b[0m \u001b[31m32.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hInstalling collected packages: uncertainties, spglib, ruamel.yaml.clib, palettable, latexcodec, ruamel.yaml, pybtex, monty, pymatgen\n",
+            "Successfully installed latexcodec-3.0.0 monty-2024.10.21 palettable-3.3.3 pybtex-0.24.0 pymatgen-2024.10.29 ruamel.yaml-0.18.6 ruamel.yaml.clib-0.2.12 spglib-2.5.0 uncertainties-3.2.2\n"
+          ]
+        }
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        " !pip install  dgl -f https://data.dgl.ai/wheels/torch-2.1/repo.html"
+      ],
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/"
+        },
+        "id": "510ELKTMF9Yu",
+        "outputId": "663be47b-f545-4f7b-ca73-d9cafaba2115"
+      },
+      "execution_count": 3,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Looking in links: https://data.dgl.ai/wheels/torch-2.1/repo.html\n",
+            "Collecting dgl\n",
+            "  Downloading https://data.dgl.ai/wheels/torch-2.1/dgl-2.4.0-cp310-cp310-manylinux1_x86_64.whl (7.8 MB)\n",
+            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.8/7.8 MB\u001b[0m \u001b[31m17.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hRequirement already satisfied: networkx>=2.1 in /usr/local/lib/python3.10/dist-packages (from dgl) (3.4.2)\n",
+            "Requirement already satisfied: numpy>=1.14.0 in /usr/local/lib/python3.10/dist-packages (from dgl) (1.26.4)\n",
+            "Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from dgl) (24.1)\n",
+            "Requirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from dgl) (2.2.2)\n",
+            "Requirement already satisfied: psutil>=5.8.0 in /usr/local/lib/python3.10/dist-packages (from dgl) (5.9.5)\n",
+            "Requirement already satisfied: pydantic>=2.0 in /usr/local/lib/python3.10/dist-packages (from dgl) (2.9.2)\n",
+            "Requirement already satisfied: pyyaml in /usr/local/lib/python3.10/dist-packages (from dgl) (6.0.2)\n",
+            "Requirement already satisfied: requests>=2.19.0 in /usr/local/lib/python3.10/dist-packages (from dgl) (2.32.3)\n",
+            "Requirement already satisfied: scipy>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from dgl) (1.13.1)\n",
+            "Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from dgl) (4.66.6)\n",
+            "Collecting torch<=2.4.0 (from dgl)\n",
+            "  Downloading torch-2.4.0-cp310-cp310-manylinux1_x86_64.whl.metadata (26 kB)\n",
+            "Requirement already satisfied: annotated-types>=0.6.0 in /usr/local/lib/python3.10/dist-packages (from pydantic>=2.0->dgl) (0.7.0)\n",
+            "Requirement already satisfied: pydantic-core==2.23.4 in /usr/local/lib/python3.10/dist-packages (from pydantic>=2.0->dgl) (2.23.4)\n",
+            "Requirement already satisfied: typing-extensions>=4.6.1 in /usr/local/lib/python3.10/dist-packages (from pydantic>=2.0->dgl) (4.12.2)\n",
+            "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->dgl) (3.4.0)\n",
+            "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->dgl) (3.10)\n",
+            "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->dgl) (2.2.3)\n",
+            "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->dgl) (2024.8.30)\n",
+            "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from torch<=2.4.0->dgl) (3.16.1)\n",
+            "Requirement already satisfied: sympy in /usr/local/lib/python3.10/dist-packages (from torch<=2.4.0->dgl) (1.13.1)\n",
+            "Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from torch<=2.4.0->dgl) (3.1.4)\n",
+            "Requirement already satisfied: fsspec in /usr/local/lib/python3.10/dist-packages (from torch<=2.4.0->dgl) (2024.10.0)\n",
+            "Collecting nvidia-cuda-nvrtc-cu12==12.1.105 (from torch<=2.4.0->dgl)\n",
+            "  Downloading nvidia_cuda_nvrtc_cu12-12.1.105-py3-none-manylinux1_x86_64.whl.metadata (1.5 kB)\n",
+            "Collecting nvidia-cuda-runtime-cu12==12.1.105 (from torch<=2.4.0->dgl)\n",
+            "  Downloading nvidia_cuda_runtime_cu12-12.1.105-py3-none-manylinux1_x86_64.whl.metadata (1.5 kB)\n",
+            "Collecting nvidia-cuda-cupti-cu12==12.1.105 (from torch<=2.4.0->dgl)\n",
+            "  Downloading nvidia_cuda_cupti_cu12-12.1.105-py3-none-manylinux1_x86_64.whl.metadata (1.6 kB)\n",
+            "Collecting nvidia-cudnn-cu12==9.1.0.70 (from torch<=2.4.0->dgl)\n",
+            "  Downloading nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n",
+            "Collecting nvidia-cublas-cu12==12.1.3.1 (from torch<=2.4.0->dgl)\n",
+            "  Downloading nvidia_cublas_cu12-12.1.3.1-py3-none-manylinux1_x86_64.whl.metadata (1.5 kB)\n",
+            "Collecting nvidia-cufft-cu12==11.0.2.54 (from torch<=2.4.0->dgl)\n",
+            "  Downloading nvidia_cufft_cu12-11.0.2.54-py3-none-manylinux1_x86_64.whl.metadata (1.5 kB)\n",
+            "Collecting nvidia-curand-cu12==10.3.2.106 (from torch<=2.4.0->dgl)\n",
+            "  Downloading nvidia_curand_cu12-10.3.2.106-py3-none-manylinux1_x86_64.whl.metadata (1.5 kB)\n",
+            "Collecting nvidia-cusolver-cu12==11.4.5.107 (from torch<=2.4.0->dgl)\n",
+            "  Downloading nvidia_cusolver_cu12-11.4.5.107-py3-none-manylinux1_x86_64.whl.metadata (1.6 kB)\n",
+            "Collecting nvidia-cusparse-cu12==12.1.0.106 (from torch<=2.4.0->dgl)\n",
+            "  Downloading nvidia_cusparse_cu12-12.1.0.106-py3-none-manylinux1_x86_64.whl.metadata (1.6 kB)\n",
+            "Collecting nvidia-nccl-cu12==2.20.5 (from torch<=2.4.0->dgl)\n",
+            "  Downloading nvidia_nccl_cu12-2.20.5-py3-none-manylinux2014_x86_64.whl.metadata (1.8 kB)\n",
+            "Collecting nvidia-nvtx-cu12==12.1.105 (from torch<=2.4.0->dgl)\n",
+            "  Downloading nvidia_nvtx_cu12-12.1.105-py3-none-manylinux1_x86_64.whl.metadata (1.7 kB)\n",
+            "Collecting triton==3.0.0 (from torch<=2.4.0->dgl)\n",
+            "  Downloading triton-3.0.0-1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (1.3 kB)\n",
+            "Requirement already satisfied: nvidia-nvjitlink-cu12 in /usr/local/lib/python3.10/dist-packages (from nvidia-cusolver-cu12==11.4.5.107->torch<=2.4.0->dgl) (12.6.77)\n",
+            "Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.10/dist-packages (from pandas->dgl) (2.8.2)\n",
+            "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->dgl) (2024.2)\n",
+            "Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.10/dist-packages (from pandas->dgl) (2024.2)\n",
+            "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.2->pandas->dgl) (1.16.0)\n",
+            "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2->torch<=2.4.0->dgl) (3.0.2)\n",
+            "Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from sympy->torch<=2.4.0->dgl) (1.3.0)\n",
+            "Downloading torch-2.4.0-cp310-cp310-manylinux1_x86_64.whl (797.2 MB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m797.2/797.2 MB\u001b[0m \u001b[31m2.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading nvidia_cublas_cu12-12.1.3.1-py3-none-manylinux1_x86_64.whl (410.6 MB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m410.6/410.6 MB\u001b[0m \u001b[31m4.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading nvidia_cuda_cupti_cu12-12.1.105-py3-none-manylinux1_x86_64.whl (14.1 MB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m14.1/14.1 MB\u001b[0m \u001b[31m86.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading nvidia_cuda_nvrtc_cu12-12.1.105-py3-none-manylinux1_x86_64.whl (23.7 MB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m23.7/23.7 MB\u001b[0m \u001b[31m66.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading nvidia_cuda_runtime_cu12-12.1.105-py3-none-manylinux1_x86_64.whl (823 kB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m823.6/823.6 kB\u001b[0m \u001b[31m38.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl (664.8 MB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m664.8/664.8 MB\u001b[0m \u001b[31m2.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading nvidia_cufft_cu12-11.0.2.54-py3-none-manylinux1_x86_64.whl (121.6 MB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m121.6/121.6 MB\u001b[0m \u001b[31m7.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading nvidia_curand_cu12-10.3.2.106-py3-none-manylinux1_x86_64.whl (56.5 MB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.5/56.5 MB\u001b[0m \u001b[31m11.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading nvidia_cusolver_cu12-11.4.5.107-py3-none-manylinux1_x86_64.whl (124.2 MB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m124.2/124.2 MB\u001b[0m \u001b[31m7.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading nvidia_cusparse_cu12-12.1.0.106-py3-none-manylinux1_x86_64.whl (196.0 MB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m196.0/196.0 MB\u001b[0m \u001b[31m5.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading nvidia_nccl_cu12-2.20.5-py3-none-manylinux2014_x86_64.whl (176.2 MB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m176.2/176.2 MB\u001b[0m \u001b[31m7.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading nvidia_nvtx_cu12-12.1.105-py3-none-manylinux1_x86_64.whl (99 kB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m99.1/99.1 kB\u001b[0m \u001b[31m7.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading triton-3.0.0-1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (209.4 MB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m209.4/209.4 MB\u001b[0m \u001b[31m6.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hInstalling collected packages: triton, nvidia-nvtx-cu12, nvidia-nccl-cu12, nvidia-cusparse-cu12, nvidia-curand-cu12, nvidia-cufft-cu12, nvidia-cuda-runtime-cu12, nvidia-cuda-nvrtc-cu12, nvidia-cuda-cupti-cu12, nvidia-cublas-cu12, nvidia-cusolver-cu12, nvidia-cudnn-cu12, torch, dgl\n",
+            "  Attempting uninstall: nvidia-nccl-cu12\n",
+            "    Found existing installation: nvidia-nccl-cu12 2.23.4\n",
+            "    Uninstalling nvidia-nccl-cu12-2.23.4:\n",
+            "      Successfully uninstalled nvidia-nccl-cu12-2.23.4\n",
+            "  Attempting uninstall: nvidia-cusparse-cu12\n",
+            "    Found existing installation: nvidia-cusparse-cu12 12.5.4.2\n",
+            "    Uninstalling nvidia-cusparse-cu12-12.5.4.2:\n",
+            "      Successfully uninstalled nvidia-cusparse-cu12-12.5.4.2\n",
+            "  Attempting uninstall: nvidia-curand-cu12\n",
+            "    Found existing installation: nvidia-curand-cu12 10.3.7.77\n",
+            "    Uninstalling nvidia-curand-cu12-10.3.7.77:\n",
+            "      Successfully uninstalled nvidia-curand-cu12-10.3.7.77\n",
+            "  Attempting uninstall: nvidia-cufft-cu12\n",
+            "    Found existing installation: nvidia-cufft-cu12 11.3.0.4\n",
+            "    Uninstalling nvidia-cufft-cu12-11.3.0.4:\n",
+            "      Successfully uninstalled nvidia-cufft-cu12-11.3.0.4\n",
+            "  Attempting uninstall: nvidia-cuda-runtime-cu12\n",
+            "    Found existing installation: nvidia-cuda-runtime-cu12 12.6.77\n",
+            "    Uninstalling nvidia-cuda-runtime-cu12-12.6.77:\n",
+            "      Successfully uninstalled nvidia-cuda-runtime-cu12-12.6.77\n",
+            "  Attempting uninstall: nvidia-cuda-cupti-cu12\n",
+            "    Found existing installation: nvidia-cuda-cupti-cu12 12.6.80\n",
+            "    Uninstalling nvidia-cuda-cupti-cu12-12.6.80:\n",
+            "      Successfully uninstalled nvidia-cuda-cupti-cu12-12.6.80\n",
+            "  Attempting uninstall: nvidia-cublas-cu12\n",
+            "    Found existing installation: nvidia-cublas-cu12 12.6.3.3\n",
+            "    Uninstalling nvidia-cublas-cu12-12.6.3.3:\n",
+            "      Successfully uninstalled nvidia-cublas-cu12-12.6.3.3\n",
+            "  Attempting uninstall: nvidia-cusolver-cu12\n",
+            "    Found existing installation: nvidia-cusolver-cu12 11.7.1.2\n",
+            "    Uninstalling nvidia-cusolver-cu12-11.7.1.2:\n",
+            "      Successfully uninstalled nvidia-cusolver-cu12-11.7.1.2\n",
+            "  Attempting uninstall: nvidia-cudnn-cu12\n",
+            "    Found existing installation: nvidia-cudnn-cu12 9.5.1.17\n",
+            "    Uninstalling nvidia-cudnn-cu12-9.5.1.17:\n",
+            "      Successfully uninstalled nvidia-cudnn-cu12-9.5.1.17\n",
+            "  Attempting uninstall: torch\n",
+            "    Found existing installation: torch 2.5.0+cu121\n",
+            "    Uninstalling torch-2.5.0+cu121:\n",
+            "      Successfully uninstalled torch-2.5.0+cu121\n",
+            "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n",
+            "torchaudio 2.5.0+cu121 requires torch==2.5.0, but you have torch 2.4.0 which is incompatible.\n",
+            "torchvision 0.20.0+cu121 requires torch==2.5.0, but you have torch 2.4.0 which is incompatible.\u001b[0m\u001b[31m\n",
+            "\u001b[0mSuccessfully installed dgl-2.4.0 nvidia-cublas-cu12-12.1.3.1 nvidia-cuda-cupti-cu12-12.1.105 nvidia-cuda-nvrtc-cu12-12.1.105 nvidia-cuda-runtime-cu12-12.1.105 nvidia-cudnn-cu12-9.1.0.70 nvidia-cufft-cu12-11.0.2.54 nvidia-curand-cu12-10.3.2.106 nvidia-cusolver-cu12-11.4.5.107 nvidia-cusparse-cu12-12.1.0.106 nvidia-nccl-cu12-2.20.5 nvidia-nvtx-cu12-12.1.105 torch-2.4.0 triton-3.0.0\n"
+          ]
+        }
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        " !pip3 install matgl"
+      ],
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/"
+        },
+        "id": "saZDgwpVGAgq",
+        "outputId": "a16f7d96-a80b-4e72-ac6b-c68a9072455b"
+      },
+      "execution_count": 4,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Collecting matgl\n",
+            "  Downloading matgl-1.1.3-py3-none-any.whl.metadata (16 kB)\n",
+            "Collecting ase (from matgl)\n",
+            "  Downloading ase-3.23.0-py3-none-any.whl.metadata (3.8 kB)\n",
+            "Requirement already satisfied: dgl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from matgl) (2.4.0)\n",
+            "Requirement already satisfied: pymatgen in /usr/local/lib/python3.10/dist-packages (from matgl) (2024.10.29)\n",
+            "Collecting lightning (from matgl)\n",
+            "  Downloading lightning-2.4.0-py3-none-any.whl.metadata (38 kB)\n",
+            "Requirement already satisfied: torch in /usr/local/lib/python3.10/dist-packages (from matgl) (2.4.0)\n",
+            "Requirement already satisfied: pydantic in /usr/local/lib/python3.10/dist-packages (from matgl) (2.9.2)\n",
+            "Collecting torchdata<0.8.0 (from matgl)\n",
+            "  Downloading torchdata-0.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (13 kB)\n",
+            "Requirement already satisfied: networkx>=2.1 in /usr/local/lib/python3.10/dist-packages (from dgl>=2.0.0->matgl) (3.4.2)\n",
+            "Requirement already satisfied: numpy>=1.14.0 in /usr/local/lib/python3.10/dist-packages (from dgl>=2.0.0->matgl) (1.26.4)\n",
+            "Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from dgl>=2.0.0->matgl) (24.1)\n",
+            "Requirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from dgl>=2.0.0->matgl) (2.2.2)\n",
+            "Requirement already satisfied: psutil>=5.8.0 in /usr/local/lib/python3.10/dist-packages (from dgl>=2.0.0->matgl) (5.9.5)\n",
+            "Requirement already satisfied: pyyaml in /usr/local/lib/python3.10/dist-packages (from dgl>=2.0.0->matgl) (6.0.2)\n",
+            "Requirement already satisfied: requests>=2.19.0 in /usr/local/lib/python3.10/dist-packages (from dgl>=2.0.0->matgl) (2.32.3)\n",
+            "Requirement already satisfied: scipy>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from dgl>=2.0.0->matgl) (1.13.1)\n",
+            "Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from dgl>=2.0.0->matgl) (4.66.6)\n",
+            "Requirement already satisfied: annotated-types>=0.6.0 in /usr/local/lib/python3.10/dist-packages (from pydantic->matgl) (0.7.0)\n",
+            "Requirement already satisfied: pydantic-core==2.23.4 in /usr/local/lib/python3.10/dist-packages (from pydantic->matgl) (2.23.4)\n",
+            "Requirement already satisfied: typing-extensions>=4.6.1 in /usr/local/lib/python3.10/dist-packages (from pydantic->matgl) (4.12.2)\n",
+            "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from torch->matgl) (3.16.1)\n",
+            "Requirement already satisfied: sympy in /usr/local/lib/python3.10/dist-packages (from torch->matgl) (1.13.1)\n",
+            "Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from torch->matgl) (3.1.4)\n",
+            "Requirement already satisfied: fsspec in /usr/local/lib/python3.10/dist-packages (from torch->matgl) (2024.10.0)\n",
+            "Requirement already satisfied: nvidia-cuda-nvrtc-cu12==12.1.105 in /usr/local/lib/python3.10/dist-packages (from torch->matgl) (12.1.105)\n",
+            "Requirement already satisfied: nvidia-cuda-runtime-cu12==12.1.105 in /usr/local/lib/python3.10/dist-packages (from torch->matgl) (12.1.105)\n",
+            "Requirement already satisfied: nvidia-cuda-cupti-cu12==12.1.105 in /usr/local/lib/python3.10/dist-packages (from torch->matgl) (12.1.105)\n",
+            "Requirement already satisfied: nvidia-cudnn-cu12==9.1.0.70 in /usr/local/lib/python3.10/dist-packages (from torch->matgl) (9.1.0.70)\n",
+            "Requirement already satisfied: nvidia-cublas-cu12==12.1.3.1 in /usr/local/lib/python3.10/dist-packages (from torch->matgl) (12.1.3.1)\n",
+            "Requirement already satisfied: nvidia-cufft-cu12==11.0.2.54 in /usr/local/lib/python3.10/dist-packages (from torch->matgl) (11.0.2.54)\n",
+            "Requirement already satisfied: nvidia-curand-cu12==10.3.2.106 in /usr/local/lib/python3.10/dist-packages (from torch->matgl) (10.3.2.106)\n",
+            "Requirement already satisfied: nvidia-cusolver-cu12==11.4.5.107 in /usr/local/lib/python3.10/dist-packages (from torch->matgl) (11.4.5.107)\n",
+            "Requirement already satisfied: nvidia-cusparse-cu12==12.1.0.106 in /usr/local/lib/python3.10/dist-packages (from torch->matgl) (12.1.0.106)\n",
+            "Requirement already satisfied: nvidia-nccl-cu12==2.20.5 in /usr/local/lib/python3.10/dist-packages (from torch->matgl) (2.20.5)\n",
+            "Requirement already satisfied: nvidia-nvtx-cu12==12.1.105 in /usr/local/lib/python3.10/dist-packages (from torch->matgl) (12.1.105)\n",
+            "Requirement already satisfied: triton==3.0.0 in /usr/local/lib/python3.10/dist-packages (from torch->matgl) (3.0.0)\n",
+            "Requirement already satisfied: nvidia-nvjitlink-cu12 in /usr/local/lib/python3.10/dist-packages (from nvidia-cusolver-cu12==11.4.5.107->torch->matgl) (12.6.77)\n",
+            "Requirement already satisfied: urllib3>=1.25 in /usr/local/lib/python3.10/dist-packages (from torchdata<0.8.0->matgl) (2.2.3)\n",
+            "Requirement already satisfied: matplotlib>=3.3.4 in /usr/local/lib/python3.10/dist-packages (from ase->matgl) (3.8.0)\n",
+            "Collecting lightning-utilities<2.0,>=0.10.0 (from lightning->matgl)\n",
+            "  Downloading lightning_utilities-0.11.8-py3-none-any.whl.metadata (5.2 kB)\n",
+            "Collecting torchmetrics<3.0,>=0.7.0 (from lightning->matgl)\n",
+            "  Downloading torchmetrics-1.5.1-py3-none-any.whl.metadata (20 kB)\n",
+            "Collecting pytorch-lightning (from lightning->matgl)\n",
+            "  Downloading pytorch_lightning-2.4.0-py3-none-any.whl.metadata (21 kB)\n",
+            "Requirement already satisfied: joblib>=1 in /usr/local/lib/python3.10/dist-packages (from pymatgen->matgl) (1.4.2)\n",
+            "Requirement already satisfied: monty>=2024.7.29 in /usr/local/lib/python3.10/dist-packages (from pymatgen->matgl) (2024.10.21)\n",
+            "Requirement already satisfied: palettable>=3.3.3 in /usr/local/lib/python3.10/dist-packages (from pymatgen->matgl) (3.3.3)\n",
+            "Requirement already satisfied: plotly>=4.5.0 in /usr/local/lib/python3.10/dist-packages (from pymatgen->matgl) (5.24.1)\n",
+            "Requirement already satisfied: pybtex>=0.24.0 in /usr/local/lib/python3.10/dist-packages (from pymatgen->matgl) (0.24.0)\n",
+            "Requirement already satisfied: ruamel.yaml>=0.17.0 in /usr/local/lib/python3.10/dist-packages (from pymatgen->matgl) (0.18.6)\n",
+            "Requirement already satisfied: spglib>=2.5.0 in /usr/local/lib/python3.10/dist-packages (from pymatgen->matgl) (2.5.0)\n",
+            "Requirement already satisfied: tabulate>=0.9 in /usr/local/lib/python3.10/dist-packages (from pymatgen->matgl) (0.9.0)\n",
+            "Requirement already satisfied: uncertainties>=3.1.4 in /usr/local/lib/python3.10/dist-packages (from pymatgen->matgl) (3.2.2)\n",
+            "Requirement already satisfied: aiohttp!=4.0.0a0,!=4.0.0a1 in /usr/local/lib/python3.10/dist-packages (from fsspec[http]<2026.0,>=2022.5.0->lightning->matgl) (3.10.10)\n",
+            "Requirement already satisfied: setuptools in /usr/local/lib/python3.10/dist-packages (from lightning-utilities<2.0,>=0.10.0->lightning->matgl) (75.1.0)\n",
+            "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.3.4->ase->matgl) (1.3.0)\n",
+            "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.3.4->ase->matgl) (0.12.1)\n",
+            "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.3.4->ase->matgl) (4.54.1)\n",
+            "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.3.4->ase->matgl) (1.4.7)\n",
+            "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.3.4->ase->matgl) (10.4.0)\n",
+            "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.3.4->ase->matgl) (3.2.0)\n",
+            "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.3.4->ase->matgl) (2.8.2)\n",
+            "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->dgl>=2.0.0->matgl) (2024.2)\n",
+            "Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.10/dist-packages (from pandas->dgl>=2.0.0->matgl) (2024.2)\n",
+            "Requirement already satisfied: tenacity>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from plotly>=4.5.0->pymatgen->matgl) (9.0.0)\n",
+            "Requirement already satisfied: latexcodec>=1.0.4 in /usr/local/lib/python3.10/dist-packages (from pybtex>=0.24.0->pymatgen->matgl) (3.0.0)\n",
+            "Requirement already satisfied: six in /usr/local/lib/python3.10/dist-packages (from pybtex>=0.24.0->pymatgen->matgl) (1.16.0)\n",
+            "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->dgl>=2.0.0->matgl) (3.4.0)\n",
+            "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->dgl>=2.0.0->matgl) (3.10)\n",
+            "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->dgl>=2.0.0->matgl) (2024.8.30)\n",
+            "Requirement already satisfied: ruamel.yaml.clib>=0.2.7 in /usr/local/lib/python3.10/dist-packages (from ruamel.yaml>=0.17.0->pymatgen->matgl) (0.2.12)\n",
+            "Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from sympy->torch->matgl) (1.3.0)\n",
+            "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2->torch->matgl) (3.0.2)\n",
+            "Requirement already satisfied: aiohappyeyeballs>=2.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<2026.0,>=2022.5.0->lightning->matgl) (2.4.3)\n",
+            "Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.10/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<2026.0,>=2022.5.0->lightning->matgl) (1.3.1)\n",
+            "Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<2026.0,>=2022.5.0->lightning->matgl) (24.2.0)\n",
+            "Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<2026.0,>=2022.5.0->lightning->matgl) (1.5.0)\n",
+            "Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.10/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<2026.0,>=2022.5.0->lightning->matgl) (6.1.0)\n",
+            "Requirement already satisfied: yarl<2.0,>=1.12.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<2026.0,>=2022.5.0->lightning->matgl) (1.17.0)\n",
+            "Requirement already satisfied: async-timeout<5.0,>=4.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<2026.0,>=2022.5.0->lightning->matgl) (4.0.3)\n",
+            "Requirement already satisfied: propcache>=0.2.0 in /usr/local/lib/python3.10/dist-packages (from yarl<2.0,>=1.12.0->aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<2026.0,>=2022.5.0->lightning->matgl) (0.2.0)\n",
+            "Downloading matgl-1.1.3-py3-none-any.whl (223 kB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m223.3/223.3 kB\u001b[0m \u001b[31m6.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading torchdata-0.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.7 MB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m4.7/4.7 MB\u001b[0m \u001b[31m25.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading ase-3.23.0-py3-none-any.whl (2.9 MB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.9/2.9 MB\u001b[0m \u001b[31m26.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading lightning-2.4.0-py3-none-any.whl (810 kB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m811.0/811.0 kB\u001b[0m \u001b[31m30.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading lightning_utilities-0.11.8-py3-none-any.whl (26 kB)\n",
+            "Downloading torchmetrics-1.5.1-py3-none-any.whl (890 kB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m890.6/890.6 kB\u001b[0m \u001b[31m28.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hDownloading pytorch_lightning-2.4.0-py3-none-any.whl (815 kB)\n",
+            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m815.2/815.2 kB\u001b[0m \u001b[31m27.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hInstalling collected packages: lightning-utilities, ase, torchmetrics, torchdata, pytorch-lightning, lightning, matgl\n",
+            "Successfully installed ase-3.23.0 lightning-2.4.0 lightning-utilities-0.11.8 matgl-1.1.3 pytorch-lightning-2.4.0 torchdata-0.7.1 torchmetrics-1.5.1\n"
+          ]
+        }
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "from __future__ import annotations\n",
+        "\n",
+        "import os\n",
+        "import shutil\n",
+        "import warnings\n",
+        "import zipfile\n",
+        "import matgl\n",
+        "\n",
+        "import matplotlib.pyplot as plt\n",
+        "import pandas as pd\n",
+        "import pytorch_lightning as pl\n",
+        "import torch\n",
+        "import pickle\n",
+        "import numpy as np\n",
+        "from dgl.data.utils import split_dataset\n",
+        "from pymatgen.core import Structure\n",
+        "from pytorch_lightning.loggers import CSVLogger\n",
+        "from lightning.pytorch import Trainer\n",
+        "from tqdm import tqdm\n",
+        "\n",
+        "from matgl.ext.pymatgen import Structure2Graph, get_element_list\n",
+        "from matgl.graph.data import MGLDataset, MGLDataLoader #collate_fn.  - shivani i don't think you need this as num_workers=0\n",
+        "from matgl.layers import BondExpansion\n",
+        "from matgl.models import MEGNet\n",
+        "from matgl.utils.io import RemoteFile\n",
+        "from matgl.utils.training import ModelLightningModule\n",
+        "\n",
+        "# To suppress warnings for clearer output\n",
+        "warnings.simplefilter(\"ignore\")"
+      ],
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/"
+        },
+        "id": "uHFBr-yJGC8G",
+        "outputId": "74eed14d-d004-4666-95f5-57d3411d045c"
+      },
+      "execution_count": 5,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "DGL backend not selected or invalid.  Assuming PyTorch for now.\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Setting the default backend to \"pytorch\". You can change it in the ~/.dgl/config.json file or export the DGLBACKEND environment variable.  Valid options are: pytorch, mxnet, tensorflow (all lowercase)\n"
+          ]
+        }
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "from jarvis.db.figshare import data\n",
+        "\n",
+        "dft_3d = data('dft_3d')"
+      ],
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/"
+        },
+        "id": "WfEpSLibGHh2",
+        "outputId": "1e900a8f-9920-4d5c-fb25-cd459c23ead3"
+      },
+      "execution_count": 6,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Obtaining 3D dataset 76k ...\n",
+            "Reference:https://www.nature.com/articles/s41524-020-00440-1\n",
+            "Other versions:https://doi.org/10.6084/m9.figshare.6815699\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "100%|██████████| 40.8M/40.8M [00:02<00:00, 20.0MiB/s]\n"
+          ]
+        },
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Loading the zipfile...\n",
+            "Loading completed.\n"
+          ]
+        }
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "dft_3d[0].keys()"
+      ],
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/"
+        },
+        "id": "2wNH5_F6GM_E",
+        "outputId": "9f14897d-e01c-4f12-f504-e06724d18eb2"
+      },
+      "execution_count": 7,
+      "outputs": [
+        {
+          "output_type": "execute_result",
+          "data": {
+            "text/plain": [
+              "dict_keys(['jid', 'spg_number', 'spg_symbol', 'formula', 'formation_energy_peratom', 'func', 'optb88vdw_bandgap', 'atoms', 'slme', 'magmom_oszicar', 'spillage', 'elastic_tensor', 'effective_masses_300K', 'kpoint_length_unit', 'maxdiff_mesh', 'maxdiff_bz', 'encut', 'optb88vdw_total_energy', 'epsx', 'epsy', 'epsz', 'mepsx', 'mepsy', 'mepsz', 'modes', 'magmom_outcar', 'max_efg', 'avg_elec_mass', 'avg_hole_mass', 'icsd', 'dfpt_piezo_max_eij', 'dfpt_piezo_max_dij', 'dfpt_piezo_max_dielectric', 'dfpt_piezo_max_dielectric_electronic', 'dfpt_piezo_max_dielectric_ionic', 'max_ir_mode', 'min_ir_mode', 'n-Seebeck', 'p-Seebeck', 'n-powerfact', 'p-powerfact', 'ncond', 'pcond', 'nkappa', 'pkappa', 'ehull', 'Tc_supercon', 'dimensionality', 'efg', 'xml_data_link', 'typ', 'exfoliation_energy', 'spg', 'crys', 'density', 'poisson', 'raw_files', 'nat', 'bulk_modulus_kv', 'shear_modulus_gv', 'mbj_bandgap', 'hse_gap', 'reference', 'search'])"
+            ]
+          },
+          "metadata": {},
+          "execution_count": 7
+        }
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        " ## Let's make a dataframe from this:\n",
+        "import pandas as pd\n",
+        "import numpy as np"
+      ],
+      "metadata": {
+        "id": "6HEIHJvTGPDs"
+      },
+      "execution_count": 8,
+      "outputs": []
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "df=pd.DataFrame(dft_3d)\n",
+        "df.head()"
+      ],
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/",
+          "height": 429
+        },
+        "id": "RT5c9__tGRKC",
+        "outputId": "ca6651ee-1d6d-4930-ff8d-aa88babf8e08"
+      },
+      "execution_count": 9,
+      "outputs": [
+        {
+          "output_type": "execute_result",
+          "data": {
+            "text/plain": [
+              "           jid spg_number spg_symbol   formula  formation_energy_peratom  \\\n",
+              "0  JVASP-90856        129     P4/nmm  TiCuSiAs                  -0.42762   \n",
+              "1  JVASP-86097        221      Pm-3m      DyB6                  -0.41596   \n",
+              "2  JVASP-64906        119      I-4m2   Be2OsRu                   0.04847   \n",
+              "3  JVASP-98225         14     P2_1/c       KBi                  -0.44140   \n",
+              "4     JVASP-10        164      P-3m1      VSe2                  -0.71026   \n",
+              "\n",
+              "        func  optb88vdw_bandgap  \\\n",
+              "0  OptB88vdW              0.000   \n",
+              "1  OptB88vdW              0.000   \n",
+              "2  OptB88vdW              0.000   \n",
+              "3  OptB88vdW              0.472   \n",
+              "4  OptB88vdW              0.000   \n",
+              "\n",
+              "                                               atoms slme magmom_oszicar  ...  \\\n",
+              "0  {'lattice_mat': [[3.566933224304235, 0.0, -0.0...   na            0.0  ...   \n",
+              "1  {'lattice_mat': [[4.089078911208881, 0.0, 0.0]...   na            0.0  ...   \n",
+              "2  {'lattice_mat': [[-1.833590720595598, 1.833590...   na            0.0  ...   \n",
+              "3  {'lattice_mat': [[7.2963518353359165, 0.0, 0.0...   na            0.0  ...   \n",
+              "4  {'lattice_mat': [[1.6777483798834445, -2.90594...   na            0.0  ...   \n",
+              "\n",
+              "  density poisson                                          raw_files nat  \\\n",
+              "0   5.956      na                                                 []   8   \n",
+              "1   5.522      na  [OPT-LOPTICS,JVASP-86097.zip,https://ndownload...   7   \n",
+              "2  10.960      na  [OPT-LOPTICS,JVASP-64906.zip,https://ndownload...   4   \n",
+              "3   5.145      na                                                 []  32   \n",
+              "4   5.718    0.23  [FD-ELAST,JVASP-10.zip,https://ndownloader.fig...   3   \n",
+              "\n",
+              "  bulk_modulus_kv shear_modulus_gv mbj_bandgap  hse_gap  \\\n",
+              "0              na               na          na       na   \n",
+              "1              na               na          na       na   \n",
+              "2              na               na          na       na   \n",
+              "3              na               na          na       na   \n",
+              "4           48.79            33.05         0.0       na   \n",
+              "\n",
+              "               reference        search  \n",
+              "0             mp-1080455  -As-Cu-Si-Ti  \n",
+              "1              mp-568319         -B-Dy  \n",
+              "2  auid-3eaf68dd483bf4f4     -Be-Os-Ru  \n",
+              "3               mp-31104         -Bi-K  \n",
+              "4                 mp-694         -Se-V  \n",
+              "\n",
+              "[5 rows x 64 columns]"
+            ],
+            "text/html": [
+              "\n",
+              "  <div id=\"df-9e94c52f-4b6c-4f88-81b3-0d74cccf7eec\" class=\"colab-df-container\">\n",
+              "    <div>\n",
+              "<style scoped>\n",
+              "    .dataframe tbody tr th:only-of-type {\n",
+              "        vertical-align: middle;\n",
+              "    }\n",
+              "\n",
+              "    .dataframe tbody tr th {\n",
+              "        vertical-align: top;\n",
+              "    }\n",
+              "\n",
+              "    .dataframe thead th {\n",
+              "        text-align: right;\n",
+              "    }\n",
+              "</style>\n",
+              "<table border=\"1\" class=\"dataframe\">\n",
+              "  <thead>\n",
+              "    <tr style=\"text-align: right;\">\n",
+              "      <th></th>\n",
+              "      <th>jid</th>\n",
+              "      <th>spg_number</th>\n",
+              "      <th>spg_symbol</th>\n",
+              "      <th>formula</th>\n",
+              "      <th>formation_energy_peratom</th>\n",
+              "      <th>func</th>\n",
+              "      <th>optb88vdw_bandgap</th>\n",
+              "      <th>atoms</th>\n",
+              "      <th>slme</th>\n",
+              "      <th>magmom_oszicar</th>\n",
+              "      <th>...</th>\n",
+              "      <th>density</th>\n",
+              "      <th>poisson</th>\n",
+              "      <th>raw_files</th>\n",
+              "      <th>nat</th>\n",
+              "      <th>bulk_modulus_kv</th>\n",
+              "      <th>shear_modulus_gv</th>\n",
+              "      <th>mbj_bandgap</th>\n",
+              "      <th>hse_gap</th>\n",
+              "      <th>reference</th>\n",
+              "      <th>search</th>\n",
+              "    </tr>\n",
+              "  </thead>\n",
+              "  <tbody>\n",
+              "    <tr>\n",
+              "      <th>0</th>\n",
+              "      <td>JVASP-90856</td>\n",
+              "      <td>129</td>\n",
+              "      <td>P4/nmm</td>\n",
+              "      <td>TiCuSiAs</td>\n",
+              "      <td>-0.42762</td>\n",
+              "      <td>OptB88vdW</td>\n",
+              "      <td>0.000</td>\n",
+              "      <td>{'lattice_mat': [[3.566933224304235, 0.0, -0.0...</td>\n",
+              "      <td>na</td>\n",
+              "      <td>0.0</td>\n",
+              "      <td>...</td>\n",
+              "      <td>5.956</td>\n",
+              "      <td>na</td>\n",
+              "      <td>[]</td>\n",
+              "      <td>8</td>\n",
+              "      <td>na</td>\n",
+              "      <td>na</td>\n",
+              "      <td>na</td>\n",
+              "      <td>na</td>\n",
+              "      <td>mp-1080455</td>\n",
+              "      <td>-As-Cu-Si-Ti</td>\n",
+              "    </tr>\n",
+              "    <tr>\n",
+              "      <th>1</th>\n",
+              "      <td>JVASP-86097</td>\n",
+              "      <td>221</td>\n",
+              "      <td>Pm-3m</td>\n",
+              "      <td>DyB6</td>\n",
+              "      <td>-0.41596</td>\n",
+              "      <td>OptB88vdW</td>\n",
+              "      <td>0.000</td>\n",
+              "      <td>{'lattice_mat': [[4.089078911208881, 0.0, 0.0]...</td>\n",
+              "      <td>na</td>\n",
+              "      <td>0.0</td>\n",
+              "      <td>...</td>\n",
+              "      <td>5.522</td>\n",
+              "      <td>na</td>\n",
+              "      <td>[OPT-LOPTICS,JVASP-86097.zip,https://ndownload...</td>\n",
+              "      <td>7</td>\n",
+              "      <td>na</td>\n",
+              "      <td>na</td>\n",
+              "      <td>na</td>\n",
+              "      <td>na</td>\n",
+              "      <td>mp-568319</td>\n",
+              "      <td>-B-Dy</td>\n",
+              "    </tr>\n",
+              "    <tr>\n",
+              "      <th>2</th>\n",
+              "      <td>JVASP-64906</td>\n",
+              "      <td>119</td>\n",
+              "      <td>I-4m2</td>\n",
+              "      <td>Be2OsRu</td>\n",
+              "      <td>0.04847</td>\n",
+              "      <td>OptB88vdW</td>\n",
+              "      <td>0.000</td>\n",
+              "      <td>{'lattice_mat': [[-1.833590720595598, 1.833590...</td>\n",
+              "      <td>na</td>\n",
+              "      <td>0.0</td>\n",
+              "      <td>...</td>\n",
+              "      <td>10.960</td>\n",
+              "      <td>na</td>\n",
+              "      <td>[OPT-LOPTICS,JVASP-64906.zip,https://ndownload...</td>\n",
+              "      <td>4</td>\n",
+              "      <td>na</td>\n",
+              "      <td>na</td>\n",
+              "      <td>na</td>\n",
+              "      <td>na</td>\n",
+              "      <td>auid-3eaf68dd483bf4f4</td>\n",
+              "      <td>-Be-Os-Ru</td>\n",
+              "    </tr>\n",
+              "    <tr>\n",
+              "      <th>3</th>\n",
+              "      <td>JVASP-98225</td>\n",
+              "      <td>14</td>\n",
+              "      <td>P2_1/c</td>\n",
+              "      <td>KBi</td>\n",
+              "      <td>-0.44140</td>\n",
+              "      <td>OptB88vdW</td>\n",
+              "      <td>0.472</td>\n",
+              "      <td>{'lattice_mat': [[7.2963518353359165, 0.0, 0.0...</td>\n",
+              "      <td>na</td>\n",
+              "      <td>0.0</td>\n",
+              "      <td>...</td>\n",
+              "      <td>5.145</td>\n",
+              "      <td>na</td>\n",
+              "      <td>[]</td>\n",
+              "      <td>32</td>\n",
+              "      <td>na</td>\n",
+              "      <td>na</td>\n",
+              "      <td>na</td>\n",
+              "      <td>na</td>\n",
+              "      <td>mp-31104</td>\n",
+              "      <td>-Bi-K</td>\n",
+              "    </tr>\n",
+              "    <tr>\n",
+              "      <th>4</th>\n",
+              "      <td>JVASP-10</td>\n",
+              "      <td>164</td>\n",
+              "      <td>P-3m1</td>\n",
+              "      <td>VSe2</td>\n",
+              "      <td>-0.71026</td>\n",
+              "      <td>OptB88vdW</td>\n",
+              "      <td>0.000</td>\n",
+              "      <td>{'lattice_mat': [[1.6777483798834445, -2.90594...</td>\n",
+              "      <td>na</td>\n",
+              "      <td>0.0</td>\n",
+              "      <td>...</td>\n",
+              "      <td>5.718</td>\n",
+              "      <td>0.23</td>\n",
+              "      <td>[FD-ELAST,JVASP-10.zip,https://ndownloader.fig...</td>\n",
+              "      <td>3</td>\n",
+              "      <td>48.79</td>\n",
+              "      <td>33.05</td>\n",
+              "      <td>0.0</td>\n",
+              "      <td>na</td>\n",
+              "      <td>mp-694</td>\n",
+              "      <td>-Se-V</td>\n",
+              "    </tr>\n",
+              "  </tbody>\n",
+              "</table>\n",
+              "<p>5 rows × 64 columns</p>\n",
+              "</div>\n",
+              "    <div class=\"colab-df-buttons\">\n",
+              "\n",
+              "  <div class=\"colab-df-container\">\n",
+              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-9e94c52f-4b6c-4f88-81b3-0d74cccf7eec')\"\n",
+              "            title=\"Convert this dataframe to an interactive table.\"\n",
+              "            style=\"display:none;\">\n",
+              "\n",
+              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
+              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
+              "  </svg>\n",
+              "    </button>\n",
+              "\n",
+              "  <style>\n",
+              "    .colab-df-container {\n",
+              "      display:flex;\n",
+              "      gap: 12px;\n",
+              "    }\n",
+              "\n",
+              "    .colab-df-convert {\n",
+              "      background-color: #E8F0FE;\n",
+              "      border: none;\n",
+              "      border-radius: 50%;\n",
+              "      cursor: pointer;\n",
+              "      display: none;\n",
+              "      fill: #1967D2;\n",
+              "      height: 32px;\n",
+              "      padding: 0 0 0 0;\n",
+              "      width: 32px;\n",
+              "    }\n",
+              "\n",
+              "    .colab-df-convert:hover {\n",
+              "      background-color: #E2EBFA;\n",
+              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
+              "      fill: #174EA6;\n",
+              "    }\n",
+              "\n",
+              "    .colab-df-buttons div {\n",
+              "      margin-bottom: 4px;\n",
+              "    }\n",
+              "\n",
+              "    [theme=dark] .colab-df-convert {\n",
+              "      background-color: #3B4455;\n",
+              "      fill: #D2E3FC;\n",
+              "    }\n",
+              "\n",
+              "    [theme=dark] .colab-df-convert:hover {\n",
+              "      background-color: #434B5C;\n",
+              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
+              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
+              "      fill: #FFFFFF;\n",
+              "    }\n",
+              "  </style>\n",
+              "\n",
+              "    <script>\n",
+              "      const buttonEl =\n",
+              "        document.querySelector('#df-9e94c52f-4b6c-4f88-81b3-0d74cccf7eec button.colab-df-convert');\n",
+              "      buttonEl.style.display =\n",
+              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
+              "\n",
+              "      async function convertToInteractive(key) {\n",
+              "        const element = document.querySelector('#df-9e94c52f-4b6c-4f88-81b3-0d74cccf7eec');\n",
+              "        const dataTable =\n",
+              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
+              "                                                    [key], {});\n",
+              "        if (!dataTable) return;\n",
+              "\n",
+              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
+              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
+              "          + ' to learn more about interactive tables.';\n",
+              "        element.innerHTML = '';\n",
+              "        dataTable['output_type'] = 'display_data';\n",
+              "        await google.colab.output.renderOutput(dataTable, element);\n",
+              "        const docLink = document.createElement('div');\n",
+              "        docLink.innerHTML = docLinkHtml;\n",
+              "        element.appendChild(docLink);\n",
+              "      }\n",
+              "    </script>\n",
+              "  </div>\n",
+              "\n",
+              "\n",
+              "<div id=\"df-66c438ee-b30e-48e1-808e-7b2da6583b0f\">\n",
+              "  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-66c438ee-b30e-48e1-808e-7b2da6583b0f')\"\n",
+              "            title=\"Suggest charts\"\n",
+              "            style=\"display:none;\">\n",
+              "\n",
+              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
+              "     width=\"24px\">\n",
+              "    <g>\n",
+              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
+              "    </g>\n",
+              "</svg>\n",
+              "  </button>\n",
+              "\n",
+              "<style>\n",
+              "  .colab-df-quickchart {\n",
+              "      --bg-color: #E8F0FE;\n",
+              "      --fill-color: #1967D2;\n",
+              "      --hover-bg-color: #E2EBFA;\n",
+              "      --hover-fill-color: #174EA6;\n",
+              "      --disabled-fill-color: #AAA;\n",
+              "      --disabled-bg-color: #DDD;\n",
+              "  }\n",
+              "\n",
+              "  [theme=dark] .colab-df-quickchart {\n",
+              "      --bg-color: #3B4455;\n",
+              "      --fill-color: #D2E3FC;\n",
+              "      --hover-bg-color: #434B5C;\n",
+              "      --hover-fill-color: #FFFFFF;\n",
+              "      --disabled-bg-color: #3B4455;\n",
+              "      --disabled-fill-color: #666;\n",
+              "  }\n",
+              "\n",
+              "  .colab-df-quickchart {\n",
+              "    background-color: var(--bg-color);\n",
+              "    border: none;\n",
+              "    border-radius: 50%;\n",
+              "    cursor: pointer;\n",
+              "    display: none;\n",
+              "    fill: var(--fill-color);\n",
+              "    height: 32px;\n",
+              "    padding: 0;\n",
+              "    width: 32px;\n",
+              "  }\n",
+              "\n",
+              "  .colab-df-quickchart:hover {\n",
+              "    background-color: var(--hover-bg-color);\n",
+              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
+              "    fill: var(--button-hover-fill-color);\n",
+              "  }\n",
+              "\n",
+              "  .colab-df-quickchart-complete:disabled,\n",
+              "  .colab-df-quickchart-complete:disabled:hover {\n",
+              "    background-color: var(--disabled-bg-color);\n",
+              "    fill: var(--disabled-fill-color);\n",
+              "    box-shadow: none;\n",
+              "  }\n",
+              "\n",
+              "  .colab-df-spinner {\n",
+              "    border: 2px solid var(--fill-color);\n",
+              "    border-color: transparent;\n",
+              "    border-bottom-color: var(--fill-color);\n",
+              "    animation:\n",
+              "      spin 1s steps(1) infinite;\n",
+              "  }\n",
+              "\n",
+              "  @keyframes spin {\n",
+              "    0% {\n",
+              "      border-color: transparent;\n",
+              "      border-bottom-color: var(--fill-color);\n",
+              "      border-left-color: var(--fill-color);\n",
+              "    }\n",
+              "    20% {\n",
+              "      border-color: transparent;\n",
+              "      border-left-color: var(--fill-color);\n",
+              "      border-top-color: var(--fill-color);\n",
+              "    }\n",
+              "    30% {\n",
+              "      border-color: transparent;\n",
+              "      border-left-color: var(--fill-color);\n",
+              "      border-top-color: var(--fill-color);\n",
+              "      border-right-color: var(--fill-color);\n",
+              "    }\n",
+              "    40% {\n",
+              "      border-color: transparent;\n",
+              "      border-right-color: var(--fill-color);\n",
+              "      border-top-color: var(--fill-color);\n",
+              "    }\n",
+              "    60% {\n",
+              "      border-color: transparent;\n",
+              "      border-right-color: var(--fill-color);\n",
+              "    }\n",
+              "    80% {\n",
+              "      border-color: transparent;\n",
+              "      border-right-color: var(--fill-color);\n",
+              "      border-bottom-color: var(--fill-color);\n",
+              "    }\n",
+              "    90% {\n",
+              "      border-color: transparent;\n",
+              "      border-bottom-color: var(--fill-color);\n",
+              "    }\n",
+              "  }\n",
+              "</style>\n",
+              "\n",
+              "  <script>\n",
+              "    async function quickchart(key) {\n",
+              "      const quickchartButtonEl =\n",
+              "        document.querySelector('#' + key + ' button');\n",
+              "      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
+              "      quickchartButtonEl.classList.add('colab-df-spinner');\n",
+              "      try {\n",
+              "        const charts = await google.colab.kernel.invokeFunction(\n",
+              "            'suggestCharts', [key], {});\n",
+              "      } catch (error) {\n",
+              "        console.error('Error during call to suggestCharts:', error);\n",
+              "      }\n",
+              "      quickchartButtonEl.classList.remove('colab-df-spinner');\n",
+              "      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
+              "    }\n",
+              "    (() => {\n",
+              "      let quickchartButtonEl =\n",
+              "        document.querySelector('#df-66c438ee-b30e-48e1-808e-7b2da6583b0f button');\n",
+              "      quickchartButtonEl.style.display =\n",
+              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
+              "    })();\n",
+              "  </script>\n",
+              "</div>\n",
+              "\n",
+              "    </div>\n",
+              "  </div>\n"
+            ],
+            "application/vnd.google.colaboratory.intrinsic+json": {
+              "type": "dataframe",
+              "variable_name": "df"
+            }
+          },
+          "metadata": {},
+          "execution_count": 9
+        }
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "## Count number of entries for each property\n",
+        "for i in df.columns.values:\n",
+        "  val=df[i].replace('na',np.nan).dropna().values\n",
+        "  print(i,len(val))"
+      ],
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/"
+        },
+        "id": "FTsZSTDbGUbH",
+        "outputId": "3a024410-29ed-442a-c405-a90b5985da09"
+      },
+      "execution_count": 10,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "jid 75993\n",
+            "spg_number 75993\n",
+            "spg_symbol 75993\n",
+            "formula 75993\n",
+            "formation_energy_peratom 75993\n",
+            "func 75993\n",
+            "optb88vdw_bandgap 75993\n",
+            "atoms 75993\n",
+            "slme 9770\n",
+            "magmom_oszicar 71320\n",
+            "spillage 11377\n",
+            "elastic_tensor 25513\n",
+            "effective_masses_300K 75993\n",
+            "kpoint_length_unit 75671\n",
+            "maxdiff_mesh 5861\n",
+            "maxdiff_bz 5861\n",
+            "encut 75670\n",
+            "optb88vdw_total_energy 75993\n",
+            "epsx 52168\n",
+            "epsy 52168\n",
+            "epsz 52168\n",
+            "mepsx 18293\n",
+            "mepsy 18293\n",
+            "mepsz 18293\n",
+            "modes 13910\n",
+            "magmom_outcar 74261\n",
+            "max_efg 11871\n",
+            "avg_elec_mass 17645\n",
+            "avg_hole_mass 17645\n",
+            "icsd 75993\n",
+            "dfpt_piezo_max_eij 4799\n",
+            "dfpt_piezo_max_dij 3347\n",
+            "dfpt_piezo_max_dielectric 4706\n",
+            "dfpt_piezo_max_dielectric_electronic 4809\n",
+            "dfpt_piezo_max_dielectric_ionic 4809\n",
+            "max_ir_mode 4805\n",
+            "min_ir_mode 4809\n",
+            "n-Seebeck 23218\n",
+            "p-Seebeck 23218\n",
+            "n-powerfact 23218\n",
+            "p-powerfact 23218\n",
+            "ncond 23218\n",
+            "pcond 23218\n",
+            "nkappa 23218\n",
+            "pkappa 23218\n",
+            "ehull 75993\n",
+            "Tc_supercon 1058\n",
+            "dimensionality 75560\n",
+            "efg 75993\n",
+            "xml_data_link 75993\n",
+            "typ 75993\n",
+            "exfoliation_energy 813\n",
+            "spg 75993\n",
+            "crys 75993\n",
+            "density 75993\n",
+            "poisson 23597\n",
+            "raw_files 75993\n",
+            "nat 75993\n",
+            "bulk_modulus_kv 23824\n",
+            "shear_modulus_gv 23824\n",
+            "mbj_bandgap 19805\n",
+            "hse_gap 56\n",
+            "reference 75993\n",
+            "search 75993\n"
+          ]
+        }
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "from jarvis.core.atoms import Atoms\n",
+        "bm=df[df.bulk_modulus_kv != 'na']\n",
+        "data = [(Atoms.from_dict(bm.iloc[i]['atoms']).pymatgen_converter(), bm.iloc[i].bulk_modulus_kv) for i in range(len(bm))]"
+      ],
+      "metadata": {
+        "id": "rW4KEnICGVxE"
+      },
+      "execution_count": 11,
+      "outputs": []
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "import itertools\n",
+        "def get_stoichiometry(elements):\n",
+        "    return [(g[0], len(list(g[1]))) for g in itertools.groupby(elements)]"
+      ],
+      "metadata": {
+        "id": "0gQUS5rQGaK5"
+      },
+      "execution_count": 12,
+      "outputs": []
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        " ## Use all the material dataset for training the bulk modulus\n",
+        "from tqdm import tqdm\n",
+        "\n",
+        "stoichs=[]   #stoichiometry\n",
+        "bulk=[]      #only include positive bulk modulus\n",
+        "\n",
+        "for i in tqdm(range(len(bm))):\n",
+        "  if (bm.iloc[i]['bulk_modulus_kv'])>1:\n",
+        "    stoichs.append(Atoms.from_dict(bm.iloc[i]['atoms']).pymatgen_converter())\n",
+        "    bulk.append(bm.iloc[i]['bulk_modulus_kv'])\n"
+      ],
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/"
+        },
+        "id": "YaMVVrguGe2s",
+        "outputId": "25dcd209-e980-4a20-c650-eb17046dda62"
+      },
+      "execution_count": 13,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "100%|██████████| 23824/23824 [00:36<00:00, 656.64it/s] \n"
+          ]
+        }
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "data_ran=list(zip(stoichs,bulk))\n",
+        "#write out the dataset, to train later\n",
+        "import pickle\n",
+        "with open('data_ran.pickle', 'wb') as f:\n",
+        "    pickle.dump(data_ran, f)"
+      ],
+      "metadata": {
+        "id": "0lxmfaHEHhs6"
+      },
+      "execution_count": 18,
+      "outputs": []
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        " #read in the dataset\n",
+        "data_ran=pd.read_pickle('./data_ran.pickle')"
+      ],
+      "metadata": {
+        "id": "dz2y9oNGH-rO"
+      },
+      "execution_count": 19,
+      "outputs": []
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "import random\n",
+        "\n",
+        "random.shuffle(data_ran)\n",
+        "\n",
+        "structures=[d[0] for d in data_ran]\n",
+        "targets=np.log10([d[1] for d in data_ran])\n",
+        "\n",
+        "print(structures[0],targets[0])"
+      ],
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/"
+        },
+        "id": "IllZhvMxHh0x",
+        "outputId": "9d8e5d95-ff3b-4b06-d674-ac15c663fe6e"
+      },
+      "execution_count": 20,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Full Formula (Al2 O1)\n",
+            "Reduced Formula: Al2O\n",
+            "abc   :   2.691974   2.821216   5.955222\n",
+            "angles:  90.000000  90.000000  90.000000\n",
+            "pbc   :       True       True       True\n",
+            "Sites (3)\n",
+            "  #  SP            a    b         c\n",
+            "---  ----  ---------  ---  --------\n",
+            "  0  Al    -0.033312    0  0.757299\n",
+            "  1  Al    -0.033312    0  0.242701\n",
+            "  2  O      0.466623    0  0 1.757547853469244\n"
+          ]
+        }
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "# get element types in the dataset\n",
+        "elem_list = get_element_list(structures)\n",
+        "# setup a graph converter\n",
+        "converter = Structure2Graph(element_types=elem_list, cutoff=4.0)\n",
+        "# convert the raw dataset into MEGNetDataset\n",
+        "mp_dataset = MGLDataset(\n",
+        "    structures=structures,\n",
+        "    labels={\"bulk_modulus_kv\": targets},\n",
+        "    converter=converter,\n",
+        ")"
+      ],
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/"
+        },
+        "id": "gkBUklhmIeOb",
+        "outputId": "13cc0804-8a6b-4a18-9153-228fe781ab5b"
+      },
+      "execution_count": 21,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "100%|██████████| 23173/23173 [00:47<00:00, 483.02it/s]\n"
+          ]
+        }
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        " train_data, val_data, test_data = split_dataset(\n",
+        "    mp_dataset,\n",
+        "    frac_list=[0.6, 0.2, 0.2],\n",
+        "    shuffle=True,\n",
+        "    random_state=42,\n",
+        ")\n",
+        "train_loader, val_loader, test_loader = MGLDataLoader(\n",
+        "    train_data=train_data,\n",
+        "    val_data=val_data,\n",
+        "    test_data=test_data,\n",
+        "    batch_size=64,\n",
+        "    num_workers=0,\n",
+        ")"
+      ],
+      "metadata": {
+        "id": "Tk7mjkwDIqOJ"
+      },
+      "execution_count": 22,
+      "outputs": []
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "# setup the embedding layer for node attributes\n",
+        "node_embed = torch.nn.Embedding(len(elem_list), 16)\n",
+        "# define the bond expansion\n",
+        "bond_expansion = BondExpansion(rbf_type=\"Gaussian\", initial=0.0, final=5.0, num_centers=100, width=0.5)\n",
+        "\n",
+        "# setup the architecture of MEGNet model\n",
+        "model = MEGNet(\n",
+        "    dim_node_embedding=16,\n",
+        "    dim_edge_embedding=100,\n",
+        "    dim_state_embedding=2,\n",
+        "    nblocks=3,\n",
+        "    hidden_layer_sizes_input=(64, 32),\n",
+        "    hidden_layer_sizes_conv=(64, 64, 32),\n",
+        "    nlayers_set2set=1,\n",
+        "    niters_set2set=2,\n",
+        "    hidden_layer_sizes_output=(32, 16),\n",
+        "    is_classification=False,\n",
+        "    activation_type=\"softplus2\",\n",
+        "    bond_expansion=bond_expansion,\n",
+        "    #collate_fn=collate_fn,  shivani - not needed now?\n",
+        "    cutoff=4.0,\n",
+        "    gauss_width=0.5,\n",
+        ")\n",
+        "\n",
+        "# setup the MEGNetTrainer\n",
+        "lit_module = ModelLightningModule(model=model)"
+      ],
+      "metadata": {
+        "id": "jREU_HYVIvoG"
+      },
+      "execution_count": 23,
+      "outputs": []
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "logger = CSVLogger(\"logged\", name=\"MEGNet_training\")\n",
+        "trainer = Trainer(max_epochs=5, accelerator=\"cpu\", logger=logger) #set to SMALL NUMBER FOR TESTING, PLEASE CHANGE.\n",
+        "trainer.fit(model=lit_module, train_dataloaders=train_loader, val_dataloaders=val_loader)\n",
+        "\n",
+        "warnings.simplefilter(\"ignore\")"
+      ],
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/",
+          "height": 656,
+          "referenced_widgets": [
+            "f7321d7b1b9a4dbe905092f388240f23",
+            "79500fbf2f93417796e265786cb54a43",
+            "b755785fab01467cb5989d11385e716c",
+            "c26f6b42e3f348f2a4e161765d99042e",
+            "d7150457f96049c88b5a7e2604670830",
+            "49a1ca9a00214ab8bf626d1d16f64c75",
+            "ff6205ce16e447368fe2f232db393de0",
+            "5ecf53db53174e2c86358541bc4f1a2b",
+            "db1985753e164a188e96db0188528d22",
+            "14ad15cdf67047879b38fcb976c793a7",
+            "690367a2eeee4bb9bedc20effdc450b3",
+            "56705796817d43028c6eddfefc18336f",
+            "d80bf4bdb76149b68e674b2ee649626c",
+            "867bb34bd9534aa39c85c07fe3f92f4e",
+            "dffbbe151dd34200beff08eafd98a380",
+            "f0507d80a2c74d53b4963130af706fb8",
+            "79fcd95516f44348a313203b209e0dbb",
+            "5393fa5795634e8ba5603785421b4b7e",
+            "629aa27bc05e4b6890c0457d57175e57",
+            "39c9bef36079445199e8b9b4c310a207",
+            "2abee34399b5404f8aa2d13ca1f8a0a1",
+            "82c48b8ef01b462d9df631e9d172316b",
+            "73653ee65cde4122ba0268dabc34f827",
+            "b96935fe7dea45859703dcd49a3b1f52",
+            "d94c1dbd52b44ae9b9e565e44f691e05",
+            "a2ae7f36742049ab9980e60fc1014d86",
+            "bb160cdca74641a088df5ba8445517cc",
+            "02b5bd9111e14cc2acb3ca61bbd7878d",
+            "cb9e5e4447c64dcc950f0f9b6f64eacd",
+            "02f73d2307e0464aadeb4e728ea98f6b",
+            "df300bb1205d4ccf90ade86c1197a971",
+            "2a15f542acf8406b890f4b1d4063446a",
+            "c45569e490c74ca996fee25f8bd31cdf",
+            "d79c6b456ffb4289921288199c1a5e93",
+            "74559eacbf754aec8abd39be4ce5948b",
+            "3d9ca4d6a78b4be388d47a2c26a2d534",
+            "1abde559f901468aa22132e3e7ded2c6",
+            "589dc33928254b279a9561a9f0e1edd2",
+            "543ce0246d5d4f26b149f57170032644",
+            "68c82105b3f04b00bdbb4b7bc31d0db5",
+            "a2b86afdb6fd4447abd6a782ec961e7b",
+            "3bcbe7eb46c1470d91c137937ca29cb6",
+            "f7255b3f29b740339a4bfa0419d46114",
+            "66b0e7e3d46248c3b6fed1687ec424ac",
+            "3b8db07a150a4f058a540e5d584a981c",
+            "c51ffc590efd48988bc043157000c46d",
+            "0bc1b357649b490696dc0498590c2253",
+            "b8ed08a8827440e5944221ee4e577a22",
+            "9bf98247ac654ced921ccb3f59029f46",
+            "4abf302ed171414e9a4204d72e84af21",
+            "1dc96decbde849fc9750042eabc26918",
+            "ef2d223473fd466e83ea73541e50b114",
+            "9f3e170ad77d494785fb4a1827472873",
+            "cbd1497f4a404b649052068a93025e31",
+            "0b7acd53e36347b38de1e31a244bd484",
+            "8f22afc4e41a45f28fb1c81f37c554fc",
+            "629f5065fec04c039ce71a88aca28ac7",
+            "3671f10fdae141cb9e0a47cc1db97210",
+            "50f79d64fa0a4b94b24b5c7a06e0af12",
+            "4fd6b3e353ad4fb4af11ca5985e1bfe5",
+            "693131233ec241bcb7ddbe8a8e1ff2e0",
+            "73eed7e431de45f091117115ed11dbe5",
+            "7b94ecf3158748728de903d980e18c38",
+            "43d879e9907b43f6a800861eae99e048",
+            "4f99d7a4c905449db8ed0f8061a485b8",
+            "d54dea38ba5449de89353102e31c9214",
+            "21db824539da4758a8aa5c6351949cc5",
+            "73ae5b95afc24ba2bebdcdf077ec7c43",
+            "7112ceeb185f424a95b08454ee688b18",
+            "dd06ea396d3c4faeba71a50f77b75701",
+            "d5ab3316f9754baa80a985abfc27b64d",
+            "0d2671b5646542419e45f1311d8993c3",
+            "df51d44724d64c0ca5c127afdf373ac7",
+            "2fd82da052dd482eab2679261b5c0f3f",
+            "e5a739d5069f4e0db2cca257a96bf97a",
+            "00a869694a674b6c842722a59cb8da12",
+            "8dd15ab4f07246a2b263fdf29c1656f9"
+          ]
+        },
+        "id": "r-fFV2ncI-zW",
+        "outputId": "758b858a-daf7-42fc-8622-d54f67818163"
+      },
+      "execution_count": 24,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "INFO: GPU available: False, used: False\n",
+            "INFO:lightning.pytorch.utilities.rank_zero:GPU available: False, used: False\n",
+            "INFO: TPU available: False, using: 0 TPU cores\n",
+            "INFO:lightning.pytorch.utilities.rank_zero:TPU available: False, using: 0 TPU cores\n",
+            "INFO: HPU available: False, using: 0 HPUs\n",
+            "INFO:lightning.pytorch.utilities.rank_zero:HPU available: False, using: 0 HPUs\n",
+            "INFO: \n",
+            "  | Name  | Type              | Params | Mode \n",
+            "----------------------------------------------------\n",
+            "0 | model | MEGNet            | 189 K  | train\n",
+            "1 | mae   | MeanAbsoluteError | 0      | train\n",
+            "2 | rmse  | MeanSquaredError  | 0      | train\n",
+            "----------------------------------------------------\n",
+            "189 K     Trainable params\n",
+            "100       Non-trainable params\n",
+            "189 K     Total params\n",
+            "0.758     Total estimated model params size (MB)\n",
+            "109       Modules in train mode\n",
+            "0         Modules in eval mode\n",
+            "INFO:lightning.pytorch.callbacks.model_summary:\n",
+            "  | Name  | Type              | Params | Mode \n",
+            "----------------------------------------------------\n",
+            "0 | model | MEGNet            | 189 K  | train\n",
+            "1 | mae   | MeanAbsoluteError | 0      | train\n",
+            "2 | rmse  | MeanSquaredError  | 0      | train\n",
+            "----------------------------------------------------\n",
+            "189 K     Trainable params\n",
+            "100       Non-trainable params\n",
+            "189 K     Total params\n",
+            "0.758     Total estimated model params size (MB)\n",
+            "109       Modules in train mode\n",
+            "0         Modules in eval mode\n"
+          ]
+        },
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": [
+              "Sanity Checking: |          | 0/? [00:00<?, ?it/s]"
+            ],
+            "application/vnd.jupyter.widget-view+json": {
+              "version_major": 2,
+              "version_minor": 0,
+              "model_id": "f7321d7b1b9a4dbe905092f388240f23"
+            }
+          },
+          "metadata": {}
+        },
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": [
+              "Training: |          | 0/? [00:00<?, ?it/s]"
+            ],
+            "application/vnd.jupyter.widget-view+json": {
+              "version_major": 2,
+              "version_minor": 0,
+              "model_id": "56705796817d43028c6eddfefc18336f"
+            }
+          },
+          "metadata": {}
+        },
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": [
+              "Validation: |          | 0/? [00:00<?, ?it/s]"
+            ],
+            "application/vnd.jupyter.widget-view+json": {
+              "version_major": 2,
+              "version_minor": 0,
+              "model_id": "73653ee65cde4122ba0268dabc34f827"
+            }
+          },
+          "metadata": {}
+        },
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": [
+              "Validation: |          | 0/? [00:00<?, ?it/s]"
+            ],
+            "application/vnd.jupyter.widget-view+json": {
+              "version_major": 2,
+              "version_minor": 0,
+              "model_id": "d79c6b456ffb4289921288199c1a5e93"
+            }
+          },
+          "metadata": {}
+        },
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": [
+              "Validation: |          | 0/? [00:00<?, ?it/s]"
+            ],
+            "application/vnd.jupyter.widget-view+json": {
+              "version_major": 2,
+              "version_minor": 0,
+              "model_id": "3b8db07a150a4f058a540e5d584a981c"
+            }
+          },
+          "metadata": {}
+        },
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": [
+              "Validation: |          | 0/? [00:00<?, ?it/s]"
+            ],
+            "application/vnd.jupyter.widget-view+json": {
+              "version_major": 2,
+              "version_minor": 0,
+              "model_id": "8f22afc4e41a45f28fb1c81f37c554fc"
+            }
+          },
+          "metadata": {}
+        },
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": [
+              "Validation: |          | 0/? [00:00<?, ?it/s]"
+            ],
+            "application/vnd.jupyter.widget-view+json": {
+              "version_major": 2,
+              "version_minor": 0,
+              "model_id": "21db824539da4758a8aa5c6351949cc5"
+            }
+          },
+          "metadata": {}
+        },
+        {
+          "output_type": "stream",
+          "name": "stderr",
+          "text": [
+            "INFO: `Trainer.fit` stopped: `max_epochs=5` reached.\n",
+            "INFO:lightning.pytorch.utilities.rank_zero:`Trainer.fit` stopped: `max_epochs=5` reached.\n"
+          ]
+        }
+      ]
+    },
+    {
+      "cell_type": "code",
+      "source": [
+        "metrics = pd.read_csv(\"logged/MEGNet_training/version_0/metrics.csv\")\n",
+        "metrics[\"train_MAE\"].dropna().plot()\n",
+        "metrics[\"val_MAE\"].dropna().plot()\n",
+        "\n",
+        "_ = plt.legend()\n",
+        "#plt.savefig(\"loss.jpg\")"
+      ],
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/",
+          "height": 430
+        },
+        "id": "JpFwUt4_JMjZ",
+        "outputId": "06c0bfc7-7c4b-40fa-b4d6-35e054a407bc"
+      },
+      "execution_count": 25,
+      "outputs": [
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": [
+              "<Figure size 640x480 with 1 Axes>"
+            ],
+            "image/png": "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\n"
+          },
+          "metadata": {}
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file