cyrusyc commited on
Commit
1effaf5
1 Parent(s): 2f7e23a

add relax task, eos workflow, and prefect test

Browse files
mlip_arena/tasks/README.md CHANGED
@@ -1,4 +1,3 @@
1
-
2
  ## Note on task registration
3
 
4
  1. Use `ast` to parse task classes from the uploaded script.
 
 
1
  ## Note on task registration
2
 
3
  1. Use `ast` to parse task classes from the uploaded script.
mlip_arena/tasks/combustion/water.ipynb CHANGED
@@ -19,7 +19,17 @@
19
  "from pymatgen.io.packmol import PackmolBoxGen\n",
20
  "\n",
21
  "from mlip_arena.models.utils import REGISTRY, MLIPEnum\n",
22
- "from mlip_arena.tasks.run import md as MD"
 
 
 
 
 
 
 
 
 
 
23
  ]
24
  },
25
  {
@@ -97,6 +107,13 @@
97
  "write(f'{atoms.get_chemical_formula()}.extxyz', atoms)"
98
  ]
99
  },
 
 
 
 
 
 
 
100
  {
101
  "cell_type": "code",
102
  "execution_count": 2,
@@ -119,7 +136,7 @@
119
  },
120
  {
121
  "cell_type": "code",
122
- "execution_count": 3,
123
  "metadata": {},
124
  "outputs": [
125
  {
@@ -130,17 +147,15 @@
130
  "\n",
131
  "#SBATCH -A matgen\n",
132
  "#SBATCH --mem=0\n",
133
- "#SBATCH -t 02:00:00\n",
134
- "#SBATCH -J combustion-water\n",
135
- "#SBATCH -q regular\n",
136
  "#SBATCH -N 1\n",
 
137
  "#SBATCH -C gpu\n",
138
- "#SBATCH -G 4\n",
139
- "#SBATCH --exclusive\n",
140
  "source ~/.bashrc\n",
141
  "module load python\n",
142
  "source activate /pscratch/sd/c/cyrusyc/.conda/mlip-arena\n",
143
- "/pscratch/sd/c/cyrusyc/.conda/mlip-arena/bin/python -m distributed.cli.dask_worker tcp://128.55.64.18:43951 --name dummy-name --nthreads 1 --memory-limit 59.60GiB --nanny --death-timeout 86400\n",
144
  "\n"
145
  ]
146
  },
@@ -148,14 +163,10 @@
148
  "name": "stderr",
149
  "output_type": "stream",
150
  "text": [
151
- "2024-09-27 03:54:04,812 - distributed.scheduler - ERROR - Task md-2-9b52cfa3e22647de99659385eca3d3f2-1 marked as failed because 4 workers died while trying to run it\n",
152
- "2024-09-27 03:54:04,820 - distributed.scheduler - ERROR - Task md-5-2a33088343d64b66b612e4145ffaf870-1 marked as failed because 4 workers died while trying to run it\n",
153
- "2024-09-27 03:54:04,824 - distributed.scheduler - ERROR - Task md-0-017eef8ab8744d7c958badc5d53fdab4-1 marked as failed because 4 workers died while trying to run it\n",
154
- "2024-09-27 05:55:56,468 - distributed.scheduler - ERROR - Task md-8-bcd5e0bb82854952b2c5c430d4c2e7e8-1 marked as failed because 4 workers died while trying to run it\n",
155
- "2024-09-27 05:55:56,906 - distributed.scheduler - ERROR - Task md-6-a575c0cc3b1e4fc984560ff101dbfc6c-1 marked as failed because 4 workers died while trying to run it\n",
156
- "2024-09-27 05:55:56,907 - distributed.scheduler - ERROR - Task md-9-f98b1f7c61c749c8b67cd669517a49bd-1 marked as failed because 4 workers died while trying to run it\n",
157
- "2024-09-27 05:55:56,910 - distributed.scheduler - ERROR - Task md-4-0e1acf2be8994ca7ae198d52d5e04d61-1 marked as failed because 4 workers died while trying to run it\n",
158
- "2024-09-27 05:57:02,776 - distributed.scheduler - ERROR - Task md-7-40b7b4ede41745e29d5c5fd0cc4d9e42-1 marked as failed because 4 workers died while trying to run it\n"
159
  ]
160
  }
161
  ],
@@ -164,45 +175,62 @@
164
  "gpus_per_alloc = 4\n",
165
  "ntasks = 1\n",
166
  "\n",
167
- "cluster_kwargs = dict(\n",
168
- " cores=1,\n",
169
- " memory=\"64 GB\",\n",
170
- " shebang=\"#!/bin/bash\",\n",
171
- " account=\"matgen\",\n",
172
- " walltime=\"02:00:00\",\n",
173
- " job_mem=\"0\",\n",
174
- " job_script_prologue=[\n",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
175
  " \"source ~/.bashrc\",\n",
176
  " \"module load python\",\n",
177
  " \"source activate /pscratch/sd/c/cyrusyc/.conda/mlip-arena\",\n",
178
  " ],\n",
179
- " job_directives_skip=[\"-n\", \"--cpus-per-task\", \"-J\"],\n",
180
- " job_extra_directives=[\n",
181
- " \"-J combustion-water\",\n",
182
- " \"-q regular\",\n",
183
- " f\"-N {nodes_per_alloc}\",\n",
184
- " \"-C gpu\",\n",
185
- " f\"-G {gpus_per_alloc}\",\n",
186
- " f\"--exclusive\",\n",
187
- " # \"--time-min=00:30:00\",\n",
188
- " # \"--comment=1-00:00:00\",\n",
189
- " # \"--signal=B:USR1@60\",\n",
190
- " # \"--requeue\",\n",
191
- " # \"--open-mode=append\"\n",
192
- " ],\n",
193
- " death_timeout=86400\n",
194
- ")\n",
195
- "\n",
196
- "\n",
197
  "cluster = SLURMCluster(**cluster_kwargs)\n",
 
198
  "print(cluster.job_script())\n",
199
- "cluster.adapt(minimum_jobs=10, maximum_jobs=11)\n",
200
  "client = Client(cluster)"
201
  ]
202
  },
