diff --git a/.binder/environment.yml b/.binder/environment.yml index b2c0974..a9807e9 100644 --- a/.binder/environment.yml +++ b/.binder/environment.yml @@ -12,35 +12,34 @@ dependencies: - ipytree =0.2.2 - ipywidgets =8.1.6 - jupyterlab =4.4.1 -- numpy =1.26.4 +- numpy =2.3.4 - sqlalchemy =2.0.38 - traitlets =5.14.3 -- ase =3.24.0 -- assyst =0.3.0 +- ase =3.26.0 +- assyst =0.9.0 - bayesian-optimization =2.0.3 -- calphy =1.3.13 -- grace-tensorpotential =0.5.1 +- calphy =1.4.3 +- grace-tensorpotential =0.5.3 - iprpy-data =2023.07.25 - lammps =2024.08.29=*openmpi* -- landau =1.3.4 -- matgl =1.1.3 -- matplotlib =3.10.0 +- landau =1.5.2 +- matplotlib =3.10.7 - nglview =3.1.4 -- pandas =2.2.3 -- phonopy =2.43.2 -- pint =0.24.4 -- psycopg2 =2.9.9 -- pyiron_atomistics =0.7.18 -- pyiron_base =0.14.3 +- pandas =2.3.3 +- phonopy =2.43.6 +- pint =0.25.0 +- psycopg2 =2.9.10 +- pyiron_atomistics =0.8.4 +- pyiron_base =0.15.9 - pyiron-data =0.0.30 -- pyiron_lammps =0.4.1 +- pyiron_lammps =0.4.9 - python-ace =0.3.1 - python-ternary =1.0.8 - pyxtal =1.1.0 - scikit-image =0.25.2 - scikit-learn =1.6.1 -- scipy =1.15.2 +- scipy =1.16.2 - seaborn =0.13.2 -- structuretoolkit = 0.0.32 +- structuretoolkit = 0.0.37 - nodejs=18 - postgresql diff --git a/notebooks/development/Calphad.ipynb b/notebooks/development/Calphad.ipynb index eaa2b35..72fb827 100644 --- a/notebooks/development/Calphad.ipynb +++ b/notebooks/development/Calphad.ipynb @@ -309,7 +309,7 @@ "source": [ "from pyiron_core.pyiron_workflow import as_function_node\n", "from pyiron_core.pyiron_nodes.atomistic.structure.build import Bulk\n", - "from pyiron_core.pyiron_nodes.atomistic.engine.ase import M3GNet\n", + "from pyiron_core.pyiron_nodes.atomistic.engine.ase import GRACE\n", "from pyiron_core.pyiron_nodes.atomistic.calculator.ase import StaticEnergy\n", "from pyiron_core.pyiron_nodes.atomistic.property.elastic import InputElasticTensor\n", "\n", @@ -356,7 +356,7 @@ " return elastic_constants\n", "\n", "bulk = Bulk(\"Al\", cubic=True).run()\n", - "engine = M3GNet().run()\n", + "engine = GRACE().run()\n", "calculator = StaticEnergy(bulk, engine=engine) #.run()\n", "ComputeElasticConstants(bulk, engine, calculator).run() " ] @@ -524,12 +524,12 @@ "\n", "from pyiron_core.pyiron_workflow import as_macro_node, as_function_node, Node\n", "from pyiron_core.pyiron_nodes.atomistic.structure.build import Bulk\n", - "from pyiron_core.pyiron_nodes.atomistic.engine.ase import M3GNet\n", + "from pyiron_core.pyiron_nodes.atomistic.engine.ase import GRACE\n", "from pyiron_core.pyiron_nodes.atomistic.calculator.ase import StaticEnergy\n", "from pyiron_core.pyiron_nodes.atomistic.property.elastic import InputElasticTensor, SymmetryAnalysis, GenerateStructures, AnalyseStructures\n", "\n", "structure = Bulk(\"Al\", cubic=True).run()\n", - "engine = M3GNet().run()\n", + "engine = GRACE().run()\n", "calculator = StaticEnergy(structure, engine=engine)\n", "calculator = GetFreeEnergy(structure=structure, engine=engine)\n", "parameters = InputElasticTensor(num_of_point=6)\n", diff --git a/notebooks/development/Murnaghan.json b/notebooks/development/Murnaghan.json index 9879c62..0888d4f 100644 --- a/notebooks/development/Murnaghan.json +++ b/notebooks/development/Murnaghan.json @@ -19,10 +19,10 @@ } } }, - "M3GNet": { - "id": "M3GNet", - "import_path": "pyiron_nodes.atomistic.engine.ase.M3GNet", - "label": "M3GNet", + "GRACE": { + "id": "GRACE", + "import_path": "pyiron_nodes.atomistic.engine.ase.GRACE", + "label": "GRACE", "parent_id": null, "level": 0, "graph": null, @@ -30,8 +30,8 @@ "widget_type": "customNode", "expanded": false, "node": { - "label": "M3GNet", - "function": "pyiron_nodes.atomistic.engine.ase.M3GNet", + "label": "GRACE", + "function": "pyiron_nodes.atomistic.engine.ase.GRACE", "inputs": {} } }, @@ -109,7 +109,7 @@ "edges": { "values": [ { - "source": "M3GNet", + "source": "GRACE", "target": "Static", "sourceHandle": "out", "targetHandle": "engine" @@ -141,4 +141,4 @@ ], "obj_type": "pyiron_core.pyiron_workflow.graph.base.GraphEdge" } -} \ No newline at end of file +} diff --git a/notebooks/development/cecam.ipynb b/notebooks/development/cecam.ipynb index 1fdf147..2bd293c 100644 --- a/notebooks/development/cecam.ipynb +++ b/notebooks/development/cecam.ipynb @@ -188,10 +188,10 @@ "evalue": "name 'xx' is not defined", "output_type": "error", "traceback": [ - "\u001b[31m---------------------------------------------------------------------------\u001b[39m", - "\u001b[31mNameError\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[6]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[43mxx\u001b[49m\n", - "\u001b[31mNameError\u001b[39m: name 'xx' is not defined" + "\u001B[31m---------------------------------------------------------------------------\u001B[39m", + "\u001B[31mNameError\u001B[39m Traceback (most recent call last)", + "\u001B[36mCell\u001B[39m\u001B[36m \u001B[39m\u001B[32mIn[6]\u001B[39m\u001B[32m, line 1\u001B[39m\n\u001B[32m----> \u001B[39m\u001B[32m1\u001B[39m \u001B[43mxx\u001B[49m\n", + "\u001B[31mNameError\u001B[39m: name 'xx' is not defined" ] } ], @@ -330,8 +330,8 @@ " wf = Workflow('subgraph')\n", "\n", " wf.Bulk = pyiron_nodes.atomistic.structure.build.Bulk(name=name, a=a) \n", - " wf.M3GNet = pyiron_nodes.atomistic.engine.ase.M3GNet() \n", - " wf.Static = pyiron_nodes.atomistic.calculator.ase.Static(structure=wf.Bulk, engine=wf.M3GNet) \n", + " wf.GRACE = pyiron_nodes.atomistic.engine.ase.GRACE()\n", + " wf.Static = pyiron_nodes.atomistic.calculator.ase.Static(structure=wf.Bulk, engine=wf.GRACE)\n", " wf.GetEnergyLast = pyiron_nodes.atomistic.calculator.output.GetEnergyLast(calculator=wf.Static) \n", "\n", " out = wf.GetEnergyLast.pull()\n", @@ -357,13 +357,13 @@ " wf = Workflow('subgraph')\n", "\n", " wf.Bulk = pyiron_nodes.atomistic.structure.build.Bulk(name=name, a=a) \n", - " wf.M3GNet = pyiron_nodes.atomistic.engine.ase.M3GNet() \n", - " wf.Static = pyiron_nodes.atomistic.calculator.ase.Static(structure=wf.Bulk, engine=wf.M3GNet) \n", + " wf.GRACE = pyiron_nodes.atomistic.engine.ase.GRACE()\n", + " wf.Static = pyiron_nodes.atomistic.calculator.ase.Static(structure=wf.Bulk, engine=wf.GRACE)\n", " wf.GetEnergyLast = pyiron_nodes.atomistic.calculator.output.GetEnergyLast(calculator=wf.Static) \n", "\n", " return wf.GetEnergyLast.outputs.energy_last, wf.Bulk" ], - "id": "6042e7fa09f9372d" + "id": "c9ac77afac0eaf0f" }, { "metadata": {}, @@ -379,7 +379,7 @@ " output_labels = None\n", "output_labels" ], - "id": "68591839823902e7" + "id": "e87bcf34197c623c" }, { "cell_type": "code", @@ -927,11 +927,10 @@ ] }, { - "cell_type": "code", - "execution_count": null, - "id": "c8d4528e-a91c-4a7c-bc34-8b3401d3924b", "metadata": {}, + "cell_type": "code", "outputs": [], + "execution_count": null, "source": [ "base.Graph(id=None, \n", " label='subgraph', \n", @@ -939,7 +938,7 @@ " nodes=NestedDict({'Bulk': GraphNode(id='Bulk', import_path='pyiron_nodes.atomistic.structure.build.Bulk', label='Bulk', \n", " parent_id=None, level=0, node=,\n", " graph=None, node_type='node', widget_type='customNode', expanded=False), \n", - " 'M3GNet': GraphNode(id='M3GNet', import_path='pyiron_nodes.atomistic.engine.ase.M3GNet', label='M3GNet', \n", + " 'GRACE': GraphNode(id='GRACE', import_path='pyiron_nodes.atomistic.engine.ase.GRACE', label='GRACE',\n", " parent_id=None, level=0, node=,\n", " graph=None, node_type='node', widget_type='customNode', expanded=False), \n", " 'Static': GraphNode(id='Static', import_path='pyiron_nodes.atomistic.calculator.ase.Static', label='Static', \n", @@ -950,18 +949,17 @@ " graph=None, node_type='node', widget_type='customNode', expanded=False)}), \n", " edges=[GraphEdge(source='Static', target='GetEnergyLast', sourceHandle='out', targetHandle='calculator'), \n", " GraphEdge(source='Bulk', target='Static', sourceHandle='structure', targetHandle='structure'), \n", - " GraphEdge(source='M3GNet', target='Static', sourceHandle='out', targetHandle='engine')], graph={})" - ] + " GraphEdge(source='GRACE', target='Static', sourceHandle='out', targetHandle='engine')], graph={})" + ], + "id": "855cb2b37f204e80" }, { - "cell_type": "code", - "execution_count": null, - "id": "826876b1-c68e-4751-8779-dac8ef719904", "metadata": {}, + "cell_type": "code", "outputs": [], - "source": [ - "subgraph.graph" - ] + "execution_count": null, + "source": "subgraph.graph", + "id": "819e6e4e7951dba2" }, { "cell_type": "code", diff --git a/notebooks/development/elastic.json b/notebooks/development/elastic.json index 7584c09..295fd58 100644 --- a/notebooks/development/elastic.json +++ b/notebooks/development/elastic.json @@ -68,10 +68,10 @@ } } }, - "M3GNet": { - "id": "M3GNet", - "import_path": "pyiron_nodes.atomistic.engine.ase.M3GNet", - "label": "M3GNet", + "GRACE": { + "id": "GRACE", + "import_path": "pyiron_nodes.atomistic.engine.ase.GRACE", + "label": "GRACE", "parent_id": null, "level": 0, "graph": null, @@ -79,8 +79,8 @@ "widget_type": "customNode", "expanded": false, "node": { - "label": "M3GNet", - "function": "pyiron_nodes.atomistic.engine.ase.M3GNet", + "label": "GRACE", + "function": "pyiron_nodes.atomistic.engine.ase.GRACE", "inputs": {} } }, @@ -196,7 +196,7 @@ "targetHandle": "values" }, { - "source": "M3GNet", + "source": "GRACE", "target": "StaticEnergy", "sourceHandle": "out", "targetHandle": "engine" diff --git a/notebooks/development/elastic_m3gnet.json b/notebooks/development/elastic_m3gnet.json index fc1f39a..5f1b79c 100644 --- a/notebooks/development/elastic_m3gnet.json +++ b/notebooks/development/elastic_m3gnet.json @@ -1,5 +1,5 @@ { - "label": "elastic_m3gnet", + "label": "elastic_GRACE", "nodes": { "CubicBulkCell": { "id": "CubicBulkCell", @@ -326,10 +326,10 @@ "inputs": {} } }, - "M3GNet": { - "id": "M3GNet", - "import_path": "pyiron_nodes.atomistic.engine.ase.M3GNet", - "label": "M3GNet", + "GRACE": { + "id": "GRACE", + "import_path": "pyiron_nodes.atomistic.engine.ase.GRACE", + "label": "GRACE", "parent_id": null, "level": 0, "graph": null, @@ -337,8 +337,8 @@ "widget_type": "customNode", "expanded": false, "node": { - "label": "M3GNet", - "function": "pyiron_nodes.atomistic.engine.ase.M3GNet", + "label": "GRACE", + "function": "pyiron_nodes.atomistic.engine.ase.GRACE", "inputs": {} } }, @@ -471,7 +471,7 @@ "targetHandle": "dataclass" }, { - "source": "M3GNet", + "source": "GRACE", "target": "Static", "sourceHandle": "out", "targetHandle": "engine" diff --git a/notebooks/development/energy.json b/notebooks/development/energy.json index 2316dfd..49ca6da 100644 --- a/notebooks/development/energy.json +++ b/notebooks/development/energy.json @@ -19,10 +19,10 @@ } } }, - "M3GNet": { - "id": "M3GNet", - "import_path": "pyiron_nodes.atomistic.engine.ase.M3GNet", - "label": "M3GNet", + "GRACE": { + "id": "GRACE", + "import_path": "pyiron_nodes.atomistic.engine.ase.GRACE", + "label": "GRACE", "parent_id": null, "level": 0, "graph": null, @@ -30,8 +30,8 @@ "widget_type": "customNode", "expanded": false, "node": { - "label": "M3GNet", - "function": "pyiron_nodes.atomistic.engine.ase.M3GNet", + "label": "GRACE", + "function": "pyiron_nodes.atomistic.engine.ase.GRACE", "inputs": {} } }, @@ -110,7 +110,7 @@ "targetHandle": "structure" }, { - "source": "M3GNet", + "source": "GRACE", "target": "Static", "sourceHandle": "out", "targetHandle": "engine" @@ -136,4 +136,4 @@ ], "obj_type": "pyiron_core.pyiron_workflow.graph.base.GraphEdge" } -} \ No newline at end of file +} diff --git a/notebooks/development/minimize.json b/notebooks/development/minimize.json index 120cd2d..4ff4647 100644 --- a/notebooks/development/minimize.json +++ b/notebooks/development/minimize.json @@ -216,10 +216,10 @@ "inputs": {} } }, - "M3GNet": { - "id": "M3GNet", - "import_path": "pyiron_nodes.atomistic.engine.ase.M3GNet", - "label": "M3GNet", + "GRACE": { + "id": "GRACE", + "import_path": "pyiron_nodes.atomistic.engine.ase.GRACE", + "label": "GRACE", "parent_id": null, "level": 0, "graph": null, @@ -227,8 +227,8 @@ "widget_type": "customNode", "expanded": false, "node": { - "label": "M3GNet", - "function": "pyiron_nodes.atomistic.engine.ase.M3GNet", + "label": "GRACE", + "function": "pyiron_nodes.atomistic.engine.ase.GRACE", "inputs": {} } }, @@ -311,7 +311,7 @@ "targetHandle": "structure" }, { - "source": "M3GNet", + "source": "GRACE", "target": "Minimize", "sourceHandle": "out", "targetHandle": "engine" diff --git a/notebooks/development/murn3.json b/notebooks/development/murn3.json index 05377ae..35b5007 100644 --- a/notebooks/development/murn3.json +++ b/notebooks/development/murn3.json @@ -32,10 +32,10 @@ "widget_type": "customNode", "expanded": false }, - "M3GNet": { - "id": "M3GNet", - "import_path": "pyiron_nodes.atomistic.engine.ase.M3GNet", - "label": "M3GNet", + "GRACE": { + "id": "GRACE", + "import_path": "pyiron_nodes.atomistic.engine.ase.GRACE", + "label": "GRACE", "parent_id": "BulkStaticEnergy", "level": 1, "graph": null, @@ -43,8 +43,8 @@ "widget_type": "customNode", "expanded": false, "node": { - "label": "M3GNet", - "function": "pyiron_nodes.atomistic.engine.ase.M3GNet", + "label": "GRACE", + "function": "pyiron_nodes.atomistic.engine.ase.GRACE", "inputs": {} } }, @@ -132,7 +132,7 @@ "targetHandle": "structure" }, { - "source": "M3GNet", + "source": "GRACE", "target": "Static", "sourceHandle": "out", "targetHandle": "engine" @@ -187,10 +187,10 @@ "widget_type": "customNode", "expanded": false }, - "M3GNet": { - "id": "M3GNet", - "import_path": "pyiron_nodes.atomistic.engine.ase.M3GNet", - "label": "M3GNet", + "GRACE": { + "id": "GRACE", + "import_path": "pyiron_nodes.atomistic.engine.ase.GRACE", + "label": "GRACE", "parent_id": "BulkStaticEnergy", "level": 1, "graph": null, @@ -198,8 +198,8 @@ "widget_type": "customNode", "expanded": false, "node": { - "label": "M3GNet", - "function": "pyiron_nodes.atomistic.engine.ase.M3GNet", + "label": "GRACE", + "function": "pyiron_nodes.atomistic.engine.ase.GRACE", "inputs": {} } }, @@ -327,7 +327,7 @@ "targetHandle": "structure" }, { - "source": "M3GNet", + "source": "GRACE", "target": "Static", "sourceHandle": "out", "targetHandle": "engine" diff --git a/notebooks/development/murnaghan2.json b/notebooks/development/murnaghan2.json index 379778f..07318d5 100644 --- a/notebooks/development/murnaghan2.json +++ b/notebooks/development/murnaghan2.json @@ -29,10 +29,10 @@ } } }, - "M3GNet": { - "id": "M3GNet", - "import_path": "pyiron_nodes.atomistic.engine.ase.M3GNet", - "label": "M3GNet", + "GRACE": { + "id": "GRACE", + "import_path": "pyiron_nodes.atomistic.engine.ase.GRACE", + "label": "GRACE", "parent_id": null, "level": 0, "graph": null, @@ -40,8 +40,8 @@ "widget_type": "customNode", "expanded": false, "node": { - "label": "M3GNet", - "function": "pyiron_nodes.atomistic.engine.ase.M3GNet", + "label": "GRACE", + "function": "pyiron_nodes.atomistic.engine.ase.GRACE", "inputs": {} } }, @@ -94,7 +94,7 @@ "targetHandle": "structure" }, { - "source": "M3GNet", + "source": "GRACE", "target": "Static", "sourceHandle": "out", "targetHandle": "engine" @@ -168,10 +168,10 @@ } } }, - "M3GNet": { - "id": "M3GNet", - "import_path": "pyiron_nodes.atomistic.engine.ase.M3GNet", - "label": "M3GNet", + "GRACE": { + "id": "GRACE", + "import_path": "pyiron_nodes.atomistic.engine.ase.GRACE", + "label": "GRACE", "parent_id": "subgraph", "level": 1, "graph": null, @@ -179,8 +179,8 @@ "widget_type": "customNode", "expanded": false, "node": { - "label": "M3GNet", - "function": "pyiron_nodes.atomistic.engine.ase.M3GNet", + "label": "GRACE", + "function": "pyiron_nodes.atomistic.engine.ase.GRACE", "inputs": {} } }, @@ -304,7 +304,7 @@ "targetHandle": "structure" }, { - "source": "M3GNet", + "source": "GRACE", "target": "Static", "sourceHandle": "out", "targetHandle": "engine" @@ -354,4 +354,4 @@ ], "obj_type": "pyiron_core.pyiron_workflow.graph.base.GraphEdge" } -} \ No newline at end of file +} diff --git a/notebooks/development/murnaghan3.json b/notebooks/development/murnaghan3.json index 7294f8f..671d0f8 100644 --- a/notebooks/development/murnaghan3.json +++ b/notebooks/development/murnaghan3.json @@ -29,10 +29,10 @@ } } }, - "M3GNet": { - "id": "M3GNet", - "import_path": "pyiron_nodes.atomistic.engine.ase.M3GNet", - "label": "M3GNet", + "GRACE": { + "id": "GRACE", + "import_path": "pyiron_nodes.atomistic.engine.ase.GRACE", + "label": "GRACE", "parent_id": null, "level": 0, "graph": null, @@ -40,8 +40,8 @@ "widget_type": "customNode", "expanded": false, "node": { - "label": "M3GNet", - "function": "pyiron_nodes.atomistic.engine.ase.M3GNet", + "label": "GRACE", + "function": "pyiron_nodes.atomistic.engine.ase.GRACE", "inputs": {} } }, @@ -94,7 +94,7 @@ "targetHandle": "structure" }, { - "source": "M3GNet", + "source": "GRACE", "target": "Static", "sourceHandle": "out", "targetHandle": "engine" @@ -168,10 +168,10 @@ } } }, - "M3GNet": { - "id": "M3GNet", - "import_path": "pyiron_nodes.atomistic.engine.ase.M3GNet", - "label": "M3GNet", + "GRACE": { + "id": "GRACE", + "import_path": "pyiron_nodes.atomistic.engine.ase.GRACE", + "label": "GRACE", "parent_id": "subgraph", "level": 1, "graph": null, @@ -179,8 +179,8 @@ "widget_type": "customNode", "expanded": false, "node": { - "label": "M3GNet", - "function": "pyiron_nodes.atomistic.engine.ase.M3GNet", + "label": "GRACE", + "function": "pyiron_nodes.atomistic.engine.ase.GRACE", "inputs": {} } }, @@ -324,7 +324,7 @@ "targetHandle": "structure" }, { - "source": "M3GNet", + "source": "GRACE", "target": "Static", "sourceHandle": "out", "targetHandle": "engine" diff --git a/notebooks/development/pyironflow_demo.ipynb b/notebooks/development/pyironflow_demo.ipynb index 02a658c..364efeb 100644 --- a/notebooks/development/pyironflow_demo.ipynb +++ b/notebooks/development/pyironflow_demo.ipynb @@ -65,12 +65,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "\u001b[1G\u001b[0K⠙\u001b[1G\u001b[0K⠹\u001b[1G\u001b[0K⠸\u001b[1G\u001b[0K⠼\u001b[1G\u001b[0K\u001b[1G\u001b[0JNeed to install the following packages:\n", + "\u001B[1G\u001B[0K⠙\u001B[1G\u001B[0K⠹\u001B[1G\u001B[0K⠸\u001B[1G\u001B[0K⠼\u001B[1G\u001B[0K\u001B[1G\u001B[0JNeed to install the following packages:\n", "esbuild@0.25.2\n", - "Ok to proceed? (y) \u001b[20G\n", - "\u001b[1G\u001b[0K⠙\u001b[1G\u001b[0K\u001b[1mnpm\u001b[22m \u001b[31merror\u001b[39m canceled\n", - "\u001b[1G\u001b[0K⠙\u001b[1G\u001b[0K\u001b[1mnpm\u001b[22m \u001b[31merror\u001b[39m A complete log of this run can be found in: /Users/joerg/.npm/_logs/2025-04-10T19_25_41_110Z-debug-0.log\n", - "\u001b[1G\u001b[0K⠙\u001b[1G\u001b[0K" + "Ok to proceed? (y) \u001B[20G\n", + "\u001B[1G\u001B[0K⠙\u001B[1G\u001B[0K\u001B[1mnpm\u001B[22m \u001B[31merror\u001B[39m canceled\n", + "\u001B[1G\u001B[0K⠙\u001B[1G\u001B[0K\u001B[1mnpm\u001B[22m \u001B[31merror\u001B[39m A complete log of this run can be found in: /Users/joerg/.npm/_logs/2025-04-10T19_25_41_110Z-debug-0.log\n", + "\u001B[1G\u001B[0K⠙\u001B[1G\u001B[0K" ] } ], @@ -965,10 +965,10 @@ "evalue": "name 'xx' is not defined", "output_type": "error", "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[24], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mxx\u001b[49m\n", - "\u001b[0;31mNameError\u001b[0m: name 'xx' is not defined" + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mNameError\u001B[0m Traceback (most recent call last)", + "Cell \u001B[0;32mIn[24], line 1\u001B[0m\n\u001B[0;32m----> 1\u001B[0m \u001B[43mxx\u001B[49m\n", + "\u001B[0;31mNameError\u001B[0m: name 'xx' is not defined" ] } ], @@ -1245,7 +1245,7 @@ "from pyiron_core.pyiron_workflow import Workflow\n", "\n", "wf = Workflow('compute_elastic_constants')\n", - "wf.engine = pn.atomistic.engine.ase.M3GNet()\n", + "wf.engine = pn.atomistic.engine.ase.GRACE()\n", "wf.bulk = pn.atomistic.structure.build.Bulk('Pb', cubic=True)\n", "wf.input_elastic = pn.atomistic.property.elastic.InputElasticTensor()\n", "wf.elastic = pn.atomistic.property.elastic.ElasticConstants(structure=wf.bulk, engine=wf.engine, parameters=wf.input_elastic)\n", @@ -1467,7 +1467,7 @@ "from pyiron_core.pyiron_workflow import Workflow\n", "\n", "wf = Workflow('phonons')\n", - "wf.engine = pn.atomistic.engine.ase.M3GNet()\n", + "wf.engine = pn.atomistic.engine.ase.GRACE()\n", "wf.bulk = pn.atomistic.structure.build.CubicBulkCell('Pb', cell_size=3)\n", "wf.phonopy = pn.atomistic.property.phonons.CreatePhonopy(structure=wf.bulk, engine=wf.engine) #, parameters=parameters)\n", "wf.dos = pn.atomistic.property.phonons.GetTotalDos(phonopy=wf.phonopy.outputs.phonopy)\n", diff --git a/notebooks/development/tests.ipynb b/notebooks/development/tests.ipynb index bf3a187..bf0cf27 100644 --- a/notebooks/development/tests.ipynb +++ b/notebooks/development/tests.ipynb @@ -64,10 +64,10 @@ "evalue": "name 'xx' is not defined", "output_type": "error", "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[4], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mxx\u001b[49m\n", - "\u001b[0;31mNameError\u001b[0m: name 'xx' is not defined" + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mNameError\u001B[0m Traceback (most recent call last)", + "Cell \u001B[0;32mIn[4], line 1\u001B[0m\n\u001B[0;32m----> 1\u001B[0m \u001B[43mxx\u001B[49m\n", + "\u001B[0;31mNameError\u001B[0m: name 'xx' is not defined" ] } ], @@ -207,7 +207,7 @@ "source": [ "from pyiron_core.pyiron_workflow.graph import gui\n", "\n", - "pf = gui.PyironFlow(['flow_macro', 'Lammps', 'iterCellSize', 'elastic_m3gnet', 'minimize', 'assyst', 'calphy', 'ase_fit', 'assyst2', 'linearfit', 'universal_potential', 'landau']) # 'calphy', 'landau',\n", + "pf = gui.PyironFlow(['flow_macro', 'Lammps', 'iterCellSize', 'elastic_GRACE', 'minimize', 'assyst', 'calphy', 'ase_fit', 'assyst2', 'linearfit', 'universal_potential', 'landau']) # 'calphy', 'landau',\n", "pf.gui" ] }, @@ -1019,7 +1019,7 @@ "source": [ "from pyiron_core.pyiron_workflow.graph import gui\n", "\n", - "pf = gui.PyironFlow(['flow_macro', 'Code1', 'iterCellSize', 'elastic_m3gnet', 'minimize', 'calphy', 'assyst']) \n", + "pf = gui.PyironFlow(['flow_macro', 'Code1', 'iterCellSize', 'elastic_GRACE', 'minimize', 'calphy', 'assyst'])\n", "pf.gui" ] }, diff --git a/notebooks/running/cecam.ipynb b/notebooks/running/cecam.ipynb index 8b8efad..9b0ecbb 100644 --- a/notebooks/running/cecam.ipynb +++ b/notebooks/running/cecam.ipynb @@ -549,8 +549,8 @@ " wf = Workflow('subgraph')\n", "\n", " wf.Bulk = nodes.atomistic.structure.build.Bulk(name=name, a=a)\n", - " wf.M3GNet = nodes.atomistic.engine.ase.M3GNet()\n", - " wf.Static = nodes.atomistic.calculator.ase.Static(structure=wf.Bulk, engine=wf.M3GNet)\n", + " wf.GRACE = nodes.atomistic.engine.ase.GRACE()\n", + " wf.Static = nodes.atomistic.calculator.ase.Static(structure=wf.Bulk, engine=wf.GRACE)\n", " wf.GetEnergyLast = nodes.atomistic.calculator.output.GetEnergyLast(calculator=wf.Static)\n", "\n", " out = wf.GetEnergyLast.pull()\n", @@ -575,8 +575,8 @@ " wf = Workflow('subgraph')\n", "\n", " wf.Bulk = nodes.atomistic.structure.build.Bulk(name=name, a=a)\n", - " wf.M3GNet = nodes.atomistic.engine.ase.M3GNet()\n", - " wf.Static = nodes.atomistic.calculator.ase.Static(structure=wf.Bulk, engine=wf.M3GNet)\n", + " wf.GRACE = nodes.atomistic.engine.ase.GRACE()\n", + " wf.Static = nodes.atomistic.calculator.ase.Static(structure=wf.Bulk, engine=wf.GRACE)\n", " wf.GetEnergyLast = nodes.atomistic.calculator.output.GetEnergyLast(calculator=wf.Static)\n", "\n", " return wf.GetEnergyLast.outputs.energy_last, wf.Bulk" diff --git a/project-env.yml b/project-env.yml index 6eff55f..e9640b1 100644 --- a/project-env.yml +++ b/project-env.yml @@ -15,34 +15,33 @@ dependencies: - ipytree =0.2.2 - ipywidgets =8.1.6 - jupyterlab =4.4.1 -- numpy =1.26.4 +- numpy =2.3.4 - sqlalchemy =2.0.38 - traitlets =5.14.3 # Nodes (pyiron_nodes) -- ase =3.24.0 -- assyst =0.3.0 +- ase =3.26.0 +- assyst =0.9.0 - bayesian-optimization =2.0.3 -- calphy =1.3.13 -- grace-tensorpotential =0.5.1 +- calphy =1.4.3 +- grace-tensorpotential =0.5.3 - iprpy-data =2023.07.25 - lammps =2024.08.29=*openmpi* -- landau =1.3.4 -- matgl =1.1.3 -- matplotlib =3.10.0 +- landau =1.5.2 +- matplotlib =3.10.7 - nglview =3.1.4 -- pandas =2.2.3 -- phonopy =2.43.2 -- pint =0.24.4 -- psycopg2 =2.9.9 -- pyiron_atomistics =0.7.18 -- pyiron_base =0.14.3 +- pandas =2.3.3 +- phonopy =2.43.6 +- pint =0.25.0 +- psycopg2 =2.9.10 +- pyiron_atomistics =0.8.4 +- pyiron_base =0.15.9 - pyiron-data =0.0.30 -- pyiron_lammps =0.4.1 +- pyiron_lammps =0.4.9 - python-ace =0.3.1 - python-ternary =1.0.8 - pyxtal =1.1.0 - scikit-image =0.25.2 - scikit-learn =1.6.1 -- scipy =1.15.2 +- scipy =1.16.2 - seaborn =0.13.2 -- structuretoolkit = 0.0.32 +- structuretoolkit = 0.0.37 diff --git a/pyiron_core/pyiron_nodes/atomistic/calculator/ase.py b/pyiron_core/pyiron_nodes/atomistic/calculator/ase.py index d60239a..9b18ad8 100644 --- a/pyiron_core/pyiron_nodes/atomistic/calculator/ase.py +++ b/pyiron_core/pyiron_nodes/atomistic/calculator/ase.py @@ -84,7 +84,7 @@ def Minimize( atoms_relaxed.calc = None # ase calculator is not pickable!! out.structures.append(atoms_relaxed) - out.is_converged = dyn.converged() + out.is_converged = dyn.converged(dyn.optimizable.get_gradient()) out.iter_steps = dyn.nsteps return out diff --git a/pyiron_core/pyiron_nodes/atomistic/engine/ase.py b/pyiron_core/pyiron_nodes/atomistic/engine/ase.py index 5813693..64cf0c8 100644 --- a/pyiron_core/pyiron_nodes/atomistic/engine/ase.py +++ b/pyiron_core/pyiron_nodes/atomistic/engine/ase.py @@ -14,18 +14,6 @@ def EMT(): return out -@as_function_node("engine") -def M3GNet(model: str = "M3GNet-MP-2021.2.8-PES"): - """M3GNet: A universal neural network potential for atomistic simulations.""" - import matgl - from matgl.ext.ase import M3GNetCalculator - - from pyiron_core.pyiron_nodes.atomistic.engine.generic import OutputEngine - - out = OutputEngine(calculator=M3GNetCalculator(matgl.load_model(model))) - return out - - @as_function_node("engine") def GRACE(model: str = "GRACE-1L-MP-r6"): """Universal Graph Atomic Cluster Expansion models.""" diff --git a/pyiron_core/pyiron_nodes/local_workflows/test.py b/pyiron_core/pyiron_nodes/local_workflows/test.py index 9f5b086..90e0c6e 100644 --- a/pyiron_core/pyiron_nodes/local_workflows/test.py +++ b/pyiron_core/pyiron_nodes/local_workflows/test.py @@ -8,9 +8,9 @@ def BulkStaticEnergy(name: str, a: float = None, store: bool = True, _db=None) - wf = Workflow("subgraph") wf.Bulk = pyiron_nodes.atomistic.structure.build.Bulk(name=name, a=a) - wf.M3GNet = pyiron_nodes.atomistic.engine.ase.M3GNet() + wf.GRACE = pyiron_nodes.atomistic.engine.ase.GRACE() wf.Static = pyiron_nodes.atomistic.calculator.ase.Static( - structure=wf.Bulk, engine=wf.M3GNet + structure=wf.Bulk, engine=wf.GRACE ) wf.GetEnergyLast = pyiron_nodes.atomistic.calculator.output.GetEnergyLast( calculator=wf.Static @@ -28,9 +28,9 @@ def BulkStaticEnergyF(name: str, a: float = None, store: bool = True, _db=None): wf = Workflow("subgraph") wf.Bulk = pyiron_nodes.atomistic.structure.build.Bulk(name=name, a=a) - wf.M3GNet = pyiron_nodes.atomistic.engine.ase.M3GNet() + wf.GRACE = pyiron_nodes.atomistic.engine.ase.GRACE() wf.Static = pyiron_nodes.atomistic.calculator.ase.Static( - structure=wf.Bulk, engine=wf.M3GNet + structure=wf.Bulk, engine=wf.GRACE ) wf.GetEnergyLast = pyiron_nodes.atomistic.calculator.output.GetEnergyLast( calculator=wf.Static diff --git a/pyiron_core/pyiron_workflow/wf_graph_tools.py b/pyiron_core/pyiron_workflow/wf_graph_tools.py index 4040ec9..a2710db 100644 --- a/pyiron_core/pyiron_workflow/wf_graph_tools.py +++ b/pyiron_core/pyiron_workflow/wf_graph_tools.py @@ -32,7 +32,7 @@ wf = Workflow("compute_elastic_constants") - wf.engine = pyiron_nodes.atomistic.engine.ase.M3GNet() + wf.engine = pyiron_nodes.atomistic.engine.ase.GRACE() wf.input_elastic = pyiron_nodes.atomistic.property.elastic.InputElasticTensor() wf.bulk = pyiron_nodes.atomistic.structure.build.Bulk(name=Pb, cubic=True) wf.elastic = pyiron_nodes.atomistic.property.elastic.ElasticConstants( diff --git a/pyproject.toml b/pyproject.toml index d727d94..9399931 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,38 +25,38 @@ classifiers = [ dependencies = [ "anywidget==0.9.18", - "ase==3.24.0", - "assyst==0.3.0", + "ase==3.26.0", + "assyst==0.9.0", "bayesian-optimization==2.0.3", "black==25.1.0", - "calphy==1.3.13", + "calphy==1.4.3", "cloudpickle==3.1.1", - "grace-tensorpotential==0.5.1", + "grace-tensorpotential==0.5.3", "ipytree==0.2.2", "ipywidgets==8.1.6", "jupyterlab==4.4.1", "lammps==2024.8.29", - "landau==1.3.4", + "landau==1.5.2", "matgl==1.1.3", "matplotlib==3.10.0", "nglview==3.1.4", - "numpy==1.26.4", - "pandas==2.2.3", - "phonopy==2.43.2", - "pint==0.24.4", - "psycopg2==2.9.9", - "pyiron_atomistics==0.7.18", - "pyiron_base==0.14.3", + "numpy==2.3.4", + "pandas==2.3.3", + "phonopy==2.43.6", + "pint==0.25.0", + "psycopg2==2.9.10", + "pyiron_atomistics==0.8.4", + "pyiron_base==0.15.9", "pyiron-data==0.0.30", - "pyiron_lammps==0.4.1", + "pyiron_lammps==0.4.9", "python-ace==0.3.1", "python-ternary==1.0.8", "pyxtal==1.1.0", "scikit-image==0.25.2", "scikit-learn==1.6.1", - "scipy==1.15.2", + "scipy==1.16.2", "sqlalchemy==2.0.38", - "structuretoolkit[pyxtal]==0.0.32", + "structuretoolkit==0.0.37", "traitlets==5.14.3", ] dynamic = ["version"] @@ -140,4 +140,4 @@ ignore = [ "**/__init__.py" = ["F401"] # Ignore unused imports in init files -- we specify APIs this way "pyiron_core/pyiron_database/api.py" = ["F401"] "pyiron_core/pyiron_workflow/api/*.py" = ["F401"] -"pyiron_core/pyironflow/api.py" = ["F401"] \ No newline at end of file +"pyiron_core/pyironflow/api.py" = ["F401"] diff --git a/stored_workflows/energy.json b/stored_workflows/energy.json index 17ba089..832ae37 100644 --- a/stored_workflows/energy.json +++ b/stored_workflows/energy.json @@ -19,10 +19,10 @@ } } }, - "M3GNet": { - "id": "M3GNet", - "import_path": "pyiron_core.pyiron_nodes.atomistic.engine.ase.M3GNet", - "label": "M3GNet", + "GRACE": { + "id": "GRACE", + "import_path": "pyiron_core.pyiron_nodes.atomistic.engine.ase.GRACE", + "label": "GRACE", "parent_id": null, "level": 0, "graph": null, @@ -30,8 +30,8 @@ "widget_type": "customNode", "expanded": false, "node": { - "label": "M3GNet", - "function": "pyiron_core.pyiron_nodes.atomistic.engine.ase.M3GNet", + "label": "GRACE", + "function": "pyiron_core.pyiron_nodes.atomistic.engine.ase.GRACE", "inputs": {} } }, @@ -115,7 +115,7 @@ "targetHandle": "structure" }, { - "source": "M3GNet", + "source": "GRACE", "target": "Static", "sourceHandle": "out", "targetHandle": "engine" diff --git a/stored_workflows/murnaghan.json b/stored_workflows/murnaghan.json index e7c745b..a372ffd 100644 --- a/stored_workflows/murnaghan.json +++ b/stored_workflows/murnaghan.json @@ -19,10 +19,10 @@ } } }, - "M3GNet": { - "id": "M3GNet", - "import_path": "pyiron_core.pyiron_nodes.atomistic.engine.ase.M3GNet", - "label": "M3GNet", + "GRACE": { + "id": "GRACE", + "import_path": "pyiron_core.pyiron_nodes.atomistic.engine.ase.GRACE", + "label": "GRACE", "parent_id": null, "level": 0, "graph": null, @@ -30,8 +30,8 @@ "widget_type": "customNode", "expanded": false, "node": { - "label": "M3GNet", - "function": "pyiron_core.pyiron_nodes.atomistic.engine.ase.M3GNet", + "label": "GRACE", + "function": "pyiron_core.pyiron_nodes.atomistic.engine.ase.GRACE", "inputs": {} } }, @@ -109,7 +109,7 @@ "edges": { "values": [ { - "source": "M3GNet", + "source": "GRACE", "target": "Static", "sourceHandle": "out", "targetHandle": "engine" diff --git a/stored_workflows/murnaghan2.json b/stored_workflows/murnaghan2.json index ff08571..818984c 100644 --- a/stored_workflows/murnaghan2.json +++ b/stored_workflows/murnaghan2.json @@ -29,10 +29,10 @@ } } }, - "M3GNet": { - "id": "M3GNet", - "import_path": "pyiron_core.pyiron_nodes.atomistic.engine.ase.M3GNet", - "label": "M3GNet", + "GRACE": { + "id": "GRACE", + "import_path": "pyiron_core.pyiron_nodes.atomistic.engine.ase.GRACE", + "label": "GRACE", "parent_id": null, "level": 0, "graph": null, @@ -40,8 +40,8 @@ "widget_type": "customNode", "expanded": false, "node": { - "label": "M3GNet", - "function": "pyiron_core.pyiron_nodes.atomistic.engine.ase.M3GNet", + "label": "GRACE", + "function": "pyiron_core.pyiron_nodes.atomistic.engine.ase.GRACE", "inputs": {} } }, @@ -94,7 +94,7 @@ "targetHandle": "structure" }, { - "source": "M3GNet", + "source": "GRACE", "target": "Static", "sourceHandle": "out", "targetHandle": "engine"