cyrusyc commited on
Commit
dba3031
1 Parent(s): b5af995

some minor cleanup and test

Browse files
.github/workflows/test.yaml CHANGED
@@ -31,25 +31,4 @@ jobs:
31
 
32
  - name: Run tests
33
  run: |
34
- pytest tests
35
-
36
- test-deploy:
37
- runs-on: ubuntu-latest
38
- needs: test
39
- steps:
40
- - name: Checkout repository
41
- uses: actions/checkout@v2
42
-
43
- - name: Set up Python 3.11
44
- uses: actions/setup-python@v2
45
- with:
46
- python-version: "3.11"
47
-
48
- - name: Install dependencies
49
- run: |
50
- python -m pip install --upgrade pip
51
- pip install .[app]
52
-
53
- - name: Run deploy tests
54
- run: |
55
- streamlit run serve/app.py
 
31
 
32
  - name: Run tests
33
  run: |
34
+ pytest tests
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
mlip_arena/tasks/combustion/water.ipynb CHANGED
@@ -143,6 +143,17 @@
143
  "/pscratch/sd/c/cyrusyc/.conda/mlip-arena/bin/python -m distributed.cli.dask_worker tcp://128.55.64.18:39213 --name dummy-name --nthreads 1 --memory-limit 59.60GiB --nanny --death-timeout 86400\n",
144
  "\n"
145
  ]
 
 
 
 
 
 
 
 
 
 
 
146
  }
147
  ],
148
  "source": [
@@ -222,7 +233,7 @@
222
  },
223
  {
224
  "cell_type": "code",
225
- "execution_count": null,
226
  "metadata": {
227
  "tags": []
228
  },
@@ -538,6 +549,214 @@
538
  },
539
  "metadata": {},
540
  "output_type": "display_data"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
541
  }
542
  ],
543
  "source": [
 
143
  "/pscratch/sd/c/cyrusyc/.conda/mlip-arena/bin/python -m distributed.cli.dask_worker tcp://128.55.64.18:39213 --name dummy-name --nthreads 1 --memory-limit 59.60GiB --nanny --death-timeout 86400\n",
144
  "\n"
145
  ]
146
+ },
147
+ {
148
+ "name": "stderr",
149
+ "output_type": "stream",
150
+ "text": [
151
+ "2024-09-23 01:13:02,497 - distributed.scheduler - ERROR - Task md-7-afd01641c2bb41f1a26704e2fedf9ab4-1 marked as failed because 4 workers died while trying to run it\n",
152
+ "2024-09-23 03:36:38,684 - distributed.scheduler - ERROR - Task md-9-598f71df60d946639d37372b2b5d6dac-1 marked as failed because 4 workers died while trying to run it\n",
153
+ "2024-09-23 03:37:55,799 - distributed.scheduler - ERROR - Task md-6-17b6c0960c2c488682ec4cc080e23bef-1 marked as failed because 4 workers died while trying to run it\n",
154
+ "2024-09-23 03:57:30,367 - distributed.scheduler - ERROR - Task md-8-bce1a611143e49fc95b28e9c825fc257-1 marked as failed because 4 workers died while trying to run it\n",
155
+ "2024-09-23 03:57:59,183 - distributed.scheduler - ERROR - Task md-2-8e508991e36a4969ae355d1b0ed3d34d-1 marked as failed because 4 workers died while trying to run it\n"
156
+ ]
157
  }
158
  ],
159
  "source": [
 
233
  },
234
  {
235
  "cell_type": "code",
236
+ "execution_count": 5,
237
  "metadata": {
238
  "tags": []
239
  },
 
549
  },
550
  "metadata": {},
551
  "output_type": "display_data"