203
  {
204
  "cell_type": "code",
205
- "execution_count": 4,
206
  "metadata": {},
207
  "outputs": [],
208
  "source": [
@@ -236,7 +264,7 @@
236
  },
237
  {
238
  "cell_type": "code",
239
- "execution_count": 5,
240
  "metadata": {
241
  "tags": []
242
  },
@@ -244,115 +272,11 @@
244
  {
245
  "data": {
246
  "text/html": [
247
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">23:19:58.587 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | prefect.engine - Created flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'tangerine-mussel'</span> for flow<span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\"> 'combustion'</span>\n",
248
- "</pre>\n"
249
- ],
250
- "text/plain": [
251
- "23:19:58.587 | \u001b[36mINFO\u001b[0m | prefect.engine - Created flow run\u001b[35m 'tangerine-mussel'\u001b[0m for flow\u001b[1;35m 'combustion'\u001b[0m\n"
252
- ]
253
- },
254
- "metadata": {},
255
- "output_type": "display_data"
256
- },
257
- {
258
- "data": {
259
- "text/html": [
260
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">23:19:58.592 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'tangerine-mussel'</span> - View at <span style=\"color: #0000ff; text-decoration-color: #0000ff\">https://app.prefect.cloud/account/f7d40474-9362-4bfa-8950-ee6a43ec00f3/workspace/d4bb0913-5f5e-49f7-bfc5-06509088baeb/flow-runs/flow-run/ea339a90-929f-491d-bf23-e257c925ad6b</span>\n",
261
- "</pre>\n"
262
- ],
263
- "text/plain": [
264
- "23:19:58.592 | \u001b[36mINFO\u001b[0m | Flow run\u001b[35m 'tangerine-mussel'\u001b[0m - View at \u001b[94mhttps://app.prefect.cloud/account/f7d40474-9362-4bfa-8950-ee6a43ec00f3/workspace/d4bb0913-5f5e-49f7-bfc5-06509088baeb/flow-runs/flow-run/ea339a90-929f-491d-bf23-e257c925ad6b\u001b[0m\n"
265
- ]
266
- },
267
- "metadata": {},
268
- "output_type": "display_data"
269
- },
270
- {
271
- "data": {
272
- "text/html": [
273
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">23:19:58.593 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | prefect.task_runner.dask - Connecting to an existing Dask cluster at tcp://128.55.64.18:43951\n",
274
- "</pre>\n"
275
- ],
276
- "text/plain": [
277
- "23:19:58.593 | \u001b[36mINFO\u001b[0m | prefect.task_runner.dask - Connecting to an existing Dask cluster at tcp://128.55.64.18:43951\n"
278
- ]
279
- },
280
- "metadata": {},
281
- "output_type": "display_data"
282
- },
283
- {
284
- "data": {
285
- "text/html": [
286
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">23:19:58.599 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | prefect.task_runner.dask - The Dask dashboard is available at <span style=\"color: #0000ff; text-decoration-color: #0000ff\">http://128.55.64.18:8787/status</span>\n",
287
- "</pre>\n"
288
- ],
289
- "text/plain": [
290
- "23:19:58.599 | \u001b[36mINFO\u001b[0m | prefect.task_runner.dask - The Dask dashboard is available at \u001b[94mhttp://128.55.64.18:8787/status\u001b[0m\n"
291
- ]
292
- },
293
- "metadata": {},
294
- "output_type": "display_data"
295
- },
296
- {
297
- "data": {
298
- "text/html": [
299
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">23:19:59.454 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'tangerine-mussel'</span> - Created task run 'md-2' for task 'md'\n",
300
- "</pre>\n"
301
- ],
302
- "text/plain": [
303
- "23:19:59.454 | \u001b[36mINFO\u001b[0m | Flow run\u001b[35m 'tangerine-mussel'\u001b[0m - Created task run 'md-2' for task 'md'\n"
304
- ]
305
- },
306
- "metadata": {},
307
- "output_type": "display_data"
308
- },
309
- {
310
- "data": {
311
- "text/html": [
312
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">23:19:59.484 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'tangerine-mussel'</span> - Created task run 'md-6' for task 'md'\n",
313
- "</pre>\n"
314
- ],
315
- "text/plain": [
316
- "23:19:59.484 | \u001b[36mINFO\u001b[0m | Flow run\u001b[35m 'tangerine-mussel'\u001b[0m - Created task run 'md-6' for task 'md'\n"
317
- ]
318
- },
319
- "metadata": {},
320
- "output_type": "display_data"
321
- },
322
- {
323
- "data": {
324
- "text/html": [
325
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">23:19:59.488 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'tangerine-mussel'</span> - Created task run 'md-3' for task 'md'\n",
326
- "</pre>\n"
327
- ],
328
- "text/plain": [
329
- "23:19:59.488 | \u001b[36mINFO\u001b[0m | Flow run\u001b[35m 'tangerine-mussel'\u001b[0m - Created task run 'md-3' for task 'md'\n"
330
- ]
331
- },
332
- "metadata": {},
333
- "output_type": "display_data"
334
- },
335
- {
336
- "data": {
337
- "text/html": [
338
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">23:19:59.491 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'tangerine-mussel'</span> - Created task run 'md-5' for task 'md'\n",
339
- "</pre>\n"
340
- ],
341
- "text/plain": [
342
- "23:19:59.491 | \u001b[36mINFO\u001b[0m | Flow run\u001b[35m 'tangerine-mussel'\u001b[0m - Created task run 'md-5' for task 'md'\n"
343
- ]
344
- },
345
- "metadata": {},
346
- "output_type": "display_data"
347
- },
348
- {
349
- "data": {
350
- "text/html": [
351
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">23:19:59.494 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'tangerine-mussel'</span> - Created task run 'md-9' for task 'md'\n",
352
  "</pre>\n"
353
  ],
354
  "text/plain": [
355
- "23:19:59.494 | \u001b[36mINFO\u001b[0m | Flow run\u001b[35m 'tangerine-mussel'\u001b[0m - Created task run 'md-9' for task 'md'\n"
356
  ]
357
  },
358
  "metadata": {},
@@ -361,11 +285,11 @@
361
  {
362
  "data": {
363
  "text/html": [
364
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">23:19:59.497 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'tangerine-mussel'</span> - Created task run 'md-1' for task 'md'\n",
365
  "</pre>\n"
366
  ],
367
  "text/plain": [
368
- "23:19:59.497 | \u001b[36mINFO\u001b[0m | Flow run\u001b[35m 'tangerine-mussel'\u001b[0m - Created task run 'md-1' for task 'md'\n"
369
  ]
370
  },
371
  "metadata": {},
@@ -374,11 +298,11 @@
374
  {
375
  "data": {
376
  "text/html": [
377
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">23:19:59.646 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'tangerine-mussel'</span> - Created task run 'md-0' for task 'md'\n",
378
  "</pre>\n"
379
  ],
380
  "text/plain": [
381
- "23:19:59.646 | \u001b[36mINFO\u001b[0m | Flow run\u001b[35m 'tangerine-mussel'\u001b[0m - Created task run 'md-0' for task 'md'\n"
382
  ]
383
  },
384
  "metadata": {},
@@ -387,11 +311,11 @@
387
  {
388
  "data": {
389
  "text/html": [
390
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">23:19:59.938 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'tangerine-mussel'</span> - Created task run 'md-7' for task 'md'\n",
391
  "</pre>\n"
392
  ],
393
  "text/plain": [
394
- "23:19:59.938 | \u001b[36mINFO\u001b[0m | Flow run\u001b[35m 'tangerine-mussel'\u001b[0m - Created task run 'md-7' for task 'md'\n"
395
  ]
396
  },
397
  "metadata": {},
@@ -400,163 +324,20 @@
400
  {
401
  "data": {
402
  "text/html": [
403
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">23:20:00.111 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'tangerine-mussel'</span> - Submitted task run 'md-5' for execution.\n",
404
- "</pre>\n"
405
- ],
406
- "text/plain": [
407
- "23:20:00.111 | \u001b[36mINFO\u001b[0m | Flow run\u001b[35m 'tangerine-mussel'\u001b[0m - Submitted task run 'md-5' for execution.\n"
408
- ]
409
- },
410
- "metadata": {},
411
- "output_type": "display_data"
412
- },
413
- {
414
- "data": {
415
- "text/html": [
416
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">23:20:00.119 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'tangerine-mussel'</span> - Created task run 'md-8' for task 'md'\n",
417
- "</pre>\n"
418
- ],
419
- "text/plain": [
420
- "23:20:00.119 | \u001b[36mINFO\u001b[0m | Flow run\u001b[35m 'tangerine-mussel'\u001b[0m - Created task run 'md-8' for task 'md'\n"
421
- ]
422
- },
423
- "metadata": {},
424
- "output_type": "display_data"
425
- },
426
- {
427
- "data": {
428
- "text/html": [
429
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">23:20:00.125 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'tangerine-mussel'</span> - Submitted task run 'md-8' for execution.\n",
430
- "</pre>\n"
431
- ],
432
- "text/plain": [
433
- "23:20:00.125 | \u001b[36mINFO\u001b[0m | Flow run\u001b[35m 'tangerine-mussel'\u001b[0m - Submitted task run 'md-8' for execution.\n"
434
- ]
435
- },
436
- "metadata": {},
437
- "output_type": "display_data"
438
- },
439
- {
440
- "data": {
441
- "text/html": [
442
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">23:20:00.131 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'tangerine-mussel'</span> - Created task run 'md-4' for task 'md'\n",
443
- "</pre>\n"
444
- ],
445
- "text/plain": [
446
- "23:20:00.131 | \u001b[36mINFO\u001b[0m | Flow run\u001b[35m 'tangerine-mussel'\u001b[0m - Created task run 'md-4' for task 'md'\n"
447
- ]
448
- },
449
- "metadata": {},
450
- "output_type": "display_data"
451
- },
452
- {
453
- "data": {
454
- "text/html": [
455
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">23:20:00.137 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'tangerine-mussel'</span> - Submitted task run 'md-4' for execution.\n",
456
- "</pre>\n"
457
- ],
458
- "text/plain": [
459
- "23:20:00.137 | \u001b[36mINFO\u001b[0m | Flow run\u001b[35m 'tangerine-mussel'\u001b[0m - Submitted task run 'md-4' for execution.\n"
460
- ]
461
- },
462
- "metadata": {},
463
- "output_type": "display_data"
464
- },
465
- {
466
- "data": {
467
- "text/html": [
468
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">23:20:00.154 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'tangerine-mussel'</span> - Submitted task run 'md-6' for execution.\n",
469
- "</pre>\n"
470
- ],
471
- "text/plain": [
472
- "23:20:00.154 | \u001b[36mINFO\u001b[0m | Flow run\u001b[35m 'tangerine-mussel'\u001b[0m - Submitted task run 'md-6' for execution.\n"
473
- ]
474
- },
475
- "metadata": {},
476
- "output_type": "display_data"
477
- },
478
- {
479
- "data": {
480
- "text/html": [
481
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">23:20:00.205 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'tangerine-mussel'</span> - Submitted task run 'md-0' for execution.\n",
482
- "</pre>\n"
483
- ],
484
- "text/plain": [
485
- "23:20:00.205 | \u001b[36mINFO\u001b[0m | Flow run\u001b[35m 'tangerine-mussel'\u001b[0m - Submitted task run 'md-0' for execution.\n"
486
- ]
487
- },
488
- "metadata": {},
489
- "output_type": "display_data"
490
- },
491
- {
492
- "data": {
493
- "text/html": [
494
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">23:20:00.212 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'tangerine-mussel'</span> - Submitted task run 'md-1' for execution.\n",
495
- "</pre>\n"
496
- ],
497
- "text/plain": [
498
- "23:20:00.212 | \u001b[36mINFO\u001b[0m | Flow run\u001b[35m 'tangerine-mussel'\u001b[0m - Submitted task run 'md-1' for execution.\n"
499
- ]
500
- },
501
- "metadata": {},
502
- "output_type": "display_data"
503
- },
504
- {
505
- "data": {
506
- "text/html": [
507
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">23:20:00.283 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'tangerine-mussel'</span> - Submitted task run 'md-2' for execution.\n",
508
- "</pre>\n"
509
- ],
510
- "text/plain": [
511
- "23:20:00.283 | \u001b[36mINFO\u001b[0m | Flow run\u001b[35m 'tangerine-mussel'\u001b[0m - Submitted task run 'md-2' for execution.\n"
512
- ]
513
- },
514
- "metadata": {},
515
- "output_type": "display_data"
516
- },
517
- {
518
- "data": {
519
- "text/html": [
520
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">23:20:00.291 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'tangerine-mussel'</span> - Submitted task run 'md-9' for execution.\n",
521
- "</pre>\n"
522
- ],
523
- "text/plain": [
524
- "23:20:00.291 | \u001b[36mINFO\u001b[0m | Flow run\u001b[35m 'tangerine-mussel'\u001b[0m - Submitted task run 'md-9' for execution.\n"
525
- ]
526
- },
527
- "metadata": {},
528
- "output_type": "display_data"
529
- },
530
- {
531
- "data": {
532
- "text/html": [
533
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">23:20:00.400 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'tangerine-mussel'</span> - Submitted task run 'md-3' for execution.\n",
534
- "</pre>\n"
535
- ],
536
- "text/plain": [
537
- "23:20:00.400 | \u001b[36mINFO\u001b[0m | Flow run\u001b[35m 'tangerine-mussel'\u001b[0m - Submitted task run 'md-3' for execution.\n"
538
- ]
539
- },
540
- "metadata": {},
541
- "output_type": "display_data"
542
- },
543
- {
544
- "data": {
545
- "text/html": [
546
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">23:20:00.554 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'tangerine-mussel'</span> - Submitted task run 'md-7' for execution.\n",
547
- "</pre>\n"
548
- ],
549
- "text/plain": [
550
- "23:20:00.554 | \u001b[36mINFO\u001b[0m | Flow run\u001b[35m 'tangerine-mussel'\u001b[0m - Submitted task run 'md-7' for execution.\n"
551
- ]
552
- },
553
- "metadata": {},
554
- "output_type": "display_data"
555
- },
556
- {
557
- "data": {
558
- "text/html": [
559
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">03:54:04.823 | <span style=\"color: #d70000; text-decoration-color: #d70000\">ERROR</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'tangerine-mussel'</span> - Encountered exception during execution:\n",
560
  "Traceback (most recent call last):\n",
561
  " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/engine.py\", line 867, in orchestrate_flow_run\n",
562
  " result = await flow_call.aresult()\n",
@@ -567,41 +348,33 @@
567
  " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py\", line 352, in _run_sync\n",
568
  " result = self.fn(*self.args, **self.kwargs)\n",
569
  " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
570
- " File \"/tmp/ipykernel_2266116/1920202683.py\", line 26, in combustion\n",
571
- " return [future.result() for future in futures]\n",
572
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
573
- " File \"/tmp/ipykernel_2266116/1920202683.py\", line 26, in &lt;listcomp&gt;\n",
574
- " return [future.result() for future in futures]\n",
575
- " ^^^^^^^^^^^^^^^\n",
576
- " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/futures.py\", line 228, in result\n",
577
- " return from_sync.call_soon_in_loop_thread(result).result()\n",
578
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
579
- " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py\", line 318, in result\n",
580
- " return self.future.result(timeout=timeout)\n",
581
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
582
- " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py\", line 188, in result\n",
583
- " return self.__get_result()\n",
584
- " ^^^^^^^^^^^^^^^^^^^\n",
585
- " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/concurrent/futures/_base.py\", line 401, in __get_result\n",
586
- " raise self._exception\n",
587
- " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py\", line 389, in _run_async\n",
588
- " result = await coro\n",
589
  " ^^^^^^^^^^\n",
590
- " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/futures.py\", line 237, in _result\n",
591
- " return await final_state.result(raise_on_failure=raise_on_failure, fetch=True)\n",
592
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
593
- " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/states.py\", line 91, in _get_state_result\n",
594
- " raise await get_state_exception(state)\n",
595
- " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect_dask/task_runners.py\", line 311, in wait\n",
596
- " return await future.result(timeout=timeout)\n",
597
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
598
- " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/distributed/client.py\", line 336, in _result\n",
599
- " raise exc.with_traceback(tb)\n",
600
- "distributed.scheduler.KilledWorker: Attempted to run task 'md-2-9b52cfa3e22647de99659385eca3d3f2-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.32:43067. 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",
601
  "</pre>\n"
602
  ],
603
  "text/plain": [
604
- "03:54:04.823 | \u001b[38;5;160mERROR\u001b[0m | Flow run\u001b[35m 'tangerine-mussel'\u001b[0m - Encountered exception during execution:\n",
 
 
 
 
 
 
 
 
 
 
 
 
 
605
  "Traceback (most recent call last):\n",
606
  " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/engine.py\", line 867, in orchestrate_flow_run\n",
607
  " result = await flow_call.aresult()\n",
@@ -612,89 +385,16 @@
612
  " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py\", line 352, in _run_sync\n",
613
  " result = self.fn(*self.args, **self.kwargs)\n",
614
  " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
615
- " File \"/tmp/ipykernel_2266116/1920202683.py\", line 26, in combustion\n",
616
- " return [future.result() for future in futures]\n",
617
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
618
- " File \"/tmp/ipykernel_2266116/1920202683.py\", line 26, in <listcomp>\n",
619
- " return [future.result() for future in futures]\n",
620
- " ^^^^^^^^^^^^^^^\n",
621
- " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/futures.py\", line 228, in result\n",
622
- " return from_sync.call_soon_in_loop_thread(result).result()\n",
623
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
624
- " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py\", line 318, in result\n",
625
- " return self.future.result(timeout=timeout)\n",
626
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
627
- " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py\", line 188, in result\n",
628
- " return self.__get_result()\n",
629
- " ^^^^^^^^^^^^^^^^^^^\n",
630
- " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/concurrent/futures/_base.py\", line 401, in __get_result\n",
631
- " raise self._exception\n",
632
- " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py\", line 389, in _run_async\n",
633
- " result = await coro\n",
634
  " ^^^^^^^^^^\n",
635
- " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/futures.py\", line 237, in _result\n",
636
- " return await final_state.result(raise_on_failure=raise_on_failure, fetch=True)\n",
637
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
638
- " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/states.py\", line 91, in _get_state_result\n",
639
- " raise await get_state_exception(state)\n",
640
- " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect_dask/task_runners.py\", line 311, in wait\n",
641
- " return await future.result(timeout=timeout)\n",
642
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
643
- " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/distributed/client.py\", line 336, in _result\n",
644
- " raise exc.with_traceback(tb)\n",
645
- "distributed.scheduler.KilledWorker: Attempted to run task 'md-2-9b52cfa3e22647de99659385eca3d3f2-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.32:43067. 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"
646
- ]
647
- },
648
- "metadata": {},
649
- "output_type": "display_data"
650
- },
651
- {
652
- "data": {
653
- "text/html": [
654
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">05:57:03.100 | <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-9b52cfa3e22647de99659385eca3d3f2-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.32:43067. 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",
655
- "</pre>\n"
656
- ],
657
- "text/plain": [
658
- "05:57:03.100 | \u001b[36mINFO\u001b[0m | Task run 'md-2' - Crash detected! Execution was interrupted by an unexpected exception: KilledWorker: Attempted to run task 'md-2-9b52cfa3e22647de99659385eca3d3f2-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.32:43067. 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"
659
- ]
660
- },
661
- "metadata": {},
662
- "output_type": "display_data"
663
- },
664
- {
665
- "data": {
666
- "text/html": [
667
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">05:57:03.472 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Task run 'md-5' - Crash detected! Execution was interrupted by an unexpected exception: KilledWorker: Attempted to run task 'md-5-2a33088343d64b66b612e4145ffaf870-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.32:43067. 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",
668
- "</pre>\n"
669
- ],
670
- "text/plain": [
671
- "05:57:03.472 | \u001b[36mINFO\u001b[0m | Task run 'md-5' - Crash detected! Execution was interrupted by an unexpected exception: KilledWorker: Attempted to run task 'md-5-2a33088343d64b66b612e4145ffaf870-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.32:43067. 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"
672
- ]
673
- },
674
- "metadata": {},
675
- "output_type": "display_data"
676
- },
677
- {
678
- "data": {
679
- "text/html": [
680
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">05:57:03.991 | <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-a575c0cc3b1e4fc984560ff101dbfc6c-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.69.100:45983. 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",
681
- "</pre>\n"
682
- ],
683
- "text/plain": [
684
- "05:57:03.991 | \u001b[36mINFO\u001b[0m | Task run 'md-6' - Crash detected! Execution was interrupted by an unexpected exception: KilledWorker: Attempted to run task 'md-6-a575c0cc3b1e4fc984560ff101dbfc6c-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.69.100:45983. 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"
685
- ]
686
- },
687
- "metadata": {},
688
- "output_type": "display_data"
689
- },
690
- {
691
- "data": {
692
- "text/html": [
693
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">05:57:04.333 | <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-40b7b4ede41745e29d5c5fd0cc4d9e42-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.6:39739. 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",
694
- "</pre>\n"
695
- ],
696
- "text/plain": [
697
- "05:57:04.333 | \u001b[36mINFO\u001b[0m | Task run 'md-7' - Crash detected! Execution was interrupted by an unexpected exception: KilledWorker: Attempted to run task 'md-7-40b7b4ede41745e29d5c5fd0cc4d9e42-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.6:39739. 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"
698
  ]
699
  },
700
  "metadata": {},
@@ -703,50 +403,30 @@
703
  {
704
  "data": {
705
  "text/html": [
706
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">05:57:04.976 | <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-bcd5e0bb82854952b2c5c430d4c2e7e8-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.238:37065. 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",
707
  "</pre>\n"
708
  ],
709
  "text/plain": [
710
- "05:57:04.976 | \u001b[36mINFO\u001b[0m | Task run 'md-8' - Crash detected! Execution was interrupted by an unexpected exception: KilledWorker: Attempted to run task 'md-8-bcd5e0bb82854952b2c5c430d4c2e7e8-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.238:37065. 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"
711
  ]
712
  },
713
  "metadata": {},
714
  "output_type": "display_data"
715
  },
716
  {
717
- "data": {
718
- "text/html": [
719
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">05:57:05.435 | <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-f98b1f7c61c749c8b67cd669517a49bd-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.65.221:34843. 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",
720
- "</pre>\n"
721
- ],
722
- "text/plain": [
723
- "05:57:05.435 | \u001b[36mINFO\u001b[0m | Task run 'md-9' - Crash detected! Execution was interrupted by an unexpected exception: KilledWorker: Attempted to run task 'md-9-f98b1f7c61c749c8b67cd669517a49bd-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.65.221:34843. 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"
724
- ]
725
- },
726
- "metadata": {},
727
- "output_type": "display_data"
728
- },
729
- {
730
- "data": {
731
- "text/html": [
732
- "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">05:57:05.840 | <span style=\"color: #d70000; text-decoration-color: #d70000\">ERROR</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'tangerine-mussel'</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-9b52cfa3e22647de99659385eca3d3f2-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.32:43067. 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",
733
- "</pre>\n"
734
- ],
735
- "text/plain": [
736
- "05:57:05.840 | \u001b[38;5;160mERROR\u001b[0m | Flow run\u001b[35m 'tangerine-mussel'\u001b[0m - Finished in state \u001b[38;5;160mFailed\u001b[0m(\"Flow run encountered an exception. KilledWorker: Attempted to run task 'md-2-9b52cfa3e22647de99659385eca3d3f2-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.32:43067. 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"
737
- ]
738
- },
739
- "metadata": {},
740
- "output_type": "display_data"
741
- },
742
- {
743
- "ename": "KilledWorker",
744
- "evalue": "Attempted to run task 'md-2-9b52cfa3e22647de99659385eca3d3f2-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.32:43067. 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.",
745
  "output_type": "error",
746
  "traceback": [
747
  "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
748
- "\u001b[0;31mKilledWorker\u001b[0m Traceback (most recent call last)",
749
- "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",
 
 
 
 
 
 
750
  "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",
751
  "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",
752
  "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",
@@ -760,18 +440,10 @@
760
  "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",
761
  "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",
762
  "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",
763
- "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",
764
- "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",
765
- "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",
766
- "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",
767
- "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",
768
- "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",
769
- "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",
770
- "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",
771
- "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",
772
- "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",
773
- "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",
774
- "\u001b[0;31mKilledWorker\u001b[0m: Attempted to run task 'md-2-9b52cfa3e22647de99659385eca3d3f2-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.32:43067. 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."
775
  ]
776
  }
777
  ],
 
19
  "from pymatgen.io.packmol import PackmolBoxGen\n",
20
  "\n",
21
  "from mlip_arena.models.utils import REGISTRY, MLIPEnum\n",
22
+ "from mlip_arena.tasks.md import run as MD"
23
+ ]
24
+ },
25
+ {
26
+ "cell_type": "markdown",
27
+ "metadata": {
28
+ "jp-MarkdownHeadingCollapsed": true,
29
+ "tags": []
30
+ },
31
+ "source": [
32
+ "## Create initial configuration"
33
  ]
34
  },
35
  {
 
107
  "write(f'{atoms.get_chemical_formula()}.extxyz', atoms)"
108
  ]
109
  },
110
+ {
111
+ "cell_type": "markdown",
112
+ "metadata": {},
113
+ "source": [
114
+ "## Run workflow"
115
+ ]
116
+ },
117
  {
118
  "cell_type": "code",
119
  "execution_count": 2,
 
136
  },
137
  {
138
  "cell_type": "code",
139
+ "execution_count": 5,
140
  "metadata": {},
141
  "outputs": [
142
  {
 
147
  "\n",
148
  "#SBATCH -A matgen\n",
149
  "#SBATCH --mem=0\n",
150
+ "#SBATCH -t 00:30:00\n",
 
 
151
  "#SBATCH -N 1\n",
152
+ "#SBATCH -q debug\n",
153
  "#SBATCH -C gpu\n",
154
+ "#SBATCH -J combustion-water\n",
 
155
  "source ~/.bashrc\n",
156
  "module load python\n",
157
  "source activate /pscratch/sd/c/cyrusyc/.conda/mlip-arena\n",
158
+ "/pscratch/sd/c/cyrusyc/.conda/mlip-arena/bin/python -m distributed.cli.dask_worker tcp://128.55.64.19:34913 --name dummy-name --nthreads 1 --memory-limit 59.60GiB --nanny --death-timeout 60\n",
159
  "\n"
160
  ]
161
  },
 
163
  "name": "stderr",
164
  "output_type": "stream",
165
  "text": [
166
+ "/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/distributed/node.py:182: UserWarning: Port 8787 is already in use.\n",
167
+ "Perhaps you already have a cluster running?\n",
168
+ "Hosting the HTTP server on port 38239 instead\n",
169
+ " warnings.warn(\n"
 
 
 
 
170
  ]
171
  }
172
  ],
 
175
  "gpus_per_alloc = 4\n",
176
  "ntasks = 1\n",
177
  "\n",
178
+ "# cluster_kwargs = dict(\n",
179
+ "# cores=1,\n",
180
+ "# memory=\"64 GB\",\n",
181
+ "# shebang=\"#!/bin/bash\",\n",
182
+ "# account=\"matgen\",\n",
183
+ "# walltime=\"02:00:00\",\n",
184
+ "# job_mem=\"0\",\n",
185
+ "# job_script_prologue=[\n",
186
+ "# \"source ~/.bashrc\",\n",
187
+ "# \"module load python\",\n",
188
+ "# \"source activate /pscratch/sd/c/cyrusyc/.conda/mlip-arena\",\n",
189
+ "# ],\n",
190
+ "# job_directives_skip=[\"-n\", \"--cpus-per-task\", \"-J\"],\n",
191
+ "# job_extra_directives=[\n",
192
+ "# \"-J combustion-water\",\n",
193
+ "# \"-q regular\",\n",
194
+ "# f\"-N {nodes_per_alloc}\",\n",
195
+ "# \"-C gpu\",\n",
196
+ "# f\"-G {gpus_per_alloc}\",\n",
197
+ "# f\"--exclusive\",\n",
198
+ "# # \"--time-min=00:30:00\",\n",
199
+ "# # \"--comment=1-00:00:00\",\n",
200
+ "# # \"--signal=B:USR1@60\",\n",
201
+ "# # \"--requeue\",\n",
202
+ "# # \"--open-mode=append\"\n",
203
+ "# ],\n",
204
+ "# death_timeout=86400\n",
205
+ "# )\n",
206
+ "\n",
207
+ "# cluster = SLURMCluster(**cluster_kwargs)\n",
208
+ "\n",
209
+ "cluster_kwargs = {\n",
210
+ " \"cores\": 1,\n",
211
+ " \"memory\": \"64 GB\",\n",
212
+ " \"shebang\": \"#!/bin/bash\",\n",
213
+ " \"account\": \"matgen\",\n",
214
+ " \"walltime\": \"00:30:00\",\n",
215
+ " \"job_mem\": \"0\",\n",
216
+ " \"job_script_prologue\": [\n",
217
  " \"source ~/.bashrc\",\n",
218
  " \"module load python\",\n",
219
  " \"source activate /pscratch/sd/c/cyrusyc/.conda/mlip-arena\",\n",
220
  " ],\n",
221
+ " \"job_directives_skip\": [\"-n\", \"--cpus-per-task\", \"-J\"],\n",
222
+ " \"job_extra_directives\": [f\"-N {nodes_per_alloc}\", \"-q debug\", \"-C gpu\", \"-J combustion-water\"],\n",
223
+ "}\n",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
224
  "cluster = SLURMCluster(**cluster_kwargs)\n",
225
+ "\n",
226
  "print(cluster.job_script())\n",
227
+ "cluster.adapt(minimum_jobs=2, maximum_jobs=2)\n",
228
  "client = Client(cluster)"
229
  ]
230
  },
