Yuan (Cyrus) Chiang commited on
Commit
b22d49d
·
unverified ·
1 Parent(s): c1d2139

Improve dependencies (#20)

Browse files

* improve installation; add uv

* separate deepmd

* update uv workflow and env variable

* remove uv

* add constraint on prefect

.github/README.md CHANGED
@@ -29,8 +29,9 @@ git clone https://github.com/atomind-ai/mlip-arena.git
29
  pip install torch==2.2.0
30
  bash scripts/install-pyg.sh
31
  bash scripts/install-dgl.sh
32
- pip install .[test]
33
- pip install .[mace]
 
34
  ```
35
 
36
  ## Contribute
 
29
  pip install torch==2.2.0
30
  bash scripts/install-pyg.sh
31
  bash scripts/install-dgl.sh
32
+ pip install -e .[test]
33
+ pip install -e .[mace]
34
+ pip install -e .[deepmd]
35
  ```
36
 
37
  ## Contribute
.github/workflows/test.yaml CHANGED
@@ -2,6 +2,9 @@ name: Python Test
2
 
3
  on: [push, pull_request]
4
 
 
 
 
5
  jobs:
6
  test:
7
  runs-on: ubuntu-latest
@@ -16,6 +19,15 @@ jobs:
16
  - name: Checkout repository
17
  uses: actions/checkout@v4
18
 
 
 
 
 
 
 
 
 
 
19
  - name: Set up Python ${{ matrix.python-version }}
20
  uses: actions/setup-python@v5
21
  with:
@@ -28,8 +40,9 @@ jobs:
28
  pip install torch==2.2.0
29
  bash scripts/install-pyg.sh
30
  bash scripts/install-dgl.sh
31
- pip install .[test]
32
- pip install .[mace]
 
33
 
34
  - name: List dependencies
35
  run: pip list
 
2
 
3
  on: [push, pull_request]
4
 
5
+ # env:
6
+ # UV_SYSTEM_PYTHON: 1
7
+
8
  jobs:
9
  test:
10
  runs-on: ubuntu-latest
 
19
  - name: Checkout repository
20
  uses: actions/checkout@v4
21
 
22
+ # - name: Install uv
23
+ # uses: astral-sh/setup-uv@v3
24
+ # with:
25
+ # enable-cache: true
26
+ # cache-dependency-glob: "pyproject.toml"
27
+
28
+ # - name: Set up Python ${{ matrix.python-version }}
29
+ # run: uv python install ${{ matrix.python-version }}
30
+
31
  - name: Set up Python ${{ matrix.python-version }}
32
  uses: actions/setup-python@v5
33
  with:
 
40
  pip install torch==2.2.0
41
  bash scripts/install-pyg.sh
42
  bash scripts/install-dgl.sh
43
+ pip install -e .[test]
44
+ pip install -e .[mace]
45
+ pip install -e .[deepmd]
46
 
47
  - name: List dependencies
48
  run: pip list
mlip_arena/tasks/combustion/water.ipynb CHANGED
@@ -2,9 +2,17 @@
2
  "cells": [
3
  {
4
  "cell_type": "code",
5
- "execution_count": null,
6
  "metadata": {},
7
- "outputs": [],
 
 
 
 
 
 
 
 
8
  "source": [
9
  "from pathlib import Path\n",
10
  "\n",
@@ -124,7 +132,7 @@
124
  },
125
  {
126
  "cell_type": "code",
127
- "execution_count": 4,
128
  "metadata": {
129
  "tags": []
130
  },
@@ -144,19 +152,9 @@
144
  },
145
  {
146
  "cell_type": "code",
147
- "execution_count": 5,
148
  "metadata": {},
149
  "outputs": [
150
- {
151
- "name": "stderr",
152
- "output_type": "stream",
153
- "text": [
154
- "/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/distributed/node.py:182: UserWarning: Port 8787 is already in use.\n",
155
- "Perhaps you already have a cluster running?\n",
156
- "Hosting the HTTP server on port 38185 instead\n",
157
- " warnings.warn(\n"
158
- ]
159
- },
160
  {
161
  "name": "stdout",
162
  "output_type": "stream",
@@ -175,9 +173,19 @@
175
  "source ~/.bashrc\n",
176
  "module load python\n",
177
  "source activate /pscratch/sd/c/cyrusyc/.conda/mlip-arena\n",
178
- "/pscratch/sd/c/cyrusyc/.conda/mlip-arena/bin/python -m distributed.cli.dask_worker tcp://128.55.64.23:40945 --name dummy-name --nthreads 1 --memory-limit 59.60GiB --nanny --death-timeout 86400\n",
179
  "\n"
180
  ]
 
 
 
 
 
 
 
 
 
 
181
  }
182
  ],
183
  "source": [
@@ -235,7 +243,7 @@
235
  },
236
  {
237
  "cell_type": "code",
238
- "execution_count": null,
239
  "metadata": {},
240
  "outputs": [],
241
  "source": [
@@ -269,11 +277,38 @@
269
  },
270
  {
271
  "cell_type": "code",
272
- "execution_count": null,
273
  "metadata": {
274
  "tags": []
275
  },
276
- "outputs": [],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
277
  "source": [
278
  "results = combustion(atoms)"
279
  ]
 
2
  "cells": [
3
  {
4
  "cell_type": "code",
5
+ "execution_count": 1,
6
  "metadata": {},
7
+ "outputs": [
8
+ {
9
+ "name": "stdout",
10
+ "output_type": "stream",
11
+ "text": [
12
+ "No module named 'deepmd'\n"
13
+ ]
14
+ }
15
+ ],
16
  "source": [
17
  "from pathlib import Path\n",
18
  "\n",
 
132
  },
133
  {
134
  "cell_type": "code",
135
+ "execution_count": 2,
136
  "metadata": {
137
  "tags": []
138
  },
 
152
  },
153
  {
154
  "cell_type": "code",
155
+ "execution_count": 3,
156
  "metadata": {},
157
  "outputs": [
 
 
 
 
 
 
 
 
 
 
158
  {
159
  "name": "stdout",
160
  "output_type": "stream",
 
173
  "source ~/.bashrc\n",
174
  "module load python\n",
175
  "source activate /pscratch/sd/c/cyrusyc/.conda/mlip-arena\n",
176
+ "/pscratch/sd/c/cyrusyc/.conda/mlip-arena/bin/python -m distributed.cli.dask_worker tcp://128.55.64.26:43909 --name dummy-name --nthreads 1 --memory-limit 59.60GiB --nanny --death-timeout 86400\n",
177
  "\n"
178
  ]
179
+ },
180
+ {
181
+ "name": "stderr",
182
+ "output_type": "stream",
183
+ "text": [
184
+ "/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/distributed/node.py:182: UserWarning: Port 8787 is already in use.\n",
185
+ "Perhaps you already have a cluster running?\n",
186
+ "Hosting the HTTP server on port 36977 instead\n",
187
+ " warnings.warn(\n"
188
+ ]
189
  }
190
  ],
191
  "source": [
 
243
  },
244
  {
245
  "cell_type": "code",
246
+ "execution_count": 4,
247
  "metadata": {},
248
  "outputs": [],
249
  "source": [
 
277
  },
278
  {
279
  "cell_type": "code",
280
+ "execution_count": 5,
281
  "metadata": {
282
  "tags": []
283
  },
284
+ "outputs": [
285
+ {
286
+ "ename": "PrefectHTTPStatusError",
287
+ "evalue": "Client error '401 Unauthorized' for url 'https://api.prefect.cloud/api/accounts/f7d40474-9362-4bfa-8950-ee6a43ec00f3/workspaces/d4bb0913-5f5e-49f7-bfc5-06509088baeb/flows/'\nResponse: {'detail': 'Invalid authentication credentials'}\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401",
288
+ "output_type": "error",
289
+ "traceback": [
290
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
291
+ "\u001b[0;31mPrefectHTTPStatusError\u001b[0m Traceback (most recent call last)",
292
+ "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",
293
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/flows.py:1355\u001b[0m, in \u001b[0;36mFlow.__call__\u001b[0;34m(self, return_state, wait_for, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1351\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[1;32m 1353\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;01mflow_engine\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m run_flow\n\u001b[0;32m-> 1355\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mrun_flow\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1356\u001b[0m \u001b[43m \u001b[49m\u001b[43mflow\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1357\u001b[0m \u001b[43m \u001b[49m\u001b[43mparameters\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mparameters\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1358\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 1359\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 1360\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n",
294
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/flow_engine.py:821\u001b[0m, in \u001b[0;36mrun_flow\u001b[0;34m(flow, flow_run, parameters, wait_for, return_type)\u001b[0m\n\u001b[1;32m 819\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m run_flow_async(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[1;32m 820\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 821\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mrun_flow_sync\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
295
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/flow_engine.py:696\u001b[0m, in \u001b[0;36mrun_flow_sync\u001b[0;34m(flow, flow_run, parameters, wait_for, return_type)\u001b[0m\n\u001b[1;32m 682\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mrun_flow_sync\u001b[39m(\n\u001b[1;32m 683\u001b[0m flow: Flow[P, R],\n\u001b[1;32m 684\u001b[0m flow_run: Optional[FlowRun] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 687\u001b[0m return_type: Literal[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstate\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mresult\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mresult\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 688\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Union[R, State, \u001b[38;5;28;01mNone\u001b[39;00m]:\n\u001b[1;32m 689\u001b[0m engine \u001b[38;5;241m=\u001b[39m FlowRunEngine[P, R](\n\u001b[1;32m 690\u001b[0m flow\u001b[38;5;241m=\u001b[39mflow,\n\u001b[1;32m 691\u001b[0m parameters\u001b[38;5;241m=\u001b[39mparameters,\n\u001b[1;32m 692\u001b[0m flow_run\u001b[38;5;241m=\u001b[39mflow_run,\n\u001b[1;32m 693\u001b[0m wait_for\u001b[38;5;241m=\u001b[39mwait_for,\n\u001b[1;32m 694\u001b[0m )\n\u001b[0;32m--> 696\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mwith\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mengine\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstart\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[1;32m 697\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mwhile\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mengine\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mis_running\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[1;32m 698\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mwith\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mengine\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_context\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n",
296
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/contextlib.py:137\u001b[0m, in \u001b[0;36m_GeneratorContextManager.__enter__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 135\u001b[0m \u001b[38;5;28;01mdel\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39margs, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mkwds, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfunc\n\u001b[1;32m 136\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 137\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mnext\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mgen)\n\u001b[1;32m 138\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m:\n\u001b[1;32m 139\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mgenerator didn\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mt yield\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n",
297
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/flow_engine.py:635\u001b[0m, in \u001b[0;36mFlowRunEngine.start\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 633\u001b[0m \u001b[38;5;129m@contextmanager\u001b[39m\n\u001b[1;32m 634\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mstart\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Generator[\u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;28;01mNone\u001b[39;00m]:\n\u001b[0;32m--> 635\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mwith\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minitialize_run\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[1;32m 636\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbegin_run\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 638\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstate\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mis_running\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n",
298
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/contextlib.py:137\u001b[0m, in \u001b[0;36m_GeneratorContextManager.__enter__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 135\u001b[0m \u001b[38;5;28;01mdel\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39margs, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mkwds, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfunc\n\u001b[1;32m 136\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 137\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mnext\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mgen)\n\u001b[1;32m 138\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m:\n\u001b[1;32m 139\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mgenerator didn\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mt yield\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n",
299
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/flow_engine.py:559\u001b[0m, in \u001b[0;36mFlowRunEngine.initialize_run\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 556\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_is_started \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m 558\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mflow_run:\n\u001b[0;32m--> 559\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mflow_run \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcreate_flow_run\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mclient\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 560\u001b[0m flow_run_url \u001b[38;5;241m=\u001b[39m url_for(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mflow_run)\n\u001b[1;32m 562\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m flow_run_url:\n",
300
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/flow_engine.py:415\u001b[0m, in \u001b[0;36mFlowRunEngine.create_flow_run\u001b[0;34m(self, client)\u001b[0m\n\u001b[1;32m 410\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m subflow_run \u001b[38;5;241m:=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mload_subflow_run(\n\u001b[1;32m 411\u001b[0m parent_task_run\u001b[38;5;241m=\u001b[39mparent_task_run, client\u001b[38;5;241m=\u001b[39mclient, context\u001b[38;5;241m=\u001b[39mflow_run_ctx\n\u001b[1;32m 412\u001b[0m ):\n\u001b[1;32m 413\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m subflow_run\n\u001b[0;32m--> 415\u001b[0m flow_run \u001b[38;5;241m=\u001b[39m \u001b[43mclient\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcreate_flow_run\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 416\u001b[0m \u001b[43m \u001b[49m\u001b[43mflow\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[43mflow\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 417\u001b[0m \u001b[43m \u001b[49m\u001b[43mparameters\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[43mflow\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mserialize_parameters\u001b[49m\u001b[43m(\u001b[49m\u001b[43mparameters\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 418\u001b[0m \u001b[43m \u001b[49m\u001b[43mstate\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mPending\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 419\u001b[0m \u001b[43m \u001b[49m\u001b[43mparent_task_run_id\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mgetattr\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mparent_task_run\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mid\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 420\u001b[0m \u001b[43m \u001b[49m\u001b[43mtags\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mTagsContext\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcurrent_tags\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 421\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 422\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m flow_run_ctx:\n\u001b[1;32m 423\u001b[0m parent_logger \u001b[38;5;241m=\u001b[39m get_run_logger(flow_run_ctx)\n",
301
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/client/orchestration.py:3824\u001b[0m, in \u001b[0;36mSyncPrefectClient.create_flow_run\u001b[0;34m(self, flow, name, parameters, context, tags, parent_task_run_id, state)\u001b[0m\n\u001b[1;32m 3821\u001b[0m state \u001b[38;5;241m=\u001b[39m prefect\u001b[38;5;241m.\u001b[39mstates\u001b[38;5;241m.\u001b[39mPending()\n\u001b[1;32m 3823\u001b[0m \u001b[38;5;66;03m# Retrieve the flow id\u001b[39;00m\n\u001b[0;32m-> 3824\u001b[0m flow_id \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcreate_flow\u001b[49m\u001b[43m(\u001b[49m\u001b[43mflow\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 3826\u001b[0m flow_run_create \u001b[38;5;241m=\u001b[39m FlowRunCreate(\n\u001b[1;32m 3827\u001b[0m flow_id\u001b[38;5;241m=\u001b[39mflow_id,\n\u001b[1;32m 3828\u001b[0m flow_version\u001b[38;5;241m=\u001b[39mflow\u001b[38;5;241m.\u001b[39mversion,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 3838\u001b[0m ),\n\u001b[1;32m 3839\u001b[0m )\n\u001b[1;32m 3841\u001b[0m flow_run_create_json \u001b[38;5;241m=\u001b[39m flow_run_create\u001b[38;5;241m.\u001b[39mmodel_dump(mode\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mjson\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
302
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/client/orchestration.py:3762\u001b[0m, in \u001b[0;36mSyncPrefectClient.create_flow\u001b[0;34m(self, flow)\u001b[0m\n\u001b[1;32m 3749\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcreate_flow\u001b[39m(\u001b[38;5;28mself\u001b[39m, flow: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mFlowObject\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m UUID:\n\u001b[1;32m 3750\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 3751\u001b[0m \u001b[38;5;124;03m Create a flow in the Prefect API.\u001b[39;00m\n\u001b[1;32m 3752\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 3760\u001b[0m \u001b[38;5;124;03m the ID of the flow in the backend\u001b[39;00m\n\u001b[1;32m 3761\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m-> 3762\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[43mcreate_flow_from_name\u001b[49m\u001b[43m(\u001b[49m\u001b[43mflow\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mname\u001b[49m\u001b[43m)\u001b[49m\n",
303
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/client/orchestration.py:3778\u001b[0m, in \u001b[0;36mSyncPrefectClient.create_flow_from_name\u001b[0;34m(self, flow_name)\u001b[0m\n\u001b[1;32m 3765\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 3766\u001b[0m \u001b[38;5;124;03mCreate a flow in the Prefect API.\u001b[39;00m\n\u001b[1;32m 3767\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 3775\u001b[0m \u001b[38;5;124;03m the ID of the flow in the backend\u001b[39;00m\n\u001b[1;32m 3776\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 3777\u001b[0m flow_data \u001b[38;5;241m=\u001b[39m FlowCreate(name\u001b[38;5;241m=\u001b[39mflow_name)\n\u001b[0;32m-> 3778\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_client\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpost\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m/flows/\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mjson\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mflow_data\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmodel_dump\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmode\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mjson\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 3780\u001b[0m flow_id \u001b[38;5;241m=\u001b[39m response\u001b[38;5;241m.\u001b[39mjson()\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mid\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 3781\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m flow_id:\n",
304
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/httpx/_client.py:1145\u001b[0m, in \u001b[0;36mClient.post\u001b[0;34m(self, url, content, data, files, json, params, headers, cookies, auth, follow_redirects, timeout, extensions)\u001b[0m\n\u001b[1;32m 1124\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mpost\u001b[39m(\n\u001b[1;32m 1125\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 1126\u001b[0m url: URLTypes,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1138\u001b[0m extensions: RequestExtensions \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 1139\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Response:\n\u001b[1;32m 1140\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 1141\u001b[0m \u001b[38;5;124;03m Send a `POST` request.\u001b[39;00m\n\u001b[1;32m 1142\u001b[0m \n\u001b[1;32m 1143\u001b[0m \u001b[38;5;124;03m **Parameters**: See `httpx.request`.\u001b[39;00m\n\u001b[1;32m 1144\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m-> 1145\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[43mrequest\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1146\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mPOST\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1147\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1148\u001b[0m \u001b[43m \u001b[49m\u001b[43mcontent\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcontent\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1149\u001b[0m \u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1150\u001b[0m \u001b[43m \u001b[49m\u001b[43mfiles\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfiles\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1151\u001b[0m \u001b[43m \u001b[49m\u001b[43mjson\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mjson\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1152\u001b[0m \u001b[43m \u001b[49m\u001b[43mparams\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mparams\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1153\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1154\u001b[0m \u001b[43m \u001b[49m\u001b[43mcookies\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcookies\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1155\u001b[0m \u001b[43m \u001b[49m\u001b[43mauth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mauth\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1156\u001b[0m \u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1157\u001b[0m \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\u001b[1;32m 1158\u001b[0m \u001b[43m \u001b[49m\u001b[43mextensions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mextensions\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1159\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n",
305
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/httpx/_client.py:827\u001b[0m, in \u001b[0;36mClient.request\u001b[0;34m(self, method, url, content, data, files, json, params, headers, cookies, auth, follow_redirects, timeout, extensions)\u001b[0m\n\u001b[1;32m 812\u001b[0m warnings\u001b[38;5;241m.\u001b[39mwarn(message, \u001b[38;5;167;01mDeprecationWarning\u001b[39;00m)\n\u001b[1;32m 814\u001b[0m request \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbuild_request(\n\u001b[1;32m 815\u001b[0m method\u001b[38;5;241m=\u001b[39mmethod,\n\u001b[1;32m 816\u001b[0m url\u001b[38;5;241m=\u001b[39murl,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 825\u001b[0m extensions\u001b[38;5;241m=\u001b[39mextensions,\n\u001b[1;32m 826\u001b[0m )\n\u001b[0;32m--> 827\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[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mauth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mauth\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m)\u001b[49m\n",
306
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/client/base.py:575\u001b[0m, in \u001b[0;36mPrefectHttpxSyncClient.send\u001b[0;34m(self, request, *args, **kwargs)\u001b[0m\n\u001b[1;32m 572\u001b[0m response \u001b[38;5;241m=\u001b[39m PrefectResponse\u001b[38;5;241m.\u001b[39mfrom_httpx_response(response)\n\u001b[1;32m 574\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mraise_on_all_errors:\n\u001b[0;32m--> 575\u001b[0m \u001b[43mresponse\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mraise_for_status\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 577\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m response\n",
307
+ "File \u001b[0;32m/pscratch/sd/c/cyrusyc/.conda/mlip-arena/lib/python3.11/site-packages/prefect/client/base.py:174\u001b[0m, in \u001b[0;36mPrefectResponse.raise_for_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 172\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39mraise_for_status()\n\u001b[1;32m 173\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m HTTPStatusError \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[0;32m--> 174\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m PrefectHTTPStatusError\u001b[38;5;241m.\u001b[39mfrom_httpx_error(exc) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mexc\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m__cause__\u001b[39;00m\n",
308
+ "\u001b[0;31mPrefectHTTPStatusError\u001b[0m: Client error '401 Unauthorized' for url 'https://api.prefect.cloud/api/accounts/f7d40474-9362-4bfa-8950-ee6a43ec00f3/workspaces/d4bb0913-5f5e-49f7-bfc5-06509088baeb/flows/'\nResponse: {'detail': 'Invalid authentication credentials'}\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401"
309
+ ]
310
+ }
311
+ ],
312
  "source": [
313
  "results = combustion(atoms)"
314
  ]
mlip_arena/tasks/diatomics/gpaw/run.ipynb CHANGED
@@ -2,7 +2,7 @@
2
  "cells": [
3
  {
4
  "cell_type": "code",
5
- "execution_count": null,
6
  "id": "08ee4c09-7fb5-4ce1-a7a3-5c5c52a6d4d5",
7
  "metadata": {
8
  "tags": []
@@ -125,8 +125,8 @@
125
  " # nbands=0 if element.is_noble_gas else '110%',\n",
126
  " hund=False,\n",
127
  " mixer=MixerDif(0.01, 1, 1) if element.is_transition_metal else MixerDif(0.25, 3, 10),\n",
128
- " eigensolver='cg', #'rmm-diis', #Davidson(3), # This solver can parallelize over bands Davidson(3), #\n",
129
- " occupations=FermiDirac(0.0, fixmagmom=False), # if not element.is_metal else FermiDirac(0.2, fixmagmom=False),\n",
130
  " # eigensolver=LCAOETDM(),\n",
131
  " # # searchdir_algo={'name': 'l-bfgs-p', 'memory': 10}),\n",
132
  " # occupations={'name': 'fixed-uniform'},\n",
@@ -140,10 +140,12 @@
140
  " 'energy': 5e-4,\n",
141
  " # 'bands': 4\n",
142
  " },\n",
 
143
  " # {'energy': 0.0005, # eV / electron\n",
144
  " # 'density': 1.0e-4, # electrons / electron\n",
145
  " # 'eigenstates': 4.0e-8, # eV^2 / electron\n",
146
- " # 'bands': 'occupied'}\n",
 
147
  " )\n",
148
  " # calc.attach(calc.write, 10, restart_fpath, mode='all')\n",
149
  "\n",
 
2
  "cells": [
3
  {
4
  "cell_type": "code",
5
+ "execution_count": 1,
6
  "id": "08ee4c09-7fb5-4ce1-a7a3-5c5c52a6d4d5",
7
  "metadata": {
8
  "tags": []
 
125
  " # nbands=0 if element.is_noble_gas else '110%',\n",
126
  " hund=False,\n",
127
  " mixer=MixerDif(0.01, 1, 1) if element.is_transition_metal else MixerDif(0.25, 3, 10),\n",
128
+ " eigensolver='rmm-diis', #Davidson(3), # This solver can parallelize over bands Davidson(3), #\n",
129
+ " occupations=FermiDirac(0.03, fixmagmom=False), # if not element.is_metal else FermiDirac(0.2, fixmagmom=False),\n",
130
  " # eigensolver=LCAOETDM(),\n",
131
  " # # searchdir_algo={'name': 'l-bfgs-p', 'memory': 10}),\n",
132
  " # occupations={'name': 'fixed-uniform'},\n",
 
140
  " 'energy': 5e-4,\n",
141
  " # 'bands': 4\n",
142
  " },\n",
143
+ " parallel={'gpu': True}\n",
144
  " # {'energy': 0.0005, # eV / electron\n",
145
  " # 'density': 1.0e-4, # electrons / electron\n",
146
  " # 'eigenstates': 4.0e-8, # eV^2 / electron\n",
147
+ " # 'bands': 'occupied'},\n",
148
+ " \n",
149
  " )\n",
150
  " # calc.attach(calc.write, 10, restart_fpath, mode='all')\n",
151
  "\n",
mlip_arena/tasks/diatomics/vasp/homonuclear-diatomics.json CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:b49606a91ae54a1f31579be8dfbca61555a66229bccefc7fabf653b124ea5cf9
3
- size 12864
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2751e284bfa727475023d8317dd19c274900dc7c724bbad85854c27d654b66c7
3
+ size 12615
pyproject.toml CHANGED
@@ -48,7 +48,7 @@ run = [
48
  "sevenn==0.9.3.post1",
49
  "orb-models==0.4.0",
50
  "alignn==2024.5.27",
51
- "prefect>=3.0.4",
52
  "prefect-dask"
53
  ]
54
  app = [
@@ -59,6 +59,7 @@ app = [
59
  ]
60
  test = [
61
  "torch==2.2.0",
 
62
  "e3nn==0.5.1",
63
  "matgl==1.1.2",
64
  "dgl==2.4.0",
@@ -69,12 +70,14 @@ test = [
69
  "pynanoflann@git+https://github.com/dwastberg/pynanoflann#egg=af434039ae14bedcbb838a7808924d6689274168",
70
  "alignn==2024.5.27",
71
  "pytest",
72
- "prefect>=3.0.4",
73
- "deepmd-kit@git+https://github.com/deepmodeling/deepmd-kit.git@v3.0.0b4"
74
  ]
75
  mace = [
76
  "mace-torch==0.3.4",
77
  ]
 
 
 
78
 
79
  [project.urls]
80
  Homepage = "https://github.com/atomind-ai/mlip-arena"
 
48
  "sevenn==0.9.3.post1",
49
  "orb-models==0.4.0",
50
  "alignn==2024.5.27",
51
+ "prefect>=3.0.4,<3.1.0",
52
  "prefect-dask"
53
  ]
54
  app = [
 
59
  ]
60
  test = [
61
  "torch==2.2.0",
62
+ "nvidia-ml-py==12.560.30",
63
  "e3nn==0.5.1",
64
  "matgl==1.1.2",
65
  "dgl==2.4.0",
 
70
  "pynanoflann@git+https://github.com/dwastberg/pynanoflann#egg=af434039ae14bedcbb838a7808924d6689274168",
71
  "alignn==2024.5.27",
72
  "pytest",
73
+ "prefect>=3.0.4,<3.1.0",
 
74
  ]
75
  mace = [
76
  "mace-torch==0.3.4",
77
  ]
78
+ deepmd = [
79
+ "deepmd-kit@git+https://github.com/deepmodeling/deepmd-kit.git@v3.0.0b4"
80
+ ]
81
 
82
  [project.urls]
83
  Homepage = "https://github.com/atomind-ai/mlip-arena"