552
+ },
553
+ {
554
+ "data": {
555
+ "text/html": [
556
+ "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">03:57:59.188 | <span style=\"color: #d70000; text-decoration-color: #d70000\">ERROR</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'prompt-newt'</span> - Encountered exception during execution:\n",
557
+ "Traceback (most recent call last):\n",
558
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/engine.py\", line 867, in orchestrate_flow_run\n",
559
+ " result = await flow_call.aresult()\n",
560
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^\n",
561
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py\", line 327, in aresult\n",
562
+ " return await asyncio.wrap_future(self.future)\n",
563
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
564
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py\", line 352, in _run_sync\n",
565
+ " result = self.fn(*self.args, **self.kwargs)\n",
566
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
567
+ " File \"/tmp/ipykernel_1275810/1920202683.py\", line 26, in combustion\n",
568
+ " return [future.result() for future in futures]\n",
569
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
570
+ " File \"/tmp/ipykernel_1275810/1920202683.py\", line 26, in &lt;listcomp&gt;\n",
571
+ " return [future.result() for future in futures]\n",
572
+ " ^^^^^^^^^^^^^^^\n",
573
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/futures.py\", line 228, in result\n",
574
+ " return from_sync.call_soon_in_loop_thread(result).result()\n",
575
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
576
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py\", line 318, in result\n",
577
+ " return self.future.result(timeout=timeout)\n",
578
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
579
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py\", line 188, in result\n",
580
+ " return self.__get_result()\n",
581
+ " ^^^^^^^^^^^^^^^^^^^\n",
582
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/concurrent/futures/_base.py\", line 401, in __get_result\n",
583
+ " raise self._exception\n",
584
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py\", line 389, in _run_async\n",
585
+ " result = await coro\n",
586
+ " ^^^^^^^^^^\n",
587
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/futures.py\", line 237, in _result\n",
588
+ " return await final_state.result(raise_on_failure=raise_on_failure, fetch=True)\n",
589
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
590
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/states.py\", line 91, in _get_state_result\n",
591
+ " raise await get_state_exception(state)\n",
592
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect_dask/task_runners.py\", line 311, in wait\n",
593
+ " return await future.result(timeout=timeout)\n",
594
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
595
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/distributed/client.py\", line 336, in _result\n",
596
+ " raise exc.with_traceback(tb)\n",
597
+ "distributed.scheduler.KilledWorker: Attempted to run task 'md-2-8e508991e36a4969ae355d1b0ed3d34d-1' on 4 different workers, but all those workers died while running it. The last worker that attempt to run the task was tcp://128.55.67.15:38671. Inspecting worker logs is often a good next step to diagnose what went wrong. For more information see <span style=\"color: #0000ff; text-decoration-color: #0000ff\">https://distributed.dask.org/en/stable/killed.html.</span>\n",
598
+ "</pre>\n"
599
+ ],
600
+ "text/plain": [
601
+ "03:57:59.188 | \u001b[38;5;160mERROR\u001b[0m | Flow run\u001b[35m 'prompt-newt'\u001b[0m - Encountered exception during execution:\n",
602
+ "Traceback (most recent call last):\n",
603
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/engine.py\", line 867, in orchestrate_flow_run\n",
604
+ " result = await flow_call.aresult()\n",
605
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^\n",
606
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py\", line 327, in aresult\n",
607
+ " return await asyncio.wrap_future(self.future)\n",
608
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
609
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py\", line 352, in _run_sync\n",
610
+ " result = self.fn(*self.args, **self.kwargs)\n",
611
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
612
+ " File \"/tmp/ipykernel_1275810/1920202683.py\", line 26, in combustion\n",
613
+ " return [future.result() for future in futures]\n",
614
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
615
+ " File \"/tmp/ipykernel_1275810/1920202683.py\", line 26, in <listcomp>\n",
616
+ " return [future.result() for future in futures]\n",
617
+ " ^^^^^^^^^^^^^^^\n",
618
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/futures.py\", line 228, in result\n",
619
+ " return from_sync.call_soon_in_loop_thread(result).result()\n",
620
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
621
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py\", line 318, in result\n",
622
+ " return self.future.result(timeout=timeout)\n",
623
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
624
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py\", line 188, in result\n",
625
+ " return self.__get_result()\n",
626
+ " ^^^^^^^^^^^^^^^^^^^\n",
627
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/concurrent/futures/_base.py\", line 401, in __get_result\n",
628
+ " raise self._exception\n",
629
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py\", line 389, in _run_async\n",
630
+ " result = await coro\n",
631
+ " ^^^^^^^^^^\n",
632
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/futures.py\", line 237, in _result\n",
633
+ " return await final_state.result(raise_on_failure=raise_on_failure, fetch=True)\n",
634
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
635
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/states.py\", line 91, in _get_state_result\n",
636
+ " raise await get_state_exception(state)\n",
637
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect_dask/task_runners.py\", line 311, in wait\n",
638
+ " return await future.result(timeout=timeout)\n",
639
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
640
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/distributed/client.py\", line 336, in _result\n",
641
+ " raise exc.with_traceback(tb)\n",
642
+ "distributed.scheduler.KilledWorker: Attempted to run task 'md-2-8e508991e36a4969ae355d1b0ed3d34d-1' on 4 different workers, but all those workers died while running it. The last worker that attempt to run the task was tcp://128.55.67.15:38671. Inspecting worker logs is often a good next step to diagnose what went wrong. For more information see \u001b[94mhttps://distributed.dask.org/en/stable/killed.html.\u001b[0m\n"
643
+ ]
644
+ },
645
+ "metadata": {},
646
+ "output_type": "display_data"
647
+ },
648
+ {
649
+ "data": {
650
+ "text/html": [
651
+ "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">03:58:27.163 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Task run 'md-2' - Crash detected! Execution was interrupted by an unexpected exception: KilledWorker: Attempted to run task 'md-2-8e508991e36a4969ae355d1b0ed3d34d-1' on 4 different workers, but all those workers died while running it. The last worker that attempt to run the task was tcp://128.55.67.15:38671. Inspecting worker logs is often a good next step to diagnose what went wrong. For more information see <span style=\"color: #0000ff; text-decoration-color: #0000ff\">https://distributed.dask.org/en/stable/killed.html.</span>\n",
652
+ "</pre>\n"
653
+ ],
654
+ "text/plain": [
655
+ "03:58:27.163 | \u001b[36mINFO\u001b[0m | Task run 'md-2' - Crash detected! Execution was interrupted by an unexpected exception: KilledWorker: Attempted to run task 'md-2-8e508991e36a4969ae355d1b0ed3d34d-1' on 4 different workers, but all those workers died while running it. The last worker that attempt to run the task was tcp://128.55.67.15:38671. Inspecting worker logs is often a good next step to diagnose what went wrong. For more information see \u001b[94mhttps://distributed.dask.org/en/stable/killed.html.\u001b[0m\n"
656
+ ]
657
+ },
658
+ "metadata": {},
659
+ "output_type": "display_data"
660
+ },
661
+ {
662
+ "data": {
663
+ "text/html": [
664
+ "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">03:58:27.447 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Task run 'md-6' - Crash detected! Execution was interrupted by an unexpected exception: KilledWorker: Attempted to run task 'md-6-17b6c0960c2c488682ec4cc080e23bef-1' on 4 different workers, but all those workers died while running it. The last worker that attempt to run the task was tcp://128.55.82.169:45277. Inspecting worker logs is often a good next step to diagnose what went wrong. For more information see <span style=\"color: #0000ff; text-decoration-color: #0000ff\">https://distributed.dask.org/en/stable/killed.html.</span>\n",
665
+ "</pre>\n"
666
+ ],
667
+ "text/plain": [
668
+ "03:58:27.447 | \u001b[36mINFO\u001b[0m | Task run 'md-6' - Crash detected! Execution was interrupted by an unexpected exception: KilledWorker: Attempted to run task 'md-6-17b6c0960c2c488682ec4cc080e23bef-1' on 4 different workers, but all those workers died while running it. The last worker that attempt to run the task was tcp://128.55.82.169:45277. Inspecting worker logs is often a good next step to diagnose what went wrong. For more information see \u001b[94mhttps://distributed.dask.org/en/stable/killed.html.\u001b[0m\n"
669
+ ]
670
+ },
671
+ "metadata": {},
672
+ "output_type": "display_data"
673
+ },
674
+ {
675
+ "data": {
676
+ "text/html": [
677
+ "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">03:58:27.714 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Task run 'md-7' - Crash detected! Execution was interrupted by an unexpected exception: KilledWorker: Attempted to run task 'md-7-afd01641c2bb41f1a26704e2fedf9ab4-1' on 4 different workers, but all those workers died while running it. The last worker that attempt to run the task was tcp://128.55.68.221:42379. Inspecting worker logs is often a good next step to diagnose what went wrong. For more information see <span style=\"color: #0000ff; text-decoration-color: #0000ff\">https://distributed.dask.org/en/stable/killed.html.</span>\n",
678
+ "</pre>\n"
679
+ ],
680
+ "text/plain": [
681
+ "03:58:27.714 | \u001b[36mINFO\u001b[0m | Task run 'md-7' - Crash detected! Execution was interrupted by an unexpected exception: KilledWorker: Attempted to run task 'md-7-afd01641c2bb41f1a26704e2fedf9ab4-1' on 4 different workers, but all those workers died while running it. The last worker that attempt to run the task was tcp://128.55.68.221:42379. Inspecting worker logs is often a good next step to diagnose what went wrong. For more information see \u001b[94mhttps://distributed.dask.org/en/stable/killed.html.\u001b[0m\n"
682
+ ]
683
+ },
684
+ "metadata": {},
685
+ "output_type": "display_data"
686
+ },
687
+ {
688
+ "data": {
689
+ "text/html": [
690
+ "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">03:58:28.024 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Task run 'md-8' - Crash detected! Execution was interrupted by an unexpected exception: KilledWorker: Attempted to run task 'md-8-bce1a611143e49fc95b28e9c825fc257-1' on 4 different workers, but all those workers died while running it. The last worker that attempt to run the task was tcp://128.55.66.175:34615. Inspecting worker logs is often a good next step to diagnose what went wrong. For more information see <span style=\"color: #0000ff; text-decoration-color: #0000ff\">https://distributed.dask.org/en/stable/killed.html.</span>\n",
691
+ "</pre>\n"
692
+ ],
693
+ "text/plain": [
694
+ "03:58:28.024 | \u001b[36mINFO\u001b[0m | Task run 'md-8' - Crash detected! Execution was interrupted by an unexpected exception: KilledWorker: Attempted to run task 'md-8-bce1a611143e49fc95b28e9c825fc257-1' on 4 different workers, but all those workers died while running it. The last worker that attempt to run the task was tcp://128.55.66.175:34615. Inspecting worker logs is often a good next step to diagnose what went wrong. For more information see \u001b[94mhttps://distributed.dask.org/en/stable/killed.html.\u001b[0m\n"
695
+ ]
696
+ },
697
+ "metadata": {},
698
+ "output_type": "display_data"
699
+ },
700
+ {
701
+ "data": {
702
+ "text/html": [
703
+ "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">03:58:28.301 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Task run 'md-9' - Crash detected! Execution was interrupted by an unexpected exception: KilledWorker: Attempted to run task 'md-9-598f71df60d946639d37372b2b5d6dac-1' on 4 different workers, but all those workers died while running it. The last worker that attempt to run the task was tcp://128.55.66.50:40931. Inspecting worker logs is often a good next step to diagnose what went wrong. For more information see <span style=\"color: #0000ff; text-decoration-color: #0000ff\">https://distributed.dask.org/en/stable/killed.html.</span>\n",
704
+ "</pre>\n"
705
+ ],
706
+ "text/plain": [
707
+ "03:58:28.301 | \u001b[36mINFO\u001b[0m | Task run 'md-9' - Crash detected! Execution was interrupted by an unexpected exception: KilledWorker: Attempted to run task 'md-9-598f71df60d946639d37372b2b5d6dac-1' on 4 different workers, but all those workers died while running it. The last worker that attempt to run the task was tcp://128.55.66.50:40931. Inspecting worker logs is often a good next step to diagnose what went wrong. For more information see \u001b[94mhttps://distributed.dask.org/en/stable/killed.html.\u001b[0m\n"
708
+ ]
709
+ },
710
+ "metadata": {},
711
+ "output_type": "display_data"
712
+ },
713
+ {
714
+ "data": {
715
+ "text/html": [
716
+ "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">03:58:28.627 | <span style=\"color: #d70000; text-decoration-color: #d70000\">ERROR</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'prompt-newt'</span> - Finished in state <span style=\"color: #d70000; text-decoration-color: #d70000\">Failed</span>(\"Flow run encountered an exception. KilledWorker: Attempted to run task 'md-2-8e508991e36a4969ae355d1b0ed3d34d-1' on 4 different workers, but all those workers died while running it. The last worker that attempt to run the task was tcp://128.55.67.15:38671. Inspecting worker logs is often a good next step to diagnose what went wrong. For more information see <span style=\"color: #0000ff; text-decoration-color: #0000ff\">https://distributed.dask.org/en/stable/killed.html.</span>\")\n",
717
+ "</pre>\n"
718
+ ],
719
+ "text/plain": [
720
+ "03:58:28.627 | \u001b[38;5;160mERROR\u001b[0m | Flow run\u001b[35m 'prompt-newt'\u001b[0m - Finished in state \u001b[38;5;160mFailed\u001b[0m(\"Flow run encountered an exception. KilledWorker: Attempted to run task 'md-2-8e508991e36a4969ae355d1b0ed3d34d-1' on 4 different workers, but all those workers died while running it. The last worker that attempt to run the task was tcp://128.55.67.15:38671. Inspecting worker logs is often a good next step to diagnose what went wrong. For more information see \u001b[94mhttps://distributed.dask.org/en/stable/killed.html.\u001b[0m\")\n"
721
+ ]
722
+ },
723
+ "metadata": {},
724
+ "output_type": "display_data"
725
+ },
726
+ {
727
+ "ename": "KilledWorker",
728
+ "evalue": "Attempted to run task 'md-2-8e508991e36a4969ae355d1b0ed3d34d-1' on 4 different workers, but all those workers died while running it. The last worker that attempt to run the task was tcp://128.55.67.15:38671. Inspecting worker logs is often a good next step to diagnose what went wrong. For more information see https://distributed.dask.org/en/stable/killed.html.",
729
+ "output_type": "error",
730
+ "traceback": [
731
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
732
+ "\u001b[0;31mKilledWorker\u001b[0m Traceback (most recent call last)",
733
+ "Cell \u001b[0;32mIn[5], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m results \u001b[38;5;241m=\u001b[39m \u001b[43mcombustion\u001b[49m\u001b[43m(\u001b[49m\u001b[43matoms\u001b[49m\u001b[43m)\u001b[49m\n",
734
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/flows.py:1224\u001b[0m, in \u001b[0;36mFlow.__call__\u001b[0;34m(self, return_state, wait_for, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1219\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m task_viz_tracker:\n\u001b[1;32m 1220\u001b[0m \u001b[38;5;66;03m# this is a subflow, for now return a single task and do not go further\u001b[39;00m\n\u001b[1;32m 1221\u001b[0m \u001b[38;5;66;03m# we can add support for exploring subflows for tasks in the future.\u001b[39;00m\n\u001b[1;32m 1222\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m track_viz_task(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39misasync, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mname, parameters)\n\u001b[0;32m-> 1224\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43menter_flow_run_engine_from_flow_call\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1225\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1226\u001b[0m \u001b[43m \u001b[49m\u001b[43mparameters\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1227\u001b[0m \u001b[43m \u001b[49m\u001b[43mwait_for\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mwait_for\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1228\u001b[0m \u001b[43m \u001b[49m\u001b[43mreturn_type\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mreturn_type\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1229\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n",
735
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/engine.py:297\u001b[0m, in \u001b[0;36menter_flow_run_engine_from_flow_call\u001b[0;34m(flow, parameters, wait_for, return_type)\u001b[0m\n\u001b[1;32m 290\u001b[0m retval \u001b[38;5;241m=\u001b[39m from_async\u001b[38;5;241m.\u001b[39mwait_for_call_in_loop_thread(\n\u001b[1;32m 291\u001b[0m begin_run,\n\u001b[1;32m 292\u001b[0m done_callbacks\u001b[38;5;241m=\u001b[39mdone_callbacks,\n\u001b[1;32m 293\u001b[0m contexts\u001b[38;5;241m=\u001b[39mcontexts,\n\u001b[1;32m 294\u001b[0m )\n\u001b[1;32m 296\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 297\u001b[0m retval \u001b[38;5;241m=\u001b[39m \u001b[43mfrom_sync\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mwait_for_call_in_loop_thread\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 298\u001b[0m \u001b[43m \u001b[49m\u001b[43mbegin_run\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 299\u001b[0m \u001b[43m \u001b[49m\u001b[43mdone_callbacks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdone_callbacks\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 300\u001b[0m \u001b[43m \u001b[49m\u001b[43mcontexts\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcontexts\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 301\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 303\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m retval\n",
736
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/api.py:243\u001b[0m, in \u001b[0;36mfrom_sync.wait_for_call_in_loop_thread\u001b[0;34m(_from_sync__call, timeout, done_callbacks, contexts)\u001b[0m\n\u001b[1;32m 241\u001b[0m stack\u001b[38;5;241m.\u001b[39menter_context(context)\n\u001b[1;32m 242\u001b[0m waiter\u001b[38;5;241m.\u001b[39mwait()\n\u001b[0;32m--> 243\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mcall\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n",
737
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py:318\u001b[0m, in \u001b[0;36mCall.result\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 312\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mresult\u001b[39m(\u001b[38;5;28mself\u001b[39m, timeout: Optional[\u001b[38;5;28mfloat\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m T:\n\u001b[1;32m 313\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 314\u001b[0m \u001b[38;5;124;03m Wait for the result of the call.\u001b[39;00m\n\u001b[1;32m 315\u001b[0m \n\u001b[1;32m 316\u001b[0m \u001b[38;5;124;03m Not safe for use from asynchronous contexts.\u001b[39;00m\n\u001b[1;32m 317\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 318\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfuture\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n",
738
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py:179\u001b[0m, in \u001b[0;36mFuture.result\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m CancelledError()\n\u001b[1;32m 178\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_state \u001b[38;5;241m==\u001b[39m FINISHED:\n\u001b[0;32m--> 179\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m__get_result\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 181\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_condition\u001b[38;5;241m.\u001b[39mwait(timeout)\n\u001b[1;32m 183\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_state \u001b[38;5;129;01min\u001b[39;00m [CANCELLED, CANCELLED_AND_NOTIFIED]:\n\u001b[1;32m 184\u001b[0m \u001b[38;5;66;03m# Raise Prefect cancelled error instead of\u001b[39;00m\n\u001b[1;32m 185\u001b[0m \u001b[38;5;66;03m# `concurrent.futures._base.CancelledError`\u001b[39;00m\n",
739
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/concurrent/futures/_base.py:401\u001b[0m, in \u001b[0;36mFuture.__get_result\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 399\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception:\n\u001b[1;32m 400\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 401\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception\n\u001b[1;32m 402\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 403\u001b[0m \u001b[38;5;66;03m# Break a reference cycle with the exception in self._exception\u001b[39;00m\n\u001b[1;32m 404\u001b[0m \u001b[38;5;28mself\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n",
740
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py:389\u001b[0m, in \u001b[0;36mCall._run_async\u001b[0;34m(***failed resolving arguments***)\u001b[0m\n\u001b[1;32m 387\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfuture\u001b[38;5;241m.\u001b[39menforce_async_deadline() \u001b[38;5;28;01mas\u001b[39;00m cancel_scope:\n\u001b[1;32m 388\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 389\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mawait\u001b[39;00m coro\n\u001b[1;32m 390\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 391\u001b[0m \u001b[38;5;66;03m# Forget this call's arguments in order to free up any memory\u001b[39;00m\n\u001b[1;32m 392\u001b[0m \u001b[38;5;66;03m# that may be referenced by them; after a call has happened,\u001b[39;00m\n\u001b[1;32m 393\u001b[0m \u001b[38;5;66;03m# there's no need to keep a reference to them\u001b[39;00m\n\u001b[1;32m 394\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39margs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n",
741
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/client/utilities.py:78\u001b[0m, in \u001b[0;36minject_client.<locals>.with_injected_client\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 76\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mwith\u001b[39;00m context \u001b[38;5;28;01mas\u001b[39;00m new_client:\n\u001b[1;32m 77\u001b[0m kwargs\u001b[38;5;241m.\u001b[39msetdefault(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mclient\u001b[39m\u001b[38;5;124m\"\u001b[39m, new_client \u001b[38;5;129;01mor\u001b[39;00m client)\n\u001b[0;32m---> 78\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mawait\u001b[39;00m fn(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n",
742
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/engine.py:400\u001b[0m, in \u001b[0;36mcreate_then_begin_flow_run\u001b[0;34m(flow, parameters, wait_for, return_type, client, user_thread)\u001b[0m\n\u001b[1;32m 398\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m state\n\u001b[1;32m 399\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m return_type \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mresult\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[0;32m--> 400\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mawait\u001b[39;00m state\u001b[38;5;241m.\u001b[39mresult(fetch\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[1;32m 401\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 402\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInvalid return type for flow engine \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mreturn_type\u001b[38;5;132;01m!r}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
743
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/states.py:91\u001b[0m, in \u001b[0;36m_get_state_result\u001b[0;34m(state, raise_on_failure)\u001b[0m\n\u001b[1;32m 84\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m UnfinishedRun(\n\u001b[1;32m 85\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRun is in \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mstate\u001b[38;5;241m.\u001b[39mtype\u001b[38;5;241m.\u001b[39mname\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m state, its result is not available.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 86\u001b[0m )\n\u001b[1;32m 88\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m raise_on_failure \u001b[38;5;129;01mand\u001b[39;00m (\n\u001b[1;32m 89\u001b[0m state\u001b[38;5;241m.\u001b[39mis_crashed() \u001b[38;5;129;01mor\u001b[39;00m state\u001b[38;5;241m.\u001b[39mis_failed() \u001b[38;5;129;01mor\u001b[39;00m state\u001b[38;5;241m.\u001b[39mis_cancelled()\n\u001b[1;32m 90\u001b[0m ):\n\u001b[0;32m---> 91\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28;01mawait\u001b[39;00m get_state_exception(state)\n\u001b[1;32m 93\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(state\u001b[38;5;241m.\u001b[39mdata, DataDocument):\n\u001b[1;32m 94\u001b[0m result \u001b[38;5;241m=\u001b[39m result_from_state_with_data_document(\n\u001b[1;32m 95\u001b[0m state, raise_on_failure\u001b[38;5;241m=\u001b[39mraise_on_failure\n\u001b[1;32m 96\u001b[0m )\n",
744
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/engine.py:867\u001b[0m, in \u001b[0;36morchestrate_flow_run\u001b[0;34m(flow, flow_run, parameters, wait_for, interruptible, client, partial_flow_run_context, user_thread)\u001b[0m\n\u001b[1;32m 862\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 863\u001b[0m from_async\u001b[38;5;241m.\u001b[39mcall_soon_in_new_thread(\n\u001b[1;32m 864\u001b[0m flow_call, timeout\u001b[38;5;241m=\u001b[39mflow\u001b[38;5;241m.\u001b[39mtimeout_seconds\n\u001b[1;32m 865\u001b[0m )\n\u001b[0;32m--> 867\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mawait\u001b[39;00m flow_call\u001b[38;5;241m.\u001b[39maresult()\n\u001b[1;32m 869\u001b[0m waited_for_task_runs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mawait\u001b[39;00m wait_for_task_runs_and_report_crashes(\n\u001b[1;32m 870\u001b[0m flow_run_context\u001b[38;5;241m.\u001b[39mtask_run_futures, client\u001b[38;5;241m=\u001b[39mclient\n\u001b[1;32m 871\u001b[0m )\n\u001b[1;32m 872\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m PausedRun \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 873\u001b[0m \u001b[38;5;66;03m# could get raised either via utility or by returning Paused from a task run\u001b[39;00m\n\u001b[1;32m 874\u001b[0m \u001b[38;5;66;03m# if a task run pauses, we set its state as the flow's state\u001b[39;00m\n\u001b[1;32m 875\u001b[0m \u001b[38;5;66;03m# to preserve reschedule and timeout behavior\u001b[39;00m\n",
745
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py:327\u001b[0m, in \u001b[0;36mCall.aresult\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 321\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 322\u001b[0m \u001b[38;5;124;03mWait for the result of the call.\u001b[39;00m\n\u001b[1;32m 323\u001b[0m \n\u001b[1;32m 324\u001b[0m \u001b[38;5;124;03mFor use from asynchronous contexts.\u001b[39;00m\n\u001b[1;32m 325\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 326\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 327\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mawait\u001b[39;00m asyncio\u001b[38;5;241m.\u001b[39mwrap_future(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfuture)\n\u001b[1;32m 328\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m asyncio\u001b[38;5;241m.\u001b[39mCancelledError \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 329\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m CancelledError() \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mexc\u001b[39;00m\n",
746
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py:352\u001b[0m, in \u001b[0;36mCall._run_sync\u001b[0;34m(***failed resolving arguments***)\u001b[0m\n\u001b[1;32m 350\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfuture\u001b[38;5;241m.\u001b[39menforce_sync_deadline() \u001b[38;5;28;01mas\u001b[39;00m cancel_scope:\n\u001b[1;32m 351\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 352\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 353\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 354\u001b[0m \u001b[38;5;66;03m# Forget this call's arguments in order to free up any memory\u001b[39;00m\n\u001b[1;32m 355\u001b[0m \u001b[38;5;66;03m# that may be referenced by them; after a call has happened,\u001b[39;00m\n\u001b[1;32m 356\u001b[0m \u001b[38;5;66;03m# there's no need to keep a reference to them\u001b[39;00m\n\u001b[1;32m 357\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39margs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n",
747
+ "Cell \u001b[0;32mIn[4], line 26\u001b[0m, in \u001b[0;36mcombustion\u001b[0;34m(atoms)\u001b[0m\n\u001b[1;32m 6\u001b[0m future \u001b[38;5;241m=\u001b[39m MD\u001b[38;5;241m.\u001b[39msubmit(\n\u001b[1;32m 7\u001b[0m atoms\u001b[38;5;241m=\u001b[39matoms,\n\u001b[1;32m 8\u001b[0m calculator_name\u001b[38;5;241m=\u001b[39mmodel,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 21\u001b[0m restart\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[1;32m 22\u001b[0m )\n\u001b[1;32m 24\u001b[0m futures\u001b[38;5;241m.\u001b[39mappend(future)\n\u001b[0;32m---> 26\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m[\u001b[49m\u001b[43mfuture\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mfuture\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mfutures\u001b[49m\u001b[43m]\u001b[49m\n",
748
+ "Cell \u001b[0;32mIn[4], line 26\u001b[0m, in \u001b[0;36m<listcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 6\u001b[0m future \u001b[38;5;241m=\u001b[39m MD\u001b[38;5;241m.\u001b[39msubmit(\n\u001b[1;32m 7\u001b[0m atoms\u001b[38;5;241m=\u001b[39matoms,\n\u001b[1;32m 8\u001b[0m calculator_name\u001b[38;5;241m=\u001b[39mmodel,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 21\u001b[0m restart\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[1;32m 22\u001b[0m )\n\u001b[1;32m 24\u001b[0m futures\u001b[38;5;241m.\u001b[39mappend(future)\n\u001b[0;32m---> 26\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m [\u001b[43mfuture\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m future \u001b[38;5;129;01min\u001b[39;00m futures]\n",
749
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/futures.py:228\u001b[0m, in \u001b[0;36mPrefectFuture.result\u001b[0;34m(self, timeout, raise_on_failure)\u001b[0m\n\u001b[1;32m 226\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m from_async\u001b[38;5;241m.\u001b[39mcall_soon_in_loop_thread(result)\u001b[38;5;241m.\u001b[39maresult()\n\u001b[1;32m 227\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 228\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfrom_sync\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcall_soon_in_loop_thread\u001b[49m\u001b[43m(\u001b[49m\u001b[43mresult\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n",
750
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py:318\u001b[0m, in \u001b[0;36mCall.result\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 312\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mresult\u001b[39m(\u001b[38;5;28mself\u001b[39m, timeout: Optional[\u001b[38;5;28mfloat\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m T:\n\u001b[1;32m 313\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 314\u001b[0m \u001b[38;5;124;03m Wait for the result of the call.\u001b[39;00m\n\u001b[1;32m 315\u001b[0m \n\u001b[1;32m 316\u001b[0m \u001b[38;5;124;03m Not safe for use from asynchronous contexts.\u001b[39;00m\n\u001b[1;32m 317\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 318\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfuture\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n",
751
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py:188\u001b[0m, in \u001b[0;36mFuture.result\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 186\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m CancelledError()\n\u001b[1;32m 187\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_state \u001b[38;5;241m==\u001b[39m FINISHED:\n\u001b[0;32m--> 188\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m__get_result\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 189\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 190\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTimeoutError\u001b[39;00m()\n",
752
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/concurrent/futures/_base.py:401\u001b[0m, in \u001b[0;36mFuture.__get_result\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 399\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception:\n\u001b[1;32m 400\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 401\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception\n\u001b[1;32m 402\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 403\u001b[0m \u001b[38;5;66;03m# Break a reference cycle with the exception in self._exception\u001b[39;00m\n\u001b[1;32m 404\u001b[0m \u001b[38;5;28mself\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n",
753
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py:389\u001b[0m, in \u001b[0;36mCall._run_async\u001b[0;34m(***failed resolving arguments***)\u001b[0m\n\u001b[1;32m 387\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfuture\u001b[38;5;241m.\u001b[39menforce_async_deadline() \u001b[38;5;28;01mas\u001b[39;00m cancel_scope:\n\u001b[1;32m 388\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 389\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mawait\u001b[39;00m coro\n\u001b[1;32m 390\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 391\u001b[0m \u001b[38;5;66;03m# Forget this call's arguments in order to free up any memory\u001b[39;00m\n\u001b[1;32m 392\u001b[0m \u001b[38;5;66;03m# that may be referenced by them; after a call has happened,\u001b[39;00m\n\u001b[1;32m 393\u001b[0m \u001b[38;5;66;03m# there's no need to keep a reference to them\u001b[39;00m\n\u001b[1;32m 394\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39margs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n",
754
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/futures.py:237\u001b[0m, in \u001b[0;36mPrefectFuture._result\u001b[0;34m(self, timeout, raise_on_failure)\u001b[0m\n\u001b[1;32m 235\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m final_state:\n\u001b[1;32m 236\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTimeoutError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCall timed out before task finished.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m--> 237\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mawait\u001b[39;00m final_state\u001b[38;5;241m.\u001b[39mresult(raise_on_failure\u001b[38;5;241m=\u001b[39mraise_on_failure, fetch\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n",
755
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/states.py:91\u001b[0m, in \u001b[0;36m_get_state_result\u001b[0;34m(state, raise_on_failure)\u001b[0m\n\u001b[1;32m 84\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m UnfinishedRun(\n\u001b[1;32m 85\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRun is in \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mstate\u001b[38;5;241m.\u001b[39mtype\u001b[38;5;241m.\u001b[39mname\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m state, its result is not available.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 86\u001b[0m )\n\u001b[1;32m 88\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m raise_on_failure \u001b[38;5;129;01mand\u001b[39;00m (\n\u001b[1;32m 89\u001b[0m state\u001b[38;5;241m.\u001b[39mis_crashed() \u001b[38;5;129;01mor\u001b[39;00m state\u001b[38;5;241m.\u001b[39mis_failed() \u001b[38;5;129;01mor\u001b[39;00m state\u001b[38;5;241m.\u001b[39mis_cancelled()\n\u001b[1;32m 90\u001b[0m ):\n\u001b[0;32m---> 91\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28;01mawait\u001b[39;00m get_state_exception(state)\n\u001b[1;32m 93\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(state\u001b[38;5;241m.\u001b[39mdata, DataDocument):\n\u001b[1;32m 94\u001b[0m result \u001b[38;5;241m=\u001b[39m result_from_state_with_data_document(\n\u001b[1;32m 95\u001b[0m state, raise_on_failure\u001b[38;5;241m=\u001b[39mraise_on_failure\n\u001b[1;32m 96\u001b[0m )\n",
756
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect_dask/task_runners.py:311\u001b[0m, in \u001b[0;36mDaskTaskRunner.wait\u001b[0;34m(self, key, timeout)\u001b[0m\n\u001b[1;32m 309\u001b[0m future \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_dask_future(key)\n\u001b[1;32m 310\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 311\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mawait\u001b[39;00m future\u001b[38;5;241m.\u001b[39mresult(timeout\u001b[38;5;241m=\u001b[39mtimeout)\n\u001b[1;32m 312\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m distributed\u001b[38;5;241m.\u001b[39mTimeoutError:\n\u001b[1;32m 313\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n",
757
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/distributed/client.py:336\u001b[0m, in \u001b[0;36mFuture._result\u001b[0;34m(self, raiseit)\u001b[0m\n\u001b[1;32m 334\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m raiseit:\n\u001b[1;32m 335\u001b[0m typ, exc, tb \u001b[38;5;241m=\u001b[39m exc\n\u001b[0;32m--> 336\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc\u001b[38;5;241m.\u001b[39mwith_traceback(tb)\n\u001b[1;32m 337\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 338\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m exc\n",
758
+ "\u001b[0;31mKilledWorker\u001b[0m: Attempted to run task 'md-2-8e508991e36a4969ae355d1b0ed3d34d-1' on 4 different workers, but all those workers died while running it. The last worker that attempt to run the task was tcp://128.55.67.15:38671. Inspecting worker logs is often a good next step to diagnose what went wrong. For more information see https://distributed.dask.org/en/stable/killed.html."
759
+ ]
760
  }
761
  ],
762
  "source": [
mlip_arena/tasks/diatomics/alignn/homonuclear-diatomics.json CHANGED
The diff for this file is too large to render. See raw diff
 
mlip_arena/tasks/diatomics/chgnet/homonuclear-diatomics.json CHANGED
The diff for this file is too large to render. See raw diff
 
mlip_arena/tasks/diatomics/equiformer/homonuclear-diatomics.json CHANGED
The diff for this file is too large to render. See raw diff
 
mlip_arena/tasks/diatomics/escn/homonuclear-diatomics.json CHANGED
The diff for this file is too large to render. See raw diff
 
mlip_arena/tasks/diatomics/m3gnet/homonuclear-diatomics.json CHANGED
The diff for this file is too large to render. See raw diff
 
mlip_arena/tasks/diatomics/mace-mp/homonuclear-diatomics.json CHANGED
The diff for this file is too large to render. See raw diff
 
mlip_arena/tasks/diatomics/mace-off/homonuclear-diatomics.json CHANGED
The diff for this file is too large to render. See raw diff
 
mlip_arena/tasks/diatomics/orb/homonuclear-diatomics.json CHANGED
The diff for this file is too large to render. See raw diff
 
mlip_arena/tasks/diatomics/run.ipynb CHANGED
@@ -23,6 +23,8 @@
23
  "\n",
24
  "from mlip_arena.models.utils import REGISTRY, MLIPEnum\n",
25
  "\n",
 
 
26
  "# model_name = \"MACE-MP(M)\"\n",
27
  "\n",
28
  "# calc = MLIPEnum[model_name].value()"
@@ -2800,12 +2802,234 @@
2800
  },
2801
  {
2802
  "cell_type": "code",
2803
- "execution_count": 3,
2804
  "id": "a0ac2c09-370b-4fdd-bf74-ea5c4ade0215",
2805
  "metadata": {
 
2806
  "tags": []
2807
  },
2808
  "outputs": [
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2809
  {
2810
  "name": "stdout",
2811
  "output_type": "stream",
@@ -2816,7 +3040,7 @@
2816
  {
2817
  "data": {
2818
  "application/vnd.jupyter.widget-view+json": {
2819
- "model_id": "4b2d8cd4d5684d739de0cf3534849fe0",
2820
  "version_major": 2,
2821
  "version_minor": 0
2822
  },
@@ -2831,9 +3055,69 @@
2831
  "name": "stderr",
2832
  "output_type": "stream",
2833
  "text": [
2834
- "/tmp/ipykernel_337193/1177231743.py:116: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n",
2835
  " df = pd.concat([df, pd.DataFrame([data])], ignore_index=True)\n"
2836
  ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2837
  }
2838
  ],
2839
  "source": [
@@ -2847,7 +3131,7 @@
2847
  " \n",
2848
  "# if json_fpath.exists():\n",
2849
  "# continue\n",
2850
- " \n",
2851
  " print(f\"========== {model_name} ==========\")\n",
2852
  " \n",
2853
  " df = pd.DataFrame(columns=[\n",
@@ -2856,6 +3140,7 @@
2856
  " \"R\", \"E\", \"F\", \"S^2\", \n",
2857
  " \"force-flip-times\",\n",
2858
  " \"force-total-variation\",\n",
 
2859
  " \"energy-diff-flip-times\",\n",
2860
  " \"energy-grad-norm-max\",\n",
2861
  " \"energy-jump\",\n",
@@ -2904,6 +3189,8 @@
2904
  " indices = np.argsort(rs)[::-1]\n",
2905
  " rs = rs[indices]\n",
2906
  " es = es[indices]\n",
 
 
2907
  " fs = fs[indices]\n",
2908
  "\n",
2909
  " iminf = np.argmin(fs)\n",
@@ -2915,10 +3202,20 @@
2915
  " rounded_fs = np.copy(fs)\n",
2916
  " rounded_fs[np.abs(rounded_fs) < 1e-2] = 0\n",
2917
  " fs_sign = np.sign(rounded_fs)\n",
2918
- " fs_sign = fs_sign[fs_sign != 0]\n",
 
 
 
 
 
 
 
 
 
 
 
 
2919
  "\n",
2920
- " # rounded_ediff = np.diff(es)\n",
2921
- " # rounded_ediff[np.abs(rounded_ediff) < zero_threshold] = 0\n",
2922
  " ediff = np.diff(es)\n",
2923
  " ediff[np.abs(ediff) < 1e-3] = 0\n",
2924
  " ediff_sign = np.sign(ediff)\n",
@@ -2927,6 +3224,40 @@
2927
  " ediff_sign = ediff_sign[mask]\n",
2928
  " ediff_flip = np.diff(ediff_sign) != 0\n",
2929
  " ejump = np.abs(ediff[:-1][ediff_flip]).sum() + np.abs(ediff[1:][ediff_flip]).sum()\n",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2930
  "\n",
2931
  " conservation_deviation = np.mean(np.abs(fs + de_dr))\n",
2932
  " \n",
@@ -2936,11 +3267,12 @@
2936
  " \"name\": da,\n",
2937
  " \"method\": model_name,\n",
2938
  " \"R\": rs,\n",
2939
- " \"E\": es,\n",
2940
  " \"F\": fs,\n",
2941
  " \"S^2\": S2s,\n",
2942
- " \"force-flip-times\": np.sum(np.diff(fs_sign)!=0),\n",
2943
  " \"force-total-variation\": np.sum(np.abs(np.diff(fs))),\n",
 
2944
  " \"energy-diff-flip-times\": np.sum(ediff_flip),\n",
2945
  " \"energy-grad-norm-max\": np.max(np.abs(de_dr)),\n",
2946
  " \"energy-jump\": ejump,\n",
@@ -2956,7 +3288,6 @@
2956
  "\n",
2957
  " df = pd.concat([df, pd.DataFrame([data])], ignore_index=True)\n",
2958
  "\n",
2959
- "\n",
2960
  " json_fpath = Path(REGISTRY[model_name][\"family\"]) / \"homonuclear-diatomics.json\"\n",
2961
  "\n",
2962
  " if json_fpath.exists():\n",
@@ -2969,7 +3300,7 @@
2969
  },
2970
  {
2971
  "cell_type": "code",
2972
- "execution_count": 5,
2973
  "id": "e0dd4367-3dca-440f-a7a9-7fdd84183f2c",
2974
  "metadata": {
2975
  "tags": []
@@ -3014,6 +3345,7 @@
3014
  " <th>spearman-repulsion-energy</th>\n",
3015
  " <th>spearman-attraction-energy</th>\n",
3016
  " <th>tortuosity</th>\n",
 
3017
  " </tr>\n",
3018
  " </thead>\n",
3019
  " <tbody>\n",
@@ -3037,6 +3369,7 @@
3037
  " <td>-0.986572</td>\n",
3038
  " <td>0.844786</td>\n",
3039
  " <td>1.797762</td>\n",
 
3040
  " </tr>\n",
3041
  " <tr>\n",
3042
  " <th>119</th>\n",
@@ -3058,6 +3391,7 @@
3058
  " <td>-0.720218</td>\n",
3059
  " <td>0.609519</td>\n",
3060
  " <td>3.921846</td>\n",
 
3061
  " </tr>\n",
3062
  " <tr>\n",
3063
  " <th>120</th>\n",
@@ -3079,6 +3413,7 @@
3079
  " <td>-0.991010</td>\n",
3080
  " <td>-0.654715</td>\n",
3081
  " <td>1.386696</td>\n",
 
3082
  " </tr>\n",
3083
  " <tr>\n",
3084
  " <th>121</th>\n",
@@ -3100,6 +3435,7 @@
3100
  " <td>-0.989962</td>\n",
3101
  " <td>0.342476</td>\n",
3102
  " <td>1.715953</td>\n",
 
3103
  " </tr>\n",
3104
  " <tr>\n",
3105
  " <th>122</th>\n",
@@ -3121,6 +3457,7 @@
3121
  " <td>-0.985024</td>\n",
3122
  " <td>0.757880</td>\n",
3123
  " <td>1.617372</td>\n",
 
3124
  " </tr>\n",
3125
  " <tr>\n",
3126
  " <th>...</th>\n",
@@ -3142,6 +3479,7 @@
3142
  " <td>...</td>\n",
3143
  " <td>...</td>\n",
3144
  " <td>...</td>\n",
 
3145
  " </tr>\n",
3146
  " <tr>\n",
3147
  " <th>231</th>\n",
@@ -3163,6 +3501,7 @@
3163
  " <td>-0.946770</td>\n",
3164
  " <td>0.159576</td>\n",
3165
  " <td>2.694147</td>\n",
 
3166
  " </tr>\n",
3167
  " <tr>\n",
3168
  " <th>232</th>\n",
@@ -3184,6 +3523,7 @@
3184
  " <td>-0.946770</td>\n",
3185
  " <td>0.159576</td>\n",
3186
  " <td>2.694147</td>\n",
 
3187
  " </tr>\n",
3188
  " <tr>\n",
3189
  " <th>233</th>\n",
@@ -3205,6 +3545,7 @@
3205
  " <td>-0.946770</td>\n",
3206
  " <td>0.159576</td>\n",
3207
  " <td>2.694147</td>\n",
 
3208
  " </tr>\n",
3209
  " <tr>\n",
3210
  " <th>234</th>\n",
@@ -3226,6 +3567,7 @@
3226
  " <td>-0.946770</td>\n",
3227
  " <td>0.159576</td>\n",
3228
  " <td>2.694147</td>\n",
 
3229
  " </tr>\n",
3230
  " <tr>\n",
3231
  " <th>235</th>\n",
@@ -3247,10 +3589,11 @@
3247
  " <td>-0.946770</td>\n",
3248
  " <td>0.159576</td>\n",
3249
  " <td>2.694147</td>\n",
 
3250
  " </tr>\n",
3251
  " </tbody>\n",
3252
  "</table>\n",
3253
- "<p>118 rows × 18 columns</p>\n",
3254
  "</div>"
3255
  ],
3256
  "text/plain": [
@@ -3332,23 +3675,36 @@
3332
  "234 -0.249255 -0.316556 \n",
3333
  "235 -0.249255 -0.316556 \n",
3334
  "\n",
3335
- " spearman-repulsion-energy spearman-attraction-energy tortuosity \n",
3336
- "118 -0.986572 0.844786 1.797762 \n",
3337
- "119 -0.720218 0.609519 3.921846 \n",
3338
- "120 -0.991010 -0.654715 1.386696 \n",
3339
- "121 -0.989962 0.342476 1.715953 \n",
3340
- "122 -0.985024 0.757880 1.617372 \n",
3341
- ".. ... ... ... \n",
3342
- "231 -0.946770 0.159576 2.694147 \n",
3343
- "232 -0.946770 0.159576 2.694147 \n",
3344
- "233 -0.946770 0.159576 2.694147 \n",
3345
- "234 -0.946770 0.159576 2.694147 \n",
3346
- "235 -0.946770 0.159576 2.694147 \n",
3347
  "\n",
3348
- "[118 rows x 18 columns]"
 
 
 
 
 
 
 
 
 
 
 
 
 
3349
  ]
3350
  },
3351
- "execution_count": 5,
3352
  "metadata": {},
3353
  "output_type": "execute_result"
3354
  }
@@ -3386,7 +3742,978 @@
3386
  },
3387
  "widgets": {
3388
  "application/vnd.jupyter.widget-state+json": {
3389
- "state": {},
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3390
  "version_major": 2,
3391
  "version_minor": 0
3392
  }
 
23
  "\n",
24
  "from mlip_arena.models.utils import REGISTRY, MLIPEnum\n",
25
  "\n",
26
+ "%matplotlib inline\n",
27
+ "\n",
28
  "# model_name = \"MACE-MP(M)\"\n",
29
  "\n",
30
  "# calc = MLIPEnum[model_name].value()"
 
2802
  },
2803
  {
2804
  "cell_type": "code",
2805
+ "execution_count": 2,
2806
  "id": "a0ac2c09-370b-4fdd-bf74-ea5c4ade0215",
2807
  "metadata": {
2808
+ "scrolled": true,
2809
  "tags": []
2810
  },
2811
  "outputs": [
2812
+ {
2813
+ "name": "stdout",
2814
+ "output_type": "stream",
2815
+ "text": [
2816
+ "========== MACE-MP(M) ==========\n"
2817
+ ]
2818
+ },
2819
+ {
2820
+ "data": {
2821
+ "application/vnd.jupyter.widget-view+json": {
2822
+ "model_id": "55562f662e56481ba346246ccc109626",
2823
+ "version_major": 2,
2824
+ "version_minor": 0
2825
+ },
2826
+ "text/plain": [
2827
+ " 0%| | 0/118 [00:00<?, ?it/s]"
2828
+ ]
2829
+ },
2830
+ "metadata": {},
2831
+ "output_type": "display_data"
2832
+ },
2833
+ {
2834
+ "name": "stderr",
2835
+ "output_type": "stream",
2836
+ "text": [
2837
+ "/tmp/ipykernel_433641/3530606248.py:164: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n",
2838
+ " df = pd.concat([df, pd.DataFrame([data])], ignore_index=True)\n",
2839
+ "/tmp/ipykernel_433641/3530606248.py:156: RuntimeWarning: invalid value encountered in scalar divide\n",
2840
+ " \"tortuosity\": etv / (abs(es[0] - es.min()) + (es[-1] - es.min())),\n",
2841
+ "/tmp/ipykernel_433641/3530606248.py:158: ConstantInputWarning: An input array is constant; the correlation coefficient is not defined.\n",
2842
+ " \"spearman-descending-force\": stats.spearmanr(rs[iminf:], fs[iminf:]).statistic,\n",
2843
+ "/tmp/ipykernel_433641/3530606248.py:160: ConstantInputWarning: An input array is constant; the correlation coefficient is not defined.\n",
2844
+ " \"spearman-repulsion-energy\": stats.spearmanr(rs[imine:], es[imine:]).statistic,\n"
2845
+ ]
2846
+ },
2847
+ {
2848
+ "name": "stdout",
2849
+ "output_type": "stream",
2850
+ "text": [
2851
+ "========== CHGNet ==========\n"
2852
+ ]
2853
+ },
2854
+ {
2855
+ "data": {
2856
+ "application/vnd.jupyter.widget-view+json": {
2857
+ "model_id": "3a2235b0309e4dacab34cd8348b5963a",
2858
+ "version_major": 2,
2859
+ "version_minor": 0
2860
+ },
2861
+ "text/plain": [
2862
+ " 0%| | 0/118 [00:00<?, ?it/s]"
2863
+ ]
2864
+ },
2865
+ "metadata": {},
2866
+ "output_type": "display_data"
2867
+ },
2868
+ {
2869
+ "name": "stderr",
2870
+ "output_type": "stream",
2871
+ "text": [
2872
+ "/tmp/ipykernel_433641/3530606248.py:164: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n",
2873
+ " df = pd.concat([df, pd.DataFrame([data])], ignore_index=True)\n"
2874
+ ]
2875
+ },
2876
+ {
2877
+ "name": "stdout",
2878
+ "output_type": "stream",
2879
+ "text": [
2880
+ "========== M3GNet ==========\n"
2881
+ ]
2882
+ },
2883
+ {
2884
+ "data": {
2885
+ "application/vnd.jupyter.widget-view+json": {
2886
+ "model_id": "34c651d05a494eb2a0e7988adc9a9835",
2887
+ "version_major": 2,
2888
+ "version_minor": 0
2889
+ },
2890
+ "text/plain": [
2891
+ " 0%| | 0/118 [00:00<?, ?it/s]"
2892
+ ]
2893
+ },
2894
+ "metadata": {},
2895
+ "output_type": "display_data"
2896
+ },
2897
+ {
2898
+ "name": "stderr",
2899
+ "output_type": "stream",
2900
+ "text": [
2901
+ "/tmp/ipykernel_433641/3530606248.py:164: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n",
2902
+ " df = pd.concat([df, pd.DataFrame([data])], ignore_index=True)\n",
2903
+ "/tmp/ipykernel_433641/3530606248.py:159: ConstantInputWarning: An input array is constant; the correlation coefficient is not defined.\n",
2904
+ " \"spearman-ascending-force\": stats.spearmanr(rs[:iminf], fs[:iminf]).statistic,\n"
2905
+ ]
2906
+ },
2907
+ {
2908
+ "name": "stdout",
2909
+ "output_type": "stream",
2910
+ "text": [
2911
+ "========== ORB ==========\n"
2912
+ ]
2913
+ },
2914
+ {
2915
+ "data": {
2916
+ "application/vnd.jupyter.widget-view+json": {
2917
+ "model_id": "7d0004a7880d4aeeb42532e4718d34e2",
2918
+ "version_major": 2,
2919
+ "version_minor": 0
2920
+ },
2921
+ "text/plain": [
2922
+ " 0%| | 0/118 [00:00<?, ?it/s]"
2923
+ ]
2924
+ },
2925
+ "metadata": {},
2926
+ "output_type": "display_data"
2927
+ },
2928
+ {
2929
+ "name": "stderr",
2930
+ "output_type": "stream",
2931
+ "text": [
2932
+ "/tmp/ipykernel_433641/3530606248.py:164: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n",
2933
+ " df = pd.concat([df, pd.DataFrame([data])], ignore_index=True)\n"
2934
+ ]
2935
+ },
2936
+ {
2937
+ "name": "stdout",
2938
+ "output_type": "stream",
2939
+ "text": [
2940
+ "========== SevenNet ==========\n"
2941
+ ]
2942
+ },
2943
+ {
2944
+ "data": {
2945
+ "application/vnd.jupyter.widget-view+json": {
2946
+ "model_id": "8e181eeb14f24447933b76dac47b9514",
2947
+ "version_major": 2,
2948
+ "version_minor": 0
2949
+ },
2950
+ "text/plain": [
2951
+ " 0%| | 0/118 [00:00<?, ?it/s]"
2952
+ ]
2953
+ },
2954
+ "metadata": {},
2955
+ "output_type": "display_data"
2956
+ },
2957
+ {
2958
+ "name": "stderr",
2959
+ "output_type": "stream",
2960
+ "text": [
2961
+ "/tmp/ipykernel_433641/3530606248.py:164: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n",
2962
+ " df = pd.concat([df, pd.DataFrame([data])], ignore_index=True)\n",
2963
+ "/tmp/ipykernel_433641/3530606248.py:161: ConstantInputWarning: An input array is constant; the correlation coefficient is not defined.\n",
2964
+ " \"spearman-attraction-energy\": stats.spearmanr(rs[:imine], es[:imine]).statistic,\n"
2965
+ ]
2966
+ },
2967
+ {
2968
+ "name": "stdout",
2969
+ "output_type": "stream",
2970
+ "text": [
2971
+ "========== EquiformerV2(OC22) ==========\n"
2972
+ ]
2973
+ },
2974
+ {
2975
+ "data": {
2976
+ "application/vnd.jupyter.widget-view+json": {
2977
+ "model_id": "0fda48c6de7b47ae93b62fde68263493",
2978
+ "version_major": 2,
2979
+ "version_minor": 0
2980
+ },
2981
+ "text/plain": [
2982
+ " 0%| | 0/118 [00:00<?, ?it/s]"
2983
+ ]
2984
+ },
2985
+ "metadata": {},
2986
+ "output_type": "display_data"
2987
+ },
2988
+ {
2989
+ "name": "stderr",
2990
+ "output_type": "stream",
2991
+ "text": [
2992
+ "/tmp/ipykernel_433641/3530606248.py:164: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n",
2993
+ " df = pd.concat([df, pd.DataFrame([data])], ignore_index=True)\n",
2994
+ "/tmp/ipykernel_433641/3530606248.py:156: RuntimeWarning: invalid value encountered in scalar divide\n",
2995
+ " \"tortuosity\": etv / (abs(es[0] - es.min()) + (es[-1] - es.min())),\n",
2996
+ "/tmp/ipykernel_433641/3530606248.py:160: ConstantInputWarning: An input array is constant; the correlation coefficient is not defined.\n",
2997
+ " \"spearman-repulsion-energy\": stats.spearmanr(rs[imine:], es[imine:]).statistic,\n",
2998
+ "/tmp/ipykernel_433641/3530606248.py:161: ConstantInputWarning: An input array is constant; the correlation coefficient is not defined.\n",
2999
+ " \"spearman-attraction-energy\": stats.spearmanr(rs[:imine], es[:imine]).statistic,\n",
3000
+ "/tmp/ipykernel_433641/3530606248.py:156: RuntimeWarning: divide by zero encountered in scalar divide\n",
3001
+ " \"tortuosity\": etv / (abs(es[0] - es.min()) + (es[-1] - es.min())),\n"
3002
+ ]
3003
+ },
3004
+ {
3005
+ "name": "stdout",
3006
+ "output_type": "stream",
3007
+ "text": [
3008
+ "========== EquiformerV2(OC20) ==========\n"
3009
+ ]
3010
+ },
3011
+ {
3012
+ "data": {
3013
+ "application/vnd.jupyter.widget-view+json": {
3014
+ "model_id": "f49debc4e85e4e2aa5c24de17cfa337a",
3015
+ "version_major": 2,
3016
+ "version_minor": 0
3017
+ },
3018
+ "text/plain": [
3019
+ " 0%| | 0/118 [00:00<?, ?it/s]"
3020
+ ]
3021
+ },
3022
+ "metadata": {},
3023
+ "output_type": "display_data"
3024
+ },
3025
+ {
3026
+ "name": "stderr",
3027
+ "output_type": "stream",
3028
+ "text": [
3029
+ "/tmp/ipykernel_433641/3530606248.py:164: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n",
3030
+ " df = pd.concat([df, pd.DataFrame([data])], ignore_index=True)\n"
3031
+ ]
3032
+ },
3033
  {
3034
  "name": "stdout",
3035
  "output_type": "stream",
 
3040
  {
3041
  "data": {
3042
  "application/vnd.jupyter.widget-view+json": {
3043
+ "model_id": "55c068cb90a3463484ffd851c34a6ab8",
3044
  "version_major": 2,
3045
  "version_minor": 0
3046
  },
 
3055
  "name": "stderr",
3056
  "output_type": "stream",
3057
  "text": [
3058
+ "/tmp/ipykernel_433641/3530606248.py:164: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n",
3059
  " df = pd.concat([df, pd.DataFrame([data])], ignore_index=True)\n"
3060
  ]
3061
+ },
3062
+ {
3063
+ "name": "stdout",
3064
+ "output_type": "stream",
3065
+ "text": [
3066
+ "========== MACE-OFF(M) ==========\n"
3067
+ ]
3068
+ },
3069
+ {
3070
+ "data": {
3071
+ "application/vnd.jupyter.widget-view+json": {
3072
+ "model_id": "f23884741dd74e2a9853298cc6c631b5",
3073
+ "version_major": 2,
3074
+ "version_minor": 0
3075
+ },
3076
+ "text/plain": [
3077
+ " 0%| | 0/118 [00:00<?, ?it/s]"
3078
+ ]
3079
+ },
3080
+ "metadata": {},
3081
+ "output_type": "display_data"
3082
+ },
3083
+ {
3084
+ "name": "stderr",
3085
+ "output_type": "stream",
3086
+ "text": [
3087
+ "/tmp/ipykernel_433641/3530606248.py:164: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n",
3088
+ " df = pd.concat([df, pd.DataFrame([data])], ignore_index=True)\n"
3089
+ ]
3090
+ },
3091
+ {
3092
+ "name": "stdout",
3093
+ "output_type": "stream",
3094
+ "text": [
3095
+ "========== ALIGNN ==========\n"
3096
+ ]
3097
+ },
3098
+ {
3099
+ "data": {
3100
+ "application/vnd.jupyter.widget-view+json": {
3101
+ "model_id": "3da8dc9a994a4bd7b95d62413a73306f",
3102
+ "version_major": 2,
3103
+ "version_minor": 0
3104
+ },
3105
+ "text/plain": [
3106
+ " 0%| | 0/118 [00:00<?, ?it/s]"
3107
+ ]
3108
+ },
3109
+ "metadata": {},
3110
+ "output_type": "display_data"
3111
+ },
3112
+ {
3113
+ "name": "stderr",
3114
+ "output_type": "stream",
3115
+ "text": [
3116
+ "/tmp/ipykernel_433641/3530606248.py:164: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n",
3117
+ " df = pd.concat([df, pd.DataFrame([data])], ignore_index=True)\n",
3118
+ "/tmp/ipykernel_433641/3530606248.py:161: ConstantInputWarning: An input array is constant; the correlation coefficient is not defined.\n",
3119
+ " \"spearman-attraction-energy\": stats.spearmanr(rs[:imine], es[:imine]).statistic,\n"
3120
+ ]
3121
  }
3122
  ],
3123
  "source": [
 
3131
  " \n",
3132
  "# if json_fpath.exists():\n",
3133
  "# continue\n",
3134
+ "\n",
3135
  " print(f\"========== {model_name} ==========\")\n",
3136
  " \n",
3137
  " df = pd.DataFrame(columns=[\n",
 
3140
  " \"R\", \"E\", \"F\", \"S^2\", \n",
3141
  " \"force-flip-times\",\n",
3142
  " \"force-total-variation\",\n",
3143
+ " \"force-jump\",\n",
3144
  " \"energy-diff-flip-times\",\n",
3145
  " \"energy-grad-norm-max\",\n",
3146
  " \"energy-jump\",\n",
 
3189
  " indices = np.argsort(rs)[::-1]\n",
3190
  " rs = rs[indices]\n",
3191
  " es = es[indices]\n",
3192
+ " eshift = es[0]\n",
3193
+ " es -= eshift\n",
3194
  " fs = fs[indices]\n",
3195
  "\n",
3196
  " iminf = np.argmin(fs)\n",
 
3202
  " rounded_fs = np.copy(fs)\n",
3203
  " rounded_fs[np.abs(rounded_fs) < 1e-2] = 0\n",
3204
  " fs_sign = np.sign(rounded_fs)\n",
3205
+ " mask = fs_sign != 0\n",
3206
+ " rounded_fs = rounded_fs[mask]\n",
3207
+ " fs_sign = fs_sign[mask]\n",
3208
+ " f_flip = np.diff(fs_sign) != 0\n",
3209
+ " \n",
3210
+ " fdiff = np.diff(fs)\n",
3211
+ " fdiff_sign = np.sign(fdiff)\n",
3212
+ " mask = fdiff_sign != 0\n",
3213
+ " fdiff = fdiff[mask]\n",
3214
+ " fdiff_sign = fdiff_sign[mask]\n",
3215
+ " fdiff_flip = np.diff(fdiff_sign) != 0\n",
3216
+ " fjump = np.abs(fdiff[:-1][fdiff_flip]).sum() + np.abs(fdiff[1:][fdiff_flip]).sum()\n",
3217
+ " \n",
3218
  "\n",
 
 
3219
  " ediff = np.diff(es)\n",
3220
  " ediff[np.abs(ediff) < 1e-3] = 0\n",
3221
  " ediff_sign = np.sign(ediff)\n",
 
3224
  " ediff_sign = ediff_sign[mask]\n",
3225
  " ediff_flip = np.diff(ediff_sign) != 0\n",
3226
  " ejump = np.abs(ediff[:-1][ediff_flip]).sum() + np.abs(ediff[1:][ediff_flip]).sum()\n",
3227
+ " \n",
3228
+ " \n",
3229
+ "# edged_es = np.convolve(es, [1, -2, 1], mode='valid')\n",
3230
+ "# # edged_es[np.abs(edged_es) < 0.1] = 0\n",
3231
+ "# prob = np.exp(-es[1:-1]) / np.sum(np.exp(-es[1:-1]))\n",
3232
+ "# edged_es *= prob\n",
3233
+ "# # edged_es /= np.abs(es[1:-1])\n",
3234
+ "# ejump = np.linalg.norm(edged_es)\n",
3235
+ "# ejump = np.abs(edged_es).sum() / 2.0\n",
3236
+ " \n",
3237
+ "# edged_fs = np.convolve(fs, [1, -2, 1], mode='valid')\n",
3238
+ "# # edged_fs[np.abs(edged_fs) < 0.1] = 0\n",
3239
+ "# edged_fs *= prob\n",
3240
+ "# fjump = np.linalg.norm(edged_fs)\n",
3241
+ " # fjump = np.abs(edged_fs).sum() / 2.0\n",
3242
+ " \n",
3243
+ "# fig, axes = plt.subplot_mosaic(\n",
3244
+ "# \"\"\"\n",
3245
+ "# ac\n",
3246
+ "# bd\n",
3247
+ "# \"\"\",\n",
3248
+ "# constrained_layout=True\n",
3249
+ "# )\n",
3250
+ " \n",
3251
+ "\n",
3252
+ "# axes['a'].plot(rs, es)\n",
3253
+ "# axes['b'].plot(rs[1:-1], edged_es)\n",
3254
+ "# # axes['b'].plot(0.5*(rs[1:] + rs[:-1]), np.diff(es))\n",
3255
+ "# axes['b'].text(0.7, 0.7, f\"{ejump:.3e}\", transform=axes['b'].transAxes)\n",
3256
+ " \n",
3257
+ "# axes['c'].plot(rs, fs)\n",
3258
+ "# axes['d'].plot(rs[1:-1], edged_fs)\n",
3259
+ "# axes['d'].text(0.7, 0.7, f\"{fjump:.3e}\", transform=axes['d'].transAxes)\n",
3260
+ " \n",
3261
  "\n",
3262
  " conservation_deviation = np.mean(np.abs(fs + de_dr))\n",
3263
  " \n",
 
3267
  " \"name\": da,\n",
3268
  " \"method\": model_name,\n",
3269
  " \"R\": rs,\n",
3270
+ " \"E\": es + eshift,\n",
3271
  " \"F\": fs,\n",
3272
  " \"S^2\": S2s,\n",
3273
+ " \"force-flip-times\": np.sum(f_flip),\n",
3274
  " \"force-total-variation\": np.sum(np.abs(np.diff(fs))),\n",
3275
+ " \"force-jump\": fjump,\n",
3276
  " \"energy-diff-flip-times\": np.sum(ediff_flip),\n",
3277
  " \"energy-grad-norm-max\": np.max(np.abs(de_dr)),\n",
3278
  " \"energy-jump\": ejump,\n",
 
3288
  "\n",
3289
  " df = pd.concat([df, pd.DataFrame([data])], ignore_index=True)\n",
3290
  "\n",
 
3291
  " json_fpath = Path(REGISTRY[model_name][\"family\"]) / \"homonuclear-diatomics.json\"\n",
3292
  "\n",
3293
  " if json_fpath.exists():\n",
 
3300
  },
3301
  {
3302
  "cell_type": "code",
3303
+ "execution_count": 3,
3304
  "id": "e0dd4367-3dca-440f-a7a9-7fdd84183f2c",
3305
  "metadata": {
3306
  "tags": []
 
3345
  " <th>spearman-repulsion-energy</th>\n",
3346
  " <th>spearman-attraction-energy</th>\n",
3347
  " <th>tortuosity</th>\n",
3348
+ " <th>force-jump</th>\n",
3349
  " </tr>\n",
3350
  " </thead>\n",
3351
  " <tbody>\n",
 
3369
  " <td>-0.986572</td>\n",
3370
  " <td>0.844786</td>\n",
3371
  " <td>1.797762</td>\n",
3372
+ " <td>458.210954</td>\n",
3373
  " </tr>\n",
3374
  " <tr>\n",
3375
  " <th>119</th>\n",
 
3391
  " <td>-0.720218</td>\n",
3392
  " <td>0.609519</td>\n",
3393
  " <td>3.921846</td>\n",
3394
+ " <td>1582.685197</td>\n",
3395
  " </tr>\n",
3396
  " <tr>\n",
3397
  " <th>120</th>\n",
 
3413
  " <td>-0.991010</td>\n",
3414
  " <td>-0.654715</td>\n",
3415
  " <td>1.386696</td>\n",
3416
+ " <td>1721.766498</td>\n",
3417
  " </tr>\n",
3418
  " <tr>\n",
3419
  " <th>121</th>\n",
 
3435
  " <td>-0.989962</td>\n",
3436
  " <td>0.342476</td>\n",
3437
  " <td>1.715953</td>\n",
3438
+ " <td>1775.001526</td>\n",
3439
  " </tr>\n",
3440
  " <tr>\n",
3441
  " <th>122</th>\n",
 
3457
  " <td>-0.985024</td>\n",
3458
  " <td>0.757880</td>\n",
3459
  " <td>1.617372</td>\n",
3460
+ " <td>1799.183469</td>\n",
3461
  " </tr>\n",
3462
  " <tr>\n",
3463
  " <th>...</th>\n",
 
3479
  " <td>...</td>\n",
3480
  " <td>...</td>\n",
3481
  " <td>...</td>\n",
3482
+ " <td>...</td>\n",
3483
  " </tr>\n",
3484
  " <tr>\n",
3485
  " <th>231</th>\n",
 
3501
  " <td>-0.946770</td>\n",
3502
  " <td>0.159576</td>\n",
3503
  " <td>2.694147</td>\n",
3504
+ " <td>3926.252725</td>\n",
3505
  " </tr>\n",
3506
  " <tr>\n",
3507
  " <th>232</th>\n",
 
3523
  " <td>-0.946770</td>\n",
3524
  " <td>0.159576</td>\n",
3525
  " <td>2.694147</td>\n",
3526
+ " <td>3926.252725</td>\n",
3527
  " </tr>\n",
3528
  " <tr>\n",
3529
  " <th>233</th>\n",
 
3545
  " <td>-0.946770</td>\n",
3546
  " <td>0.159576</td>\n",
3547
  " <td>2.694147</td>\n",
3548
+ " <td>3926.252725</td>\n",
3549
  " </tr>\n",
3550
  " <tr>\n",
3551
  " <th>234</th>\n",
 
3567
  " <td>-0.946770</td>\n",
3568
  " <td>0.159576</td>\n",
3569
  " <td>2.694147</td>\n",
3570
+ " <td>3926.252725</td>\n",
3571
  " </tr>\n",
3572
  " <tr>\n",
3573
  " <th>235</th>\n",
 
3589
  " <td>-0.946770</td>\n",
3590
  " <td>0.159576</td>\n",
3591
  " <td>2.694147</td>\n",
3592
+ " <td>3926.252725</td>\n",
3593
  " </tr>\n",
3594
  " </tbody>\n",
3595
  "</table>\n",
3596
+ "<p>118 rows × 19 columns</p>\n",
3597
  "</div>"
3598
  ],
3599
  "text/plain": [
 
3675
  "234 -0.249255 -0.316556 \n",
3676
  "235 -0.249255 -0.316556 \n",
3677
  "\n",
3678
+ " spearman-repulsion-energy spearman-attraction-energy tortuosity \\\n",
3679
+ "118 -0.986572 0.844786 1.797762 \n",
3680
+ "119 -0.720218 0.609519 3.921846 \n",
3681
+ "120 -0.991010 -0.654715 1.386696 \n",
3682
+ "121 -0.989962 0.342476 1.715953 \n",
3683
+ "122 -0.985024 0.757880 1.617372 \n",
3684
+ ".. ... ... ... \n",
3685
+ "231 -0.946770 0.159576 2.694147 \n",
3686
+ "232 -0.946770 0.159576 2.694147 \n",
3687
+ "233 -0.946770 0.159576 2.694147 \n",
3688
+ "234 -0.946770 0.159576 2.694147 \n",
3689
+ "235 -0.946770 0.159576 2.694147 \n",
3690
  "\n",
3691
+ " force-jump \n",
3692
+ "118 458.210954 \n",
3693
+ "119 1582.685197 \n",
3694
+ "120 1721.766498 \n",
3695
+ "121 1775.001526 \n",
3696
+ "122 1799.183469 \n",
3697
+ ".. ... \n",
3698
+ "231 3926.252725 \n",
3699
+ "232 3926.252725 \n",
3700
+ "233 3926.252725 \n",
3701
+ "234 3926.252725 \n",
3702
+ "235 3926.252725 \n",
3703
+ "\n",
3704
+ "[118 rows x 19 columns]"
3705
  ]
3706
  },
3707
+ "execution_count": 3,
3708
  "metadata": {},
3709
  "output_type": "execute_result"
3710
  }
 
3742
  },
3743
  "widgets": {
3744
  "application/vnd.jupyter.widget-state+json": {
3745
+ "state": {
3746
+ "0ab5d0f3c74d4c4cba3a62d642cb99b1": {
3747
+ "model_module": "@jupyter-widgets/controls",
3748
+ "model_module_version": "2.0.0",
3749
+ "model_name": "HTMLModel",
3750
+ "state": {
3751
+ "layout": "IPY_MODEL_db860024663d4cc7859e4808a518cc09",
3752
+ "style": "IPY_MODEL_b1afe346307644d18fda893e52ea93b8",
3753
+ "value": " 118/118 [00:25&lt;00:00,  3.97it/s]"
3754
+ }
3755
+ },
3756
+ "0b6d7e7c471540b7b4b3771488c9a210": {
3757
+ "model_module": "@jupyter-widgets/base",
3758
+ "model_module_version": "2.0.0",
3759
+ "model_name": "LayoutModel",
3760
+ "state": {}
3761
+ },
3762
+ "0c589f4517e446f3b2091c5283072e3d": {
3763
+ "model_module": "@jupyter-widgets/controls",
3764
+ "model_module_version": "2.0.0",
3765
+ "model_name": "HTMLStyleModel",
3766
+ "state": {
3767
+ "description_width": "",
3768
+ "font_size": null,
3769
+ "text_color": null
3770
+ }
3771
+ },
3772
+ "0cdbae6c34704fd98cabfbdd5404c6db": {
3773
+ "model_module": "@jupyter-widgets/base",
3774
+ "model_module_version": "2.0.0",
3775
+ "model_name": "LayoutModel",
3776
+ "state": {}
3777
+ },
3778
+ "0cded1953fb641969da232bc7dda3207": {
3779
+ "model_module": "@jupyter-widgets/base",
3780
+ "model_module_version": "2.0.0",
3781
+ "model_name": "LayoutModel",
3782
+ "state": {}
3783
+ },
3784
+ "0ce144ef22854dc6bee81352022b3074": {
3785
+ "model_module": "@jupyter-widgets/controls",
3786
+ "model_module_version": "2.0.0",
3787
+ "model_name": "FloatProgressModel",
3788
+ "state": {
3789
+ "bar_style": "success",
3790
+ "layout": "IPY_MODEL_5b05067d2381420e91790696a2cd3519",
3791
+ "max": 118,
3792
+ "style": "IPY_MODEL_5d6e7ddfc71240c5b5ac9274c31b78bd",
3793
+ "value": 118
3794
+ }
3795
+ },
3796
+ "0ed26ebe44e24e5fa07e946503735553": {
3797
+ "model_module": "@jupyter-widgets/controls",
3798
+ "model_module_version": "2.0.0",
3799
+ "model_name": "HTMLModel",
3800
+ "state": {
3801
+ "layout": "IPY_MODEL_f5210ca8dd5c4040a7368211d308abb4",
3802
+ "style": "IPY_MODEL_5ed200ebc48c4d6382a8bec1f8836783",
3803
+ "value": "100%"
3804
+ }
3805
+ },
3806
+ "0fda48c6de7b47ae93b62fde68263493": {
3807
+ "model_module": "@jupyter-widgets/controls",
3808
+ "model_module_version": "2.0.0",
3809
+ "model_name": "HBoxModel",
3810
+ "state": {
3811
+ "children": [
3812
+ "IPY_MODEL_c44f65cce025403ca9d39ad50044ea46",
3813
+ "IPY_MODEL_cfd3ce4dce01407499562d73e1b40540",
3814
+ "IPY_MODEL_7e7ac4bb45b9478f8aa6ce76d4a43b5a"
3815
+ ],
3816
+ "layout": "IPY_MODEL_541074eff2ca4e2cb14a5ae0931d8844"
3817
+ }
3818
+ },
3819
+ "12c376723c444ab1bc7d86aaeebaa299": {
3820
+ "model_module": "@jupyter-widgets/controls",
3821
+ "model_module_version": "2.0.0",
3822
+ "model_name": "HTMLModel",
3823
+ "state": {
3824
+ "layout": "IPY_MODEL_d9119d0d18c04a7eab1531dca1a71f9c",
3825
+ "style": "IPY_MODEL_9a28bb5f413145fc8af90abbc055b2b1",
3826
+ "value": "100%"
3827
+ }
3828
+ },
3829
+ "1403f930c2324c4fa08125ea34f19123": {
3830
+ "model_module": "@jupyter-widgets/controls",
3831
+ "model_module_version": "2.0.0",
3832
+ "model_name": "HTMLModel",
3833
+ "state": {
3834
+ "layout": "IPY_MODEL_23116387d8f64fd38b2af86dc47dd54c",
3835
+ "style": "IPY_MODEL_bb4189f8cd2b4cb38d47be1e46893cd4",
3836
+ "value": "100%"
3837
+ }
3838
+ },
3839
+ "142c7a24cd4b4d898e29f93f4d6195df": {
3840
+ "model_module": "@jupyter-widgets/controls",
3841
+ "model_module_version": "2.0.0",
3842
+ "model_name": "HTMLModel",
3843
+ "state": {
3844
+ "layout": "IPY_MODEL_288343a2cd814c478a62d7cc0e4e92fa",
3845
+ "style": "IPY_MODEL_e047b2428ade4f76a403019d9e559093",
3846
+ "value": " 118/118 [00:26&lt;00:00,  3.37it/s]"
3847
+ }
3848
+ },
3849
+ "18d993ad92214f71aa4607d4f6bb47c6": {
3850
+ "model_module": "@jupyter-widgets/base",
3851
+ "model_module_version": "2.0.0",
3852
+ "model_name": "LayoutModel",
3853
+ "state": {}
3854
+ },
3855
+ "18feade13b3c475782f5541d835eb714": {
3856
+ "model_module": "@jupyter-widgets/controls",
3857
+ "model_module_version": "2.0.0",
3858
+ "model_name": "HTMLStyleModel",
3859
+ "state": {
3860
+ "description_width": "",
3861
+ "font_size": null,
3862
+ "text_color": null
3863
+ }
3864
+ },
3865
+ "1903fb3dfd654bd9b8740e65c4e4ec69": {
3866
+ "model_module": "@jupyter-widgets/base",
3867
+ "model_module_version": "2.0.0",
3868
+ "model_name": "LayoutModel",
3869
+ "state": {}
3870
+ },
3871
+ "1d6ea3ca0867417981c636de639abf9f": {
3872
+ "model_module": "@jupyter-widgets/controls",
3873
+ "model_module_version": "2.0.0",
3874
+ "model_name": "HTMLModel",
3875
+ "state": {
3876
+ "layout": "IPY_MODEL_d343048da6a04360931989f9b92a1fd8",
3877
+ "style": "IPY_MODEL_18feade13b3c475782f5541d835eb714",
3878
+ "value": "100%"
3879
+ }
3880
+ },
3881
+ "1f51b02c7350488892f789cfebce7b1e": {
3882
+ "model_module": "@jupyter-widgets/base",
3883
+ "model_module_version": "2.0.0",
3884
+ "model_name": "LayoutModel",
3885
+ "state": {}
3886
+ },
3887
+ "206172e87b3642c6ac6582b0ebbf6f80": {
3888
+ "model_module": "@jupyter-widgets/controls",
3889
+ "model_module_version": "2.0.0",
3890
+ "model_name": "HTMLStyleModel",
3891
+ "state": {
3892
+ "description_width": "",
3893
+ "font_size": null,
3894
+ "text_color": null
3895
+ }
3896
+ },
3897
+ "20b3b53459634971b8ede3e6e42bdb22": {
3898
+ "model_module": "@jupyter-widgets/base",
3899
+ "model_module_version": "2.0.0",
3900
+ "model_name": "LayoutModel",
3901
+ "state": {}
3902
+ },
3903
+ "23116387d8f64fd38b2af86dc47dd54c": {
3904
+ "model_module": "@jupyter-widgets/base",
3905
+ "model_module_version": "2.0.0",
3906
+ "model_name": "LayoutModel",
3907
+ "state": {}
3908
+ },
3909
+ "24371d8e9f3f49b394b3f9be9eb40295": {
3910
+ "model_module": "@jupyter-widgets/base",
3911
+ "model_module_version": "2.0.0",
3912
+ "model_name": "LayoutModel",
3913
+ "state": {}
3914
+ },
3915
+ "2717f12178e54818864eca87f9374dec": {
3916
+ "model_module": "@jupyter-widgets/controls",
3917
+ "model_module_version": "2.0.0",
3918
+ "model_name": "HTMLModel",
3919
+ "state": {
3920
+ "layout": "IPY_MODEL_ea030b8eacad4f1a9a00fe1060e7f7a6",
3921
+ "style": "IPY_MODEL_8bbcd88274414f01ae1cb8fcc43b1c3e",
3922
+ "value": "100%"
3923
+ }
3924
+ },
3925
+ "288343a2cd814c478a62d7cc0e4e92fa": {
3926
+ "model_module": "@jupyter-widgets/base",
3927
+ "model_module_version": "2.0.0",
3928
+ "model_name": "LayoutModel",
3929
+ "state": {}
3930
+ },
3931
+ "29d3ca80c25b4a8090aa0d931c0fa3f0": {
3932
+ "model_module": "@jupyter-widgets/controls",
3933
+ "model_module_version": "2.0.0",
3934
+ "model_name": "FloatProgressModel",
3935
+ "state": {
3936
+ "bar_style": "success",
3937
+ "layout": "IPY_MODEL_baa62618ad75474c874991a8ee7efa28",
3938
+ "max": 118,
3939
+ "style": "IPY_MODEL_8cadb0d7721f47daaa500deee5f696a8",
3940
+ "value": 118
3941
+ }
3942
+ },
3943
+ "32692d276650455c9617184478d4be36": {
3944
+ "model_module": "@jupyter-widgets/base",
3945
+ "model_module_version": "2.0.0",
3946
+ "model_name": "LayoutModel",
3947
+ "state": {}
3948
+ },
3949
+ "33917568acc94ed788eb2e40567251f9": {
3950
+ "model_module": "@jupyter-widgets/base",
3951
+ "model_module_version": "2.0.0",
3952
+ "model_name": "LayoutModel",
3953
+ "state": {}
3954
+ },
3955
+ "34c651d05a494eb2a0e7988adc9a9835": {
3956
+ "model_module": "@jupyter-widgets/controls",
3957
+ "model_module_version": "2.0.0",
3958
+ "model_name": "HBoxModel",
3959
+ "state": {
3960
+ "children": [
3961
+ "IPY_MODEL_12c376723c444ab1bc7d86aaeebaa299",
3962
+ "IPY_MODEL_894a816d99da47dfb9ff8aab4c4e8063",
3963
+ "IPY_MODEL_ad102543dcd24813a5cb6778017f1cbb"
3964
+ ],
3965
+ "layout": "IPY_MODEL_c57c7e23c4ee4728824c3582992d1a1b"
3966
+ }
3967
+ },
3968
+ "35552075d3894247810490a5c7e157fb": {
3969
+ "model_module": "@jupyter-widgets/controls",
3970
+ "model_module_version": "2.0.0",
3971
+ "model_name": "HTMLStyleModel",
3972
+ "state": {
3973
+ "description_width": "",
3974
+ "font_size": null,
3975
+ "text_color": null
3976
+ }
3977
+ },
3978
+ "37ee4dbe42f6450181aeefc9d917780c": {
3979
+ "model_module": "@jupyter-widgets/base",
3980
+ "model_module_version": "2.0.0",
3981
+ "model_name": "LayoutModel",
3982
+ "state": {}
3983
+ },
3984
+ "3a2235b0309e4dacab34cd8348b5963a": {
3985
+ "model_module": "@jupyter-widgets/controls",
3986
+ "model_module_version": "2.0.0",
3987
+ "model_name": "HBoxModel",
3988
+ "state": {
3989
+ "children": [
3990
+ "IPY_MODEL_3b4d7acfb2fa4226ae4800873fa58bda",
3991
+ "IPY_MODEL_710afbb6b30c4332ac6a46e7f04f47d4",
3992
+ "IPY_MODEL_142c7a24cd4b4d898e29f93f4d6195df"
3993
+ ],
3994
+ "layout": "IPY_MODEL_70861822edf24a0e80bb52f42fdd80ef"
3995
+ }
3996
+ },
3997
+ "3a53326aa86b4c5ea26f15752b38ae67": {
3998
+ "model_module": "@jupyter-widgets/base",
3999
+ "model_module_version": "2.0.0",
4000
+ "model_name": "LayoutModel",
4001
+ "state": {}
4002
+ },
4003
+ "3b4d7acfb2fa4226ae4800873fa58bda": {
4004
+ "model_module": "@jupyter-widgets/controls",
4005
+ "model_module_version": "2.0.0",
4006
+ "model_name": "HTMLModel",
4007
+ "state": {
4008
+ "layout": "IPY_MODEL_422aa5d6dec748afa06e7c47bc2473a0",
4009
+ "style": "IPY_MODEL_f60c31e316b741b288c553ecc69443b9",
4010
+ "value": "100%"
4011
+ }
4012
+ },
4013
+ "3b57a14b679b41a1b16c9c864a09617b": {
4014
+ "model_module": "@jupyter-widgets/controls",
4015
+ "model_module_version": "2.0.0",
4016
+ "model_name": "ProgressStyleModel",
4017
+ "state": {
4018
+ "description_width": ""
4019
+ }
4020
+ },
4021
+ "3b626570b96d40b2bccf6874afe72ab2": {
4022
+ "model_module": "@jupyter-widgets/base",
4023
+ "model_module_version": "2.0.0",
4024
+ "model_name": "LayoutModel",
4025
+ "state": {}
4026
+ },
4027
+ "3da8dc9a994a4bd7b95d62413a73306f": {
4028
+ "model_module": "@jupyter-widgets/controls",
4029
+ "model_module_version": "2.0.0",
4030
+ "model_name": "HBoxModel",
4031
+ "state": {
4032
+ "children": [
4033
+ "IPY_MODEL_86e7388e00c44e4aa5eecfdba0eb71bd",
4034
+ "IPY_MODEL_4cbd608c3f5b44838586ef09f19b9f76",
4035
+ "IPY_MODEL_739bae7033024608b64e34a29df54c4c"
4036
+ ],
4037
+ "layout": "IPY_MODEL_6167b7914d194cba8d6860f6a24fd037"
4038
+ }
4039
+ },
4040
+ "422aa5d6dec748afa06e7c47bc2473a0": {
4041
+ "model_module": "@jupyter-widgets/base",
4042
+ "model_module_version": "2.0.0",
4043
+ "model_name": "LayoutModel",
4044
+ "state": {}
4045
+ },
4046
+ "4a693d0251c64c849c8e3c57c4b5bf66": {
4047
+ "model_module": "@jupyter-widgets/base",
4048
+ "model_module_version": "2.0.0",
4049
+ "model_name": "LayoutModel",
4050
+ "state": {}
4051
+ },
4052
+ "4cbd608c3f5b44838586ef09f19b9f76": {
4053
+ "model_module": "@jupyter-widgets/controls",
4054
+ "model_module_version": "2.0.0",
4055
+ "model_name": "FloatProgressModel",
4056
+ "state": {
4057
+ "bar_style": "success",
4058
+ "layout": "IPY_MODEL_f5dc54554e48411f926a60dd14a4bf61",
4059
+ "max": 118,
4060
+ "style": "IPY_MODEL_76925037e828414387d0eed2623415ed",
4061
+ "value": 118
4062
+ }
4063
+ },
4064
+ "4d744acd8d5042d78257c01108c81c65": {
4065
+ "model_module": "@jupyter-widgets/controls",
4066
+ "model_module_version": "2.0.0",
4067
+ "model_name": "ProgressStyleModel",
4068
+ "state": {
4069
+ "description_width": ""
4070
+ }
4071
+ },
4072
+ "5088f5dc07ab4ebf8a06c121884171ca": {
4073
+ "model_module": "@jupyter-widgets/controls",
4074
+ "model_module_version": "2.0.0",
4075
+ "model_name": "HTMLModel",
4076
+ "state": {
4077
+ "layout": "IPY_MODEL_a94a375fe34646b892eaee9c4cb81c40",
4078
+ "style": "IPY_MODEL_dc176dfbd3e14fb588b48290061ad612",
4079
+ "value": " 118/118 [00:22&lt;00:00,  4.53it/s]"
4080
+ }
4081
+ },
4082
+ "53c90d01f6de45e899ace60dab91d5b7": {
4083
+ "model_module": "@jupyter-widgets/controls",
4084
+ "model_module_version": "2.0.0",
4085
+ "model_name": "HTMLStyleModel",
4086
+ "state": {
4087
+ "description_width": "",
4088
+ "font_size": null,
4089
+ "text_color": null
4090
+ }
4091
+ },
4092
+ "541074eff2ca4e2cb14a5ae0931d8844": {
4093
+ "model_module": "@jupyter-widgets/base",
4094
+ "model_module_version": "2.0.0",
4095
+ "model_name": "LayoutModel",
4096
+ "state": {}
4097
+ },
4098
+ "5506630107dc4e71a5fd313a844f3976": {
4099
+ "model_module": "@jupyter-widgets/base",
4100
+ "model_module_version": "2.0.0",
4101
+ "model_name": "LayoutModel",
4102
+ "state": {}
4103
+ },
4104
+ "55562f662e56481ba346246ccc109626": {
4105
+ "model_module": "@jupyter-widgets/controls",
4106
+ "model_module_version": "2.0.0",
4107
+ "model_name": "HBoxModel",
4108
+ "state": {
4109
+ "children": [
4110
+ "IPY_MODEL_1d6ea3ca0867417981c636de639abf9f",
4111
+ "IPY_MODEL_dc0b1e9a493f42f293bc5673ac162da7",
4112
+ "IPY_MODEL_0ab5d0f3c74d4c4cba3a62d642cb99b1"
4113
+ ],
4114
+ "layout": "IPY_MODEL_18d993ad92214f71aa4607d4f6bb47c6"
4115
+ }
4116
+ },
4117
+ "55c068cb90a3463484ffd851c34a6ab8": {
4118
+ "model_module": "@jupyter-widgets/controls",
4119
+ "model_module_version": "2.0.0",
4120
+ "model_name": "HBoxModel",
4121
+ "state": {
4122
+ "children": [
4123
+ "IPY_MODEL_0ed26ebe44e24e5fa07e946503735553",
4124
+ "IPY_MODEL_805ebd0e10ed4bfb98728a78028146d3",
4125
+ "IPY_MODEL_d0ef47d1fd78494aa63b4c3538b90a67"
4126
+ ],
4127
+ "layout": "IPY_MODEL_b64e15735fb6459f92f9ff249fc21d0e"
4128
+ }
4129
+ },
4130
+ "5b05067d2381420e91790696a2cd3519": {
4131
+ "model_module": "@jupyter-widgets/base",
4132
+ "model_module_version": "2.0.0",
4133
+ "model_name": "LayoutModel",
4134
+ "state": {}
4135
+ },
4136
+ "5d6e7ddfc71240c5b5ac9274c31b78bd": {
4137
+ "model_module": "@jupyter-widgets/controls",
4138
+ "model_module_version": "2.0.0",
4139
+ "model_name": "ProgressStyleModel",
4140
+ "state": {
4141
+ "description_width": ""
4142
+ }
4143
+ },
4144
+ "5ed200ebc48c4d6382a8bec1f8836783": {
4145
+ "model_module": "@jupyter-widgets/controls",
4146
+ "model_module_version": "2.0.0",
4147
+ "model_name": "HTMLStyleModel",
4148
+ "state": {
4149
+ "description_width": "",
4150
+ "font_size": null,
4151
+ "text_color": null
4152
+ }
4153
+ },
4154
+ "61361bf4390448a9941dbd37a280e28e": {
4155
+ "model_module": "@jupyter-widgets/controls",
4156
+ "model_module_version": "2.0.0",
4157
+ "model_name": "ProgressStyleModel",
4158
+ "state": {
4159
+ "description_width": ""
4160
+ }
4161
+ },
4162
+ "6167b7914d194cba8d6860f6a24fd037": {
4163
+ "model_module": "@jupyter-widgets/base",
4164
+ "model_module_version": "2.0.0",
4165
+ "model_name": "LayoutModel",
4166
+ "state": {}
4167
+ },
4168
+ "674cd8b0d6264d0d958d4292fcf31d75": {
4169
+ "model_module": "@jupyter-widgets/controls",
4170
+ "model_module_version": "2.0.0",
4171
+ "model_name": "HTMLModel",
4172
+ "state": {
4173
+ "layout": "IPY_MODEL_0cded1953fb641969da232bc7dda3207",
4174
+ "style": "IPY_MODEL_fcab8f6cc0b8437fb41e4cd6b6953722",
4175
+ "value": "100%"
4176
+ }
4177
+ },
4178
+ "6af74179f34b49a79620fb72411ee763": {
4179
+ "model_module": "@jupyter-widgets/base",
4180
+ "model_module_version": "2.0.0",
4181
+ "model_name": "LayoutModel",
4182
+ "state": {}
4183
+ },
4184
+ "70073ff888d642189a9767a874470b5b": {
4185
+ "model_module": "@jupyter-widgets/controls",
4186
+ "model_module_version": "2.0.0",
4187
+ "model_name": "ProgressStyleModel",
4188
+ "state": {
4189
+ "description_width": ""
4190
+ }
4191
+ },
4192
+ "70861822edf24a0e80bb52f42fdd80ef": {
4193
+ "model_module": "@jupyter-widgets/base",
4194
+ "model_module_version": "2.0.0",
4195
+ "model_name": "LayoutModel",
4196
+ "state": {}
4197
+ },
4198
+ "710afbb6b30c4332ac6a46e7f04f47d4": {
4199
+ "model_module": "@jupyter-widgets/controls",
4200
+ "model_module_version": "2.0.0",
4201
+ "model_name": "FloatProgressModel",
4202
+ "state": {
4203
+ "bar_style": "success",
4204
+ "layout": "IPY_MODEL_b1069386e89341d49d790c3315f95a7c",
4205
+ "max": 118,
4206
+ "style": "IPY_MODEL_714eeb184a984cf3bcd1c3e0a7cdbf76",
4207
+ "value": 118
4208
+ }
4209
+ },
4210
+ "714eeb184a984cf3bcd1c3e0a7cdbf76": {
4211
+ "model_module": "@jupyter-widgets/controls",
4212
+ "model_module_version": "2.0.0",
4213
+ "model_name": "ProgressStyleModel",
4214
+ "state": {
4215
+ "description_width": ""
4216
+ }
4217
+ },
4218
+ "734b0f1c05ec429cbe4887417b6b6b55": {
4219
+ "model_module": "@jupyter-widgets/controls",
4220
+ "model_module_version": "2.0.0",
4221
+ "model_name": "HTMLModel",
4222
+ "state": {
4223
+ "layout": "IPY_MODEL_a89ff36c048747c29d998f519c2efcdb",
4224
+ "style": "IPY_MODEL_35552075d3894247810490a5c7e157fb",
4225
+ "value": " 118/118 [00:34&lt;00:00,  3.14it/s]"
4226
+ }
4227
+ },
4228
+ "739bae7033024608b64e34a29df54c4c": {
4229
+ "model_module": "@jupyter-widgets/controls",
4230
+ "model_module_version": "2.0.0",
4231
+ "model_name": "HTMLModel",
4232
+ "state": {
4233
+ "layout": "IPY_MODEL_37ee4dbe42f6450181aeefc9d917780c",
4234
+ "style": "IPY_MODEL_95f0d8ad3a8e4c55a3db1629f2d537fd",
4235
+ "value": " 118/118 [00:33&lt;00:00,  3.78it/s]"
4236
+ }
4237
+ },
4238
+ "76925037e828414387d0eed2623415ed": {
4239
+ "model_module": "@jupyter-widgets/controls",
4240
+ "model_module_version": "2.0.0",
4241
+ "model_name": "ProgressStyleModel",
4242
+ "state": {
4243
+ "description_width": ""
4244
+ }
4245
+ },
4246
+ "7cefefaa5c37402faecf27c7973157a5": {
4247
+ "model_module": "@jupyter-widgets/controls",
4248
+ "model_module_version": "2.0.0",
4249
+ "model_name": "FloatProgressModel",
4250
+ "state": {
4251
+ "bar_style": "success",
4252
+ "layout": "IPY_MODEL_6af74179f34b49a79620fb72411ee763",
4253
+ "max": 118,
4254
+ "style": "IPY_MODEL_ccb72d0da17d4184ae89125db001a9aa",
4255
+ "value": 118
4256
+ }
4257
+ },
4258
+ "7d0004a7880d4aeeb42532e4718d34e2": {
4259
+ "model_module": "@jupyter-widgets/controls",
4260
+ "model_module_version": "2.0.0",
4261
+ "model_name": "HBoxModel",
4262
+ "state": {
4263
+ "children": [
4264
+ "IPY_MODEL_c38d653a12fa46849e28ceabab397e24",
4265
+ "IPY_MODEL_0ce144ef22854dc6bee81352022b3074",
4266
+ "IPY_MODEL_734b0f1c05ec429cbe4887417b6b6b55"
4267
+ ],
4268
+ "layout": "IPY_MODEL_4a693d0251c64c849c8e3c57c4b5bf66"
4269
+ }
4270
+ },
4271
+ "7d6dcb54900b4dc1a657e89159799a9e": {
4272
+ "model_module": "@jupyter-widgets/controls",
4273
+ "model_module_version": "2.0.0",
4274
+ "model_name": "HTMLStyleModel",
4275
+ "state": {
4276
+ "description_width": "",
4277
+ "font_size": null,
4278
+ "text_color": null
4279
+ }
4280
+ },
4281
+ "7e7ac4bb45b9478f8aa6ce76d4a43b5a": {
4282
+ "model_module": "@jupyter-widgets/controls",
4283
+ "model_module_version": "2.0.0",
4284
+ "model_name": "HTMLModel",
4285
+ "state": {
4286
+ "layout": "IPY_MODEL_bf0a54995604496291dcfaa17bbdd504",
4287
+ "style": "IPY_MODEL_7d6dcb54900b4dc1a657e89159799a9e",
4288
+ "value": " 118/118 [00:23&lt;00:00,  4.40it/s]"
4289
+ }
4290
+ },
4291
+ "805ebd0e10ed4bfb98728a78028146d3": {
4292
+ "model_module": "@jupyter-widgets/controls",
4293
+ "model_module_version": "2.0.0",
4294
+ "model_name": "FloatProgressModel",
4295
+ "state": {
4296
+ "bar_style": "success",
4297
+ "layout": "IPY_MODEL_1f51b02c7350488892f789cfebce7b1e",
4298
+ "max": 118,
4299
+ "style": "IPY_MODEL_61361bf4390448a9941dbd37a280e28e",
4300
+ "value": 118
4301
+ }
4302
+ },
4303
+ "86e7388e00c44e4aa5eecfdba0eb71bd": {
4304
+ "model_module": "@jupyter-widgets/controls",
4305
+ "model_module_version": "2.0.0",
4306
+ "model_name": "HTMLModel",
4307
+ "state": {
4308
+ "layout": "IPY_MODEL_b6d72a6ce2c84a38afe2bc4a2ecf8385",
4309
+ "style": "IPY_MODEL_c9084458f72c48bc8350824fc8a2161b",
4310
+ "value": "100%"
4311
+ }
4312
+ },
4313
+ "894a816d99da47dfb9ff8aab4c4e8063": {
4314
+ "model_module": "@jupyter-widgets/controls",
4315
+ "model_module_version": "2.0.0",
4316
+ "model_name": "FloatProgressModel",
4317
+ "state": {
4318
+ "bar_style": "success",
4319
+ "layout": "IPY_MODEL_0cdbae6c34704fd98cabfbdd5404c6db",
4320
+ "max": 118,
4321
+ "style": "IPY_MODEL_d42052c447c14dd499f35a3e135af714",
4322
+ "value": 118
4323
+ }
4324
+ },
4325
+ "89c3bd8612c74f71be28aea79cc9237d": {
4326
+ "model_module": "@jupyter-widgets/controls",
4327
+ "model_module_version": "2.0.0",
4328
+ "model_name": "HTMLModel",
4329
+ "state": {
4330
+ "layout": "IPY_MODEL_5506630107dc4e71a5fd313a844f3976",
4331
+ "style": "IPY_MODEL_0c589f4517e446f3b2091c5283072e3d",
4332
+ "value": " 118/118 [00:02&lt;00:00, 42.18it/s]"
4333
+ }
4334
+ },
4335
+ "8b89d0a64778494491fd7d6dcea6b7d9": {
4336
+ "model_module": "@jupyter-widgets/controls",
4337
+ "model_module_version": "2.0.0",
4338
+ "model_name": "HTMLStyleModel",
4339
+ "state": {
4340
+ "description_width": "",
4341
+ "font_size": null,
4342
+ "text_color": null
4343
+ }
4344
+ },
4345
+ "8bbcd88274414f01ae1cb8fcc43b1c3e": {
4346
+ "model_module": "@jupyter-widgets/controls",
4347
+ "model_module_version": "2.0.0",
4348
+ "model_name": "HTMLStyleModel",
4349
+ "state": {
4350
+ "description_width": "",
4351
+ "font_size": null,
4352
+ "text_color": null
4353
+ }
4354
+ },
4355
+ "8cadb0d7721f47daaa500deee5f696a8": {
4356
+ "model_module": "@jupyter-widgets/controls",
4357
+ "model_module_version": "2.0.0",
4358
+ "model_name": "ProgressStyleModel",
4359
+ "state": {
4360
+ "description_width": ""
4361
+ }
4362
+ },
4363
+ "8e181eeb14f24447933b76dac47b9514": {
4364
+ "model_module": "@jupyter-widgets/controls",
4365
+ "model_module_version": "2.0.0",
4366
+ "model_name": "HBoxModel",
4367
+ "state": {
4368
+ "children": [
4369
+ "IPY_MODEL_674cd8b0d6264d0d958d4292fcf31d75",
4370
+ "IPY_MODEL_e849d7345f1043158c1d8b7c4c5fc9df",
4371
+ "IPY_MODEL_92ffef207b554a799cf754b9f33387e0"
4372
+ ],
4373
+ "layout": "IPY_MODEL_f89ba8b9da494ec0972d6fc800aefa0a"
4374
+ }
4375
+ },
4376
+ "92ffef207b554a799cf754b9f33387e0": {
4377
+ "model_module": "@jupyter-widgets/controls",
4378
+ "model_module_version": "2.0.0",
4379
+ "model_name": "HTMLModel",
4380
+ "state": {
4381
+ "layout": "IPY_MODEL_33917568acc94ed788eb2e40567251f9",
4382
+ "style": "IPY_MODEL_a036de6b54d74784a9bac32af0db9873",
4383
+ "value": " 118/118 [00:25&lt;00:00,  3.88it/s]"
4384
+ }
4385
+ },
4386
+ "95f0d8ad3a8e4c55a3db1629f2d537fd": {
4387
+ "model_module": "@jupyter-widgets/controls",
4388
+ "model_module_version": "2.0.0",
4389
+ "model_name": "HTMLStyleModel",
4390
+ "state": {
4391
+ "description_width": "",
4392
+ "font_size": null,
4393
+ "text_color": null
4394
+ }
4395
+ },
4396
+ "961228b9019d4b62a27fc84e373db5b1": {
4397
+ "model_module": "@jupyter-widgets/controls",
4398
+ "model_module_version": "2.0.0",
4399
+ "model_name": "HTMLStyleModel",
4400
+ "state": {
4401
+ "description_width": "",
4402
+ "font_size": null,
4403
+ "text_color": null
4404
+ }
4405
+ },
4406
+ "9a28bb5f413145fc8af90abbc055b2b1": {
4407
+ "model_module": "@jupyter-widgets/controls",
4408
+ "model_module_version": "2.0.0",
4409
+ "model_name": "HTMLStyleModel",
4410
+ "state": {
4411
+ "description_width": "",
4412
+ "font_size": null,
4413
+ "text_color": null
4414
+ }
4415
+ },
4416
+ "a036de6b54d74784a9bac32af0db9873": {
4417
+ "model_module": "@jupyter-widgets/controls",
4418
+ "model_module_version": "2.0.0",
4419
+ "model_name": "HTMLStyleModel",
4420
+ "state": {
4421
+ "description_width": "",
4422
+ "font_size": null,
4423
+ "text_color": null
4424
+ }
4425
+ },
4426
+ "a89ff36c048747c29d998f519c2efcdb": {
4427
+ "model_module": "@jupyter-widgets/base",
4428
+ "model_module_version": "2.0.0",
4429
+ "model_name": "LayoutModel",
4430
+ "state": {}
4431
+ },
4432
+ "a94a375fe34646b892eaee9c4cb81c40": {
4433
+ "model_module": "@jupyter-widgets/base",
4434
+ "model_module_version": "2.0.0",
4435
+ "model_name": "LayoutModel",
4436
+ "state": {}
4437
+ },
4438
+ "ad102543dcd24813a5cb6778017f1cbb": {
4439
+ "model_module": "@jupyter-widgets/controls",
4440
+ "model_module_version": "2.0.0",
4441
+ "model_name": "HTMLModel",
4442
+ "state": {
4443
+ "layout": "IPY_MODEL_20b3b53459634971b8ede3e6e42bdb22",
4444
+ "style": "IPY_MODEL_206172e87b3642c6ac6582b0ebbf6f80",
4445
+ "value": " 118/118 [00:24&lt;00:00,  4.12it/s]"
4446
+ }
4447
+ },
4448
+ "b1069386e89341d49d790c3315f95a7c": {
4449
+ "model_module": "@jupyter-widgets/base",
4450
+ "model_module_version": "2.0.0",
4451
+ "model_name": "LayoutModel",
4452
+ "state": {}
4453
+ },
4454
+ "b1afe346307644d18fda893e52ea93b8": {
4455
+ "model_module": "@jupyter-widgets/controls",
4456
+ "model_module_version": "2.0.0",
4457
+ "model_name": "HTMLStyleModel",
4458
+ "state": {
4459
+ "description_width": "",
4460
+ "font_size": null,
4461
+ "text_color": null
4462
+ }
4463
+ },
4464
+ "b64e15735fb6459f92f9ff249fc21d0e": {
4465
+ "model_module": "@jupyter-widgets/base",
4466
+ "model_module_version": "2.0.0",
4467
+ "model_name": "LayoutModel",
4468
+ "state": {}
4469
+ },
4470
+ "b6d72a6ce2c84a38afe2bc4a2ecf8385": {
4471
+ "model_module": "@jupyter-widgets/base",
4472
+ "model_module_version": "2.0.0",
4473
+ "model_name": "LayoutModel",
4474
+ "state": {}
4475
+ },
4476
+ "b753d3dd93744e0aaec7dabe187e1b7d": {
4477
+ "model_module": "@jupyter-widgets/base",
4478
+ "model_module_version": "2.0.0",
4479
+ "model_name": "LayoutModel",
4480
+ "state": {}
4481
+ },
4482
+ "baa62618ad75474c874991a8ee7efa28": {
4483
+ "model_module": "@jupyter-widgets/base",
4484
+ "model_module_version": "2.0.0",
4485
+ "model_name": "LayoutModel",
4486
+ "state": {}
4487
+ },
4488
+ "bb4189f8cd2b4cb38d47be1e46893cd4": {
4489
+ "model_module": "@jupyter-widgets/controls",
4490
+ "model_module_version": "2.0.0",
4491
+ "model_name": "HTMLStyleModel",
4492
+ "state": {
4493
+ "description_width": "",
4494
+ "font_size": null,
4495
+ "text_color": null
4496
+ }
4497
+ },
4498
+ "bf0a54995604496291dcfaa17bbdd504": {
4499
+ "model_module": "@jupyter-widgets/base",
4500
+ "model_module_version": "2.0.0",
4501
+ "model_name": "LayoutModel",
4502
+ "state": {}
4503
+ },
4504
+ "c38d653a12fa46849e28ceabab397e24": {
4505
+ "model_module": "@jupyter-widgets/controls",
4506
+ "model_module_version": "2.0.0",
4507
+ "model_name": "HTMLModel",
4508
+ "state": {
4509
+ "layout": "IPY_MODEL_32692d276650455c9617184478d4be36",
4510
+ "style": "IPY_MODEL_53c90d01f6de45e899ace60dab91d5b7",
4511
+ "value": "100%"
4512
+ }
4513
+ },
4514
+ "c44f65cce025403ca9d39ad50044ea46": {
4515
+ "model_module": "@jupyter-widgets/controls",
4516
+ "model_module_version": "2.0.0",
4517
+ "model_name": "HTMLModel",
4518
+ "state": {
4519
+ "layout": "IPY_MODEL_f4fa13dca645493984620cc32469e31b",
4520
+ "style": "IPY_MODEL_961228b9019d4b62a27fc84e373db5b1",
4521
+ "value": "100%"
4522
+ }
4523
+ },
4524
+ "c57c7e23c4ee4728824c3582992d1a1b": {
4525
+ "model_module": "@jupyter-widgets/base",
4526
+ "model_module_version": "2.0.0",
4527
+ "model_name": "LayoutModel",
4528
+ "state": {}
4529
+ },
4530
+ "c9084458f72c48bc8350824fc8a2161b": {
4531
+ "model_module": "@jupyter-widgets/controls",
4532
+ "model_module_version": "2.0.0",
4533
+ "model_name": "HTMLStyleModel",
4534
+ "state": {
4535
+ "description_width": "",
4536
+ "font_size": null,
4537
+ "text_color": null
4538
+ }
4539
+ },
4540
+ "ccb72d0da17d4184ae89125db001a9aa": {
4541
+ "model_module": "@jupyter-widgets/controls",
4542
+ "model_module_version": "2.0.0",
4543
+ "model_name": "ProgressStyleModel",
4544
+ "state": {
4545
+ "description_width": ""
4546
+ }
4547
+ },
4548
+ "cfd3ce4dce01407499562d73e1b40540": {
4549
+ "model_module": "@jupyter-widgets/controls",
4550
+ "model_module_version": "2.0.0",
4551
+ "model_name": "FloatProgressModel",
4552
+ "state": {
4553
+ "bar_style": "success",
4554
+ "layout": "IPY_MODEL_24371d8e9f3f49b394b3f9be9eb40295",
4555
+ "max": 118,
4556
+ "style": "IPY_MODEL_70073ff888d642189a9767a874470b5b",
4557
+ "value": 118
4558
+ }
4559
+ },
4560
+ "d0ef47d1fd78494aa63b4c3538b90a67": {
4561
+ "model_module": "@jupyter-widgets/controls",
4562
+ "model_module_version": "2.0.0",
4563
+ "model_name": "HTMLModel",
4564
+ "state": {
4565
+ "layout": "IPY_MODEL_3b626570b96d40b2bccf6874afe72ab2",
4566
+ "style": "IPY_MODEL_8b89d0a64778494491fd7d6dcea6b7d9",
4567
+ "value": " 118/118 [00:22&lt;00:00,  4.55it/s]"
4568
+ }
4569
+ },
4570
+ "d343048da6a04360931989f9b92a1fd8": {
4571
+ "model_module": "@jupyter-widgets/base",
4572
+ "model_module_version": "2.0.0",
4573
+ "model_name": "LayoutModel",
4574
+ "state": {}
4575
+ },
4576
+ "d42052c447c14dd499f35a3e135af714": {
4577
+ "model_module": "@jupyter-widgets/controls",
4578
+ "model_module_version": "2.0.0",
4579
+ "model_name": "ProgressStyleModel",
4580
+ "state": {
4581
+ "description_width": ""
4582
+ }
4583
+ },
4584
+ "d9119d0d18c04a7eab1531dca1a71f9c": {
4585
+ "model_module": "@jupyter-widgets/base",
4586
+ "model_module_version": "2.0.0",
4587
+ "model_name": "LayoutModel",
4588
+ "state": {}
4589
+ },
4590
+ "db860024663d4cc7859e4808a518cc09": {
4591
+ "model_module": "@jupyter-widgets/base",
4592
+ "model_module_version": "2.0.0",
4593
+ "model_name": "LayoutModel",
4594
+ "state": {}
4595
+ },
4596
+ "dc0b1e9a493f42f293bc5673ac162da7": {
4597
+ "model_module": "@jupyter-widgets/controls",
4598
+ "model_module_version": "2.0.0",
4599
+ "model_name": "FloatProgressModel",
4600
+ "state": {
4601
+ "bar_style": "success",
4602
+ "layout": "IPY_MODEL_1903fb3dfd654bd9b8740e65c4e4ec69",
4603
+ "max": 118,
4604
+ "style": "IPY_MODEL_3b57a14b679b41a1b16c9c864a09617b",
4605
+ "value": 118
4606
+ }
4607
+ },
4608
+ "dc176dfbd3e14fb588b48290061ad612": {
4609
+ "model_module": "@jupyter-widgets/controls",
4610
+ "model_module_version": "2.0.0",
4611
+ "model_name": "HTMLStyleModel",
4612
+ "state": {
4613
+ "description_width": "",
4614
+ "font_size": null,
4615
+ "text_color": null
4616
+ }
4617
+ },
4618
+ "e047b2428ade4f76a403019d9e559093": {
4619
+ "model_module": "@jupyter-widgets/controls",
4620
+ "model_module_version": "2.0.0",
4621
+ "model_name": "HTMLStyleModel",
4622
+ "state": {
4623
+ "description_width": "",
4624
+ "font_size": null,
4625
+ "text_color": null
4626
+ }
4627
+ },
4628
+ "e849d7345f1043158c1d8b7c4c5fc9df": {
4629
+ "model_module": "@jupyter-widgets/controls",
4630
+ "model_module_version": "2.0.0",
4631
+ "model_name": "FloatProgressModel",
4632
+ "state": {
4633
+ "bar_style": "success",
4634
+ "layout": "IPY_MODEL_0b6d7e7c471540b7b4b3771488c9a210",
4635
+ "max": 118,
4636
+ "style": "IPY_MODEL_4d744acd8d5042d78257c01108c81c65",
4637
+ "value": 118
4638
+ }
4639
+ },
4640
+ "ea030b8eacad4f1a9a00fe1060e7f7a6": {
4641
+ "model_module": "@jupyter-widgets/base",
4642
+ "model_module_version": "2.0.0",
4643
+ "model_name": "LayoutModel",
4644
+ "state": {}
4645
+ },
4646
+ "f23884741dd74e2a9853298cc6c631b5": {
4647
+ "model_module": "@jupyter-widgets/controls",
4648
+ "model_module_version": "2.0.0",
4649
+ "model_name": "HBoxModel",
4650
+ "state": {
4651
+ "children": [
4652
+ "IPY_MODEL_2717f12178e54818864eca87f9374dec",
4653
+ "IPY_MODEL_29d3ca80c25b4a8090aa0d931c0fa3f0",
4654
+ "IPY_MODEL_89c3bd8612c74f71be28aea79cc9237d"
4655
+ ],
4656
+ "layout": "IPY_MODEL_b753d3dd93744e0aaec7dabe187e1b7d"
4657
+ }
4658
+ },
4659
+ "f49debc4e85e4e2aa5c24de17cfa337a": {
4660
+ "model_module": "@jupyter-widgets/controls",
4661
+ "model_module_version": "2.0.0",
4662
+ "model_name": "HBoxModel",
4663
+ "state": {
4664
+ "children": [
4665
+ "IPY_MODEL_1403f930c2324c4fa08125ea34f19123",
4666
+ "IPY_MODEL_7cefefaa5c37402faecf27c7973157a5",
4667
+ "IPY_MODEL_5088f5dc07ab4ebf8a06c121884171ca"
4668
+ ],
4669
+ "layout": "IPY_MODEL_3a53326aa86b4c5ea26f15752b38ae67"
4670
+ }
4671
+ },
4672
+ "f4fa13dca645493984620cc32469e31b": {
4673
+ "model_module": "@jupyter-widgets/base",
4674
+ "model_module_version": "2.0.0",
4675
+ "model_name": "LayoutModel",
4676
+ "state": {}
4677
+ },
4678
+ "f5210ca8dd5c4040a7368211d308abb4": {
4679
+ "model_module": "@jupyter-widgets/base",
4680
+ "model_module_version": "2.0.0",
4681
+ "model_name": "LayoutModel",
4682
+ "state": {}
4683
+ },
4684
+ "f5dc54554e48411f926a60dd14a4bf61": {
4685
+ "model_module": "@jupyter-widgets/base",
4686
+ "model_module_version": "2.0.0",
4687
+ "model_name": "LayoutModel",
4688
+ "state": {}
4689
+ },
4690
+ "f60c31e316b741b288c553ecc69443b9": {
4691
+ "model_module": "@jupyter-widgets/controls",
4692
+ "model_module_version": "2.0.0",
4693
+ "model_name": "HTMLStyleModel",
4694
+ "state": {
4695
+ "description_width": "",
4696
+ "font_size": null,
4697
+ "text_color": null
4698
+ }
4699
+ },
4700
+ "f89ba8b9da494ec0972d6fc800aefa0a": {
4701
+ "model_module": "@jupyter-widgets/base",
4702
+ "model_module_version": "2.0.0",
4703
+ "model_name": "LayoutModel",
4704
+ "state": {}
4705
+ },
4706
+ "fcab8f6cc0b8437fb41e4cd6b6953722": {
4707
+ "model_module": "@jupyter-widgets/controls",
4708
+ "model_module_version": "2.0.0",
4709
+ "model_name": "HTMLStyleModel",
4710
+ "state": {
4711
+ "description_width": "",
4712
+ "font_size": null,
4713
+ "text_color": null
4714
+ }
4715
+ }
4716
+ },
4717
  "version_major": 2,
4718
  "version_minor": 0
4719
  }
mlip_arena/tasks/diatomics/sevennet/homonuclear-diatomics.json CHANGED
The diff for this file is too large to render. See raw diff
 
serve/tasks/combustion.py CHANGED
@@ -145,14 +145,44 @@ fig.add_trace(
145
  fig.update_layout(
146
  title="Hydrogen Combustion (2H2 + O2 -> 2H2O, 64 units)",
147
  xaxis_title="Timestep",
148
- yaxis_title="Temperatures",
149
- yaxis2=dict(
150
- title="Product Percentage (%)",
151
- overlaying="y",
152
- side="right",
153
- range=[0, 100],
154
- tickmode="sync",
155
- ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
156
  # template="plotly_dark",
157
  )
158
 
@@ -213,7 +243,7 @@ st.plotly_chart(fig)
213
  st.markdown("""### Center of mass drift
214
 
215
  The center of mass (COM) drift is a measure of the stability of the simulation. A well-behaved simulation should have a COM drift close to zero. The COM drift is calculated as the displacement of the COM of the system from the initial position.
216
- """)
217
 
218
 
219
  @st.cache_data
@@ -229,7 +259,9 @@ def get_com_drifts(df):
229
  df_flat = df_exploded.drop(columns=["com_drifts"])
230
 
231
  df_flat["total_com_drift"] = np.sqrt(
232
- df_flat["com_drift_x"] ** 2 + df_flat["com_drift_y"] ** 2 + df_flat["com_drift_z"] ** 2
 
 
233
  )
234
 
235
  return df_flat
@@ -290,7 +322,11 @@ def draw_com_drifts_plot():
290
  x="com_drift_x",
291
  y="com_drift_y",
292
  z="com_drift_z",
293
- labels={"com_drift_x": "Δx (Å)", "com_drift_y": "Δy (Å)", "com_drift_z": "Δz (Å)"},
 
 
 
 
294
  category_orders={"method": df_exploded["method"].unique()},
295
  color_discrete_sequence=[
296
  method_color_mapping[method] for method in df_exploded["method"].unique()
@@ -313,31 +349,33 @@ def draw_com_drifts_plot():
313
  bgcolor="rgba(0, 0, 0, 0)",
314
  ),
315
  )
316
- fig.add_traces([
317
- go.Scatter3d(
318
- x=[0],
319
- y=[0],
320
- z=[0],
321
- mode="markers",
322
- marker=dict(size=2, color="white"),
323
- name="Origin",
324
- ),
325
- # add last point of each method and annotate the total drift
326
- go.Scatter3d(
327
- # df_filtered.groupby("method")["com_drift_x"].last(),
328
- x=df_filtered.groupby("method")["com_drift_x"].last(),
329
- y=df_filtered.groupby("method")["com_drift_y"].last(),
330
- z=df_filtered.groupby("method")["com_drift_z"].last(),
331
- mode="markers+text",
332
- marker=dict(size=2, color="rgba(0, 0, 0, 128)"),
333
- text=df_filtered.groupby("method")["total_com_drift"].last().round(3),
334
- # size=5,
335
- name="total drifts",
336
- textposition="top center",
337
- ),
338
- ])
 
 
339
 
340
  st.plotly_chart(fig)
341
 
342
 
343
- draw_com_drifts_plot()
 
145
  fig.update_layout(
146
  title="Hydrogen Combustion (2H2 + O2 -> 2H2O, 64 units)",
147
  xaxis_title="Timestep",
148
+ yaxis_title="Temperature (K)",
149
+ # yaxis2=dict(
150
+ # title="Product Percentage (%)",
151
+ # overlaying="y",
152
+ # side="right",
153
+ # range=[0, 100],
154
+ # tickmode="sync",
155
+ # ),
156
+ # template="plotly_dark",
157
+ )
158
+
159
+ st.plotly_chart(fig)
160
+
161
+ # Energy
162
+
163
+ fig = go.Figure()
164
+
165
+ for method in df["method"].unique():
166
+ row = df[df["method"] == method].iloc[0]
167
+ fig.add_trace(
168
+ go.Scatter(
169
+ x=row["timestep"],
170
+ y=np.array(row["energies"]) - row["energies"][0],
171
+ mode="lines",
172
+ name=method,
173
+ line=dict(
174
+ color=method_color_mapping[method],
175
+ # width=1
176
+ ),
177
+ marker=dict(color=method_color_mapping[method], size=3),
178
+ showlegend=True,
179
+ ),
180
+ )
181
+
182
+ fig.update_layout(
183
+ title="Hydrogen Combustion (2H2 + O2 -> 2H2O, 64 units)",
184
+ xaxis_title="Timestep",
185
+ yaxis_title="ΔE (eV)",
186
  # template="plotly_dark",
187
  )
188
 
 
243
  st.markdown("""### Center of mass drift
244
 
245
  The center of mass (COM) drift is a measure of the stability of the simulation. A well-behaved simulation should have a COM drift close to zero. The COM drift is calculated as the displacement of the COM of the system from the initial position.
246
+ """)
247
 
248
 
249
  @st.cache_data
 
259
  df_flat = df_exploded.drop(columns=["com_drifts"])
260
 
261
  df_flat["total_com_drift"] = np.sqrt(
262
+ df_flat["com_drift_x"] ** 2
263
+ + df_flat["com_drift_y"] ** 2
264
+ + df_flat["com_drift_z"] ** 2
265
  )
266
 
267
  return df_flat
 
322
  x="com_drift_x",
323
  y="com_drift_y",
324
  z="com_drift_z",
325
+ labels={
326
+ "com_drift_x": "Δx (Å)",
327
+ "com_drift_y": "Δy (Å)",
328
+ "com_drift_z": "Δz (Å)",
329
+ },
330
  category_orders={"method": df_exploded["method"].unique()},
331
  color_discrete_sequence=[
332
  method_color_mapping[method] for method in df_exploded["method"].unique()
 
349
  bgcolor="rgba(0, 0, 0, 0)",
350
  ),
351
  )
352
+ fig.add_traces(
353
+ [
354
+ go.Scatter3d(
355
+ x=[0],
356
+ y=[0],
357
+ z=[0],
358
+ mode="markers",
359
+ marker=dict(size=3, color="white"),
360
+ name="origin",
361
+ ),
362
+ # add last point of each method and annotate the total drift
363
+ go.Scatter3d(
364
+ # df_filtered.groupby("method")["com_drift_x"].last(),
365
+ x=df_filtered.groupby("method")["com_drift_x"].last(),
366
+ y=df_filtered.groupby("method")["com_drift_y"].last(),
367
+ z=df_filtered.groupby("method")["com_drift_z"].last(),
368
+ mode="markers+text",
369
+ marker=dict(size=3, color="white", opacity=0.5),
370
+ text=df_filtered.groupby("method")["total_com_drift"].last().round(3),
371
+ # size=5,
372
+ name="total drifts",
373
+ textposition="top center",
374
+ ),
375
+ ]
376
+ )
377
 
378
  st.plotly_chart(fig)
379
 
380
 
381
+ draw_com_drifts_plot()