{ "cells": [ { "cell_type": "markdown", "id": "815d52ae", "metadata": {}, "source": [ "## Overview\n", "\n", "Import reference data from a short trajectory of aqueous sodium chloride, split it into training and\n", "validation sets, fine-tune the packaged ``QET-PBE-2025`` foundation model with ParAMS,\n", "and reuse the deployed model in a production MD job.\n", "\n", "QET combines an equivariant neural network with charge equilibration, so it can describe charge redistribution without requiring atomic-charge labels during fine-tuning." ] }, { "cell_type": "code", "execution_count": 1, "id": "78e334e2", "metadata": {}, "outputs": [], "source": [ "from pathlib import Path\n", "from typing import Any\n", "\n", "import matplotlib.pyplot as plt\n", "import scm.plams as plams\n", "from scm.base import ChemicalSystem\n", "from scm.params import ParAMSJob, ResultsImporter" ] }, { "cell_type": "markdown", "id": "74907faf", "metadata": {}, "source": [ "## Run a quick reference MD job for aqueous NaCl\n", "\n", "In this example we generate some simple reference data.\n", "\n", "If you \n", "\n", "* already have reference data in the ParAMS .yaml format, then you can skip this step\n", "* already have reference data in the ASE .xyz or .db format, you can convert it to the ParAMS .yaml format. See :ref:`convert_params_ase`." ] }, { "cell_type": "code", "execution_count": 2, "id": "1d3bf7ab", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAACWCAYAAAAmC+ydAABEAElEQVR4Ae2dCVxV1fbHzzn3Ms8is4CaI2hZDmlPA6em98x8BWajr2f6T7N6amWWAmqWmdnT8iWaWlaa5JSmlgNeNWecQXBAIWaQeebee/5rHbh0RZALgmL+9udzPOfss/fa+3xvcffvrr32FgQkEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEGgAAbEBZVEUBEAABEDgNhGQZbnOv9eiqDySm7Fr3EBz2m/GrsM0CIAACIBASyNQ5xdaS+so+gMCIAACdymBu23wX6mm5ObVO7dAtN2l/7nitUEABECgfgIQIPUzQgkQAAEQuF0EFPHRs2dPs6FDh/o6OzvrtFpt9d9ttVpNjhFZqqioKCwvLy+ysrJSlZSUVD9vqk47OjoKZmZmWldX15Lo6Gg5LCyM220q89V2IAqqUeACBEAABP7SBJr8i+ovTQsvBwIgAALNSCAoKEjl5+fHA3w9DfBpPC7K8+bNs8nOzh5BwuMPEgCJLDh0Ol316J8FCYmDMsoro6650HNLvV4vU54gSZLI1zfTZRI3ih3qSznZziHRY082Hcm2js5N/R2i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3mRPvb+/IAYHh8rz5tl6b9iwwZNiP3JJfGjfeuutCxAfd8l/NnhNEACBO4IAYkDuiI8JnQQBEPhLEjDPt3DK+qf5Fr2N+Va1VeyQQd3f1usLrXSyqkbMR2W4Au3zQRgqD+NrzuNHXl4OKQ4O1rSqrbqsuNg5i7a+oGDrCr0oqisKC69ch1Cr+FcMTpYK5TktU0tnw6Esc1t9ry8vV7l6WuQ/+KBHTk6OTpuX1yHn6lWudkEoKbHQZ2Z+KWRm8r3yD19ck2j/jap7w/max8Y3WkmSS3lVYZrlVfnyxk/ruf72264d27fv5EurXUX++9//jof4qAcYHoMACIDALSYAD8gtBo7mQAAEQMAQWL7mg/5PrTv9zsKYVHcrB7NsR0lUKZtg0Oq3BIn/PEu8Tqxy/HnPebTok3LwtaGsSBv78ZK8Eg3buS7vv1fGAsRMkizozJqGbf1Znm1X5lWeK+tVtmcoV1mG26GiVF+SdHSw4JEFnU6s0OvLaS+OYnoumtF2f1yIknGfDbYpt9JIZZHqf7ls9Y1yQe+hpfiNDBYgWq3VVb1eJ5eX51C7ZqSPivWyrKU6lY4RLsPX9H60QaOVVFp6+Kid3ZqDPXo8se/DD9++DPFxLVvcgQAIgEBLIFDjz35L6BL6AAIgAAJ3FQHe/Zt35Wa3Aw2nbyrR33RnMtCajgqpVatOZM/Oztxc6FC5mq7B6a0W1IbLylV2qbwhg59ZKgd3S622rbrm52oa6MuSXq+SaMNAFjwqtdqC8kV1YWFsH/K0qGl3c76nQ+Lnyrnymm/+PCSJ65uzqKDDkg41CQluQykjkkeHbClt0Fnge7m0NPk+Eh8Of4oiLsuiiAWIqDM3t1aVlmauiop6aSE94L5SUezzwSyQQAAEQAAEQAAEQAAEQEAQQhQXB5HgAbupB8CZQMAA04SiKAICIAACIHCrCfAfaSQQAAEQAIHbR6CRf4dNdZaEkv2YRrQRJAQFmQ4lI8OlEW2YYj+wupCrqyD7+d3YSxQa+ufO8NUVcQECIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIHDnEvh/DqYxSZ5KQf4AAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sodium = ChemicalSystem.from_smiles(\"[Na+]\")\n", "chloride = ChemicalSystem.from_smiles(\"[Cl-]\")\n", "water = ChemicalSystem.from_smiles(\"O\")\n", "\n", "for system in (sodium, chloride, water):\n", " system.enable_atom_attributes(\"forcefield\")\n", "\n", "sodium.atoms[0].forcefield.type = \"IP\"\n", "sodium.atoms[0].forcefield.charge = 1.0\n", "chloride.atoms[0].forcefield.type = \"IM\"\n", "chloride.atoms[0].forcefield.charge = -1.0\n", "water.atoms[0].forcefield.type = \"OW\"\n", "water.atoms[0].forcefield.charge = -0.834\n", "water.atoms[1].forcefield.type = \"HW\"\n", "water.atoms[1].forcefield.charge = 0.417\n", "water.atoms[2].forcefield.type = \"HW\"\n", "water.atoms[2].forcefield.charge = 0.417\n", "\n", "reference_settings = plams.Settings()\n", "reference_settings.runscript.nproc = 1\n", "reference_settings.input.ForceField.Type = \"Amber95\"\n", "\n", "box = plams.packmol(\n", " [sodium, chloride, water], n_molecules=[1, 1, 24], density=1.029\n", ")\n", "box = plams.preoptimize(box, settings=reference_settings)\n", "plams.view(box, direction=\"tilt_x\", show_lattice_vectors=True)" ] }, { "cell_type": "code", "execution_count": 3, "id": "e00d3332", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[12.08|15:17:24] JOB amber95_md STARTED\n", "[12.08|15:17:24] JOB amber95_md RUNNING\n", "[12.08|15:17:31] JOB amber95_md FINISHED\n", "[12.08|15:17:31] JOB amber95_md SUCCESSFUL\n" ] } ], "source": [ "reference_job = plams.AMSNVTJob(\n", " settings=reference_settings,\n", " molecule=box,\n", " name=\"amber95_md\",\n", " nsteps=1000,\n", " timestep=0.5,\n", " temperature=300,\n", " thermostat=\"Berendsen\",\n", " tau=100,\n", " writeenginegradients=True,\n", " samplingfreq=100,\n", ")\n", "reference_job.run();" ] }, { "cell_type": "markdown", "id": "7e9ed22d", "metadata": {}, "source": [ "## Import reference results with ParAMS ResultsImporter\n", "\n", "Here we use the ``add_trajectory_singlepoints`` results importer. For more details about usage of the results importers, see the corresponding tutorials.\n", "\n", "QET fine-tuning uses the imported energy and force labels; explicit atomic charges are not required." ] }, { "cell_type": "code", "execution_count": 4, "id": "3059b8f2", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[\"energy('amber95_md_frame001')\",\n", " \"energy('amber95_md_frame002')\",\n", " \"energy('amber95_md_frame003')\",\n", " \"energy('amber95_md_frame004')\",\n", " \"energy('amber95_md_frame005')\",\n", " \"energy('amber95_md_frame006')\",\n", " \"energy('amber95_md_frame007')\",\n", " \"energy('amber95_md_frame008')\",\n", " \"energy('amber95_md_frame009')\",\n", " \"energy('amber95_md_frame010')\",\n", " \"energy('amber95_md_frame011')\",\n", " \"forces('amber95_md_frame001')\",\n", " \"forces('amber95_md_frame002')\",\n", " \"forces('amber95_md_frame003')\",\n", " \"forces('amber95_md_frame004')\",\n", " \"forces('amber95_md_frame005')\",\n", " \"forces('amber95_md_frame006')\",\n", " \"forces('amber95_md_frame007')\",\n", " \"forces('amber95_md_frame008')\",\n", " \"forces('amber95_md_frame009')\",\n", " \"forces('amber95_md_frame010')\",\n", " \"forces('amber95_md_frame011')\"]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "importer = ResultsImporter(settings={\"units\": {\"energy\": \"eV\", \"forces\": \"eV/angstrom\"}})\n", "importer.add_trajectory_singlepoints(reference_job.results.rkfpath(), properties=[\"energy\", \"forces\"])" ] }, { "cell_type": "markdown", "id": "7bc67350", "metadata": {}, "source": [ "## Optional: split into training/validation sets\n", "\n", "Machine learning potentials in ParAMS can only be trained if there is both a training set and a validation set.\n", "\n", "If you do not specify a validation set, the training set will automatically be split into a training and validation set when the parametrization starts.\n", "\n", "Here, we will manually split the data set ourselves.\n", "\n", "Let's first print the information in the current ResultsImporter training set:" ] }, { "cell_type": "code", "execution_count": 5, "id": "05d549dc", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Original training set:\n", " number of entries: 22\n", " number of job IDs: 11\n", " job IDs: {'amber95_md_frame005', 'amber95_md_frame002', 'amber95_md_frame008', 'amber95_md_frame004', 'amber95_md_frame010', 'amber95_md_frame007', 'amber95_md_frame001', 'amber95_md_frame003', 'amber95_md_frame011', 'amber95_md_frame006', 'amber95_md_frame009'}\n" ] } ], "source": [ "def print_data_set_summary(data_set: Any, title: str) -> None:\n", " print(f\"{title}:\")\n", " print(f\" number of entries: {len(data_set)}\")\n", " print(f\" number of job IDs: {len(data_set.jobids)}\")\n", " print(f\" job IDs: {data_set.jobids}\")\n", "\n", "\n", "print_data_set_summary(importer.data_sets[\"training_set\"], \"Original training set\")" ] }, { "cell_type": "markdown", "id": "2f9dfaa0", "metadata": {}, "source": [ "Above, the number of entries is twice the number of jobids because the ``energy`` and ``forces`` extractors are separate entries.\n", "\n", "The energy and force extractors for a given structure (e.g. frame006) must belong to the same data set. For this reason, when doing the split, we call ``split_by_jobid``" ] }, { "cell_type": "code", "execution_count": 6, "id": "9670a3f1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training set:\n", " number of entries: 16\n", " number of job IDs: 8\n", " job IDs: {'amber95_md_frame005', 'amber95_md_frame008', 'amber95_md_frame004', 'amber95_md_frame007', 'amber95_md_frame001', 'amber95_md_frame011', 'amber95_md_frame006', 'amber95_md_frame009'}\n", "Validation set:\n", " number of entries: 6\n", " number of job IDs: 3\n", " job IDs: {'amber95_md_frame010', 'amber95_md_frame002', 'amber95_md_frame003'}\n" ] } ], "source": [ "training_set, validation_set = importer.data_sets[\"training_set\"].split_by_jobids(0.8, 0.2, seed=314)\n", "importer.data_sets[\"training_set\"] = training_set\n", "importer.data_sets[\"validation_set\"] = validation_set\n", "\n", "print_data_set_summary(training_set, \"Training set\")\n", "print_data_set_summary(validation_set, \"Validation set\")" ] }, { "cell_type": "markdown", "id": "c6c1b572", "metadata": {}, "source": [ "## Store the reference results in ParAMS yaml format\n", "\n", "Use ``ResultsImporter.store()`` to store all the data in the results importer in the ParAMS .yaml format:" ] }, { "cell_type": "code", "execution_count": 7, "id": "eb26f36d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "yaml_ref_data/job_collection.yaml\n", "yaml_ref_data/job_collection_engines.yaml\n", "yaml_ref_data/results_importer_settings.yaml\n", "yaml_ref_data/training_set.yaml\n", "yaml_ref_data/validation_set.yaml\n" ] } ], "source": [ "yaml_dir = Path(\"yaml_ref_data\")\n", "importer.store(str(yaml_dir), backup=False)\n", "\n", "for path in sorted(yaml_dir.iterdir()):\n", " print(path)" ] }, { "cell_type": "markdown", "id": "86cb32ca", "metadata": {}, "source": [ "## Set up and run a ParAMSJob for training ML Potentials\n", "\n", "See the ParAMS MachineLearning documentation for all available input options.\n", "\n", "Select the MatGL backend and the packaged ``QET-PBE-2025`` model to fine-tune QET.\n", "\n", "Training the model may take a few minutes." ] }, { "cell_type": "code", "execution_count": 8, "id": "652f481c", "metadata": {}, "outputs": [], "source": [ "job = ParAMSJob.from_yaml(str(yaml_dir))\n", "job.name = \"params_finetune_qet\"\n", "job.settings.runscript.nproc = 1\n", "job.settings.input.Task = \"MachineLearning\"\n", "job.settings.input.MachineLearning.CommitteeSize = 1\n", "job.settings.input.MachineLearning.MaxEpochs = 250\n", "# job.settings.input.MachineLearning.LossCoeffs.Energy = 10\n", "job.settings.input.MachineLearning.Backend = \"MatGL\"\n", "job.settings.input.MachineLearning.MatGL.Model = \"QET-PBE-2025\"\n", "job.settings.input.MachineLearning.MatGL.LearningRate = 0.001\n", "job.settings.input.MachineLearning.MatGL.LearningRateSchedule.Type = \"Cosine\"\n", "job.settings.input.MachineLearning.MatGL.LearningRateSchedule.FinalFactor = 0.01\n", "job.settings.input.MachineLearning.MatGL.TrainableLayers = \"All\"\n", "job.settings.input.MachineLearning.Target.Forces.Enabled = \"Yes\"\n", "job.settings.input.MachineLearning.Target.Forces.MAE = 0.05\n", "job.settings.input.MachineLearning.RunAMSAtEnd = \"Yes\"" ] }, { "cell_type": "code", "execution_count": 9, "id": "4b004100", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[12.08|15:17:31] JOB params_finetune_qet STARTED\n", "[12.08|15:17:31] JOB params_finetune_qet RUNNING\n", "[12.08|15:18:46] JOB params_finetune_qet FINISHED\n", "[12.08|15:18:46] JOB params_finetune_qet SUCCESSFUL\n" ] } ], "source": [ "job.run(watch=True);" ] }, { "cell_type": "markdown", "id": "b99ad8c4", "metadata": {}, "source": [ "## Results of the ML potential training\n", "\n", "Use ``job.results.get_running_loss()`` to get the loss value as a function of epoch:" ] }, { "cell_type": "code", "execution_count": 10, "id": "9a78c84c", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "for data_set in (\"training_set\", \"validation_set\"):\n", " epoch, loss = job.results.get_running_loss(data_set=data_set)\n", " ax.semilogy(epoch, loss, label=data_set)\n", "ax.set_xlabel(\"Epoch\")\n", "ax.set_ylabel(\"Loss\")\n", "ax.legend()\n", "ax;" ] }, { "cell_type": "markdown", "id": "a914f233", "metadata": {}, "source": [ "The MatGL results also contain the learning rate used for every epoch. Plot it on a logarithmic scale to verify the cosine schedule:" ] }, { "cell_type": "code", "execution_count": 11, "id": "47d7b3ac", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fit_results = job.results.get_machine_learning_results()[0]\n", "epoch, learning_rate = fit_results.get_learning_rate_history()\n", "fig, ax = plt.subplots()\n", "ax.semilogy(epoch, learning_rate)\n", "ax.set_xlabel(\"Epoch\")\n", "ax.set_ylabel(\"Learning rate\")\n", "ax;" ] }, { "cell_type": "markdown", "id": "3fcdf787", "metadata": {}, "source": [ "If you set ``MachineLearning%RunAMSAtEnd`` (it is on by default), this will run the ML potential through AMS at the end of the fitting procedure, similar to the ParAMS SinglePoint task.\n", "\n", "This will give you access to more results, for example the predicted-vs-reference energy and forces for all entries in the training and validation set. Plot them in a scatter plot like this:" ] }, { "cell_type": "code", "execution_count": 12, "id": "04268e9d", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(8, 6))\n", "\n", "for row, data_set in enumerate((\"training_set\", \"validation_set\")):\n", " evaluator = job.results.get_data_set_evaluator(data_set=data_set, source=\"best\")\n", " for column, key in enumerate((\"energy\", \"forces\")):\n", " data = evaluator.results[key]\n", " ax = axes[row, column]\n", " ax.plot(data.reference_values, data.predictions, \".\")\n", " ax.set_xlabel(f\"Reference {key} ({data.unit})\")\n", " ax.set_ylabel(f\"Predicted {key} ({data.unit})\")\n", " ax.set_title(f\"{data_set}\\n{key} MAE: {data.mae:.3f} {data.unit}\")\n", " lower = min(min(data.reference_values), min(data.predictions))\n", " upper = max(max(data.reference_values), max(data.predictions))\n", " ax.plot([lower, upper], [lower, upper], linewidth=3, alpha=0.3, color=\"red\")\n", "\n", "fig.subplots_adjust(hspace=0.6, wspace=0.4)\n", "axes[-1, -1];" ] }, { "cell_type": "markdown", "id": "7451ea9e", "metadata": {}, "source": [ "## Get the engine settings for production jobs\n", "\n", "First, let's find the path to where the fine-tuned QET model resides using ``get_deployed_model_paths()``. This function returns a list of paths to the trained models. In this case we only trained one model, so we access the first element of the list with ``[0]``.\n", "\n", "The returned path is the path we need to give as the ``ParameterDir`` input option in the AMS MLPotential engine. For other backends it might instead be the ``ParameterFile`` option.\n", "\n", "To get the complete engine settings as a PLAMS Settings object, use the method ``get_production_engine_settings()``:" ] }, { "cell_type": "code", "execution_count": 13, "id": "4e6627bf", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/home/hellstrom/adfhome/userdoc/PythonExamples/mlpotential-train-qet/plams_workdir.002/params_finetune_qet/results/optimization/matgl/matgl\n", "\n", "Engine MLPotential\n", " Backend MatGL\n", " Model Custom\n", " ParameterDir /home/hellstrom/adfhome/userdoc/PythonExamples/mlpotential-train-qet/plams_workdir.002/params_finetune_qet/results/optimization/matgl/matgl\n", "EndEngine\n", "\n", "\n" ] } ], "source": [ "print(job.results.get_deployed_model_paths()[0])\n", "\n", "production_settings = job.results.get_production_engine_settings()\n", "print(plams.AMSJob(settings=production_settings).get_input())" ] }, { "cell_type": "markdown", "id": "b4062ea3", "metadata": {}, "source": [ "## Run a production MD simulation with the trained potential\n", "\n", "The production simulation uses a Nose--Hoover chain thermostat at 300 K with a 100 fs damping constant." ] }, { "cell_type": "code", "execution_count": 14, "id": "344ab520-06e2-45bf-81dc-05536d6f9a08", "metadata": {}, "outputs": [], "source": [ "production_settings.runscript.nproc = 1\n", "production_job = plams.AMSNVTJob(\n", " settings=production_settings,\n", " molecule=box,\n", " nsteps=1000,\n", " temperature=300,\n", " thermostat=\"NHC\",\n", " tau=100,\n", " samplingfreq=100,\n", " name=\"production_md\",\n", " timestep=1.0,\n", ")\n", "production_job.run(watch=True);" ] }, { "cell_type": "code", "execution_count": 18, "id": "aaeff150-4f1c-4b2a-aef4-531e935c1b25", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Atom Element Charge (e)\n", " 1 Na 0.849750\n", " 2 Cl -0.514439\n", " 3 O -0.768305\n", " 4 H 0.383971\n", " 5 H 0.305659\n", " 6 O -0.746404\n", " 7 H 0.330203\n", " 8 H 0.284001\n", " 9 O -0.839422\n", " 10 H 0.375104\n", " 11 H 0.346680\n", " 12 O -0.733669\n", " 13 H 0.362050\n", " 14 H 0.377436\n", " 15 O -0.853678\n", " 16 H 0.374926\n", " 17 H 0.453188\n", " 18 O -0.710326\n", " 19 H 0.439595\n", " 20 H 0.418199\n", " 21 O -0.808922\n", " 22 H 0.416004\n", " 23 H 0.420654\n", " 24 O -0.771548\n", " 25 H 0.344125\n", " 26 H 0.371311\n", " 27 O -0.761724\n", " 28 H 0.303591\n", " 29 H 0.406716\n", " 30 O -0.823345\n", " 31 H 0.421314\n", " 32 H 0.409472\n", " 33 O -0.814118\n", " 34 H 0.460121\n", " 35 H 0.411446\n", " 36 O -0.755763\n", " 37 H 0.393955\n", " 38 H 0.381637\n", " 39 O -0.834366\n", " 40 H 0.433313\n", " 41 H 0.327099\n", " 42 O -0.731011\n", " 43 H 0.341308\n", " 44 H 0.348576\n", " 45 O -0.859681\n", " 46 H 0.459303\n", " 47 H 0.367272\n", " 48 O -0.772475\n", " 49 H 0.373039\n", " 50 H 0.391496\n", " 51 O -0.711815\n", " 52 H 0.354959\n", " 53 H 0.304057\n", " 54 O -0.940932\n", " 55 H 0.397453\n", " 56 H 0.371510\n", " 57 O -0.736291\n", " 58 H 0.432211\n", " 59 H 0.342579\n", " 60 O -0.763443\n", " 61 H 0.445156\n", " 62 H 0.431415\n", " 63 O -0.721695\n", " 64 H 0.417214\n", " 65 H 0.378940\n", " 66 O -0.701667\n", " 67 H 0.356080\n", " 68 H 0.400883\n", " 69 O -0.720855\n", " 70 H 0.277601\n", " 71 H 0.382373\n", " 72 O -0.808087\n", " 73 H 0.444640\n", " 74 H 0.384372\n" ] } ], "source": [ "charges = production_job.results.get_charges(engine=\"MDStep1000\")\n", "print(f\"{'Atom':>4} {'Element':>7} {'Charge (e)':>12}\")\n", "for index, (atom, charge) in enumerate(zip(box, charges), start=1):\n", " print(f\"{index:4d} {atom.symbol:>7} {charge:12.6f}\")" ] }, { "cell_type": "markdown", "id": "2e4f04bb", "metadata": {}, "source": [ "## Open trajectory file in AMSmovie\n", "\n", "With the production trajectory you can run analysis tools in AMSmovie, or access them from Python. See the AMS manual for details." ] }, { "cell_type": "code", "execution_count": 17, "id": "85714cc0", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/home/hellstrom/adfhome/userdoc/PythonExamples/mlpotential-train-qet/plams_workdir.002/production_md/ams.rkf\n" ] } ], "source": [ "trajectory_file = production_job.results.rkfpath()\n", "print(trajectory_file)\n", "# !amsmovie \"{trajectory_file}\"" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.12" } }, "nbformat": 4, "nbformat_minor": 5 }