231
  {
232
  "cell_type": "code",
233
+ "execution_count": 6,
234
  "metadata": {},
235
  "outputs": [],
236
  "source": [
 
264
  },
265
  {
266
  "cell_type": "code",
267
+ "execution_count": 7,
268
  "metadata": {
269
  "tags": []
270
  },
 
272
  {
273
  "data": {
274
  "text/html": [
275
+ "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">14:50:51.449 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | prefect.engine - Created flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'liberal-beetle'</span> for flow<span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\"> 'combustion'</span>\n",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
276
  "</pre>\n"
277
  ],
278
  "text/plain": [
279
+ "14:50:51.449 | \u001b[36mINFO\u001b[0m | prefect.engine - Created flow run\u001b[35m 'liberal-beetle'\u001b[0m for flow\u001b[1;35m 'combustion'\u001b[0m\n"
280
  ]
281
  },
282
  "metadata": {},
 
285
  {
286
  "data": {
287
  "text/html": [
288
+ "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">14:50:51.453 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'liberal-beetle'</span> - View at <span style=\"color: #0000ff; text-decoration-color: #0000ff\">https://app.prefect.cloud/account/f7d40474-9362-4bfa-8950-ee6a43ec00f3/workspace/d4bb0913-5f5e-49f7-bfc5-06509088baeb/flow-runs/flow-run/4803afc0-0472-4cf3-8d76-794fc218e2c3</span>\n",
289
  "</pre>\n"
290
  ],
291
  "text/plain": [
292
+ "14:50:51.453 | \u001b[36mINFO\u001b[0m | Flow run\u001b[35m 'liberal-beetle'\u001b[0m - View at \u001b[94mhttps://app.prefect.cloud/account/f7d40474-9362-4bfa-8950-ee6a43ec00f3/workspace/d4bb0913-5f5e-49f7-bfc5-06509088baeb/flow-runs/flow-run/4803afc0-0472-4cf3-8d76-794fc218e2c3\u001b[0m\n"
293
  ]
294
  },
295
  "metadata": {},
 
298
  {
299
  "data": {
300
  "text/html": [
301
+ "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">14:50:51.454 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | prefect.task_runner.dask - Connecting to an existing Dask cluster at tcp://128.55.64.19:34913\n",
302
  "</pre>\n"
303
  ],
304
  "text/plain": [
305
+ "14:50:51.454 | \u001b[36mINFO\u001b[0m | prefect.task_runner.dask - Connecting to an existing Dask cluster at tcp://128.55.64.19:34913\n"
306
  ]
307
  },
308
  "metadata": {},
 
311
  {
312
  "data": {
313
  "text/html": [
314
+ "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">14:50:51.460 | <span style=\"color: #008080; text-decoration-color: #008080\">INFO</span> | prefect.task_runner.dask - The Dask dashboard is available at <span style=\"color: #0000ff; text-decoration-color: #0000ff\">http://128.55.64.19:38239/status</span>\n",
315
  "</pre>\n"
316
  ],
317
  "text/plain": [
318
+ "14:50:51.460 | \u001b[36mINFO\u001b[0m | prefect.task_runner.dask - The Dask dashboard is available at \u001b[94mhttp://128.55.64.19:38239/status\u001b[0m\n"
319
  ]
320
  },
321
  "metadata": {},
 
324
  {
325
  "data": {
326
  "text/html": [
327
+ "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">14:50:51.876 | <span style=\"color: #d70000; text-decoration-color: #d70000\">ERROR</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'liberal-beetle'</span> - Encountered exception during execution:\n",
328
+ "Traceback (most recent call last):\n",
329
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/utilities/callables.py\", line 50, in get_call_parameters\n",
330
+ " bound_signature = inspect.signature(fn).bind(*call_args, **call_kwargs)\n",
331
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
332
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/inspect.py\", line 3212, in bind\n",
333
+ " return self._bind(args, kwargs)\n",
334
+ " ^^^^^^^^^^^^^^^^^^^^^^^^\n",
335
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/inspect.py\", line 3201, in _bind\n",
336
+ " raise TypeError(\n",
337
+ "TypeError: got an unexpected keyword argument 'mb_velocity_seed'\n",
338
+ "\n",
339
+ "During handling of the above exception, another exception occurred:\n",
340
+ "\n",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
341
  "Traceback (most recent call last):\n",
342
  " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/engine.py\", line 867, in orchestrate_flow_run\n",
343
  " result = await flow_call.aresult()\n",
 
348
  " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py\", line 352, in _run_sync\n",
349
  " result = self.fn(*self.args, **self.kwargs)\n",
350
  " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
351
+ " File \"/tmp/ipykernel_997512/1920202683.py\", line 6, in combustion\n",
352
+ " future = MD.submit(\n",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
353
  " ^^^^^^^^^^\n",
354
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/tasks.py\", line 811, in submit\n",
355
+ " parameters = get_call_parameters(self.fn, args, kwargs)\n",
356
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
357
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/utilities/callables.py\", line 52, in get_call_parameters\n",
358
+ " raise ParameterBindError.from_bind_failure(fn, exc, call_args, call_kwargs)\n",
359
+ "prefect.exceptions.ParameterBindError: Error binding parameters for function 'run': got an unexpected keyword argument 'mb_velocity_seed'.\n",
360
+ "Function 'run' has signature 'atoms: 'Atoms', calculator_name: 'str | MLIPEnum', calculator_kwargs: 'dict | None', dispersion: 'str | None' = None, dispersion_kwargs: 'dict | None' = None, device: 'str | None' = None, ensemble: \"Literal['nve', 'nvt', 'npt']\" = 'nvt', dynamics: 'str | MolecularDynamics' = 'langevin', time_step: 'float | None' = None, total_time: 'float' = 1000, temperature: 'float | Sequence | np.ndarray | None' = 300.0, pressure: 'float | Sequence | np.ndarray | None' = None, ase_md_kwargs: 'dict | None' = None, md_velocity_seed: 'int | None' = None, zero_linear_momentum: 'bool' = True, zero_angular_momentum: 'bool' = True, traj_file: 'str | Path | None' = None, traj_interval: 'int' = 1, restart: 'bool' = True' but received args: () and kwargs: ['atoms', 'calculator_name', 'calculator_kwargs', 'ensemble', 'dynamics', 'time_step', 'ase_md_kwargs', 'total_time', 'temperature', 'pressure', 'mb_velocity_seed', 'traj_file', 'traj_interval', 'restart'].\n",
 
 
 
 
361
  "</pre>\n"
362
  ],
363
  "text/plain": [
364
+ "14:50:51.876 | \u001b[38;5;160mERROR\u001b[0m | Flow run\u001b[35m 'liberal-beetle'\u001b[0m - Encountered exception during execution:\n",
365
+ "Traceback (most recent call last):\n",
366
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/utilities/callables.py\", line 50, in get_call_parameters\n",
367
+ " bound_signature = inspect.signature(fn).bind(*call_args, **call_kwargs)\n",
368
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
369
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/inspect.py\", line 3212, in bind\n",
370
+ " return self._bind(args, kwargs)\n",
371
+ " ^^^^^^^^^^^^^^^^^^^^^^^^\n",
372
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/inspect.py\", line 3201, in _bind\n",
373
+ " raise TypeError(\n",
374
+ "TypeError: got an unexpected keyword argument 'mb_velocity_seed'\n",
375
+ "\n",
376
+ "During handling of the above exception, another exception occurred:\n",
377
+ "\n",
378
  "Traceback (most recent call last):\n",
379
  " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/engine.py\", line 867, in orchestrate_flow_run\n",
380
  " result = await flow_call.aresult()\n",
 
385
  " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/_internal/concurrency/calls.py\", line 352, in _run_sync\n",
386
  " result = self.fn(*self.args, **self.kwargs)\n",
387
  " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
388
+ " File \"/tmp/ipykernel_997512/1920202683.py\", line 6, in combustion\n",
389
+ " future = MD.submit(\n",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
390
  " ^^^^^^^^^^\n",
391
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/tasks.py\", line 811, in submit\n",
392
+ " parameters = get_call_parameters(self.fn, args, kwargs)\n",
393
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
394
+ " File \"/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/utilities/callables.py\", line 52, in get_call_parameters\n",
395
+ " raise ParameterBindError.from_bind_failure(fn, exc, call_args, call_kwargs)\n",
396
+ "prefect.exceptions.ParameterBindError: Error binding parameters for function 'run': got an unexpected keyword argument 'mb_velocity_seed'.\n",
397
+ "Function 'run' has signature 'atoms: 'Atoms', calculator_name: 'str | MLIPEnum', calculator_kwargs: 'dict | None', dispersion: 'str | None' = None, dispersion_kwargs: 'dict | None' = None, device: 'str | None' = None, ensemble: \"Literal['nve', 'nvt', 'npt']\" = 'nvt', dynamics: 'str | MolecularDynamics' = 'langevin', time_step: 'float | None' = None, total_time: 'float' = 1000, temperature: 'float | Sequence | np.ndarray | None' = 300.0, pressure: 'float | Sequence | np.ndarray | None' = None, ase_md_kwargs: 'dict | None' = None, md_velocity_seed: 'int | None' = None, zero_linear_momentum: 'bool' = True, zero_angular_momentum: 'bool' = True, traj_file: 'str | Path | None' = None, traj_interval: 'int' = 1, restart: 'bool' = True' but received args: () and kwargs: ['atoms', 'calculator_name', 'calculator_kwargs', 'ensemble', 'dynamics', 'time_step', 'ase_md_kwargs', 'total_time', 'temperature', 'pressure', 'mb_velocity_seed', 'traj_file', 'traj_interval', 'restart'].\n"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
398
  ]
399
  },
400
  "metadata": {},
 
403
  {
404
  "data": {
405
  "text/html": [
406
+ "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">14:50:52.106 | <span style=\"color: #d70000; text-decoration-color: #d70000\">ERROR</span> | Flow run<span style=\"color: #800080; text-decoration-color: #800080\"> 'liberal-beetle'</span> - Finished in state <span style=\"color: #d70000; text-decoration-color: #d70000\">Failed</span>('Flow run encountered an exception. ParameterBindError: Error binding parameters for function \\'run\\': got an unexpected keyword argument \\'mb_velocity_seed\\'.\\nFunction \\'run\\' has signature \\'atoms: \\'Atoms\\', calculator_name: \\'str | MLIPEnum\\', calculator_kwargs: \\'dict | None\\', dispersion: \\'str | None\\' = None, dispersion_kwargs: \\'dict | None\\' = None, device: \\'str | None\\' = None, ensemble: \"Literal[\\'nve\\', \\'nvt\\', \\'npt\\']\" = \\'nvt\\', dynamics: \\'str | MolecularDynamics\\' = \\'langevin\\', time_step: \\'float | None\\' = None, total_time: \\'float\\' = 1000, temperature: \\'float | Sequence | np.ndarray | None\\' = 300.0, pressure: \\'float | Sequence | np.ndarray | None\\' = None, ase_md_kwargs: \\'dict | None\\' = None, md_velocity_seed: \\'int | None\\' = None, zero_linear_momentum: \\'bool\\' = True, zero_angular_momentum: \\'bool\\' = True, traj_file: \\'str | Path | None\\' = None, traj_interval: \\'int\\' = 1, restart: \\'bool\\' = True\\' but received args: () and kwargs: [\\'atoms\\', \\'calculator_name\\', \\'calculator_kwargs\\', \\'ensemble\\', \\'dynamics\\', \\'time_step\\', \\'ase_md_kwargs\\', \\'total_time\\', \\'temperature\\', \\'pressure\\', \\'mb_velocity_seed\\', \\'traj_file\\', \\'traj_interval\\', \\'restart\\'].')\n",
407
  "</pre>\n"
408
  ],
409
  "text/plain": [
410
+ "14:50:52.106 | \u001b[38;5;160mERROR\u001b[0m | Flow run\u001b[35m 'liberal-beetle'\u001b[0m - Finished in state \u001b[38;5;160mFailed\u001b[0m('Flow run encountered an exception. ParameterBindError: Error binding parameters for function \\'run\\': got an unexpected keyword argument \\'mb_velocity_seed\\'.\\nFunction \\'run\\' has signature \\'atoms: \\'Atoms\\', calculator_name: \\'str | MLIPEnum\\', calculator_kwargs: \\'dict | None\\', dispersion: \\'str | None\\' = None, dispersion_kwargs: \\'dict | None\\' = None, device: \\'str | None\\' = None, ensemble: \"Literal[\\'nve\\', \\'nvt\\', \\'npt\\']\" = \\'nvt\\', dynamics: \\'str | MolecularDynamics\\' = \\'langevin\\', time_step: \\'float | None\\' = None, total_time: \\'float\\' = 1000, temperature: \\'float | Sequence | np.ndarray | None\\' = 300.0, pressure: \\'float | Sequence | np.ndarray | None\\' = None, ase_md_kwargs: \\'dict | None\\' = None, md_velocity_seed: \\'int | None\\' = None, zero_linear_momentum: \\'bool\\' = True, zero_angular_momentum: \\'bool\\' = True, traj_file: \\'str | Path | None\\' = None, traj_interval: \\'int\\' = 1, restart: \\'bool\\' = True\\' but received args: () and kwargs: [\\'atoms\\', \\'calculator_name\\', \\'calculator_kwargs\\', \\'ensemble\\', \\'dynamics\\', \\'time_step\\', \\'ase_md_kwargs\\', \\'total_time\\', \\'temperature\\', \\'pressure\\', \\'mb_velocity_seed\\', \\'traj_file\\', \\'traj_interval\\', \\'restart\\'].')\n"
411
  ]
412
  },
413
  "metadata": {},
414
  "output_type": "display_data"
415
  },
416
  {
417
+ "ename": "ParameterBindError",
418
+ "evalue": "Error binding parameters for function 'run': got an unexpected keyword argument 'mb_velocity_seed'.\nFunction 'run' has signature 'atoms: 'Atoms', calculator_name: 'str | MLIPEnum', calculator_kwargs: 'dict | None', dispersion: 'str | None' = None, dispersion_kwargs: 'dict | None' = None, device: 'str | None' = None, ensemble: \"Literal['nve', 'nvt', 'npt']\" = 'nvt', dynamics: 'str | MolecularDynamics' = 'langevin', time_step: 'float | None' = None, total_time: 'float' = 1000, temperature: 'float | Sequence | np.ndarray | None' = 300.0, pressure: 'float | Sequence | np.ndarray | None' = None, ase_md_kwargs: 'dict | None' = None, md_velocity_seed: 'int | None' = None, zero_linear_momentum: 'bool' = True, zero_angular_momentum: 'bool' = True, traj_file: 'str | Path | None' = None, traj_interval: 'int' = 1, restart: 'bool' = True' but received args: () and kwargs: ['atoms', 'calculator_name', 'calculator_kwargs', 'ensemble', 'dynamics', 'time_step', 'ase_md_kwargs', 'total_time', 'temperature', 'pressure', 'mb_velocity_seed', 'traj_file', 'traj_interval', 'restart'].",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
419
  "output_type": "error",
420
  "traceback": [
421
  "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
422
+ "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
423
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/utilities/callables.py:50\u001b[0m, in \u001b[0;36mget_call_parameters\u001b[0;34m(fn, call_args, call_kwargs, apply_defaults)\u001b[0m\n\u001b[1;32m 49\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 50\u001b[0m bound_signature \u001b[38;5;241m=\u001b[39m \u001b[43minspect\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msignature\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfn\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbind\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mcall_args\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[43mcall_kwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 51\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n",
424
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/inspect.py:3212\u001b[0m, in \u001b[0;36mSignature.bind\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 3208\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Get a BoundArguments object, that maps the passed `args`\u001b[39;00m\n\u001b[1;32m 3209\u001b[0m \u001b[38;5;124;03mand `kwargs` to the function's signature. Raises `TypeError`\u001b[39;00m\n\u001b[1;32m 3210\u001b[0m \u001b[38;5;124;03mif the passed arguments can not be bound.\u001b[39;00m\n\u001b[1;32m 3211\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m-> 3212\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_bind\u001b[49m\u001b[43m(\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
425
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/inspect.py:3201\u001b[0m, in \u001b[0;36mSignature._bind\u001b[0;34m(self, args, kwargs, partial)\u001b[0m\n\u001b[1;32m 3200\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m-> 3201\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\n\u001b[1;32m 3202\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mgot an unexpected keyword argument \u001b[39m\u001b[38;5;132;01m{arg!r}\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;241m.\u001b[39mformat(\n\u001b[1;32m 3203\u001b[0m arg\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mnext\u001b[39m(\u001b[38;5;28miter\u001b[39m(kwargs))))\n\u001b[1;32m 3205\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_bound_arguments_cls(\u001b[38;5;28mself\u001b[39m, arguments)\n",
426
+ "\u001b[0;31mTypeError\u001b[0m: got an unexpected keyword argument 'mb_velocity_seed'",
427
+ "\nDuring handling of the above exception, another exception occurred:\n",
428
+ "\u001b[0;31mParameterBindError\u001b[0m Traceback (most recent call last)",
429
+ "Cell \u001b[0;32mIn[7], 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",
430
  "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",
431
  "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",
432
  "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",
 
440
  "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",
441
  "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",
442
  "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",
443
+ "Cell \u001b[0;32mIn[6], line 6\u001b[0m, in \u001b[0;36mcombustion\u001b[0;34m(atoms)\u001b[0m\n\u001b[1;32m 3\u001b[0m futures \u001b[38;5;241m=\u001b[39m []\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m model \u001b[38;5;129;01min\u001b[39;00m MLIPEnum:\n\u001b[0;32m----> 6\u001b[0m future \u001b[38;5;241m=\u001b[39m \u001b[43mMD\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msubmit\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 7\u001b[0m \u001b[43m \u001b[49m\u001b[43matoms\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43matoms\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 8\u001b[0m \u001b[43m \u001b[49m\u001b[43mcalculator_name\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 9\u001b[0m \u001b[43m \u001b[49m\u001b[43mcalculator_kwargs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 10\u001b[0m \u001b[43m \u001b[49m\u001b[43mensemble\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mnvt\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 11\u001b[0m \u001b[43m \u001b[49m\u001b[43mdynamics\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mnose-hoover\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 12\u001b[0m \u001b[43m \u001b[49m\u001b[43mtime_step\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 13\u001b[0m \u001b[43m \u001b[49m\u001b[43mase_md_kwargs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mdict\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mttime\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m25\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m \u001b[49m\u001b[43munits\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpfactor\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 14\u001b[0m \u001b[43m \u001b[49m\u001b[43mtotal_time\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m1000_000\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 15\u001b[0m \u001b[43m \u001b[49m\u001b[43mtemperature\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m300\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m3000\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m3000\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m300\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 16\u001b[0m \u001b[43m \u001b[49m\u001b[43mpressure\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 17\u001b[0m \u001b[43m \u001b[49m\u001b[43mmb_velocity_seed\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 18\u001b[0m \u001b[43m \u001b[49m\u001b[43mtraj_file\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mPath\u001b[49m\u001b[43m(\u001b[49m\u001b[43mREGISTRY\u001b[49m\u001b[43m[\u001b[49m\u001b[43mmodel\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mname\u001b[49m\u001b[43m]\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mfamily\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 19\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m/\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mmodel\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mname\u001b[49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m_\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43matoms\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_chemical_formula\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m.traj\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 20\u001b[0m \u001b[43m \u001b[49m\u001b[43mtraj_interval\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m1000\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 21\u001b[0m \u001b[43m \u001b[49m\u001b[43mrestart\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 22\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 24\u001b[0m futures\u001b[38;5;241m.\u001b[39mappend(future)\n\u001b[1;32m 26\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m [future\u001b[38;5;241m.\u001b[39mresult() \u001b[38;5;28;01mfor\u001b[39;00m future \u001b[38;5;129;01min\u001b[39;00m futures]\n",
444
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/tasks.py:811\u001b[0m, in \u001b[0;36mTask.submit\u001b[0;34m(self, return_state, wait_for, *args, **kwargs)\u001b[0m\n\u001b[1;32m 808\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mprefect\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mengine\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m create_autonomous_task_run, enter_task_run_engine\n\u001b[1;32m 810\u001b[0m \u001b[38;5;66;03m# Convert the call args/kwargs to a parameter dict\u001b[39;00m\n\u001b[0;32m--> 811\u001b[0m parameters \u001b[38;5;241m=\u001b[39m \u001b[43mget_call_parameters\u001b[49m\u001b[43m(\u001b[49m\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[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 812\u001b[0m return_type \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstate\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m return_state \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfuture\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 814\u001b[0m task_viz_tracker \u001b[38;5;241m=\u001b[39m get_task_viz_tracker()\n",
445
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/utilities/callables.py:52\u001b[0m, in \u001b[0;36mget_call_parameters\u001b[0;34m(fn, call_args, call_kwargs, apply_defaults)\u001b[0m\n\u001b[1;32m 50\u001b[0m bound_signature \u001b[38;5;241m=\u001b[39m inspect\u001b[38;5;241m.\u001b[39msignature(fn)\u001b[38;5;241m.\u001b[39mbind(\u001b[38;5;241m*\u001b[39mcall_args, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mcall_kwargs)\n\u001b[1;32m 51\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[0;32m---> 52\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ParameterBindError\u001b[38;5;241m.\u001b[39mfrom_bind_failure(fn, exc, call_args, call_kwargs)\n\u001b[1;32m 54\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m apply_defaults:\n\u001b[1;32m 55\u001b[0m bound_signature\u001b[38;5;241m.\u001b[39mapply_defaults()\n",
446
+ "\u001b[0;31mParameterBindError\u001b[0m: Error binding parameters for function 'run': got an unexpected keyword argument 'mb_velocity_seed'.\nFunction 'run' has signature 'atoms: 'Atoms', calculator_name: 'str | MLIPEnum', calculator_kwargs: 'dict | None', dispersion: 'str | None' = None, dispersion_kwargs: 'dict | None' = None, device: 'str | None' = None, ensemble: \"Literal['nve', 'nvt', 'npt']\" = 'nvt', dynamics: 'str | MolecularDynamics' = 'langevin', time_step: 'float | None' = None, total_time: 'float' = 1000, temperature: 'float | Sequence | np.ndarray | None' = 300.0, pressure: 'float | Sequence | np.ndarray | None' = None, ase_md_kwargs: 'dict | None' = None, md_velocity_seed: 'int | None' = None, zero_linear_momentum: 'bool' = True, zero_angular_momentum: 'bool' = True, traj_file: 'str | Path | None' = None, traj_interval: 'int' = 1, restart: 'bool' = True' but received args: () and kwargs: ['atoms', 'calculator_name', 'calculator_kwargs', 'ensemble', 'dynamics', 'time_step', 'ase_md_kwargs', 'total_time', 'temperature', 'pressure', 'mb_velocity_seed', 'traj_file', 'traj_interval', 'restart']."
 
 
 
 
 
 
 
 
447
  ]
448
  }
449
  ],
mlip_arena/tasks/md.py CHANGED
@@ -1,4 +1,6 @@
1
  """
 
 
2
  This script has been adapted from Atomate2 MLFF MD workflow written by Aaron Kaplan and Yuan Chiang
3
  https://github.com/materialsproject/atomate2/blob/main/src/atomate2/forcefields/md.py
4
 
@@ -52,9 +54,10 @@ works thereof, in binary and source code form.
52
 
53
  from __future__ import annotations
54
 
 
55
  from datetime import datetime, timedelta
56
  from pathlib import Path
57
- from typing import Literal, Sequence, Tuple
58
 
59
  import numpy as np
60
  from ase import Atoms, units
@@ -83,8 +86,6 @@ from tqdm.auto import tqdm
83
 
84
  from mlip_arena.models.utils import MLIPEnum, get_freer_device
85
 
86
- # from mlip_arena.models.utils import EXTMLIPEnum, MLIPMap, external_ase_calculator
87
-
88
  _valid_dynamics: dict[str, tuple[str, ...]] = {
89
  "nve": ("velocityverlet",),
90
  "nvt": ("nose-hoover", "langevin", "andersen", "berendsen"),
@@ -117,7 +118,7 @@ def _get_ensemble_schedule(
117
  n_steps: int = 1000,
118
  temperature: float | Sequence | np.ndarray | None = 300.0,
119
  pressure: float | Sequence | np.ndarray | None = None,
120
- ) -> Tuple[np.ndarray, np.ndarray]:
121
  if ensemble == "nve":
122
  # Disable thermostat and barostat
123
  temperature = np.nan
 
1
  """
2
+ Define molecular dynamics tasks.
3
+
4
  This script has been adapted from Atomate2 MLFF MD workflow written by Aaron Kaplan and Yuan Chiang
5
  https://github.com/materialsproject/atomate2/blob/main/src/atomate2/forcefields/md.py
6
 
 
54
 
55
  from __future__ import annotations
56
 
57
+ from collections.abc import Sequence
58
  from datetime import datetime, timedelta
59
  from pathlib import Path
60
+ from typing import Literal
61
 
62
  import numpy as np
63
  from ase import Atoms, units
 
86
 
87
  from mlip_arena.models.utils import MLIPEnum, get_freer_device
88
 
 
 
89
  _valid_dynamics: dict[str, tuple[str, ...]] = {
90
  "nve": ("velocityverlet",),
91
  "nvt": ("nose-hoover", "langevin", "andersen", "berendsen"),
 
118
  n_steps: int = 1000,
119
  temperature: float | Sequence | np.ndarray | None = 300.0,
120
  pressure: float | Sequence | np.ndarray | None = None,
121
+ ) -> tuple[np.ndarray, np.ndarray]:
122
  if ensemble == "nve":
123
  # Disable thermostat and barostat
124
  temperature = np.nan
mlip_arena/tasks/optimize.py ADDED
@@ -0,0 +1,124 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Define structure optimization tasks.
3
+ """
4
+
5
+ from __future__ import annotations
6
+
7
+ from datetime import timedelta
8
+
9
+ from ase import Atoms
10
+ from ase.calculators.calculator import Calculator
11
+ from ase.calculators.mixing import SumCalculator
12
+ from ase.filters import * # type: ignore
13
+ from ase.filters import Filter
14
+ from ase.optimize import * # type: ignore
15
+ from ase.optimize.optimize import Optimizer
16
+ from prefect import task
17
+ from prefect.tasks import task_input_hash
18
+ from torch_dftd.torch_dftd3_calculator import TorchDFTD3Calculator
19
+
20
+ from mlip_arena.models.utils import MLIPEnum, get_freer_device
21
+
22
+ _valid_filters: dict[str, Filter] = {
23
+ "Filter": Filter,
24
+ "UnitCell": UnitCellFilter,
25
+ "ExpCell": ExpCellFilter,
26
+ "Strain": StrainFilter,
27
+ "FrechetCell": FrechetCellFilter,
28
+ } # type: ignore
29
+
30
+ _valid_optimizers: dict[str, Optimizer] = {
31
+ "MDMin": MDMin,
32
+ "FIRE": FIRE,
33
+ "LBFGS": LBFGS,
34
+ "LBFGSLineSearch": LBFGSLineSearch,
35
+ "BFGS": BFGS,
36
+ "BFGSLineSearch": BFGSLineSearch,
37
+ "QuasiNewton": QuasiNewton,
38
+ "GPMin": GPMin,
39
+ "CellAwareBFGS": CellAwareBFGS,
40
+ "ODE12r": ODE12r,
41
+ } # type: ignore
42
+
43
+
44
+ @task(cache_key_fn=task_input_hash, cache_expiration=timedelta(days=1))
45
+ def run(
46
+ atoms: Atoms,
47
+ calculator_name: str | MLIPEnum,
48
+ calculator_kwargs: dict | None,
49
+ dispersion: str | None = None,
50
+ dispersion_kwargs: dict | None = None,
51
+ device: str | None = None,
52
+ optimizer: Optimizer | str = BFGSLineSearch,
53
+ optimizer_kwargs: dict | None = None,
54
+ filter: Filter | str | None = None,
55
+ filter_kwargs: dict | None = None,
56
+ criterion: dict | None = None,
57
+ # TODO: fix symmetry
58
+ ):
59
+ device = device or str(get_freer_device())
60
+
61
+ print(f"Using device: {device}")
62
+
63
+ calculator_kwargs = calculator_kwargs or {}
64
+
65
+ if isinstance(calculator_name, MLIPEnum) and calculator_name in MLIPEnum:
66
+ assert issubclass(calculator_name.value, Calculator)
67
+ calc = calculator_name.value(**calculator_kwargs)
68
+ elif (
69
+ isinstance(calculator_name, str) and calculator_name in MLIPEnum._member_names_
70
+ ):
71
+ calc = MLIPEnum[calculator_name].value(**calculator_kwargs)
72
+ else:
73
+ raise ValueError(f"Invalid calculator: {calculator_name}")
74
+
75
+ print(f"Using calculator: {calc}")
76
+
77
+ dispersion_kwargs = dispersion_kwargs or {}
78
+
79
+ dispersion_kwargs.update({"device": device})
80
+
81
+ if dispersion is not None:
82
+ disp_calc = TorchDFTD3Calculator(
83
+ **dispersion_kwargs,
84
+ )
85
+ calc = SumCalculator([calc, disp_calc])
86
+
87
+ print(f"Using dispersion: {dispersion}")
88
+
89
+ atoms.calc = calc
90
+
91
+ if isinstance(filter, str):
92
+ if filter not in _valid_filters:
93
+ raise ValueError(f"Invalid filter: {filter}")
94
+ filter = _valid_filters[filter]
95
+
96
+ if isinstance(optimizer, str):
97
+ if optimizer not in _valid_optimizers:
98
+ raise ValueError(f"Invalid optimizer: {optimizer}")
99
+ optimizer = _valid_optimizers[optimizer]
100
+
101
+
102
+ filter_kwargs = filter_kwargs or {}
103
+ optimizer_kwargs = optimizer_kwargs or {}
104
+ criterion = criterion or {}
105
+
106
+ if isinstance(filter, type) and issubclass(filter, Filter):
107
+ filter_instance = filter(atoms, **filter_kwargs)
108
+ print(f"Using filter: {filter_instance}")
109
+
110
+ optimizer_instance = optimizer(atoms, **optimizer_kwargs)
111
+ print(f"Using optimizer: {optimizer_instance}")
112
+
113
+ optimizer_instance.run(**criterion)
114
+
115
+ elif filter is None:
116
+ optimizer_instance = optimizer(atoms, **optimizer_kwargs)
117
+ print(f"Using optimizer: {optimizer_instance}")
118
+
119
+ optimizer_instance.run(**criterion)
120
+
121
+ return {
122
+ "atoms": atoms,
123
+ }
124
+
pyproject.toml CHANGED
@@ -159,6 +159,7 @@ ignore = [
159
  "E741", # ambigous variable naming, i.e. one letter
160
  "FBT003", # boolean positional variable in function call
161
  "PERF203", # `try`-`except` within a loop incurs performance overhead (no overhead in Py 3.11+)
 
162
  ]
163
  fixable = ["ALL"]
164
  pydocstyle.convention = "google"
 
159
  "E741", # ambigous variable naming, i.e. one letter
160
  "FBT003", # boolean positional variable in function call
161
  "PERF203", # `try`-`except` within a loop incurs performance overhead (no overhead in Py 3.11+)
162
+ "F405", # 'module' may be undefined, or defined from star imports
163
  ]
164
  fixable = ["ALL"]
165
  pydocstyle.convention = "google"
tests/test_eos.py ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ from ase.build import bulk
3
+
4
+ from mlip_arena.tasks.eos.run import fit as EOS
5
+
6
+ atoms = bulk("Cu", "fcc", a=3.6)
7
+
8
+ def test_eos():
9
+ """
10
+ Test EOS prefect workflow with a simple cubic lattice.
11
+ """
12
+
13
+ result = EOS(
14
+ atoms=atoms,
15
+ calculator_name="MACE-MP(M)",
16
+ calculator_kwargs={},
17
+ device=None,
18
+ optimizer="BFGSLineSearch",
19
+ optimizer_kwargs=None,
20
+ filter="FrechetCell",
21
+ filter_kwargs=None,
22
+ criterion=dict(
23
+ fmax=0.01,
24
+ ),
25
+ max_abs_strain=0.1,
26
+ npoints=11,
27
+ )
28
+
29
+ print(result)
30
+
31
+ assert isinstance(result["K"], float)
32
+ assert np.isclose(result["K"], 143.2353241040571, rtol=5e-2)